
- •Билет 1. Билет 7
- •Билет 2. Билет 8.
- •Билет 3. Билет 9. Билет 23.
- •Билет 4.Билет 10. Билет 24
- •Билет 5. Билет 11. Билет 27
- •Билет 6. Билет 12. Билет 28
- •Билет 13. Билет 19. Билет 31. Html. Структура документа, физическое и логическое форматирование, оформление абзацев и списков
- •Билет 14. Билет 20. Билет 32. Html. Рисунки и гиперссылки
- •Билет 15. Билет 25. Html. Использование и оформление таблиц
- •Билет 16. Билет 26. Html. Разбиение окна на фреймы
- •Билет 17. Html. Оформление документов с использованием css
- •I способ - Внутренние стили
- •II способ - Глобальные стили
- •III способ - Связанные или внешние стили
- •Билет 18. Html. Типы css
- •Билет 21. Билет 29.
- •Билет 22
- •Билет 30 Структуры в языке с
- •Билет 33 Библиотека qt. Создание приложений в qtCreator.
- •Билет № 34 Библиотека qt. Работа со строками.
- •Билет 35 Использование JavaScript при оформлении динамических html страниц
- •Билет 36 Использование объектной модели документа (dom) в JavaScript
- •Иерархия классов dom
- •Билет 37 Формы и их использование в JavaScript
- •Билет № 38 Объектная модель браузера и ее использование в JavaScript
Билет 22
Сравнение дружественных функций и методов класса в С++
Для описания дружественной тому или иному классу функции(метода или класса) необходимо в описании этого класса объявить (описать) дружественную функцию с указанием ключевого слова friend. Если функция дружественна нескольким классам, то надо добавить это описание во все классы, к внутренним данным которых производим обращение. В большинстве языков ООП не имеет различия в какой раздел описания класса(publuc, protected или private) вставлено описание дружественной функции.
Но возникает такой вопрос: А как же наша хваленая защищенность данных, если можно получить доступ к данным напрямую ?
Но оказывается, что с точки зрения применимости механизма инкапсуляции, защищенность данных сохраняется, поскольку полностью исключается всякая возможность доступа к данным так, чтобы объект не был осведомлен об этом.
А теперь приведу несколько примеров использования дружественных функций(и не только) в языке С++.
// Описание класса A class A { //... void z(); // Описание функции z класса A }; // Описание класса B class B { //... friend void A::z(); // Описание функции z класса A как дружественной // классу B, т.е. из функции z класса A можно // получить доступ к внутренним переменным класса B }; // Описание класса C class C { //... friend class A; // Описание класса A как дружественного классу C, // все функции класса A будут дружественны классу C и // из любой функции класса A можно получить доступ к // внутренним переменным класса C }
|
class Employee //********** Класс "служащий" ****************************** { public: Employee( char *NName, char *NFam, char *NDep, int NAge); virtual void print(); void SetName( char *NName); int GetAge(); char *GetDep( char *NDep); char *GetFam( char *NFam); char *GetName( char *NName); void SetAge( int NAge); void SetDep( char *NDep); void SetFam( char *NFam); Employee(); virtual ~Employee(); friend istream& operator >>(istream&,Employee&); friend ostream& operator <<(ostream&,Employee&);
protected: int Age; char *Dep; char *Name; char *Fam; };
|
• Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом friend. В качестве параметра ей должен передаваться объект или ссылка на объект класса, поскольку указатель this ей не передается. • Дружественная функция может быть обычной функцией или методом другого ранее определенного класса. На нее не распространяется действие спецификаторов доступа, место размещения ее объявления в классе безразлично. • Одна функция может быть дружественной сразу нескольким классами.
Задание: НТМL. Вставить несколько рисунков в разные документы. В отдельном документе сделать для них гиперссылки
1.htm <HTML> <HEAD> <TITLE>1</TITLE> </HEAD> <BODY><img src="лес.jpg"></BODY> </HTML>
|
2.htm <HTML> <HEAD> <TITLE>2</TITLE> </HEAD> <BODY><img src="поле.jpg"></BODY> </HTML>
|
3.htm <HTML> <HEAD> <TITLE>3</TITLE> </HEAD> <BODY> <a href="1.htm">Лес</a><BR> <a href="2.htm">Поле</a><BR> </BODY> </HTML> |