Большинство из вас, возможно, слышали термин «объектно-ориентированное программирование», пытаясь выучить язык программирования. Итак, что же это за штука? Имеет ли это какое-то значение? Нужно ли вообще объектно-ориентированное программирование? Давайте посмотрим на это.

Различные парадигмы программирования

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

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

Процедурное программирование

Процедурное программирование — это тип парадигмы программирования, в которой больше внимания уделяется процедурам, чем данным. Процедурное программирование в основном используется в таких языках программирования, как c, Fortran, Pascal и т. д.

Некоторые преимущества парадигм процедурного программирования:

  • Он очень структурирован
  • Это позволяет легко отслеживать ход выполнения программы
  • Это довольно просто и легко реализовать

Парадигма процедурного программирования разделяет функции и данные, которыми они манипулируют. Теперь это приводит ко многим проблемам, когда речь идет о расширении программного обеспечения или обслуживании программного обеспечения. Это объясняется следующим образом -

  • Процедурное программирование восприимчиво к изменениям дизайна

Например, взгляните на этот фрагмент кода —

struct employer {
  int empid;
  char name[100];
  char post;
  }

Теперь членами структуры можно манипулировать в программе как -

void reademployee(employer e1){
  cout<<"Enter id";
  cin>>e1.empid;
  cout<<"Enter Name";
  gets(e1.name);
  cout<<"Enter post";
  cin>>e1.post;
  }

Теперь, если по каким-либо причинам необходимо изменить сотрудника структуры и добавить новый номер сотрудника -

struct employer {
  int empid;
  char name[100];
  char post;
  int empno;
  }

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

  • Кроме того, процедурное программирование приводит к увеличению затрат времени и средств при внесении изменений в проект.

Объектно-ориентированное программирование

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

-Википедия

Объектно-ориентированное программирование уделяет больше внимания объектам. В ООП данные и связанные с ними функции заключены в единую сущность — класс. Некоторые преимущества ООП:

  • Объектно-ориентированное программирование локализует детали реализации

Объектно-ориентированное программирование очень полезно, когда дело доходит до локализации деталей реализации. Давайте взглянем-

class employer {
  int empid;
  char name[100];
  char post;
  int empno;
  public:
        void reademployee();
        void removeemployee();
  }

Не путайте структуру и класс. Если вы не знаете различий между структурой и классом. Класс — это в основном структура, и он может даже содержать в себе функции. И только объявления под public составляют пользовательский интерфейс. Это все, что вам нужно знать на данный момент о структуре и классах.
Итак, к настоящему моменту у вас может быть приведенный выше фрагмент кода, похожий на тот, который мы обсуждали в POP. Единственная разница заключается в том, что функции-члены присутствуют внутри класса. Теперь позвольте мне показать вам красоту ООП.

Что делать, если вам нужно добавить еще одну полевую зарплату в класс работодателя? Давай сделаем это-

class employer {
  int empid;
  char name[100];
  char post;
  int empno;
  int salary;
  public:
        void reademployee();
        void removeemployee();
  }

Итак, как вы можете видеть, были внесены изменения в работодателя класса, но какая разница. Разница заключается в том, что пользователь никогда не узнает о добавленном новом поле, поскольку пользователь может только просматривать общедоступную часть. Но что теперь с определениями функций, нужно ли их тоже менять? Да, это необходимо, но теперь дело в том, что изменения теперь локализованы в определении измененной функции, и пользователь их не видит.

  • ООП преодолевает большинство недостатков и недостатков ПОП
  • ООП поддерживает пользовательские типы
  • ООП реализует сокрытие и абстракцию информации и т. д.

Основные понятия ООП

Общие концепции ООП таковы:

  • Абстракция данных
  • Инкапсуляция данных
  • Модульность
  • Наследование
  • Полиморфизм

Но прежде чем обсуждать основные понятия, давайте посмотрим, что такое классы и объекты. Почему мы их обсуждаем? Это из-за того факта, о котором я упоминал ранее, т.е.

В ООП данные и связанные с ними функции заключены в единую сущность — класс.

Объекты:-

"Объект — это идентифицируемый объект с некоторыми характеристиками и поведением"

Чтобы лучше понять объекты, давайте рассмотрим пример. Допустим, автомобиль — это объект. Итак, мы можем сказать, что его характеристики таковы — Он зеленый, Это Форд Мустанг и работает на бензине. Точно так же объекты — это сущность, в которой хранятся данные, имеющие некоторые характеристики и поведение.

Класс:-

"Класс — это группа объектов, которые имеют общие свойства и отношения"

Давайте рассмотрим приведенный выше пример объектов. Форд мустанг разных моделей, Тойота Приус, Фольксваген поло не что иное, как разные модели МАШИН. Итак, все эти модели автомобилей или, как мы можем сказать, Объекты, которые имеют общие свойства, сгруппированы в АВТОМОБИЛИ или, как мы можем сказать, класс.

Теперь давайте обсудим основные концепции ООП.

  • Абстракция данных: -

"Абстракция — это действие по представлению основных функций без включения второстепенных деталей или объяснений"

Таким образом, абстракция данных заключается в подтверждении пользователю необходимых сведений. Рассмотрим пример -

О чем вы спрашиваете, когда покупаете автомобиль? Конечно, вы хотите знать характеристики автомобиля, такие как модель, размер, цвет и т. д. Но вы когда-нибудь интересовались какими-либо подробностями, такими как проводка, работа двигателя и т. д.? Вот что на самом деле означает абстракция данных. Пользователь видит только самое необходимое, а все остальное, что ему не нужно, скрыто.

  • Инкапсуляция: -

"Объединение данных и операций/функций (которые работают с данными) в единое целое (называемое классом) называется инкапсуляцией"

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

  • Модульность: -

"Модульность — это свойство системы, которая была разложена на набор связных и слабо связанных модулей"

Модульность — это в основном акт разделения программы на отдельные компоненты. Преимущества модульности:

  1. Это в некоторой степени снижает сложность
  2. Он создает ряд четко определенных границ внутри программы.

Давайте рассмотрим пример, чтобы понять это лучше. Возможно, вы столкнулись с сайтом электронной коммерции. Итак, если мы рассмотрим базовую структуру веб-сайта электронной коммерции, веб-сайт в основном имеет корзину, в которую вы можете добавлять свои продукты, а затем после этого вы можете либо искать другие продукты, либо перейти к доставке и оплате продуктов. продукты. Теперь поиск, доставка и платежи сами по себе являются 3 разными независимыми единицами, но все же они являются частями веб-сайта электронной коммерции. Вот что такое модульность. Программу аналогичным образом можно разделить на разные модули.

  • Наследование:-

"Наследование — это способность одного класса вещей получать возможности или свойства от другого класса"

Наследование — одна из основных концепций ООП. Итак, давайте попробуем понять, что такое наследование на самом деле-
Как вы можете видеть на диаграмме, это своего рода простой график для представления того, что под чем!! Давайте попробуем понять это из основания графика. Что относятся к мобильным телефонам и проводным телефонам? или мы могли бы сказать, что они на самом деле? Просто они оба не что иное, как типы телефонов. Точно так же, что такое вкладыши, наушники, музыкальные плееры, стереосистемы и т. д.? Просто это разные звуковые системы. Теперь, что такое телефоны и звуковые системы?? Проще говоря, это разные электронные гаджеты или электронные предметы. Итак, вот что такое основная концепция наследования. Итак, если рассматривать это с точки зрения классов, телефоны и звуковые системы наследуют некоторые свойства класса электронных элементов. Мобильные телефоны, проводные телефоны, в свою очередь, наследуют некоторые свойства класса Телефоны и Музыкальные плееры, наушники и т. д. наследуют некоторые свойства класса Звуковые системы.

Наследование — это мощный способ передачи собственности. Итак, с точки зрения наследования класс Electronics Items является базовым классом, а телефоны, звуковые системы — унаследованным классом.

Итак, базовый класс — это класс, от которого разные классы наследуют свои свойства, а наследуемый класс — это класс, свойства которого унаследованы от базового класса. .

Приведенная ниже классификация приведенного выше примера с точки зрения базового и унаследованного классов прояснит для вас концепцию базовых и унаследованных классов.

1. Электронные элементы — базовый класс для телефонов и звуковых систем
2. Телефоны — базовый класс для мобильных телефонов, проводных телефонов и унаследованный класс электронных элементов.
3. Звуковые системы — базовый класс для музыкальных систем. , Earpods и т. д., а также унаследованный класс Electronic Items.
4. Мобильные телефоны и проводные телефоны — унаследованный класс Phones.
5. Музыкальные системы, earpods и т. д. — унаследованный класс Sound Systems.

  • Полиморфизм:-

"Полиморфизм — это способность сообщения или данных обрабатываться более чем в одной форме"

Что дает 10+6 в 16, но что дает A+BC? Да, вы правы, это ABC. Теперь, как вы можете видеть, оператор «+» легко различает две операции, а именно сложение и конкатенацию. Вот что такое полиморфизм. В программировании мы можем видеть, что одна функция, например. функция для чтения области — area() может принимать различные типы аргументов, такие как — площадь (круг), площадь (квадрат), площадь (прямоугольник) и т. д.

Ниже приведена полная программа, иллюстрирующая реализацию концепций ООП.

#include <iostream>
using namespace std;
class Employer{
    private:     //Data abstraction,Encapsulation, Data Hiding
            int empid=1234432;
            int empno=1;
            string empname="Abhishek";
    public:
            void details(){
                cout<<"Name:"<<empname<<"\n";
                cout<<"ID:"<<empid<<"\n";
                cout<<"Employer No:"<<empno<<"\n";
            }
};
class SubEmployer:Employer{         //Inheritance
    private:                        
            int empid1=12342232;
            int empno1=2;
            string empname1="Trideep";
    public:
            void detailsFinal(){
                details();
                cout<<"Name:"<<empname1<<"\n";
                cout<<"ID:"<<empid1<<"\n";
                cout<<"Employer No:"<<empno1;
            }
            void poly(int x){                                  //Polymorphism using function overloading
                cout<<"Used function poly in one way:"<<x<<"\n";
            }
            void poly(double x){
                cout<<"Used function poly in another way:"<<x<<"\n";
            }
            void poly(string x){
                cout<<"Used function poly in yet another way:"<<x<<"\n";
            }
};
int main() //Driver Function
{
    SubEmployer emp;
emp.detailsFinal();
cout<<"Illustrated Polymorphism using Function overloading"<<"\n";
emp.poly(6);
emp.poly(7.8);
emp.poly("Polymorphism");
    return 0;
}

Итак, это оно. Надеюсь, теперь вы хорошо понимаете концепцию ООП. Прокомментируйте ниже, если вам понравился этот блог.