Билет 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!