Вопросы с тегом «object-oriented-design»

18
Нарушает ли множественное наследование принцип единой ответственности?

Если у вас есть класс, который наследует от двух разных классов, не означает ли это, что ваш подкласс автоматически делает (как минимум) 2 вещи, по одной от каждого суперкласса? Я считаю, что нет разницы, если у вас есть несколько интерфейсов наследования. Изменить: Чтобы было ясно, я считаю, что...

18
Увеличивает ли функциональное программирование «репрезентативный разрыв» между проблемами и решениями? [закрыто]

Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 4 года назад . Поскольку машинный язык (например, 0110101000110101)...

17
Государственный паттерн нарушает принцип подстановки Лискова?

Это изображение взято из применения доменного дизайна и шаблонов: с примерами в C # и .NET Это диаграмма классов для шаблона состояний, в котором в SalesOrderтечение срока службы может быть несколько состояний. Между разными состояниями разрешены только определенные переходы. Теперь OrderStateкласс...

17
Является ли СРП (принцип единой ответственности) объективным?

Рассмотрим двух дизайнеров пользовательского интерфейса, которые хотят создавать привлекательные для пользователя дизайны. «Привлечение пользователей» - это концепция, которая не является объективной и находится только в сознании дизайнеров. Таким образом, дизайнер А может, например, выбрать...

16
Понимание структуры посетителя

У меня есть иерархия классов, которая представляет элементы управления GUI. Что-то вроде этого: Control->ContainerControl->Form Я должен реализовать ряд алгоритмов, которые работают с объектами, делающими разные вещи, и я думаю, что шаблон Visitor будет самым чистым решением. Давайте возьмем,...

16
Слабая связь в объектно-ориентированном дизайне

Я пытаюсь изучить GRASP, и я нашел это объяснение ( здесь на странице 3 ) о низком соединении, и я был очень удивлен, когда обнаружил следующее: Рассмотрим метод addTrackдля Albumкласса, два возможных метода: addTrack( Track t ) и addTrack( int no, String title, double duration ) Какой метод...

16
Java - это плохая идея иметь полностью статические классы?

Я работаю над большим сольным проектом и сейчас, и у меня есть несколько классов, в которых я не вижу причин для создания экземпляра. Например, мой класс игры в кости прямо сейчас хранит все свои данные статически, и все его методы тоже статические. Мне не нужно инициализировать его, потому что,...

16
Как создать тип данных для чего-то, что представляет собой или две другие вещи

Фон Вот настоящая проблема, над которой я работаю: я хочу представить карты в карточной игре Magic: The Gathering . Большинство карт в игре выглядят нормально, но некоторые из них разделены на две части, каждая со своим именем. Каждая половина этих двухкомпонентных карт рассматривается как сама...

16
Нелегально в PHP: есть ли причина разработки ООП?

Приведенное ниже наследование интерфейса недопустимо в PHP, но я думаю, что это было бы весьма полезно в реальной жизни. Есть ли настоящая антипаттерн или задокументированная проблема с приведенным ниже дизайном, от которой PHP защищает меня? <?php /** * Marker interface */ interface IConfig {}...

16
Невозможно разгадать тайну функций в Javascript

Я пытаюсь понять за кулисами сцены Javascript и застрял в понимании создания встроенных объектов, особенно Объекта и Функции, и отношений между ними. Когда я прочитал, что все встроенные объекты, такие как Array, String и т. Д., Являются расширением (унаследованным) от Object, я предположил, что...

15
Могу ли я рассматривать интерфейсные методы как абстрактные методы?

Я думал об этом, и у меня были некоторые сомнения. Когда я объявляю интерфейс, например: public interface MyInterface { public void method1(); public void method2(); } Могут ли эти методы интерфейса считаться абстрактными? Я имею в виду, что концепция абстрактного метода: Абстрактный метод - это...

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

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

15
Преимущества шаблона стратегии

Почему полезно использовать шаблон стратегии, если вы можете просто написать свой код в случаях if / then? Например: у меня есть класс TaxPayer, и один из его методов рассчитывает налоги, используя разные алгоритмы. Так почему же он не может иметь if / then случаев и выяснить, какой алгоритм...

15
Как часто используются ложные объекты?

Недавно я прочитал статью, в которой говорилось, что фиктивные объекты часто неправильно понимают и неправильно используют. Есть ли какие-то явные насмешливые анти-паттерны, на которые я могу обратить...

15
Что на самом деле должен делать репозиторий?

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

14
Как придерживаться принципа открытого-закрытого на практике

Я понимаю цель принципа открытого-закрытого. Он предназначен для того, чтобы уменьшить риск поломки чего-либо, что уже работает при его изменении, предлагая вам попытаться расширить без изменения. Однако у меня возникли проблемы с пониманием того, как этот принцип применяется на практике. Насколько...

14
OO Design связанные вопросы в технических интервью [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 4 года назад . Я недавно посещал довольно много интервью, и компании попросили меня...

14
Дизайн: метод Object против метода отдельного класса, который принимает Object в качестве параметра?

Например, лучше ли сделать: Pdf pdf = new Pdf(); pdf.Print(); или: Pdf pdf = new Pdf(); PdfPrinter printer = new PdfPrinter(); printer.Print(pdf); Другой пример: Country m = new Country("Mexico"); double ratio = m.GetDebtToGDPRatio(); или: Country m = new Country("Mexico"); Country us = new...

13
Почему статические методы не должны быть переопределенными?

В ответах на этот вопрос общее согласие заключалось в том, что статические методы не предназначены для переопределения (и, следовательно, статические функции в C # не могут быть виртуальными или абстрактными). Это не только случай в C #, хотя; Java также запрещает это, и C ++, похоже, тоже не...

13
Дизайн: Обратный звонок в родительский класс

При моделировании объекта с дочерними элементами обычно включают дочерние элементы посредством композиции в качестве члена родительского класса. Однако иногда детям нужно что-то сказать родителю, им нужно вызвать функцию родителя. Как это можно сделать с помощью C ++? Некоторые варианты: Сделайте...