Moon Paladin
ILLUST Anato Finnstark
ILLUST Anato Finnstark
Начнем с определения
Объектно-ориентированное программирование (ООП) — это подход, при котором программа рассматривается как набор объектов, взаимодействующих друг с другом. У каждого есть свойства и поведение. ООП ускоряет написание кода и делает его более читаемым.
Данный подход актуален во всех языках программирования и будет полезен разработчику как на Java Script, так и на Typescript, и вообще всем разработчикам на C-подобных языках.
Зачем нужен ООП?
Обычно все начинают изучение программирования с написания программ в процедурном стиле. Программа ожидает на вход какие-то данные, выполняет ряд каких-то процедур (они же называются функциями) и после этого возвращает какой-то результат.
Пример программы на языке typescript в процедурном стиле:
Есть две переменные это ширина и высота, есть функция, которая ширину и высоту принимает аргументами и по итогу эта функция возвращает результат умножения ширины на высоту, то есть площадь прямоугольника. По итогу вызвав эту функцию с какими-то данными, мы можем получить площадь прямоугольника.
const width = 5;
const height = 10;
function calcRectArea(width; height) {
return width * height;
}
calcRectArea(width, height)
Изначально все программы писались именно с процедурным подходом, но когда программы стали большими, стало понятно что такой подход не годится, сложно управлять какими-то сущностями, сложно делать декомпозицию. И когда процедурного программирования стало недостаточно, был придуман объектно-ориентированный подход.
Шпаргалка по принципам ООП
Главное
- Инкапсулируйте все, что может изменяться;
- Уделяйте больше внимания интерфейсам, а не их реализациям;
- Каждый класс в вашем приложении должен иметь только одно назначение;
- Классы — это их поведение и функциональность.
Базовые принципы ООП
- Абстракция — отделение концепции от ее экземпляра;
- Полиморфизм — реализация задач одной и той же идеи разными способами;
- Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;
- Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.
1. Используйте следующее вместе с наследованием
- Делегация — перепоручение задачи от внешнего объекта внутреннему;
- Композиция — включение объектом-контейнером объекта-содержимого и управление его поведением; последний не может существовать вне первого;
- Агрегация — включение объектом-контейнером ссылки на объект-содержимое; при уничтожении первого последний продолжает существование.
2. Не повторяйся (Don’t repeat yourself — DRY)
Избегайте повторного написания кода, вынося в абстракции часто используемые задачи и данные. Каждая часть вашего кода или информации должна находиться в единственном числе в единственном доступном месте. Это один из принципов читаемого кода.
3. Принцип единственной обязанности
Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче.
4. Принцип открытости/закрытости
Программные сущности должны быть открыты для расширения, но закрыты для изменений.
5. Принцип подстановки Барбары Лисков
Методы, использующие некий тип, должны иметь возможность использовать его подтипы, не зная об этом.
6. Принцип разделения интерфейсов
Предпочтительнее разделять интерфейсы на более мелкие тематические, чтобы реализующие их классы не были вынуждены определять методы, которые непосредственно в них не используются.
7. Принцип инверсии зависимостей
Система должна конструироваться на основе абстракций «сверху вниз»: не абстракции должны формироваться на основе деталей, а детали должны формироваться на основе абстракций.
Применяли ли вы данный подход на практике? Строчите в комментарии
Поехали за границу я, брат и его девушка.
Сидим и обедаем в столовке. Девушка показывает на блюдо у нас на столе и говорит: "Можешь принести такую же тарелку?". Говорю, что могу. Ухожу и возвращаюсь с пустой, но точно такой же тарелкой. Брат и его девушка смотрят на меня как на идиота. До меня доходит...
Как известно, многие семьи в нашей стране затронула Великая Отечественная война. Кто-то пострадал от неё сильнее, а кто-то в меньшей степени. И мою семью не обошла эта великая трагедия. Все далее описанное происходило на самом деле и записано со слов моей родственницы 1933 года рождения, которая прошла войну еще ребенком.
Все действие происходило на пскощине, а именно на живописном острове Колпино в деревне Шартово, что находится на глади Псковского озера. В то время этот остров, как и весь Печерский район был частью Эстонии и находился в окупации с июля 1941 года.
Но мы перенесемся немного вперед в холодную зиму 1943 года. Все в деревне шло своим чередом, люди работали, а немцы не лютовали. Многим пикабушникам сейчас покажутся странными мои слова, но местные жители относились к немцам довольно хорошо. Они не устраивали беспредела, не обкрадывали население, вообще, не устраивали карательных операций (до поры до времени ). Наоборот они выдавали местным жителям еду, хорошо к ним относились, обменивались разнообразными вещами, давали им укрытие во время бомбежек. Конечно это исключение из правил, которое подтверждает само правило. Как говорили сторожилы деревни: "немец попался толковый". Хотя люди понимали всю подноготную и всячески пытались помочь своей родной советской родине. Дети воровали потроны, а взрослые помогали партизанам. Но это их почти и погубило.
На дворе стояло рождество, и как положено в праздник, в воздухе витал дух спокойствия и умиротворения. Чувствовали его не тольно деревенские жители но и солдаты вермахта, которые в рождественский сочельник все дружно напились. Как вспоминала моя родственница, немцы спали на полу, а ружья все стояли облокотившись на близлежащую стену. Бери и стреляй. Эта мысль посетила и местных партизан, которые решили напасть быстро и незаметно пока вся "армия" великой германии спит. Семь километров по льду партизаны с "материка" шли к острову, и добравшись до места назначения спалили сарай с лошадьми и местным предателем, который этот хлев охранял. На этом свершения партизанов закончились и они ушли в закат.
Наутро очухавшись, и поняв суть случившегося, немцы сообщили обо всем произошедшем вышестоящему начальству. Те долго не думая послали в деревню карательный отряд. Он пришел рано утром, шли они по глубокому снегу на лыжах и с патронами "крест на крест". Встретил их утер-офицер Йозеф, который командовал группой солдат в деревне.
Командир Айнзатцгруппы требовал предоставить им строение, куда можно согнать весь народ, от мала до велика, ведь народ этот партизанский и спокойно дышать немцам не даст. Йозеф в свою очередь начал защишать местных жителей и сказал: "народ этот ничего плохого нам не сделал, и сжигать его вам я не дам, можно выслать с острова, но трогать его я вам не позволю". Так каратели ушли а местные жители были благодарны этому офицеру, хотя никогда отрыто об этом не говорили. Время шло и война катилась к своему завершению, гансы оставили остров и жители вздохнули с облегчением.
В заключении я бы хотел сказать что даже находясь в водовороте настоящего, непрекрытого зла всегда можно сохранить остатки гуманности и человеколюбия, остаться в истории не гитлером, а шиндлером. Спасибо Советской армии и всем тем людям которые пошли против нацистского режима в этой ужасной войне.