ycliper

Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
Скачать

Избегайте наследования при разработке ООП-программного обеспечения?

Автор: Smok Code

Загружено: 2020-11-02

Просмотров: 3489

Описание: Наследование — ключевая особенность ООП. Очень важно точно знать, как оно работает и что с ним можно делать. Уверен, вы уже довольно хорошо знакомы с этой темой. Поэтому, уверен, вы знаете все случаи, когда оно полезно, но как насчёт обратного? Когда следует избегать наследования в разработке ПО?

#программирование #технологии #разработка ПО #быстрый ответ

Очевидно, что вы захотите использовать наследование во всех объектно-ориентированных языках: C++, C#, Java, Go... Постойте. Нет, Go — это не вариант, в нём нет наследования. В любом случае, некоторые языки поддерживают объектно-ориентированную парадигму полнее других. Например, C++ предлагает множественное наследование. Всё верно — у каждого класса может быть несколько родительских классов. Стандарт даже гласит, что каждый компилятор должен поддерживать не менее 1024 родительских классов.

Краткое напоминание: наследование расширяет класс новыми полями и методами, создавая дочерний класс из выбранного класса. Этот дочерний класс получил новое имя и «наследует» все свойства своего родителя. Представьте себе, что родительский класс встраивается в свой дочерний.
Мы, программисты, часто пишем новые классы, и иногда возникает необходимость сделать выбор: должны ли эти два класса быть связаны и как? Есть несколько общеизвестных правил, которые помогут вам определиться, а также несколько менее известных. Я расскажу об обоих, так что оставайтесь со мной.
Итак, два класса определённо связаны, но связаны ли они наследованием или композицией? (Композиция — это когда один класс имеет поле со ссылкой на объект другого класса). В данном случае мы будем следовать принципу отношения «является-есть-имеет-а». Допустим, у нас есть несколько классов: «Звезда», «Цвет» и «Форма». «Звезда является-формой», поэтому это может быть отношение наследования, но «Звезда имеет-цвет», поэтому это композиция. «Форма» не является цветом, но, возможно, могла бы иметь цвет, если бы нам хотелось. Другой очень распространённый пример — классы «Автомобиль», «Грузовик» и «Двигатель». Можете ли вы организовать их в возможные иерархии?

Итак, я упомянул основные общие правила. Какова менее известная, но более веская причина избегать наследования? «Банда четырёх», или отцы парадигм проектирования, называют наследование повторным использованием по принципу «белого ящика», когда все детали реализации родительского класса видны дочернему. Композиция же называется повторным использованием по принципу «чёрного ящика» — реализация каждого класса закрыта, инкапсулирована от другого.

Инкапсуляция, как мы знаем, — ещё одна ключевая особенность ООП: когда один класс наследует от другого, родительский класс отдаёт часть своей инкапсуляции, чтобы создать дочерний класс. У этого есть и плюсы, и минусы: такой дочерний класс проще написать. Однако (и это важно) могут возникнуть сложности, когда вы попытаетесь изменить представление или реализацию родительского класса. Потому что очень легко зависеть от родительского класса — а большинство дочерних классов так и поступают. Другая проблема — перманентность такой связи: наследование существует вечно: когда вы выбираете дочерний класс во время компиляции, вы не сможете изменить его во время выполнения, вам придётся уничтожить объект и создать новый, в отличие от композиции, где вы можете менять и переключаться между ними как угодно.
Используя композицию, мы также достигаем двух других целей. Во-первых: мы следуем ещё одному важному правилу чистого кода: единственной ответственности. Если класс наследуется от слишком большого количества родительских классов, скорее всего, он больше не служит одной цели. Во-вторых: наша метрика сложности кода, называемая глубиной дерева наследования (DIT), останется низкой. Слишком сложный код — проклятие каждого программиста. Бдительность поможет вам и вашим коллегам лучше спать по ночам.

Подписывайтесь, и увидимся в следующем выпуске, ура!

Не удается загрузить Youtube-плеер. Проверьте блокировку Youtube в вашей сети.
Повторяем попытку...
Избегайте наследования при разработке ООП-программного обеспечения?

Поделиться в:

Доступные форматы для скачивания:

Скачать видео

  • Информация по загрузке:

Скачать аудио

Похожие видео

Какие комментарии в вашем коде являются ХОРОШИМИ?

Какие комментарии в вашем коде являются ХОРОШИМИ?

Используйте наследование только в том случае, если вам нужны оба варианта

Используйте наследование только в том случае, если вам нужны оба варианта

Ошибки наследования

Ошибки наследования

Что такое RAII в разработке программного обеспечения?

Что такое RAII в разработке программного обеспечения?

why does inheritance suck?

why does inheritance suck?

Composition over Inheritance

Composition over Inheritance

Обработка исключений в C++ (Как обрабатывать ошибки в программе?)

Обработка исключений в C++ (Как обрабатывать ошибки в программе?)

Composition Vs Inheritance - Why You Should Stop Using Inheritance

Composition Vs Inheritance - Why You Should Stop Using Inheritance

Карта на языке C++ с практическими примерами — пошаговое руководство по структурам данных

Карта на языке C++ с практическими примерами — пошаговое руководство по структурам данных

ПОЛНЫЙ отказ от интернета в России. Госдума сошла с ума

ПОЛНЫЙ отказ от интернета в России. Госдума сошла с ума

What is DRY in programming and why it matters?

What is DRY in programming and why it matters?

Composition Is Better Than Inheritance in Python

Composition Is Better Than Inheritance in Python

Почему Кошки Вдруг ЗАЛЕЗАЮТ На Вас? (Причина шокирует)

Почему Кошки Вдруг ЗАЛЕЗАЮТ На Вас? (Причина шокирует)

Abstraction Can Make Your Code Worse

Abstraction Can Make Your Code Worse

Interview with a 'sweating' AI CEO (2026)

Interview with a 'sweating' AI CEO (2026)

Why Favor Object Composition Over Class Inheritance? A Deep Dive

Why Favor Object Composition Over Class Inheritance? A Deep Dive

Вся Правда о Zorin OS: Linux Который Заменит Windows?

Вся Правда о Zorin OS: Linux Который Заменит Windows?

Почему река Лена - самая ЖУТКАЯ Река в Мире

Почему река Лена - самая ЖУТКАЯ Река в Мире

Парадоксы велосипеда

Парадоксы велосипеда

ООП На Простых Примерах | Объектно-Ориентированное Программирование

ООП На Простых Примерах | Объектно-Ориентированное Программирование

© 2025 ycliper. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: [email protected]