Содержание
- 2. Объектно-ориентированное программирование Идея классов является основой объектно-ориентированного программирования (ООП). Класс является типом данных определяемым пользователем. В
- 3. Интерфейсом класса являются заголовки его методов. Конкретные величины типа данных «класс» называются экземплярами класса, или объектами.
- 4. Описание класса Класс является абстрактным типом данных, определяемым пользователем, и представляет собой модель реального объекта в
- 6. При описании класса реализуется одно из ключевых понятий ООП - инкапсуляция. Для начала дадим формальное определение
- 7. Описание класса выглядит так: class { [ private: ] public: } ; Где спецификаторы доступа private
- 8. Термин private понимается в том смысле, что данные заключены внутри класса и защищены от несанкционированного доступа
- 10. Поля класса: • могут иметь любой тип, кроме типа этого же класса (но могут быть указателями
- 11. Описание объектов Конкретные переменные типа «класс» называются экземплярами класса, или объектами. Время жизни и видимость объектов
- 12. Пример1. Рассмотрим пример описания класса TPoint (точка): Точка характеризуется координатами: Х и У – это свойства
- 13. #include "stdafx.h " class TPoint { private: int x,y; public: void InitPoint ( int newx, int
- 14. int main() { class TPoint p; p.InitPoint(10,10); printf("x=%d, y=%d\n", p.getx(), p.gety()); p.relmove(5,10); printf("x=%d, y=%d\n", p.getx(), p.gety());
- 16. Классы могут быть глобальными (объявленными вне любого блока) и локальными (объявленными внутри блока, например, функции или
- 17. Вызов методов InitPoint() и relmove() приводило к изменению значений полей Х и У. В следующем примере
- 18. Конструкторы B отличии от предыдущего примера удобнее инициализировать поля объекта автоматически в момент его создания, а
- 19. class TPoint { private: int x,y; public: TPoint(int newx, int newy) // конструктор {x=newx; y=newy; }
- 20. Пример 2. В качестве примера создадим класс Counter, объекты которого могут хранить количественную меру какой-либо изменяющейся
- 21. class Counter { private: int mycount; public: Counter ( ):mycount(0){ }//конструктор void inc_count ( ) {mycount++;
- 22. Одной из наиболее часто возлагаемых на конструктор задач является инициализация полей объекта. Инициализация полей обычно реализуется
- 23. Деструкторы Кроме специального метода конструктор, который вызывается при создании объекта, существует другой особый метод, автоматически вызываемый
- 24. Наиболее распространённое применение деструкторов – освобождение памяти, выделенной конструктором при создании объекта. Определение методов может быть
- 25. class TPoint { private: int x,y; public: TPoint(int newx, int newy) {x=newx;y=newy; } void relmove (
- 26. ЗАМЕЧАНИЯ: 1)Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации. 2)Конструктор, вызываемый без
- 27. Деструктор: • не имеет аргументов и возвращаемого значения; • не может быть объявлен как const или
- 28. class Counter { private: int mycount; public: Counter ( ):mycount(0){ } Counter (int c): mycount(c){ }
- 29. Наследование Наследование – это процесс создания новых классов, называемых наследниками или производными классами, из уже существующих
- 31. Простым называется наследование, при котором производный класс имеет одного родителя. Формат описания производного класса: В заголовке
- 32. Рассмотрим правила наследования различных методов: Конструкторы не наследуются, поэтому производный класс должен иметь собственные конструкторы. Если
- 33. Поля, унаследованные из родительского класса, и которые определены в базовом классе как private, недоступны функциям производного
- 34. class Counter { protected: int mycount; public: Counter ( ):mycount(0){ } //конструктор 1 Counter(int c): mycount(c){
- 35. int main(int argc, char *argv[]) { Counter c1, c2(3); CountDown c3; std::cout std::cout std::cout c1.inc_count(); c2.inc_count();
- 36. Для объекта c3 доступен новый метод: c3.dec_count(); Но можно применять и унаследованные методы, например: std::cout Можно
- 37. Поэтому, если возникает необходимость инициализации объекта с3 каким-либо другим значением, мы должны написать новый конструктор: class
- 38. Иерархия классов На основе принципа наследования может быть построена иерархия классов. Рассмотрим пример базы данных служащих
- 40. #include using namespace std; const int len=80; class employee { protected: int nom; char name[len]; public:
- 41. class manager:public employee { private: char title[len]; int kol; public: void getdata() { employee::getdata(); cout >title;
- 42. class scientist:public employee { private: int pubs; public: void getdata() { employee::getdata(); cout >pubs; } void
- 43. int main(int argc, char *argv[]) { employee x; manager y; scientist z; laborer w; cout x.getdata();
- 44. Производный класс может являться базовым для других производных классов. Например: class A { … }; class
- 45. Класс может являться производным как одного базового класса, так и нескольких базовых классов (множественное наследование). Например:
- 46. Работа с объектами чаще всего производится через указатели, например: employee *р; Указателю на базовый класс можно
- 47. Виртуальные методы. Полиморфизм. Полиморфизм — один из важнейших механизмов ООП. Полиморфизм реализуется с помощью наследования классов
- 48. class Base { public: void show() { cout } }; class derv1:public Base {public: void show()
- 49. class derv2:public Base {public: void show() { cout } }; int main(int argc, char *argv[]) {
- 50. Итак, классы derv1 и derv2 являются наследниками класса Base. В каждом из трех классов имеется метод
- 51. Этот процесс ,называется ранним связыванием.
- 52. В C++ реализован механизм позднего связывания, когда разрешение ссылок на метод происходит на этапе выполнения программы
- 53. Этот процесс ,называется поздним связыванием.
- 54. Если в базовом классе метод определен как виртуальный, метод, определенный в производном классе с тем же
- 55. Рекомендуется делать виртуальными деструкторы для того, чтобы гарантировать правильное освобождение памяти из-под динамического объекта, поскольку в
- 56. Обзор стандартных библиотек С++ Развитие объектно - ориентированного программирования привело к созданию широкого набора библиотек. Библиотека
- 57. Библиотека содержит пять основных видов компонентов: алгоритм (algorithm): определяет вычислительную процедуру. контейнер (container): управляет набором объектов
- 58. Алгоритмы реализуют большинство методов сортировки, поиска и т.п. ( ) Контейнеры – это объекты, содержащие другие
- 59. Рассмотрим основные методы класса stack: push - метод для добавления элемента в стек. pop – удаляет
- 60. #include #include #include using namespace std; int main(int argc, char *argv[]) { stack x; for(int i=1;
- 61. Библиотека ATL расшифровывается как Active Template Library. Это библиотека классов и шаблонов, предназначенная для разработки собственных
- 62. AfxMessageBox ( ) Библиотека MFC инкапсулирует многие функции API (Application Programming Interfase), с помощью которых реализуются
- 63. Библиотека классов .NET Framework имеет следующие возможности: библиотека базовых классов,такие как строки, массивы и элементы форматирования;
- 64. Если мы захотим создать Windows – приложение с помощью технологии .NET, то открыв Visual Studio, и
- 67. Скачать презентацию