Основные принципы ООП

Основные принципы ООП

https://t.me/bookflow

Объектно-ориентированное программирование основано на «трех китах» — трех важнейших принципах, придающих объектам новые свойства. Этими принципами являются инкапсуляциянаследование и полиморфизм.

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

Допустим, у нас есть некая программа. У нее есть объекты, которые общаются между собой, в соответствии с правилами, установленными в программе.

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

Теперь допустим, что мы играем в Sims. У нас есть семья из нескольких людей и кошки. Они общаются друг с другом. Мы хотим применить инкапсуляцию, поэтому инкапсулируем всю логику «cat» в класс Cat. Это выглядит следующим образом:

Здесь внутренним состоянием кошки являются частные (private) переменные: настроение (mood), голод (hungry) и энергия (energy). Она также имеет частный (private) метод meow(). Кошка может вызвать его в любой момент, когда захочет, другие классы не могут говорить кошке, когда ей можно мяукать.

То, что им можно делать, определяется в публичных (public) методах sleep()play() и feed(). Каждый из них каким-то образом влияет на внутреннее состояние кошки и может вызвать meow(). Таким образом, устанавливается связь между внутренним состоянием объекта и публичными методами.

Инкапсуляция – это возможность объединить методы в классе и скрыть детали реализации от пользователя.

Вот что такое инкапсуляция.

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

Наследование позволяет создать новый класс (производный класс) на основе уже существующего (родительский класс). 

Класс, от которого производится наследование, называется базовым или родительским. Новый класс – потомком, наследником или производным классом.

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

Полиморфизм

Это реализация задач одной и той же идеи разными способами.

Например, у вас есть несколько наследуемых классов, с разной реализацией одного и того же метода. То есть, у вас есть несколько разных методов с одинаковым именем (и сигнатурой), реализованных в разных классах. Какую версию метода вызвать? Это зависит от типа переменной, в которой находится объект.

 

А так же есть четвертый принцип ООП — Абстракция.

Абстракция

В контексте ООП абстракция — это обобщение данных и поведения для типа, находящегося выше текущего класса по иерархии. Придание объекту характеристик, которые чётко определяют его концептуальные границы, отличая от всех других объектов.

С помощью принципа абстракции данных, данные преобразуются в объекты. Данные обрабатываются в виде цепочки сообщений между отдельными объектами. Все объекты проявляют свои уникальные признаки поведения. 


Источник https://dailycoding.io


Report Page