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

55
Действительно ли ОО-программирование так же важно, как это делают компании по найму? [закрыто]

Я только заканчиваю свою степень магистра (в области вычислительной техники) и подаю заявку на работу. Я заметил, что многие компании специально просят понимания ориентации объекта. Популярные вопросы интервью касаются наследования, полиморфизма, принадлежности и т. Д. ОО действительно так важно? У...

54
Как миксины или признаки лучше, чем обычное множественное наследование?

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

53
Должны ли методы класса вызывать свои собственные методы получения и установки?

Где я работаю, я вижу много классов, которые делают такие вещи: public class ClassThatCallsItsOwnGettersAndSetters { private String field; public String getField() { return field; } public void setField(String field) { this.field = field; } public void methodWithLogic() { setField("value"); //do...

52
Действительно ли объектно-ориентированное программирование моделирует реальный мир? [закрыто]

Я часто повторял, что объектно-ориентированное программирование основано на моделировании реального мира, но так ли это? Мне кажется, что это не относится ни к чему вне бизнес-уровня. Мои классы GUI / классы доступа к данным ничего не моделируют в реальном мире. Даже на уровне моего бизнеса у меня...

51
Контейнеры МОК нарушают принципы ООП

Какова цель контейнеров МОК? Объединенные причины этого могут быть упрощены до следующего: При использовании принципов разработки OOP / SOLID Dependency Injection становится беспорядочным. Либо у вас есть точки входа верхнего уровня, управляющие зависимостями для нескольких уровней ниже их самих и...

49
Должны ли мы избегать пользовательских объектов в качестве параметров?

Предположим, у меня есть пользовательский объект, студент : public class Student{ public int _id; public String name; public int age; public float score; } И класс Window , который используется для отображения информации об ученике : public class Window{ public void showInfo(Student student); } Это...

49
Объяснение того, как «говори, не спрашивай» считается хорошим ОО

Этот пост был опубликован на Hacker News с несколькими отзывами. Исходя из C ++, большинство этих примеров, кажется, идут вразрез с тем, чему меня учили. Например, пример № 2: Плохо: def check_for_overheating(system_monitor) if system_monitor.temperature > 100 system_monitor.sound_alarms end end...

48
LSP vs OCP / Замена Лискова VS Open Закрыть

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

48
Что является лучшей практикой - вспомогательные методы как экземпляры или статические?

Этот вопрос субъективен, но мне было просто любопытно, как к этому подходит большинство программистов. Пример ниже приведен на псевдо-C #, но это также должно относиться к Java, C ++ и другим языкам ООП. В любом случае, когда я пишу вспомогательные методы в моих классах, я склонен объявлять их как...

47
Каковы преимущества ООП на основе прототипов перед ООП на основе классов?

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

47
Что Алан Кей имел в виду под «заданием» в «Ранней истории Smalltalk»?

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

46
я должен бросить исключение из конструктора?

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

46
Почему анемичная модель предметной области считается плохой в C # / OOP, но очень важной в F # / FP?

В сообщении в блоге на F # для развлечения и выгоды говорится: В функциональном дизайне очень важно отделить поведение от данных. Типы данных просты и «тупы». И затем отдельно у вас есть ряд функций, которые действуют на эти типы данных. Это полная противоположность объектно-ориентированному...

45
Возвращение считается вредным? Может ли код быть функциональным без него?

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

45
Что должно быть разрешено внутри геттеров?

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

44
Переменные ошибок - это анти-шаблон или хороший дизайн?

Для обработки нескольких возможных ошибок, которые не должны останавливать выполнение, у меня есть errorпеременная, которую клиенты могут проверять и использовать для создания исключений. Это анти-паттерн? Есть ли лучший способ справиться с этим? Для примера этого в действии вы можете увидеть PHP...

44
В чем разница между подклассом и подтипом?

Самый высокий рейтинг ответа на этот вопрос о принципе замещения Лискова изо всех сил старается различить термины подтип и подкласс . Это также указывает на то, что некоторые языки объединяют два, а другие нет. Для объектно-ориентированных языков, с которыми я больше всего знаком (Python, C ++),...

44
До ООП члены структуры данных оставались открытыми?

Когда структура данных (например, очередь) реализуется с использованием языка ООП, некоторые члены структуры данных должны быть частными (например, количество элементов в очереди). Очередь также может быть реализована на процедурном языке с использованием structфункций и набора функций, которые...

44
Это плохая практика, что хранилище вызовов контроллера вместо службы?

Это плохая практика, что хранилище вызовов контроллера вместо службы? объяснить больше: Я выяснил, что в хорошем дизайне контроллеры называют сервис, а сервис используют репозиторий. но иногда в контроллере у меня нет / нужна какая-то логика и мне просто нужно извлечь из базы данных и передать ее...