Билет 13. Билет 19. Билет 31
Билет 1. Билет 7
С++. Основные св-ва ООП.
C++ — компилируемый статически типизированный язык программирования общего назначения.
Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр).
Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.
ООП- это метод программирования, при котором разрабатываемая программа состоит из объектов, описывающих объекты реального мира.
Основные свойства ООП
· Инкапсуляция. Объединение в объекте кода и данных называется инкапсуляцией. Необходимо предоставить достаточное количество методов, благодаря чему пользователь объекта никогда не будет обращаться к полям объекта непосредственно.
Объединение в классе данных и методов с целью защиты данных называется инкапсуляция.
class A
{
public:
int a, b; //данные открытого интерфейса
int ReturnSomething(); //метод открытого интерфейса
|
|
private:
int Aa, Ab; //скрытыеданные
void DoSomething(); //скрытыйметод
};
· Наследование. Определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
class A{ //базовый класс
};
classB : publicA{ //public наследование
};
class C : protected A{ //protected наследование
};
class Z : private A{ //private наследование
};
Ключевое слово public, которое предваряет имя класса employee, указывает, что общие (public) элементы класса employee также являются общими и в классе manager.
· Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.
В класс можно включить несколько функций с одинаковыми именами, но различающихся списками параметров. Такая возможность называется полиморфизм, а сами функции — полиморфные.
class Figure
{...
void Draw() const;
...
};
class Square : public Figure
{ ...
void Draw() const;
...
};
class Circle : public Figure
{ ...
void Draw() const;
...
};
Заданиефрейм <!DOCTYPEHTML> <HTML> <HEAD> <TITLE>Документ с фреймами</TITLE> </HEAD> <FRAMESET cols="30%, 70%"> <FRAME src="frame1.html"> <FRAMESET rows="50%,50%"> <FRAME src=" frame2.html"> <FRAMESET cols="60%, 40%"> <FRAME src=" frame3.html"> <FRAME src="frame4.html"> </FRAMESET> </FRAMESET> </FRAMESET> </HTML> | Заданиетаблица. <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Табличка</TITLE> </HEAD> <TABLE BORDER> <TR> <TD ROWSPAN=2>table 1</TD> <TD colspan=2>table 2</TD> </TR> <TR> <TD>table 3</TD> <TD>table 4</TD> </TR> </TABLE> </HTML> |
|
|
Билет 2. Билет 8.
Классы в С++. Доступ к компонентам класса.
Класс — это пользовательский тип данных, объединяющий данные и алгоритмы для обработки этих данных. Класс моделирует группу каких-либо реальных объектов (студенты, машины), процессов (путешествия), явлений (погода).
Данные класса представлены в виде переменных и называются свойствами.
Алгоритмы представлены в виде функций и называются методами.
В классе существует разграничение доступа к его членам. Внутреннюю (закрытую) часть класса, доступную только этому классу, составляет раздел private, защищенная часть класса доступна классу и его наследникам — раздел protected, доступны для любых объектов без ограничения члены класса из раздела public (открытая часть класса).
|
|
/* Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. */
class Student {
private:
char* Fam;
char* Name;
int age;
public:
void SetFam(char*NFam);
void SetName(char*NName);
void SetAge(int Nage);
char * GetFam(int Nage);
char * GetName(int Nage);
int GetAge( );
};
Задание.фрейм <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Документ с фреймами</TITLE> </HEAD> <FRAMESET rows="40%, 60%"> <FRAME src="frame1.html"> <FRAMESET cols="25%, 50%, 25%"> <FRAME src=" frame2.html"> <FRAME src=" frame3.html"> <FRAME src="frame4.html"> </FRAMESET> </FRAMESET> </HTML> | Заданиетаблица. <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Табличка</TITLE> </HEAD> <TABLE BORDER> <TR> <TD colspan=3>table 1</TD> </TR> <TR> <TD>table 3</TD> <TD>table 4</TD> <td>table 5</td> </TR> </TABLE> </HTML> |
Билет 3. Билет 9. Билет 23.
Классы в С++. Конструкторы и деструкторы
Класс — это пользовательский тип данных, объединяющий данные и алгоритмы для обработки этих данных. Класс моделирует группу каких-либо реальных объектов (студенты, машины), процессов (путешествия), явлений (погода).
|
|
Данные класса представлены в виде переменных и называются свойствами.
Алгоритмы представлены в виде функций и называются методами.
Объект создается по шаблону, который дает класс, при этом используется специальный метод — конструктор. Имя конструктора совпадает с именем класса, он помещается в раздел public, для него не указывается тип возвращаемого значения.
Конструктор по умолчанию создает объект с неинициализированными свойствами:
Book::Book()
{}
или всегда с одним и тем же набором значений:
Book::Book()
{ Author = “Noname”;
Title = “Noname”;
Year = 0;
}
Конструктор с параметрами создает объект с заранее определенным набором свойств:
Book::Book(std::string Auth, std:: Ttl, int y)
{ Author = Auth;
Title = Ttl;
Year = y;
}
Деструктор выполняет разрушение объекта, он не имеет параметров, находится в разделе public, не имеет типа возвращаемого значения, а имя отличается от имени конструктора одним символом: знаком ~ (тильда) в начале.
Book::~Book()
{}
Не требуется вставлять в программу явный вызов деструктора — он вызывается автоматически. Также деструктор можно не включать в класс — он будет добавлен автоматически компилятором.
В описании конструктора и любого другого метода класса (в реализации) используется оператор разрешения области видимости ::. Этот оператор позволяет включить идентификаторы в заданное пространство имен namespace. Для функций-членов класса пространством имен будет класс. Если не использовать оператор ::, получится глобальная функция, не связанная с классом.
Задание.3 <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Документ с фреймами</TITLE> </HEAD> <FRAMESET cols="32%, 32%,36%"> <FRAMESET rows="50%, 50%"> <FRAME src="frame1.html"> <FRAME src="frame4.html"> </FRAMESET> <FRAME src=" frame2.html"> <FRAME src="frame3.html"> </FRAMESET> </HTML> | Заданиетаблица. <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Табличка</TITLE> </HEAD> <TABLE BORDER> <TR> <TD>table 1</TD> <td rowspan=2>table 2</td> <td rowspan=2>table 3</td> </TR> <TR> <TD>table 4</TD> </TR> </TABLE> </HTML> |
Задание:НТМL. Вставить в один документ несколько картинок и сделать на них гиперссылки
<html>
<head>
<title>565</title>
</head>
<body>
<p>
<a name=" 1 "><img src="imthumb1.jpg"></a>
<a name=" 2 "><img src="imthumb1.jpg"></a>
</p>
<p><a href="# 1 ">Картинка 1</a></p>
<p><a href="#2">Картинка 2</a></p>
</body>
</html>
Билет 4.Билет 10. Билет 24
Дружественные функции в С++
Данные(внутренние переменные) объекта защищены от воздействий из вне и доступ к ним можно получить только с помощью методов(функций) объекта. Но бывают такие случаи, когда нам необходимо получить доступ к данным объекта не используя его интерфейс. Как я уже как-то упоминал, при доступе к внутренним переменным объекта через его методы уменьшается эффективность работы за счет затрат на вызов метода.
Для описания функции (функции-члена) дружественной тому или иному классу, необходимо в описании этого класса объявить дружественную функцию, используя ключевое слово friend. Причем, обратите внимание, не играет никакой роли в каком из разделов класса Вы разместите объявление дружественной функции.
Дружественные функции и классы могут осуществлять прямой доступ к закрытым полям объекта без использования функций-членов этого класса.
К друзьям и дружественности применимы следующие правила:
• на описания friend не влияют спецификаторы public,
protected или private;
• описания friend не взаимны: если А объявляет В другом, то это не означает, что А является другом для В;
• дружественность не наследуется: если А объявляет В другом, классы, производные от В, не будут автоматически получать доступ к элементам А;
• дружественность не является переходным свойством: если А объявляет В другом, классы, производные от А, не будут автоматически признавать дружественность В.
Обычное объявление функции-члена гарантирует три логически разные вещи:
• во-первых, функция имеет право доступа к закрытой части объявления класса;
• во-вторых, функция находится в области видимости класса;
• в-третьих, функция должна вызываться для объекта класса, то есть имеется указатель this,
Объявив функцию-член как static, мы придаем ей только первые два свойства. Объявив функцию как friend, мы наделяем ее только первым свойством.
Так же как и функции-члены, функции-друзья явно указываются в объявлении класса, друзьями которого они являются. Поэтому они в той же мере являются частью интерфейса класса, в какой ею являются функции-члены.
Так же как и объявление члена, объявление friend не добавляет новое имя в охватывающую область видимости.
Описание класса A class A { //... void z(); }; Описание класса B class B { //... friend void A::z(); }; | class book { public: book(char *, char *, char *); void show_book(void); friend char *librarian::get_catalog(book); friend void librarian: :change_catalog( book *, char *); private: char title[64]; char author[ 64 ]; charcatalog[64]; }; |
Задание.frame <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Документ с фреймами</TITLE> </HEAD> <FRAMESET rows="50%, 50%"> <FRAMESET cols="600, 70%"> <FRAME src="frame1.html"> <FRAME src="frame2.html"> </FRAMESET> <FRAMESET cols="600, 40%, 30%"> <FRAME src=" frame3.html"> <FRAME src="frame4.html"> <FRAME src="frame5.html"> </FRAMESET> </FRAMESET> </HTML> | Задание10 <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Табличка</TITLE> </HEAD> <TABLE BORDER> <TR> <TD>table 1</TD> <td colspan=2>table 2</td> </TR> <TR> <TD>table 3</TD> <TD>table 4</TD> <TD>table 5</TD> </TR> </TABLE> </HTML> |
Задание: НТМL. Вставить в один документ 2 таблицы и сделать на них гиперссылки
<html> <head > <title>HTML</title> </head> <body > <A NAME="таблица1"></A> <table > <tr> | <td >T1</td> </tr> <tr > <td >T2</td> <td >T3</td> <td>T5</td> </tr> <tr > | <td>T4</td> </tr> </table> <A NAME="таблица2"></A> <table > <tr> <td >T1</td> </tr> | <tr > <td >T2</td> <td >T3</td> <td>T5</td> </tr> <tr > <td>T4</td> </tr> | </table> <A HREF="#таблица1">ссылка на 1 таблицу</a> <A HREF="#таблица2">ссылка на 2 таблицу</a> </body> </html> |
Билет 5. Билет 11. Билет 27
Полиморфизм, виртуальные функции в С++
Полиморфизм- присваивание имени некоторому действию, которое совместно используется всеми объектами в иерархии, причем каждый объект в иерархии организует(реализует) это действие своим собственным образом.
В С++ можно избежать получения по наследству метода, если метод с таким же именем включён в класс-потомок, для этого используется механизм виртуальных функций.
Виртуальные функции - это функция, объявленная в базовом классе с помощью ключевого слова virtual, такая функция в классах-потомках замещается на функцию, принадлежащую производному классу и имеющую то же имя.
С помощью виртуальных функций можно создать класс-наследник, имеющий тот же интерфейс, что и базовый класс, но обладающий своей собственной моделью поведения. Механизм виртуальных функций реализуется следующим образом: обычно обработка вызовов функций выполняется на этапе компиляции и завершается на этапе редактирования связей, когда вызов метода жёстко связывается с соответствующей функцией (раннее связывание); если метод объявлен как виртуальный, выполняется так называемое позднее связывание – т.е. связывание вызова и функции во время выполнения программы.
class Figure
{...
void Draw() const;
...
};
class Square : public Figure
{ ...
void Draw() const;
...
};
class Circle : public Figure
{ ...
void Draw() const;
...
};
Задание.5 <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Документ с фреймами</TITLE> </HEAD> <FRAMESET cols="32%, 36%, 32%"> <FRAME src="frame1.html"> <FRAMESET rows="50%, 50%"> <FRAME src="frame2.html"> <FRAME src="frame4.html"> </FRAMESET> <FRAMESET rows="50%, 50%"> <FRAME src=" frame3.html"> <FRAME src="frame5.html"> </FRAMESET> </FRAMESET> </HTML> | Задание11 <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Табличка</TITLE> </HEAD> <TABLE BORDER> <TR> <TD rowspan=2> table 1</TD> <td> table 2</td> <TD> table 3</TD> </TR> <TR> <TD>table 4</TD> <TD>table 5</TD> </TR> </TABLE> </HTML> |
Задание 27:НТМL. . Вставить в 2 документа таблицы. В третьем сделать на них гиперссылки
1.htm <HTML> <HEAD> <TITLE>1</TITLE> </HEAD> <BODY> <TABLE BORDER> <TR> <TD>Ячейка 1 строки 1</TD> <TD>Ячейка 2 строки 1</TD> </TR> <TR> <TD>Ячейка 1 строки 2</TD> <TD>Ячейка 2 строки 2</TD> </TR> </TABLE> </BODY> </HTML> | 2.htm <HTML> <HEAD> <TITLE>2</TITLE> </HEAD> <BODY> <TABLE BORDER> <TR> <TD>Ячейка 1 строки 1</TD> <TD>Ячейка 2 строки 1</TD> </TR> <TR> <TD>Ячейка 1 строки 2</TD> <TD>Ячейка 2 строки 2</TD> </TR> </TABLE> </BODY> </HTML> | 3.htm <HTML> <HEAD> <TITLE>3</TITLE> </HEAD> <BODY> <a href="1.htm">таб1</a><BR> <a href="2.htm">таб2</a><BR> </BODY> </HTML> |
Билет 6. Билет 12. Билет 28
Наследование в С++
Наследование- сохранение свойств базовых классов в производных.
Процесс, посредством которого один объект может наследовать свойства другого объекта, добавлять к ним черты, характерные только для него. (Автомобиль-автобус).
Таким образом не надо каждый раз описывать все с нуля. Это и есть главное преимущество наследования.В ООП класс, от которого наследуют, принято называть базовым/ родительским.
Класс, который получается называется порожденным/производным.
Множественное наследование
Можно построить один класс из другого, наследуя его характеристики. C++ позволяет порождать класс из нескольких базовых классов. Когда ваш класс наследует характеристики нескольких классов, вы используете множественное наследование.
class A{ //базовый класс
};
classB : publicA{ //publicнаследование
};
class C : protected A{ //protected наследование
};
class Z : private A{ //private наследование
};
Public наследование | Private наследование | Protected наследование |
Class A { private: int x; public: int y; protected: int z;}; | Class A { private: int x; public: int y; protected: int z;}; | Class A { private: int x; public: int y; protected: int z;}; |
Class B { private: int x; public: int y; protected: int z;}; | Class B { private: int x; private: int y; private: int z;}; | Class B { private: int x; protected: int y; protected: int z;}; |
Class C { private: int x; public: int y; protected: int z;}; | Class C { private: int x; private: int y; private: int z;}; | Class C { private: int x; protected: int y; protected: int z;}; |
Задание 6 <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Документ с фреймами</TITLE> </HEAD> <FRAMESET cols="30%, 70%"> <FRAME src="frame1.html"> <FRAMESET rows="50%, 50%"> <FRAME src="frame2.html"> <FRAMESET cols="20%, 30%, 50%"> <FRAME src=" frame3.html"> <FRAME src="frame4.html"> <FRAME src="frame5.html"> </FRAMESET> </FRAMESET> </FRAMESET> </HTML> | Задание 12 <!DOCTYPE HTML> <HTML> <HEAD> <TITLE>Табличка</TITLE> </HEAD> <TABLE BORDER> <TR> <TD rowspan=2> table 1</TD> <td colspan=3> table 2</td> </TR> <TR> <TD>table 3</TD> <TD>table 4</TD> <TD>table 5</TD> </TR> </TABLE> </HTML> |
Задание 28: НТМL. Вставить в один документ несколько картинок и сделать на них гиперссылки
<HTML>
<HEAD>
<TITLE>New</TITLE>
</HEAD>
<BODY>
<p>Это лес<img src="лес.jpg"></p>
<p> А это поле <img src="поле.jpg"></p>
<a href="лес.jpg">Лес</a><BR>
<a href="поле.jpg">Поле</a><BR>
</BODY>
</HTML>
Билет 13. Билет 19. Билет 31.
Дата добавления: 2018-04-04; просмотров: 421; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!