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

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

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

Абстракция

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

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

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

Наследование позволяет нам сохранять наш код СУХИМ (не повторяйтесь), создавая объекты, которые могут наследовать функциональность и состояние от родительских объектов. Это необходимо только в том случае, если дочерний объект является типом родительского объекта, который имеет более специфические функции, необходимые для того, чтобы отличать его от других типов этого родительского класса. Например: легковые автомобили, грузовики и фургоны - это все типы родительского класса Vehicle. Транспортное средство может вести, останавливать и удерживать пассажиров. Каждый дочерний элемент класса транспортного средства должен иметь возможность делать все то же самое, что и его родитель, но при этом иметь собственные уникальные свойства. Фургон может вместить больше пассажиров, чем автомобиль, но автомобиль может двигаться быстрее, чем фургон.

Полиморфизм

Полиморфизм в переводе с греческого буквально означает «Множество форм». Это просто еще один способ описать силу наследования. У одного класса предметов может быть много разных «форм» или дочерних классов со своими уникальными способностями. Таким образом, объектно-ориентированные классы, использующие наследование, полиморфны по своей природе.

На этом пока все! До скорого…

Хороший код // Хорошая жизнь