Вопросы с тегом «inheritance»

15
Правильный обходной путь для множественного наследования в Java (Android)

У меня есть концептуальная проблема с правильной реализацией кода, которая, по-видимому, требует множественного наследования, что не было бы проблемой во многих языках ОО, но поскольку проект для Android, такого понятия, как множественное, не существует extends. У меня есть куча деятельности,...

14
Реальные сценарии для защищенных методов

Сегодня я заметил, что я в основном никогда не использую protectedметоды в коде C ++, потому что я редко чувствую необходимость вызывать непубличные методы родителя. Я использую защищенный в Java в шаблоне шаблонного метода, но так как вы можете переопределить закрытые методы в C ++, мне это тоже...

14
Как проверить принцип подстановки Лискова в иерархии наследования?

Вдохновленный этим ответом: Лиск принцип замещения требует , что Предпосылки не могут быть усилены в подтипе. Постусловия не могут быть ослаблены в подтипе. Инварианты супертипа должны быть сохранены в подтипе. Ограничение истории («правило истории»). Объекты считаются изменяемыми только через их...

13
«Предпочитаю композицию наследованию» - единственная причина защищаться от изменений подписи?

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

13
Как избежать написания множества сквозных функций в оболочке?

У меня есть класс, который оборачивает другой класс общего базового типа. Поскольку интерфейс базового типа довольно большой, это требует написания множества сквозных функций. Я ищу способ избежать этого. Давайте сделаем пример: Car / \ Volvo VolvoWithTrailer Теперь мне нужно реализовать каждую...

13
Как C ++ обрабатывает множественное наследование с общим общим предком?

Я не парень C ++, но я вынужден думать об этом. Почему множественное наследование возможно в C ++, но не в C #? (Я знаю о проблеме алмазов , но я не об этом здесь спрашиваю). Как C ++ разрешает неоднозначность идентичных сигнатур методов, унаследованных от нескольких базовых классов? И почему тот...

13
Композиция по наследству, но

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

12
Как проектирование для наследования может вызвать дополнительные расходы? [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 6 лет назад . Так что я хотел унаследовать от sealed classв csharp и сгорел. Нет никакого...

12
Наследование против дополнительного свойства с нулевым значением

Для классов с необязательными полями лучше использовать наследование или свойство, допускающее значение NULL? Рассмотрим этот пример: class Book { private String name; } class BookWithColor extends Book { private String color; } или class Book { private String name; private String color; //when...

12
Параллельные иерархии - частично одинаковые, частично разные

Есть довольно много подобных вопросов там 1 ,2 ,3 ,4 , но в этом вопросе, похоже, не совсем так, и решения не кажутся оптимальными. Это общий вопрос ООП, предполагая, что полиморфизм, дженерики и миксины доступны. Фактический язык, который нужно использовать - это OOP Javascript (Typescript), но...

12
Почему базовый класс должен иметь здесь виртуальный деструктор, если производный класс не выделяет необработанную динамическую память?

Следующий код вызывает утечку памяти: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void...

12
Считается ли интерфейс «пустым», если он наследуется от других интерфейсов?

Насколько я могу судить, пустые интерфейсы, как правило, считают плохой практикой, особенно когда такие вещи, как атрибуты, поддерживаются языком. Однако считается ли интерфейс «пустым», если он наследуется от других интерфейсов? interface I1 { ... } interface I2 { ... } //unrelated to I1 interface...

12
Почему Java не поддерживает частное / защищенное наследование, такое как C ++? [закрыто]

В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...

11
Использование порядка разрешения методов Python для внедрения зависимостей - это плохо?

Я наблюдал за речью Рэймонда Хеттингера о Pycon «Супер рассмотренный супер» и немного узнал о MRO (порядок разрешения методов) Python, который линеаризует классы «родительские» классы детерминистическим способом. Мы можем использовать это в наших интересах, как в приведенном ниже коде, для...

11
Какой ОО дизайн использовать (есть ли шаблон дизайна)?

У меня есть два объекта, которые представляют «Бар / Клуб» (место, где вы пьете / общаетесь). В одном сценарии мне нужно имя бара, адрес, расстояние, слогон В другом сценарии мне нужно название бара, адрес, URL сайта, логотип Итак, у меня есть два объекта, представляющих одно и то же, но с разными...

11
Отдельный интерфейс для методов мутации

Я работал над рефакторингом некоторого кода, и я думаю, что, возможно, сделал первый шаг по кроличьей норе. Я пишу пример на Java, но я полагаю, что он может быть агностиком. У меня есть интерфейс, Fooопределенный как public interface Foo { int getX(); int getY(); int getZ(); } И реализация как...

11
Должен ли я предпочесть композицию или наследование в этом сценарии?

Рассмотрим интерфейс: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Этот интерфейс реализован рядом классов, которые генерируют волны различной формы (например, SineWaveGeneratorи SquareWaveGenerator). Я хочу реализовать класс, который генерирует...

11
Альтернативы множественному наследованию для моей архитектуры (NPC в стратегии в реальном времени)?

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

11
Как реализовать наследование RealNumber и ComplexNumber?

Надеюсь, не слишком академично ... Допустим, мне нужны реальные и комплексные числа в моей библиотеке SW. На основе отношения is-a (или здесь ) действительное число представляет собой комплексное число, где b в мнимой части комплексного числа просто 0. С другой стороны, моя реализация состояла бы в...

10
Почему подклассы слишком плохи (и, следовательно, почему мы должны использовать прототипы, чтобы покончить с этим)?

Я читал о шаблонах проектирования и читал, что шаблон проектирования прототипа избавляет от чрезмерного создания подклассов. Почему подклассы плохо? Какое преимущество даст использование прототипа по сравнению с...