Абстракция – представление сложной концепции в более простой форме. С помощью абстракции можно представить объект как «дом», а не как комбинацию стекла, древесины и гвоздей. Представление множества домов, улиц, парков как «город» требует использование уже другой абстракции. В объектно-ориентированном программировании это придание объекту характеристик, которые четко определяют его концептуальные границы, отличая от всех других объектов. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов.
Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации.
Разработчики ПО, иногда, создают системы на уровне волокон древесины, молекул лака и стали, из-за чего они становятся слишком сложные и не поддаются осмыслению. Если программисты не создают более общие абстракции, разработка системы может завершиться неудачей.
Класс
Класс – структура кода на основании которой происходит формирование объектов. В классе данные объявляются в виде переменных и называются переменными экземпляра (полями), а код оформляется в виде функций.
В объектно-ориентированных языках для создания объектов используется конструктор. Он представляет собой оформление кода подобно функции. При создании объектов происходит вызов конструктора и выделение памяти для переменных. Обычно конструктор используется для инициализации начальными значениями переменных или вызова стартовых функций для дальнейшего формирования объекта.
В противоположность конструктору, который отвечает за создание объекта, реализован деструктор, задача которого разрушить объект и выполнить некоторые действия. Примером применения деструктора может служить закрытие файла после разрушения объекта. Существует два способа вызова деструктора – явный и неявный. В первом случае вызов происходит после окончания выполнения блока, объявление в котором происходило, и доступен для стековых объектов. Второй способ вызова применяется для объектов с динамически выделенной памятью (при помощи оператора new).
Пример 1.1.Объявление конструктора и деструктора.
classMyClass
{
public:
intstartCount;
MyClass(int count);
~MyClass();
}
MyClass::MyClass(int count)
{
startCount = count }
MyClass::~MyClass()
{
count<< '' Разрушение объекта'' }
Объект
Объект – частная реализация класса. Если класс выступает как заготовленный шаблон, то объект представляет собой заполненный экземпляр. При вызове конструктора класса происходит создание объекта путем выделения памяти. Если в конструкторе класса определены параметры или описаны вызываемые стартовые функции, то объект приобретает необходимый функционал. Данный механизм обычно используется для инициализации переменных экземпляра отличительными данными (например идентификационными). При вызове деструкторы происходит разрушение объекта и освобождение памяти. Время, прошедшее с момента создания и до разрушения объекта, называется временем жизни объекта.
Пример 1.2.Создание объекта с использование параметризированного конструктора.