Об'єктно-орієнтований дизайн (OOD) в C++ є парадигмом програмування, який організовує програмне забезпечення, що розробляється навколо даних, або об'єктів, а не функцій і логіки. Він допомагає створювати модульні, багаторазові і підтримують код. Ця стаття надає практичні приклади OOD в C++ і обговорює, як оцінити наслідки виконання використання об'єктивно-орієнтованих методів.

Основні принципи об'єкту-орієнтованого дизайну

Основні принципи OOD включають в себе інгапульацію, спадкування та поліморфізм. Удосконалення передбачає консолідацію даних та методів в класах. Недотримання дозволяє новим заняттям водити з існуючих, просування коду повторного використання. Поліморфізм дозволяє об'єктам лікуватися як екземпляри свого класу батьків, що полегшують гнучкий код.

Практичний приклад: Hierarchy

Розглянемо простий ієрархію для форм. Базовий клас Shape визначає загальний інтерфейс для всіх форм, таких як розрахунок площі. Прийняті класи, такі як Circle] і Rectangle реалізовувати конкретні поведінки.

class Shape {
public:
 virtual double area() const = 0;
 virtual ~Shape() {}
};

class Circle : public Shape {
private:
 double radius;
public:
 Circle(double r) : radius(r) {}
 double area() const override {
 return 3.14159 * radius * radius;
 }
};

class Rectangle : public Shape {
private:
 double width, height;
public:
 Rectangle(double w, double h) : width(w), height(h) {}
 double area() const override {
 return width * height;
 }
};

Оцінка продуктивності

Використання об’єктів-орієнтованих функцій може впливати на продуктивність через фактори, такі як віртуальні функції, дзвінки та динамічне розміщення пам’яті. Віртуальні функції вводять невелике накладне через vtable-viewup. Надмірне використання спадщини та динамічної пам’яті також може вплинути на ефективність.

Оптимізація продуктивності

  • Мінімізувати дзвінки віртуальної функції в режимі реального часу.
  • Використовуйте стебло, коли можливо замість динамічної пам'яті.
  • Доповнення складу за спадкуванням для простих об'єктів.
  • Профільний код для виявлення пляшок, пов'язаних з функціями OOD.