Принципы объектно-ориентированного программирования (ООП)

В данной статье рассматриваются основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм и абстракция

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

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

Рассмотрим их подробнее.

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

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

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

В программировании есть, например, свойства, которые можно изменять, а есть те, которые пользователь не может изменить. Допустим есть класс car, одним из свойств которого является vin. Мы знаем, что vin — это некий 20-тизначный код, состоящий из больших латинских букв и цифр. Инкапсуляция в данном случае будет означать, что любые другие значения, отличные от данного шаблона ввести будет нельзя.

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

Этот принцип базируется на том, что новый класс описывается на основе уже существующего (родительского), то есть не только перенимает все свойства родительского класса, но ещё и получает новые.

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

Или пойдём ещё дальше: в топливных автомобилях выделим бензиновый и дизельный. Вроде бы тоже перенимают все свойства топливных автомобилей, но каждый из них добавляет ещё свои новые свойства. Это и есть наследование.

Полиморфизм

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

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

Абстракция

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

 

Тэги:
common
Дата публикации:
21.09.2023

avatar
master
Admin

Похожие статьи