Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
50
Добавлен:
16.02.2016
Размер:
196.61 Кб
Скачать

PrintMsg(int _x, int _y, char* msg): Coord(_x, _y), SaveMsg(msg){}

В основной программе этому конструктору передаются аргу­менты при создании объекта класса PrintMsg с помощью опе­ратора new:

ptr = new PrintMsg(10, 5, "Множественное ");

Выполнение функции-члена Show() приводит к выводу на экран в указанных координатах сообщения, заданного третьим аргументом.

Следующие за этим вызовы функций-членов SetX (), SetY () и SetMsg () приводят к установке новых значений ко­ординат и нового сообщения, которое выводится повторным вы­зовом функции Show ().

Рассмотрим еще один пример, который демонстрирует поря­док вызова конструкторов и деструкторов базовых классов.

#include <iostream.h>

class Basel

{

public:

Basel(){cout «"Мы в конструкторе Basel\n";}

~Basel(){cout «"Мы в деструкторе Basel\n";}

};

class Base2

{

public:

Base2() {cout «"Мы в конструкторе Base2\n";}

~Base2(){cout «"Мы в деструкторе Base2\n";}

};

class Derived: public Basel, public Base2

{

public:

Derived()

{

cout « "Мы в конструкторе Derived \n";

}

~Derived()

{

cout « "Мы в деструкторе Derived \n";

}

};

main()

{

Derived ob;.

return 0;

}

Эта программа выводит на экран следующее:

Мы в конструкторе Basel

Мы в конструкторе Base2

Мы в конструкторе Derived

Мы в деструкторе Derived

Мы в деструкторе Base2

Мы в деструкторе Basel

Этот пример наглядно демонстрирует, что конструкторы ба­зовых классов вызываются в порядке их объявления. Деструкторы вызываются в обратном порядке.

РЕЗЮМЕ

В методологии ООП понятием класс определяется группа однотипных объек­тов. При этом каждый представитель (или экземпляр) класса назы­вается объектом. Каждый объект всегда имеет свое, уникальное состояние, определяемое текущими значениями его данных-членов (элементов-данных). Функциональное назначение класса определя­ется возможными действиями над объектами класса, которые зада­ются его функциями-членами (функциями-элементами или метода­ми). В каждом классе распределяется память для хранения данных, и устанавливаются допустимые опера­ции для каждого объекта данных данного типа. Создание объектов данного класса производится специальной функцией-членом, кото­рая называется конструктором, а уничтожение — другой специаль­ной функцией-членом, которая называется деструктором. Класс позволяет делать недоступными внутренние данные, представляя их как открытые (public), закрытые (private) и защищенные (protected). Класс устанавливает четко определенный интерфейс для взаимодействия объектов этого типа с остальным миром. Закры­тые коды или данные доступны только внутри этого объекта. С дру­гой стороны, открытые коды и данные, несмотря на то, что они за­даны внутри объекта, доступны для всех частей программы. Откры­тая часть объекта как раз и используется для создания интерфейса объекта с остальным миром. Полученными объектами можно управлять при помощи сообщений (или запросов), которые пред­ставляют собой просто вызовы функций-членов. Мы будем пользо­ваться термином запрос, чтобы не путать это понятие с сообщения­ми операционной системы Windows.

В объектно-ориентированном проектировании решаемая задача представляется не в виде алгоритмической мо­дели, а в виде совокупности объектов различных классов, кото­рые обмениваются запросами. Объект, получивший запрос, отве­чает на него посредством вызова соответствующей функции-члена. Нахождение общности между типами объектов задачи — далеко не простой процесс. Он осуществляется на стадии объектно-ориентированного проектирования. На этой стадии внача­ле рассматривается вопрос о применимости ООП к решаемой задаче. При этом для принятия решения о применимости ООП решающую роль играет та степень общности между классами, которую можно использовать, применяя механизмы наследова­ния и виртуальные функции.

Понятие класса является ключевым как в методологии в ООП, так и в языке C++, где класс – синтаксическая конструкция с широким функциональным наполнением:

class <имя_класса>

{//закрытые функции-члены и данные-члены класса

public:

//открытые функции-члены и данные-члены класса

}

Функции и переменные, указанные внутри объявления класса, становятся членами этого класса. Переменные, указанные внутри объявления класса, называются данными-членами этого класса; функции, указанные внутри объявления класса, называются функциями-членами класса. По умолчанию, все функции и переменные, объявленные в классе, становятся закры­тыми для этого класса. Это означает, что они доступны только для других членов этого класса. Для объявления открытых чле­нов класса используется ключевое слово public, за которым следует двоеточие. Все функции и переменные, объявленные по­сле слова public, доступны и для других членов класса, и для любой другой части программы, в которой содержится класс.

Вот пример объявления класса:

class AnyClass

{//закрытый элемент класса

int a;

public:

int get_a();

Соседние файлы в папке ЛекцииКарасева