Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Классы и объекты в C++: практическое руководство по объектно-ориентированному программированию

Классы и объекты в C++

Узнайте, как инкапсулировать данные и поведение в C++ с помощью классов и объектов, с наглядными примерами и лучшими практиками.

Зачем использовать классы?

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

Иллюстрация: комната

Рассмотрим прямоугольную комнату. Нужно хранить её length, breadth и height, а также вычислять площадь и объем. С классом можно держать их тесно связанными:

class Room {
public:
    double length;
    double breadth;
    double height;
    double calculateArea() {
        return length * breadth;
    }
    double calculateVolume() {
        return length * breadth * height;
    }
};

Определение класса

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

class ClassName {
    // члены-данные
    // функции-члены
};

В примере выше Room — это чертеж. Переменные внутри называются членами-данными; функции — функциями-членами.

Создание объектов

Определение класса только задает компоновку; оно не выделяет память. Объекты — конкретные экземпляры, созданные по этому чертежу:

Room room1; // один объект
Room room2, room3; // несколько объектов в одном объявлении

Объекты можно создавать где угодно — внутри функций, других классов или глобально — пока соблюдается их область видимости.

Доступ к членам

Используйте оператор точки (.) для вызова функций-членов или доступа к членам-данным:

room1.length = 5.5;
double area = room1.calculateArea();

Пример 1: расчет параметров комнаты

#include <iostream>
using namespace std;
class Room {
public:
    double length;
    double breadth;
    double height;
    double calculateArea() {
        return length * breadth;
    }
    double calculateVolume() {
        return length * breadth * height;
    }
};
int main() {
    Room room1;
    room1.length = 42.5;
    room1.breadth = 30.8;
    room1.height = 19.2;
    cout << "Area of Room = " << room1.calculateArea() << endl;
    cout << "Volume of Room = " << room1.calculateVolume() << endl;
    return 0;
}

Результат

Area of Room = 1309
Volume of Room = 25132.8

Инкапсуляция: public vs private

Инкапсуляция защищает данные, контролируя доступ. Члены, объявленные как private, скрыты от внешнего мира и доступны только через публичные функции-члены.

class Test {
private:
    int a;
    void function1() {}
public:
    int b;
    void function2() {}
};

В следующем примере члены-данные приватны и инициализируются через публичный метод:

#include <iostream>
using namespace std;
class Room {
private:
    double length;
    double breadth;
    double height;
public:
    void initData(double len, double brth, double hgt) {
        length = len;
        breadth = brth;
        height = hgt;
    }
    double calculateArea() {
        return length * breadth;
    }
    double calculateVolume() {
        return length * breadth * height;
    }
};
int main() {
    Room room1;
    room1.initData(42.5, 30.8, 19.2);
    cout << "Area of Room = " << room1.calculateArea() << endl;
    cout << "Volume of Room = " << room1.calculateVolume() << endl;
    return 0;
}

Результат

Area of Room = 1309
Volume of Room = 25132.8

Дополнительное чтение

Для авторитативных рекомендаций обратитесь к стандарту ISO/IEC 14882:2023 или надежным ресурсам вроде cplusplus.com и cppreference.com.

Язык C

  1. Классы и объекты в C#: Фундаменты надёжного ООП
  2. Абстрактные классы и методы в C#: практическое руководство
  3. Частичные классы и методы в C#: понимание и применение
  4. Sealed-классы и sealed-методы в C#: когда использовать, примеры и повышение безопасности кода
  5. Дружественные функции и классы в C++: мастерство контроля доступа
  6. Шаблоны классов в C++: практическое руководство
  7. Классы и объекты в Java: практическое руководство
  8. Структуры C++ против классов: практическое руководство для разработчиков встроенных систем
  9. C++ Struct vs Class: ключевые отличия, синтаксис и лучшие сценарии использования
  10. Классы хранения в C++: область видимости, время жизни и использование