§ 1. Концепция ООП в языке программирования

 

Объект — это совокупность данных и методов работы с ними.

Организация данных внутри объекта скрыта от пользователя. Данные и способы их чтения и записи являются свойствами объекта, которые можно изменять. Методы — это подпрограммы для обработки данных (пример 1.8).

В программировании объект — это экземпляр класса. По сути, класс является планом, структурой объекта. А объект представляет конкретное воплощение класса, его реализацию.

Класс — это тип данных, определяемый пользователем. Данные, которыми можно характеризовать объект класса, называют полями. Функции, которые могут выполнять какие-либо действия над данными (свойствами) класса, называют методами.

Каждая переменная типа «класс» является объектом. Объект класса определяется конкретным значением переменных, которое описывают состоянием объекта.

Классы обеспечивают сокрытие данных, их инициализацию, неявное преобразование пользовательских типов, средства для перегрузки операций и др.

С понятием класса как типа данных вы познакомились в 10 классе. В примере 1.9 приведены описания классов, которые разбирались ранее.

Метод класса, который гарантирует, что он не будет изменять объект или вызывать другие методы, которые могут его  изменить, называют константным методом.

Чтобы сделать метод константным, нужно просто добавить ключевое слово const к объявлению функции после списка параметров, но перед телом функции (пример 1.10). Для методов, определенных вне тела класса, ключевое слово const должно использоваться как в объявлении функции (в теле класса), так и в определении функции.


 

Пример 1.8. Объекты операционной системы имеют контекстное меню, в котором находится список действий, которые можно над объектом выполнить. Каждое из действий вызывает на работу определенный метод, который описан в программе. В контекстном меню обычно находится строка «Свойства», которая позволяет изменять свойства объекта.

Пример 1.9. Описание классов.

Класс для описания точки на плоскости. Поля — координаты точки, метод — вычисление угла наклона к оси OX отрезка, соединяющего начало координат с точкой.

class Tchk

{

  private:

    double x, y;

  public:

    double ugol();

};

 

double Tchk::ugol()

{

  double tg = y / x;

  return atan(tg) * 180 / acos(-1);

}

Класс для описания даты. Поля — день, месяц, год. Метод — вывод даты на экран с разделителем «.»:

class Date

{

  private:

   int d, m, g;

  public:

   void print();

};

 

void Date::print()

{

  cout << d << "." << m << "." << g;

}

Пример 1.10. Использование константного метода:

class Date

{

  private:

   int d, m, g;

  public:

   void print() const;

};

 

void Date::print() const

{

  cout << d << "." << m << "." << g;

}