C++ для новичков: классы и объекты

Структуры данных и классы: в чём разница?

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

Классы используются для описания более крупных объектов, таких как машина, человек или дом, обладающих множеством характеристик и функционала. Человек, например, имеет имя, вес, возраст, хобби и так далее, а также функционал: ходить, прыгать, спать. Таким образом, класс описывает как характеристики, так и действия, которые может выполнять объект.

Вкратце, для небольших объектов лучше использовать структуры, для больших — классы.

Создание первого класса

Для создания класса используется ключевое слово class, за которым следует имя класса и фигурные скобки {}, завершающиеся точкой с запятой:

class Building {
};

Внутри класса можно описывать поля (переменные) и методы (функции). Для указания уровня доступа к полям и методам используются модификаторы доступа.

Модификаторы доступа

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

  • public: Поля и методы, объявленные как public, доступны отовсюду: внутри класса, внутри объектов и извне.
  • private: Поля и методы, объявленные как private, доступны только внутри класса. Доступ извне или через объекты класса запрещен.
  • protected: Доступ к полям и методам, объявленным как protected, возможен внутри класса и в классах-наследниках (это будет рассмотрено в последующих уроках).

Пример класса

Пример класса Building с полями и методом:

class Building {
public:
    void GetInfo() {
        std::cout << "Type: " << type << std::endl;
        std::cout << "Year: " << year << std::endl;
    }
private:
    int year;
    std::string type;
};

В данном примере year и type – поля (характеристики здания), а GetInfo() – метод (вывод информации о здании). GetInfo() объявлен как public, а поля – как private.

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

Объекты создаются на основе класса:

Building school;
school.type = "School";
school.year = 2000;
school.GetInfo();

Здесь создан объект school класса Building, и установлены его характеристики. Вызов school.GetInfo() выведет информацию на экран. Обратите внимание, что напрямую обратиться к полям year и type объекта school нельзя, так как они объявлены как private.

Можно создать несколько объектов и работать с каждым из них независимо:

Building house;
house.type = "House";
house.year = 2010;
house.GetInfo();

Инкапсуляция

Принято объявлять поля класса как private, обеспечивая инкапсуляцию. Доступ к полям осуществляется через методы, например, SetData() для установки значений и GetInfo() для получения информации. Это улучшает структуру кода и предотвращает прямое изменение полей, что повышает надежность программы.

class Building {
private:
    int year;
    std::string type;
public:
    void SetData(int y, std::string t) {
        year = y;
        type = t;
    }
    void GetInfo() {
        std::cout << "Type: " << type << std::endl;
        std::cout << "Year: " << year << std::endl;
    }
};

В этом уроке освоены основы создания классов и объектов в C++. Классы — мощный инструмент для организации кода и моделирования реальных объектов. Инкапсуляция данных через private поля и public методы повышает надежность и безопасность кода. Понимание принципов работы с классами и объектами — важный этап в изучении C++.

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