Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Описание сложных объектов

 

Описание сложных объектов составляется путем объявления и реализации простых классов и их включения в состав сложного класса. Например можно объявить класс для колеса, мотора, трансмиссии и затем объединить их в классе для автомобиля, реализуя общее правило – сложный объект состоит из множества простых объектов. Другой, более простой пример: прямоугольник состоит из отрезков прямых; каждый отрезок определен двумя точками; каждая точка определяется координатами x и y. Либо у сотрудника есть дата рождения и адрес – объекты отдельно разработанных классов.


// Пример 6.2.13

//Классы с другими классами в качестве данных-членов

#include <iostream>

using namespace std;

// объявление открытого класса для работника фирмы TEmployee без методов

typedef unsigned long ULONG;

typedef unsigned short USHORT;

// Образование: высшее, среднее, специальное, начальное,...

enum TEducation { High, Secondary, Special, Primary };

// Должность: администратор, служащий, рабочий, программист,...

enum TPost { Administrator, Clerc, Worker, Programmer };

// описание объектов типа TDate (дата)

class TDate {

public:

USHORT itsDay; // день

USHORT itsMonth; // месяц

USHORT itsYear; // год

};

// описание объектов типа TAddress (адрес)

class TAddress {

public:

char itsZipCode[11]; // почтовый код

char itsStreet[21]; // улица

char itsHouse[6]; // дом

char itsFlat[4]; // квартира

};

// описание объектов типа TEmployee (служащий)

class TEmployee {

// открытые члены-данные

public:

ULONG itsID; // табельный номер

char itsSurname[21]; // фамилия

char itsSex; // пол

TDate itsBirthday; // дата рождения

TAddress itsAddress; // адрес

char itsPhone[9]; // телефон

bool itsSmoke; // курит или нет

bool itsFamily; // женат или нет

TEducation itsEdu; // образование

TPost itsPost; // должность

double itsSalary; // зарплата

};

// главная функция

int main() {

setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста

TEmployee e1; //создание объекта в стеке - мусор

// Определение свойств объекта p1 - set

e1.itsID=1000;

strcpy(e1.itsSurname,"Ivanov");

e1.itsSex='м';

//доступ к данным сложных объектов

e1.itsBirthday.itsDay=1;

e1.itsBirthday.itsMonth=10;

e1.itsBirthday.itsYear=1985;

strcpy(e1.itsAddress.itsZipCode,"12-2345-ab");

// Получение свойств объекта p1 - get

cout << e1.itsID << '\t' << e1.itsSurname << '\t' << e1.itsSex << endl;

//доступ к данным сложных объектов

cout << e1.itsBirthday.itsDay << '\t' << e1.itsBirthday.itsMonth << '\t'

<< e1.itsBirthday.itsYear << '\t' << e1.itsAddress.itsZipCode << endl;

cin.get();

return 0; //... происходит уничтожение стековых объектов

}

 

<== предыдущая лекция | следующая лекция ==>
Доступ к данным и методам | План лекции. Лекция 6.3. Конструкторы и деструктор
Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 360; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.