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

20
Не нарушают ли частные случаи с запасными вариантами принцип подстановки Лискова?

Допустим, у меня есть интерфейс, FooInterfaceкоторый имеет следующую подпись: interface FooInterface { public function doSomething(SomethingInterface something); } И конкретный класс, ConcreteFooкоторый реализует этот интерфейс: class ConcreteFoo implements FooInterface { public function...

20
Информация скрывает больше чем соглашение?

В Java, C # и многих других строго типизированных, статически проверенных языках мы привыкли писать код следующим образом: public void m1() { ... } protected void m2() { ... } private void m2() { ... } void m2() { ... } Некоторые динамически проверяемые языки не предоставляют ключевые слова для...

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

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

20
Являются ли монады жизнеспособной (возможно, предпочтительной) альтернативой иерархии наследования?

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

20
Ориентируется ли объект архитектуры Entity Component System по определению?

Является ли архитектура Entity System Component ориентированный объект, по определению? Это кажется более процедурным или функциональным для меня. Мое мнение таково, что это не мешает вам реализовать его на языке ОО, но это не будет идиоматичным, если вы будете делать это абсолютно уверенно....

20
Когда вы хотите две ссылки на один и тот же объект?

В частности, в Java, но, вероятно, и в других языках: когда было бы полезно иметь две ссылки на один и тот же объект? Пример: Dog a = new Dog(); Dob b = a; Есть ли ситуация, когда это было бы полезно? Почему это предпочтительное решение для использования aвсякий раз, когда вы хотите...

20
Разница между паттерном и принципом

Чем отличаются объектно-ориентированные шаблоны проектирования и принципы? Это разные вещи? Насколько я понял, они оба пытаются достичь какой-то общей цели (например, гибкость). Так могу ли я сказать, что паттерн - это принцип, и наоборот? Принцип проектирования = SOLID (т.е. принцип инверсии...

20
Пустой интерфейс для объединения нескольких интерфейсов

Предположим, у вас есть два интерфейса: interface Readable { public void read(); } interface Writable { public void write(); } В некоторых случаях реализующие объекты могут поддерживать только один из них, но во многих случаях реализации будут поддерживать оба интерфейса. Люди, которые используют...

20
Дженерикс против общего интерфейса?

Я не помню, когда я писал общий класс в прошлый раз. Каждый раз, когда я думаю, что мне это нужно, после некоторого размышления я делаю вывод, что нет. Второй ответ на этот вопрос заставил меня попросить разъяснений (поскольку я пока не могу комментировать, я сделал новый вопрос). Итак, давайте...

20
Какая польза от объединения, агрегации и состава?

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

19
Сделать методы, которые не зависят от полей экземпляра, статическими?

Недавно я начал программировать в Groovy для инфраструктуры тестирования интеграции, для проекта Java. Я использую Intellij IDEA с плагином Groovy и с удивлением вижу в качестве предупреждения все методы, которые не являются статичными и не зависят от каких-либо полей экземпляра. В Java, однако,...

19
Различия между «Java OOP» и «Pythonic OOP»? [закрыто]

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

19
Как слишком много переменных экземпляра приводит к дублированию кода?

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

19
C ++ другу или не другу

В этом семестре в колледже у меня есть объектно-ориентированное программирование с курсом c ++, и мы изучали функции друзей. Мне инстинктивно не нравится их способность обходить безопасность, которую обеспечивают Encapsulation и скрытие данных, я прочитал несколько статей в Интернете, и некоторые...

19
Как усиление предусловий и ослабление постусловий нарушают принцип подстановки Лискова?

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

19
Насколько неправильно говорить о «методах» C ++ (в отличие от «функций-членов»)?

Я понимаю, что в соответствии со спецификацией C ++ не существует такой вещи, как «метод», и некоторые (многие? Большинство?) Программисты C ++ считают «метод» Java-измом. С другой стороны, даже на форуме C ++ люди, кажется, говорят о методах без подергивания. Я ищу известные соглашения или общие...

18
Вопрос новичка о шаблоне дизайна Decorator

Я читал статью по программированию, в которой упоминался шаблон Decorator. Я программировал некоторое время, но без какого-либо формального образования или обучения, но я пытаюсь узнать о стандартных шаблонах и тому подобном. Поэтому я посмотрел Декоратор и нашел статью в Википедии . Теперь я...

18
Что делает JVM настолько универсальной, чтобы поддерживать так много языков JVM?

JVM поддерживает так много языков, кроме Java, как и Groovy,Clojure,Scalaт. Д., Которые являются функциональными языками в отличие от Java (я имею в виду Java до Версии 8, где Lambda'sони не поддерживаются), которые не поддерживают функциональные возможности. На высоком уровне, что делает JVM...

18
Когда использовать наследование, когда использовать «просто логическое поле»?

В нашем приложении Rails мы добавляем уведомления. Вот некоторые из них blocking: Они останавливают прогресс любого ресурса, к которому они добавлены, потому что некоторая информация об этом ресурсе отсутствует. Другие уведомления являются простыми уведомлениями и предоставляют только информацию....

18
Почему объектно-ориентированные базы данных не используются так часто, как реляционные базы данных? [закрыто]

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