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

29
В чем разница между «сокрытием данных» и «инкапсуляцией»?

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

29
Почему большинство «общеизвестных» императивных / OO-языков допускают неконтролируемый доступ к типам, которые могут представлять значение «ничего»?

Я читал о (не) удобстве иметь nullвместо (например) Maybe. Прочитав эту статью , я убедился, что было бы намного лучше использоватьMaybe (или что-то подобное). Однако я удивлен, увидев, что все «общеизвестные» императивные или объектно-ориентированные языки программирования по-прежнему используют...

29
Создать новый объект или сбросить каждое свойство?

public class MyClass { public object Prop1 { get; set; } public object Prop2 { get; set; } public object Prop3 { get; set; } } Предположим , у меня есть объект myObjectиз MyClassи мне нужно сбросить свои свойства, что лучше создать новый объект или переназначить каждое свойство? Предположим, у...

29
Допустимо ли копировать и вставлять длинный, но простой код вместо того, чтобы помещать их в класс или функцию?

Предположим, у меня есть сегмент кода для подключения к Интернету и отображения результатов подключения, например: HttpRequest* httpRequest=new HttpRequest(); httpRequest->setUrl("(some domain .com)"); httpRequest->setRequestType(HttpRequest::Type::POST);...

29
Почему класс должен быть чем-то отличным от «абстрактного» или «окончательного / запечатанного»?

После более 10 лет программирования на Java / C # я создаю либо: абстрактные классы : контракт не предназначен для создания как есть. заключительные / закрытые классы : реализация не предназначена для использования в качестве базового класса для чего-то другого. Я не могу представить себе ситуацию,...

28
Делает ли изучение функционального языка лучшим программистом ООП? [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 5 лет назад . Как программист на Java / C # / C ++ я много слышал о функциональных языках, но...

28
Сколько слишком много интерфейсов в классе? [закрыто]

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

27
Насколько велики базы не OO кода?

Я всегда вижу, что абстракция - очень полезная функция, предоставляемая ОО для управления базой кода. Но как управлять большими базами не-OO кода? Или они просто становятся " Большим Грязевым комом "? Обновление: казалось, все думают, что «абстракция» - это просто модульность или скрытие данных. Но...

27
Что может пойти не так, если нарушится принцип подстановки Лискова?

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

27
Игнорирует ли функциональное программирование преимущества, полученные от «Критериев, которые будут использоваться при декомпозиции систем на модули» (скрытие данных)?

Есть классическая статья под названием «Критерии для использования при декомпозиции систем на модули», которую я только что прочитал впервые. Это имеет смысл для меня и, вероятно, является одной из тех статей, на которых основывается ООП. Его вывод: Мы попытались продемонстрировать на этих...

27
ТВЕРДЫЙ против избежания преждевременной абстракции

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

27
Каковы предостережения от реализации фундаментальных типов (таких как int) как классов?

При проектировании и implenting объектно-ориентированный язык программирования, в какой - то момент один должен сделать выбор о реализации основных типов (как int, float, doubleили их эквиваленты) , как классы или что - то другое. Очевидно, что языки в семействе C имеют тенденцию не определять их...

26
Как преобразовать ОО-программу в функциональную?

У меня возникают трудности с поиском ресурсов для написания программ в функциональном стиле. Самая сложная тема, которую я мог найти в Интернете, - это использование структурной типизации для сокращения иерархии классов; большинство просто имеют дело с тем, как использовать карту / сложение /...

26
Существуют ли варианты ООП, в которых некоторые или все принципы SOLID противоположны чистому коду?

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

26
Является ли функциональное программирование надмножеством объектно-ориентированного?

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

25
Уточните открытый / закрытый принцип

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

25
Можно ли в интерфейсах содержать метод, который возвращает конкретный тип реализации в виде константы?

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

25
Должна ли моя последовательная коллекция начинаться с индекса 0 или индекса 1?

Я создаю объектную модель для устройства, которое имеет несколько каналов. Существительные, используемые между клиентом и мной, Channelи ChannelSet. («Набор» не является семантически точным, потому что он упорядочен, а правильный набор - нет. Но это проблема для другого времени.) Я использую C #....

25
Как мне добавить функциональность к объекту, который уже существует?

У меня есть интерфейс, который имеет определенное количество четко определенных функций. Скажем так: interface BakeryInterface { public function createCookies(); public function createIceCream(); } Это хорошо работает для большинства реализаций интерфейса, но в некоторых случаях мне нужно добавить...