C++ ООП для начинающих: классы и объекты (Урок 18)

Объектно-ориентированное программирование (ООП) основано на классах и объектах: объекты создаются на основе классов.

ООП: преимущества и краткий обзор

C++ расширяет возможности языка Си, добавляя поддержку ООП. Это позволяет создавать более эффективный и легко масштабируемый код. Вместо многократного повторения кода, ООП использует классы для создания объектов.

Рассмотрим пример: браузер и его вкладки. Вкладка — это класс. Каждая новая вкладка — объект этого класса. Без использования объектов, для каждой новой вкладки пришлось бы копировать весь код, что неэффективно. С объектами мы создаем новые объекты, используя класс и его функции, что позволяет открывать сотни вкладок без многократного копирования кода.

Создание класса в C++

Классы в C++ объявляются вне любых функций.

class OutA {
  // Содержимое класса
};

Ключевое слово class объявляет класс. Имя класса (OutA в примере) может быть любым. Фигурные скобки {} содержат параметры, функции и поля класса. Точка с запятой после закрывающей фигурной скобки обязательна.

Модификаторы доступа: public, private, protected

В классе используются модификаторы доступа: public, private и protected, определяющие видимость членов класса.

class OutA {
public:
  // Доступны отовсюду
private:
  // Доступны только внутри класса
protected:
  // Доступны внутри класса и его наследников
};
  • public: Члены класса, объявленные с public, видны из любой функции, класса или наследника.
  • private: Члены класса, объявленные с private, видны только внутри класса.
  • protected: Члены класса, объявленные с protected, видны внутри класса и его наследников.

Практический пример: класс с методом и переменными

Создадим простой класс с методом и переменными:

class OutA {
public:
  void message() {
    std::cout << "Class is working\n";
  }
private:
  int year;
  int month;
  int day;
};

int main() {
  OutA skoda;
  skoda.message();
  return 0;
}

Здесь создан объект skoda класса OutA и вызван его публичный метод message(). Обращение к приватным переменным year, month, day приведёт к ошибке компиляции.

Методы get и set

Обычно поля класса объявляются private, а доступ к ним осуществляется через методы get и set.

class OutA {
public:
  void set(int y, int m, int d) {
    year = y;
    month = m;
    day = d;
  }
  void get() {
    std::cout << year << ", " << month << ", " << day << "\n";
  }
private:
  int year;
  int month;
  int day;
};

int main() {
  OutA skoda;
  skoda.set(2005, 11, 23);
  skoda.get();
  return 0;
}

Метод set устанавливает значения переменных, а метод get выводит их на экран.

Создание нескольких объектов одного класса

Можно создавать несколько объектов одного класса, каждый со своими значениями переменных:

int main() {
  OutA skoda;
  skoda.set(2005, 11, 23);
  OutA bmw;
  bmw.set(2000, 1, 11);
  skoda.get();
  bmw.get();
  return 0;
}

В этом уроке рассмотрены основы ООП в C++: создание классов, использование модификаторов доступа и работа с методами get и set. Для лучшего понимания рекомендуется самостоятельно создать класс на другую тему (например, класс «Дом» с объектами «магазин», «церковь»). Знание ООП важно для изучения других языков программирования, таких как Java и C#.

Что будем искать? Например,программа