Содержание
- 2. Лекция 5. Классы Логика объектно-ориентированного подхода. Описание классов и объектов. Основные элементы класса: поля, методы, указатель
- 3. ©Павловская Т.А. (СПбГУ ИТМО) "Programming today is a race between software engineers striving to build bigger
- 4. ©Павловская Т.А. (СПбГУ ИТМО) Преимущества и недостатки ООП Преимущества (при создании больших программ): использование при программировании
- 5. ©Павловская Т.А. (СПбГУ ИТМО) Свойства ООП Инкапсуляция - скрытие деталей реализации; объединение данных и действий над
- 6. ©Павловская Т.А. (СПбГУ ИТМО) Технология разработки ОО программ В процесс проектирования перед всеми остальными добавляется еще
- 7. ©Павловская Т.А. (СПбГУ ИТМО) Описание класса class { [ private: ] public: }; Поля класса: могут
- 8. ©Павловская Т.А. (СПбГУ ИТМО) внутри локального класса запрещается использовать автоматические переменные из области, в которой он
- 9. ©Павловская Т.А. (СПбГУ ИТМО) class monstr{ int health, ammo; public: monstr(int he = 100, int am
- 10. ©Павловская Т.А. (СПбГУ ИТМО) Описание объектов monstr Vasia; monstr Super(200, 300); monstr stado[100]; monstr *beavis =
- 11. ©Павловская Т.А. (СПбГУ ИТМО) Константный объект: const monstr Dead (0,0); Константный метод: int get_health() const {return
- 12. ©Павловская Т.А. (СПбГУ ИТМО) monstr & the_best(monstr &M){ if( health > M.health()) return *this; return M;
- 13. ©Павловская Т.А. (СПбГУ ИТМО) Конструкторы Конструктор не возвращает значение, даже типа void. Нельзя получить указатель на
- 14. ©Павловская Т.А. (СПбГУ ИТМО) Если программист не указал ни одного конструктора, компилятор создает его автоматически. Такой
- 15. ©Павловская Т.А. (СПбГУ ИТМО) имя_класса имя_объекта [(список параметров)]; имя_класса (список параметров); имя_класса имя_объекта = выражение; monstr
- 16. ©Павловская Т.А. (СПбГУ ИТМО) enum color {red, green, blue}; class monstr{ int health, ammo; color skin;
- 17. ©Павловская Т.А. (СПбГУ ИТМО) monstr::monstr(int he, int am) {health = he; ammo = am; skin =
- 18. ©Павловская Т.А. (СПбГУ ИТМО) monstr::monstr(int he, int am): health (he), ammo (am), skin (red), name (0){
- 19. ©Павловская Т.А. (СПбГУ ИТМО) monstr::monstr(const monstr &M){ if (M.name){ name = new char [strlen(M.name) + 1];
- 20. ©Павловская Т.А. (СПбГУ ИТМО) Статические поля Память под статическое поле выделяется один раз class A {
- 21. ©Павловская Т.А. (СПбГУ ИТМО) Статические методы class A{ static int count; public: static void inc_count(){ count++;
- 22. ©Павловская Т.А. (СПбГУ ИТМО) Дружественные функции и классы Дружественная функция объявляется внутри класса, к элементам которого
- 23. ©Павловская Т.А. (СПбГУ ИТМО) class monstr; class hero{ public: void kill(monstr &); }; class monstr{ friend
- 24. ©Павловская Т.А. (СПбГУ ИТМО) class hero{ ... friend class mistress; } class mistress{ ... void f1();
- 25. ©Павловская Т.А. (СПбГУ ИТМО) Деструкторы Деструктор вызывается автоматически, когда объект выходит из области видимости: для локальных
- 26. ©Павловская Т.А. (СПбГУ ИТМО) Деструктор: не имеет аргументов и возвращаемого значения; не может быть объявлен как
- 27. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка операций . .* ?: :: # ## sizeof при перегрузке операций
- 28. ©Павловская Т.А. (СПбГУ ИТМО) Функцию-операцию можно определить: как метод класса как дружественную функцию класса как обычную
- 29. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка унарных операций 1. Внутри класса: class monstr{ ... monstr & operator
- 30. ©Павловская Т.А. (СПбГУ ИТМО) 2. Как дружественную функцию: class monstr{ ... friend monstr & operator ++(
- 31. ©Павловская Т.А. (СПбГУ ИТМО) class monstr{ ... monstr operator ++(int){ monstr M(*this); health++; return M; }
- 32. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка бинарных операций 1. Внутри класса: class monstr{ ... bool operator >(const
- 33. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка операции присваивания операция-функция должна возвращать ссылку на объект, для которого она
- 34. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка операций new и delete им не требуется передавать параметр типа класса;
- 35. ©Павловская Т.А. (СПбГУ ИТМО) class Obj { … }; class pObj{ … private: Obj *p; };
- 36. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка операции приведения типа operator имя_нового_типа (); monstr::operator int(){ return health; }
- 37. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка операции вызова функции class if_greater{ public: int operator () (int a,
- 38. ©Павловская Т.А. (СПбГУ ИТМО) Перегрузка операции индексирования class Vect{ public: explicit Vect(int n = 10); //инициализация
- 39. ©Павловская Т.А. (СПбГУ ИТМО) Vect::Vect(int n) : size(n){ p = new int[size];} Vect::Vect(const int a[], int
- 40. ©Павловская Т.А. (СПбГУ ИТМО) void Vect::Print(){ for (int i = 0; i cout int main(){ int
- 41. ©Павловская Т.А. (СПбГУ ИТМО) Указатели на элементы классов Указатель на метод класса: возвр_тип (имя_класса::*имя_указателя)(параметры); описание указателя
- 42. ©Павловская Т.А. (СПбГУ ИТМО) Правила использования указателей на методы классов: Указателю на метод можно присваивать только
- 43. ©Павловская Т.А. (СПбГУ ИТМО) Указатель на поле класса тип_данных(имя_класса::*имя_указателя); В определение указателя можно включить его инициализацию:
- 45. Скачать презентацию