12.1  Компоненты ООП

Существует пять компонент ООП: объект, сообщение, класс, наследование и метод, которые очень сильно зависят друг от друга.

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

Сообщение – это специальный символ, идентификатор или ключевое слово (с параметрами или без них), которое описывает выполняемое объектом действие. Объект имеет четко определенное описание сообщений, которые он принимает и обрабатывает. В языке С++ сообщения вводятся с помощью функций в описании класса.

При создании объектов используются определенные типы данных, создаваемые пользователем и называемые классами. Для программистов классы являются расширениями структур языка С, дополненные «механизмами» скрытия данных, функциями-элементами и наследованием.

Между старыми структурами языка С, новыми структурами языка С++ и классами существует взаимосвязь (табл. 12.1).

Таблица 12.1 Ввзаимосвязь между структурами языка С/С++ и классами

Структура С

Структура С++

Класс С++

typedef struct

struct rect

class rect

 {

{

{

nt wd,ht;

int wd,ht ;

public:   

} rect;

};

int wd,ht;

};

В отличии от структур языка С, структуры языка C++ фактически являются типами определяемыми пользователем, без использования ключевого слова typedef. В языке С++ добавлено новое ключевое слово – class. Естественно, что класс, имеющий все элементы типа public без каких-либо функций, является обычной структурой С++. Типичный пример класса:

class circle

{                                         //  Объявление класса circle

private:                    //  Следующий элемент закрытый:

double radius;          //   Закрытый элемент

public:                      //  Следующие элементы общедоступные:

void init(double r);  //  Функция-элемент

double area(void);   //  Функция-элемент

  };

Экземпляры объекта принадлежат к какому-либо классу. Свойства экземпляра объекта определяются описанием класса. Объекты содержат и данные, и функции, которые по терминологии ООП называются методами. В языке С++ функции класса называют функциями-элементами (или функциями-членами). Метод определяет реакцию объекта на сообщение. Объекты обрабатывают сообщения в соответствии с методами, заданными в описании класса.

Объектно-ориентированный язык обладает такими свойствами как абстракция, инкапсуляция, полиморфизм и наследование. Рассмотрим их подробней.