logo

Об'єктно-орієнтоване програмування мовою C++

Об’єктно-орієнтоване програмування – як випливає з назви, у програмуванні використовуються об’єкти. Об’єктно-орієнтоване програмування спрямоване на реалізацію реальних сутностей, таких як успадкування, приховування, поліморфізм тощо в програмуванні. Основною метою ООП є зв’язування даних і функцій, які з ними працюють, щоб жодна інша частина коду не могла отримати доступ до цих даних, окрім цієї функції.

Є кілька базових концепцій, які є будівельними блоками ООП, тобто



  1. Клас
  2. Об'єкти
  3. Інкапсуляція
  4. Абстракція
  5. Поліморфізм
  6. Спадщина
  7. Динамічне прив'язування
  8. Передача повідомлень

Характеристики мови об'єктно-орієнтованого програмування

Концепція OOPS у C++

java отримати поточний час

Клас

Будівельним блоком C++, який веде до об’єктно-орієнтованого програмування, є клас. Це тип даних, визначений користувачем, який містить власні члени даних і функції-члени, доступ до яких можна отримати та використовувати, створивши екземпляр цього класу. Клас схожий на план для об'єкта. Наприклад: розглянемо клас автомобілів. Може бути багато автомобілів з різними назвами та марками, але всі вони матимуть спільні властивості, як-от усі вони матимуть 4 колеса, обмеження швидкості, діапазон пробігу тощо. Отже, тут Автомобіль – це клас, а колеса – обмеження швидкості , і пробіг є їх властивостями.

  • Клас — це визначений користувачем тип даних, який містить елементи даних і функції-члени.
  • Члени даних — це змінні даних, а функції-члени — це функції, які використовуються для керування цими змінними разом. Ці члени даних і функції-члени визначають властивості та поведінку об’єктів у класі.
  • У наведеному вище прикладі класу Car елемент даних буде обмеженням швидкості, пробігом тощо, а функції-члени можуть застосовувати гальма, збільшувати швидкість тощо.

Можна сказати, що а Клас на C++ це схема, що представляє групу об'єктів, які мають спільні властивості та поведінку.



Об'єкт

Об’єкт — це ідентифікована сутність із деякими характеристиками та поведінкою. Об’єкт – це екземпляр класу. Коли клас визначено, пам’ять не виділяється, але коли він створюється (тобто створюється об’єкт), пам’ять виділяється.

C++
// C++ Program to show the syntax/working of Objects as a // part of Object Oriented PProgramming #include  using namespace std; class person {  char name[20];  int id; public:  void getdetails() {} }; int main() {  person p1; // p1 is a object  return 0; }>

Об’єкти займають місце в пам’яті та мають пов’язану адресу, наприклад запис у паскалі, структуру чи об’єднання. Коли програма виконується, об’єкти взаємодіють, надсилаючи повідомлення один одному. Кожен об’єкт містить дані та код для керування даними. Об’єкти можуть взаємодіяти без необхідності знати подробиці даних або коду один одного, достатньо знати тип прийнятого повідомлення та тип відповіді, яку повертають об’єкти.

Щоб дізнатися більше про об’єкти та класи C++, зверніться до цієї статті – Класи та об’єкти C++



Інкапсуляція

У звичайних термінах інкапсуляція визначається як обгортання даних та інформації в єдиний блок. В об’єктно-орієнтованому програмуванні інкапсуляція визначається як зв’язування разом даних і функцій, які ними маніпулюють. Розглянемо реальний приклад інкапсуляції: у компанії існують різні розділи, як-от розділ рахунків, відділ фінансів, відділ продажу тощо. Фінансовий відділ обробляє всі фінансові операції та зберігає записи всіх даних, пов’язаних з фінансами. Подібним чином відділ продажів займається всією діяльністю, пов’язаною з продажами, і веде облік усіх продажів. Тепер може виникнути ситуація, коли чиновнику з фінансового відділу з якихось причин потрібні всі дані про продажі в конкретному місяці. У цьому випадку він не має прямого доступу до даних розділу продажів. Спочатку йому доведеться зв’язатися з іншим співробітником відділу продажів, а потім попросити його надати конкретні дані. Ось що таке інкапсуляція. Тут дані відділу продажів і співробітників, які можуть маніпулювати ними, об’єднані в одну назву розділ продажів.

Інкапсуляція в C++ із прикладами

Інкапсуляція в C++

Інкапсуляція також призводить до абстракція даних або приховування даних . Використання інкапсуляції також приховує дані. У наведеному вище прикладі дані будь-якого розділу, як-от продажі, фінанси чи облікові записи, приховано від будь-якого іншого розділу.

імпорт сканера java

Щоб дізнатися більше про інкапсуляцію, зверніться до цієї статті – Інкапсуляція в C++

Абстракція

Абстракція даних є однією з найважливіших і найважливіших особливостей об’єктно-орієнтованого програмування в C++. Абстракція означає відображення лише важливої ​​інформації та приховування деталей. Абстракція даних означає надання лише необхідної інформації про дані зовнішньому світу, приховуючи фонові деталі або реалізацію. Розглянемо реальний приклад чоловіка за кермом автомобіля. Людина знає лише те, що натискання на акселератор збільшить швидкість автомобіля або застосування гальм зупинить автомобіль, але він не знає, як натискаючи на акселератор швидкість насправді збільшується, він не знає про внутрішній механізм автомобіля чи впровадження в автомобіль акселератора, гальм і т.д. Ось що таке абстракція.

  • Абстракція з використанням класів : ми можемо реалізувати абстракцію в C++ за допомогою класів. Клас допомагає нам групувати члени даних і функції-члени за допомогою доступних специфікаторів доступу. Клас може вирішити, який елемент даних буде видимим для зовнішнього світу, а який ні.
  • Абстракція у файлах заголовків : Ще одним типом абстракції в C++ можуть бути файли заголовків. Наприклад, розглянемо метод pow() у файлі заголовка math.h. Кожного разу, коли нам потрібно обчислити ступінь числа, ми просто викликаємо функцію pow(), наявну у файлі заголовка math.h, і передаємо числа як аргументи, не знаючи основного алгоритму, згідно з яким функція фактично обчислює ступінь числа. .

Щоб дізнатися більше про абстракцію C++, зверніться до цієї статті – Абстракція в C++

Поліморфізм

Слово поліморфізм означає наявність багатьох форм. Простими словами, ми можемо визначити поліморфізм як здатність повідомлення відображатися в більш ніж одній формі. Людина одночасно може мати різні характеристики. Чоловік одночасно є і батьком, і чоловіком, і працівником. Таким чином, одна й та сама людина має різну поведінку в різних ситуаціях. Це називається поліморфізмом. Операція може демонструвати різну поведінку в різних випадках. Поведінка залежить від типів даних, які використовуються в операції. C++ підтримує перевантаження операторів і функцій.

  • Перевантаження оператора : процес змушення оператора демонструвати різну поведінку в різних випадках відомий як перевантаження оператора.
  • Перевантаження функцій : Перевантаження функцій — це використання однієї назви функції для виконання різних типів завдань. Поліморфізм широко використовується при реалізації спадкування.

приклад : Припустімо, що нам потрібно написати функцію для додавання деяких цілих чисел, іноді є 2 цілі числа, а іноді 3 цілі числа. Ми можемо написати метод додавання з однаковою назвою з різними параметрами, відповідний метод буде викликатися відповідно до параметрів.

Поліморфізм у C++ із прикладом

Поліморфізм у C++

Щоб дізнатися більше про поліморфізм, зверніться до цієї статті – Поліморфізм у C++

Спадщина

Здатність класу отримувати властивості та характеристики з іншого класу називається Спадщина . Спадкування є однією з найважливіших особливостей об'єктно-орієнтованого програмування.

  • Підклас : клас, який успадковує властивості від іншого класу, називається підкласом або похідним класом.
  • Супер Клас : Клас, властивості якого успадковуються підкласом, називається базовим класом або суперкласом.
  • Багаторазове використання : Спадкування підтримує концепцію багаторазового використання, тобто коли ми хочемо створити новий клас і вже є клас, який містить частину потрібного коду, ми можемо вивести наш новий клас із існуючого класу. Роблячи це, ми повторно використовуємо поля та методи існуючого класу.

приклад : собака, кіт, корова можуть бути похідними класами базового класу тварин.

Спадкування в C++ із прикладом

Спадкування в C++

Щоб дізнатися більше про успадкування, зверніться до цієї статті – Спадкування в C++

підрядок рядок java

Динамічне прив'язування

У динамічному зв’язуванні код, який буде виконано у відповідь на виклик функції, визначається під час виконання. C++ має віртуальні функції щоб підтримати це. Оскільки динамічне зв’язування є гнучким, воно уникає недоліків статичного зв’язування, яке пов’язувало виклик функції та визначення під час збирання.

приклад:

C++
// C++ Program to Demonstrate the Concept of Dynamic binding // with the help of virtual function #include  using namespace std; class GFG { public:  void call_Function() // function that call print  {  print();  }  void print() // the display function  {  cout << 'Printing the Base class Content' << endl;  } }; class GFG2 : public GFG // GFG2 inherit a publicly { public:  void print() // GFG2's display  {  cout << 'Printing the Derived class Content'  << endl;  } }; int main() {  GFG geeksforgeeks; // Creating GFG's object  geeksforgeeks.call_Function(); // Calling call_Function  GFG2 geeksforgeeks2; // creating GFG2 object  geeksforgeeks2.call_Function(); // calling call_Function  // for GFG2 object  return 0; }>

Вихід
Printing the Base class Content Printing the Base class Content>

Як ми бачимо, функція print() батьківського класу викликається навіть з об’єкта похідного класу. Щоб вирішити цю проблему, ми використовуємо віртуальні функції.

Наведений вище приклад із віртуальною функцією:

C++
#include using namespace std; class GFG { public:  void call_Function() // function that call print  {  print();  }  virtual void print() // using 'virtual' for the display function   {  cout << 'Printing the Base class Content' << endl;  } }; class GFG2 : public GFG // GFG2 inherit a publicly { public:  void print() // GFG2's display  {  cout << 'Printing the Derived class Content'  << endl;  } }; int main() {  GFG geeksforgeeks; // Creating GFG's object  geeksforgeeks.call_Function(); // Calling call_Function  GFG2 geeksforgeeks2; // creating GFG2 object  geeksforgeeks2.call_Function(); // calling call_Function  // for GFG2 object  return 0; } //this code is contributed by Md Nizamuddin>

Вихід
Printing the Base class Content Printing the Derived class Content>


Передача повідомлень

Об’єкти спілкуються один з одним, посилаючи та отримуючи інформацію. Повідомлення для об’єкта є запитом на виконання процедури, тому воно викликає функцію в об’єкті-одержувачі, яка генерує бажані результати. Передача повідомлень включає вказівку імені об’єкта, імені функції та інформації, яка надсилається.

приклад:

C++
#include  using namespace std; // Define a Car class with a method to display its speed class Car { public:  void displaySpeed(int speed) {  cout << 'The car is moving at ' << speed << ' km/h.' << endl;  } }; int main() {  // Create a Car object named myCar  Car myCar;  // Send a message to myCar to execute the displaySpeed method  int currentSpeed = 100;  myCar.displaySpeed(currentSpeed);  return 0; } //this code is contributed by Md Nizamuddin>


Схожі статті :