
Lect02
.pdf
Устройствоклассов.
Какрождаются,живутиумирают объекты
«Объектно-ориентированное программирование»
доцентПриваловМ.В.
Донецк,ДонНТУ,2011

Состояниеиповедениеобъекта
Состояниеобъекта– суммарный результатегоповедения.
Поведениеопределяетсятем,какие операцииподдерживаетобъектикак ониреализованы.
Операция– этоуслуга,которуюкласс можетпредоставитьсвоимклиентам.

Обязательныеоперации
Конструктор– операциясоздания объектаи/илиегоинициализации.
Деструктор– операция,
освобождающаясостояниеобъекта и/илиразрушающаясамобъект.
Конструкторовможетбытьнесколько, адеструкторвсегдаодин.

Необязательныеоперации.
Селектор– операция,считывающая состояниеобъекта,нонеменяющая состояния
Модификатор– операция,которая изменяетсостояниеобъекта
Итератор– операция,позволяющая организоватьдоступковсемчастям объектавстрогоопределенной последовательности

Примерописанияклассав нотацииязыкаUML
Personnel
-name : char* -inn : long
-passportSeries : char* -passportNumber : long
+GetName() : char* +SetName(in name : char*) : void +GetInn() : long
+SetInn(in inn : long) : void +GetPassportSeries() : char*
+SetPassportSeries(in passportSeries : char*) : void +GetPassportNumber() : long +SetPassportNumber(in passportNumber : long) : void
“- “ – private “+” – public “#” – protected

ОписаниеклассавязыкеC++
class имя_класса{ private:
//описанияатрибутовиметодов protected:
//описанияатрибутовиметодов public:
//описанияатрибутовиметодов
};

Описаниеатрибутов(полей) класса
Описаниеатрибутовсовпадаетс описаниемпеременных,таккак атрибут– нечтоиноекак переменная,принадлежащаяклассу (егополе)иопределяющаяего состояние:
тип1идентификатор1; тип2идентификатор2; ит.д.

Описаниеметодов(функцийчленов)класса
Описаниеметодовсовпадаетс описаниемфункций,таккакметод– этофункция,принадлежащаяклассуи определяющаяегоповедение:
типимя_метода(параметрыметода) модификаторы;

Описаниеконструктораи деструктора
Имяконструкторадолжносовпадатьсименемкласса. Конструкторнеимееттипавозвращаемогозначения. Описанийконструкторовможетбытьнесколькоилине бытьвовсе.
имя_класса(параметрыконструктора);
Имядеструктора– это~имя_класса.Деструкторне можетиметьпараметровиневозвращаетрезультат. Деструкторуклассатолькоодиниегоописание необязательно.
~имя_класса();

Оченьпростойкласс
class MyClass { private:
int count; public:
MyClass() { count = 0; } ~MyClass(){}
int printHello() { cout << "Hello!"; } int getCount() const { return count; }
int setCount(int newCount) { count = newCount; }
};