Объяснение концепций ООП для начинающих

Опубликовано: 2022-12-20

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

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

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

Мы подробно поговорим об этих концепциях ООП на более позднем этапе этой статьи. Но сначала давайте разберемся, что такое объектно-ориентированное программирование.

Оглавление

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

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

Языки программирования, такие как C++, C#, Java и другие, перешли к подходу объектно-ориентированного программирования после того, как C. OOP отдали приоритет данным, перезаписывая простые логические инструкции. По сути, объект — это все, что вы хотите смоделировать в своей программе. Это может быть что угодно и что угодно. Если сейчас это звучит расплывчато, держитесь до конца, и вы точно поймете, что мы подразумеваем под этим!

Что такое классы и объекты?

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

Роль классов заключается в определении различных атрибутов и различного поведения. Итак, если бы мы моделировали транспортное средство в нашей программе, мы бы создали класс для транспортного средства и сохранили такие атрибуты, как количество колес, цвет, модель, возраст и т. д.; тогда как поведение будет таким, как запуск, ускорение, торможение и так далее. Как видите, атрибуты и поведение, которые мы определили, не относятся к одному транспортному средству. По сути, они охватывают различное поведение и атрибуты для разных транспортных средств. Таким образом, когда вы хотите создать новый объект транспортного средства, вы можете указать атрибуты для рассматриваемого транспортного средства. Таким образом, классы действуют как идеальная схема для создания новых объектов с такими же атрибутами и поведением.

Итак, вот как будет выглядеть наш Class Vehicle с его различными атрибутами и поведением. Помните, что мы использовали синтаксис Java для написания кода, но парадигма программирования не зависит от языка.

транспортное средство общественного класса {

приватная строка _color;

частный интервал _model;

частная строка _makeYear;

частная строка _fuelType;

публичный недействительный старт () { }

общественное ускорение пустоты () {}

общественная недействительная остановка () {}

}

Используя определенный класс, мы можем создавать различные объекты с разными атрибутами, но с общим поведением. Например:

Объект 1
Модель Альт
Топливо СПГ
Делать 2018
Начинать()

Сломать()

Ускорить()

Объект 2
Модель УниверсалR
Топливо Бензин
Делать 2017
Начинать()

Сломать()

Ускорить()

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

Разобравшись с основами, давайте подробно рассмотрим четыре столпа объектно-ориентированного программирования:

Получите сертификат по науке о данных от лучших университетов мира. Изучите программы Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Абстракция

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

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

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

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

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

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

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

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

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

Ознакомьтесь с нашими программами по науке о данных в США

Программа профессиональных сертификатов в области науки о данных и бизнес-аналитики Магистр наук в области науки о данных Магистр наук в области науки о данных Расширенная программа сертификации в области науки о данных
Программа Executive PG в области науки о данных Учебный курс по программированию на Python Программа профессиональных сертификатов в области науки о данных для принятия бизнес-решений Продвинутая программа по науке о данных

Полиморфизм

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

Например, если вы хотите написать текст на бумаге, вы можете использовать ручку, маркер, мелок или даже карандаш. Все, что вам нужно, это то, что может поместиться в вашей руке и поможет вам создавать символы, когда вы прижимаете его к бумаге. Таким образом, процесс письма поможет вам создавать символы на бумаге, а то, какой инструмент вам потребуется, зависит от вашего выбора.

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

В заключении

На этом мы подошли к концу нашего обсуждения концепций ООП в Java . Все, что обсуждалось до сих пор, заложило основу, необходимую для начала работы с объектно-ориентированным программированием, не беспокоясь ни о чем. Вы должны реализовать обсуждение и попробовать все на практике; в конце концов, программирование — это практика и настойчивость.

Знание ООП также поможет вам в вашем путешествии по науке о данных, поскольку вы будете использовать такие языки, как Python, основанный на парадигме ООП. Наука о данных — быстро развивающаяся область, и нет недостатка в возможностях для людей с нужными навыками и знаниями. Проверьте нашу степень магистра в области науки о данных от upGrad в сотрудничестве с Университетом Аризоны и получите возможность учиться у отраслевых экспертов вместе с обширной сетью выпускников, которые помогут вам на протяжении всей вашей карьеры.

Каковы четыре концепции ООП?

Четыре основные концепции ООП — это абстракция, инкапсуляция, наследование и полиморфизм.

Чем отличаются классы и объекты?

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

На каком языке работает OOPS?

OOPS — это философия программирования, не зависящая от языка. Вы можете работать над ООП, используя любой современный язык программирования, такой как C++, Java, Python, Ruby и т. д.