
lk_oop-c_2-11.ppt
- Количество слайдов: 12
Лекция № 2 по дисциплине «Объектно-ориентированное программирование» на тему: Принципы объектно-ориентированного программирования. Конструирование объектов
Пять основных принципов ООП 1. Все есть объект 2. Программа - это совокупность объектов, говорящих другу, что делать, посылая сообщения 3. Каждый объект имеет свою собственную память, отличную от других объектов
Пять основных принципов ООП 4. Каждый объект имеет тип. Каждый объект является экземпляром класса, где “класс” - это синоним “типа”. 5. Все объекты определенного типа могут принимать одинаковые сообщения.
Чтобы описать машину, нужно описать класс, объединяющий ее характеристики и методы для управления ею class Car { private: int weight; float speed; int hp; // мощность двигателя double coef; // коэффициент лобового сопротивления public: void speed. Up() { speed += hp/weight; } void slow. Down() { speed -= speed*coef; } void stop() { speed=0; };
Встроенные функции Определения членов-функций можно расположить: 1. Внутри класса – inline-функции. В месте вызова такой функции генерируется копия ее кода, и вызов не производится. 2. Вне класса. Пример. void Car : : stop() { speed=0; }
Конструкторы – это функции, используемые для установки значения членов-данных и выполнения некоторых действий при создании экземпляра класса Пример: class Time { private: int day, month, year; public: Time(int, int); Time(char*); Time(); }
Конструкторы ü Конструкторы не возвращают значения Примеры создания экземпляра класса Time: Time d 1= Time (25, 1, 2012); Time d 2(25, 1, 2012); // сокращенно Time d 3= Time(“ 25 -Jan-2012”); Time d 4= “ 25 -Jan-2012”; Time d 5; ü Если в определении класса отсутствует определение конструктора, компилятор создаст его автоматически ü После создания объекта доступ к его элементам можно получить так: cout<<d 1. day; t. set. Time(2, 2, 2012);
Конструкторы ü Вызов конструктора для уже созданных объектов класса вызовет ошибку. d 1. Time (2, 2, 2012); // ошибка ü Члены-данные должны либо инициализироваться в конструкторе, либо их значения могут быть установлены позже. ü Конструкторы могут иметь аргументы по умолчанию. Пример. Time (int=1, int=1970); …. Time t 1(5, 10); Time t 2(5);
Деструкторы Деструктор вызывается для уничтожения объекта. Имя деструктора: ~ Time(); ü Деструктор не имеет параметров и не возвращает значения. Можно выделить для объекта динамическую память: Time* p= new Time (1, 2, 2012); При ошибке вырабатывается исключение. Удаляется объект оператором delete p;
Пример описания класса дат #include <iostream> #include <conio. h> using std: : cout; class Time{ private: int day, month, year; public: Time(); Time(int, int); void set. Time(int, int); void print(); }; Time: : Time() // конструктор, устанавливающий все поля даты в 0 {day=0; month=0; year=0; }
Продолжение примера Time: : Time(int d, int m, int y) // конструктор, назначающий полям даты произвольные значения {day=d; month=m; year=y; } void Time: : set. Time (int d, int m, int y) // метод установки значений полей даты { day= (d>=0 && d<32) ? d : 0; month= (m>=0 && m<13) ? m : 0; year= (y>=1900 && y<=2012) ? y : 0; } void Time: : print() // метод печати даты { cout<<day<<". "<<month << " " <<year<<"n"; }
Тестирующая функция int main(){ // тестирующая функция Time t; Time t 1= Time (4, 2, 2012); t. print(); t 1. print(); t. set. Time(25, 1, 2012); t. print(); getch(); return 0; }
lk_oop-c_2-11.ppt