Здесь я попытался изложить концепции oops простым языком с примерами, давайте посмотрим.

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

Проще говоря: объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на концепции «объектов». Создавайте объекты, повторно используйте их в программе и манипулируйте этими объектами для получения результатов.

а) Класс

Класс – это группа подобных сущностей. Это только логический компонент, а не физический объект. Класс чертеж для объекта. Он содержит свойства и методы/функции. Класс не занимает места.
Пример:Класс Car может иметьсвойства-скорость при торможении методов.

class MyClass {       // The class
  public:             // Access specifier
    int myNum;        // Attribute (int variable)
    string myString;  // Attribute (string variable)
};

б) Объект

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

MyClass myObj;  // Create an object of MyClass

  // Access attributes and set values
  myObj.myNum = 13; 
  myObj.myString = "Some text";

в) Метод

Метод – это набор операторов, которые выполняют определенную задачу и возвращают результат вызывающей стороне.
Методы экономят время и помогают нам повторно использовать код без повторного ввода. код.
Пример:вычислитьPrize()

d) Передача сообщений

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

д) Наследование

Это механизм, в котором один класс может наследовать функции (поля и методы) другого класса. Он создает отношения родитель-потомок между двумя классами. Он обеспечивает возможность повторного использования кода. Он используется для достижения полиморфизма во время выполнения.

class Animal {
    // eat() function
    // sleep() function
};

class Dog : public Animal {
    // bark() function, we can use functions of Animal class here
};

е) Полиморфизм

Если одна задача выполняется разными способами, это называется полиморфизмом. Полиморфизм — это концепция, при которой объект ведет себя по-разному в разных ситуациях. Существует два типа полиморфизма: полиморфизм времени компиляции и полиморфизм времени выполнения.

Полиморфизм времени компиляции достигается путем перегрузки методов.
Пример:
connect( )
connect(int a)
connect(int a, String age)

Полиморфизм во время выполнения достигается за счет переопределения методов
Пример:
public
class Дополнение {
func добавить() {}
}

общедоступный класс Результат: Добавление {
override func add() {
// ваш код находится здесь
}
}

class MyClass {
// function with 1 int parameter
void func(int x) {
cout << "value of x is " << x << endl;
}
// function with same name but 1 double parameter
void func(double x) {
cout << "value of x is " << x << endl;
}
// function with same name and 2 int parameters
void func(int x, int y) {
cout << "value of x and y is " << x << ", " << y << endl;
}
};

ж) Абстракция

Абстракция — это концепция сокрытия внутренних деталей и описания вещей простыми словами. Абстракция может быть достигнута в объектно-ориентированном программировании, таком как инкапсуляция и наследование.
Пример:снимите деньги в банкомате, пользователь знает только ввести пароль и сумму, но знает процесс, происходящий в фоновом режиме.

class Adder {
   public:
      // constructor
      Adder(int i = 0) {
         total = i;
      }
      
      // interface to outside world
      void addNum(int number) {
         total += number;
      }
      
      // interface to outside world
      int getTotal() {
         return total;
      };
      
   private:
      // hidden data from outside world
      int total;
};

int main() {
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

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

Связывание (или объединение) кода и данных вместе в единое целое называется инкапсуляцией. Данные в классе скрыты от других классов, поэтому он также известен как сокрытие данных.
Ключевые слова модификатора доступа используются для инкапсуляции в объектно-ориентированном программировании. т. е. публичный, частный и т. д.
Пример: капсула, в нее завернуты разные лекарства.

class Encapsulation {
private:
// data hidden from outside world
int x;
public:
// function to set value of
// variable x
void set(int a) {
x =a;
}
// function to return value of
// variable x
int get() {
return x;
}
};
// main function
int main() {
Encapsulation obj;
obj.set(5);
cout<<obj.get();
return 0;
}

i) Ассоциация

Ассоциация – это отношение между двумя объектами. Он определяет разнообразие между объектами. В этой концепции ООП у всех объектов есть свой жизненный цикл, и нет владельца.
Пример: рассмотрим класс, многие ученики могут общаться с одним учителем, а один студент также может общаться с несколькими учителями.

Между объектами может быть четыре типа ассоциации:

  • Один к одному
  • Один ко многим
  • Многие к одному и
  • Многие ко многим
public class BlogAccount {
       private BlogEntry[] blogEntries; 
   }
public class BlogEntry {
       Int32 blogId;
       string caption;
       string text;
   }

j) Агрегация

Агрегация представляет собой особый тип ассоциации. В совокупности объекты имеют свой собственный жизненный цикл, но есть право собственности. Он представляет собой слабую связь между объектами.
Пример: рассмотрим класс, отдел и учителя. Здесь один учитель не может принадлежать нескольким отделам, но даже если мы удалим отдел, объект учителя никогда не будет уничтожен.

public class BlogAuthor {
       private Int32 authorId;
       private string name;
   }
public class BlogAccount {
       private BlogEntry[] blogEntries;
   }

л) Состав

Композиция — это особая форма агрегации. Их еще называют «смертельными» отношениями. Если вы удалите родительский объект, все дочерние объекты будут удалены автоматически.
Пример: В школе есть классная комната. Здесь комната не может существовать без Школы.

public class House {
   private Room room;
   public House() {
       room = new Room();
   }
}

м) Связь

Сцепление относится к знанию, информации или зависимости другого класса. Он возникает, когда классы знают друг о друге. Если класс имеет подробную информацию о другом классе, существует сильная связь.

м) Сплоченность

Сплоченность относится к уровню компонента, который выполняет одну четко определенную задачу. Единая четко определенная задача выполняется с помощью очень согласованного метода. Слабо связный метод разделит задачу на отдельные части.

Вы всегда будете стремиться к высокой сплоченности и низкой связанности в ООП. Для получения более подробной информации перейдите по ссылке это.

Спасибо за примеры
https://www.infoworld.com/article/3029325/exploring-association-aggregation-and-composition-in-oop.html
https://www.tutorialspoint .com
https://www.geeksforgeeks.org

Спасибо, удачного кодирования!