Skip to content

Latest commit

 

History

History
53 lines (29 loc) · 4.83 KB

File metadata and controls

53 lines (29 loc) · 4.83 KB

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

инкапсуляция, полиморфизм, наследование

OOPInPicture

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

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

В целях повышения защищенности программ в ООП почти не используются глобальные переменные

Полиморфизм

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

Требования

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

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

  • Динамический полиморфизм — это про абстрактные классы, интерфейсы, утиную типизацию, т.е. только в рантайме будет понятно, с каким типом будет работать наш код.

    Утиная типизация: Если что-то выглядит как утка, плавает как утка и крякает как утка, то, скорее всего, это утка

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

  • Статический полиморфизм — это в основном про шаблоны (genererics). Когда уже на этапе компиляции из одного шаблонного кода генерируется код специфичный для каждого используемого типа.

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

Cпособность объекта или класса базироваться на другом объекте или классе;

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

Cвойство скрывать свои данные и способы их обработки;

private, filreprivate, internal

В чем плюсы и минусы ООП?

Преимущества

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

Недостатки

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

2.2.2.2.1 About Imperative Theme | Back To iOSWiki Contents | 2.2.2.2.3 POP Theme