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

Методология, которая позволяет моделировать систему как набор объектов, которыми можно управлять и манипулировать модульным способом

3
Избегайте конструкторов со многими аргументами
Так что у меня есть фабрика, которая создает объекты разных классов. Все возможные классы происходят от абстрактного предка. Фабрика имеет файл конфигурации (синтаксис JSON) и решает, какой класс создать, в зависимости от конфигурации пользователя. Чтобы добиться этого, фабрика использует boost :: property_tree для JSON-анализа. Он идет по дереву и решает, …

2
Зачем нам нужен экземпляр класса Scanner для получения входных данных на Java?
Java является объектно-ориентированным, но зачем нам нужно создавать объект из класса Scanner для получения ввода? next()Например, не могут ли методы быть статическими? C выглядит для меня довольно просто, как вы только используете scanf(), gets()или fgets(). Я уверен, что у разработчиков Java есть причина для создания класса Scanner, но как это …

3
Наследование: действительно ли код из суперкласса * скопирован * в подкласс, или на него ссылается подкласс *?
Класс Subявляется подклассом класса Sup. Что это значит практически? Или, другими словами, каково практическое значение слова «наследование»? Вариант 1: Код из Sup фактически скопирован в Sub. (как в 'copy-paste', но без скопированного кода, визуально видимого в подклассе). Пример: methodA()метод изначально в Sup. Sub расширяет Sup, поэтому methodA()(виртуально) копируется в Sub. …

4
Сколько усилий я должен инвестировать в создание слабосвязанных конструкций?
В настоящее время я изучаю шаблоны проектирования. Я думаю, что большинство людей согласится с тем, что эти шаблоны являются отличными инструментами, но их следует использовать с умеренностью, а не как ответ на все вопросы. Их чрезмерное использование слишком усложнит приложение с небольшой выгодой. Шаблоны следует использовать только там, где они …

12
Является ли «если метод повторно используется без изменений, поместите метод в базовый класс или создайте интерфейс», это хорошее правило?
Мой коллега придумал эмпирическое правило для выбора между созданием базового класса или интерфейса. Он говорит: Представьте себе каждый новый метод, который вы собираетесь реализовать. Для каждого из них рассмотрим следующее: будет ли этот метод реализован более чем одним классом именно в этой форме, без каких-либо изменений? Если ответ «да», создайте …

3
ООП терминология в Ruby и C ++
Я учусь на С ++ в своей школе. Так как я программировал на Ruby, я знаю кое-что ООП. Но в C ++ есть функции-члены, переменные-члены и статические функции. В Ruby у нас есть методы экземпляра, переменные экземпляра и переменные класса. И есть еще ... По какой причине они разные? Это …


4
Как избежать общих имен для абстрактных классов?
В общем, хорошо избегать таких слов, как «handle» или «process», как части имен рутины и имен классов, если вы не имеете дело с (например) дескрипторами файлов или (например) процессами unix. Однако абстрактные классы часто не знают, что они собираются делать с чем-то, кроме, скажем, обработки. В моей текущей ситуации у …

9
Что если глобальные значения имеют смысл?
У меня есть ценность, которая нужна многим объектам. Например, финансовое приложение с различными инвестициями в качестве объектов, и большинству из них нужна текущая процентная ставка. Я надеялся инкапсулировать свою «финансовую среду» как объект, с процентной ставкой как собственность. Но родственные объекты, которым нужно это значение, не могут добраться до него. …

4
Шаблон проектирования для обработки ответа
Большую часть времени, когда я пишу некоторый код, который обрабатывает ответ для определенного вызова функции, я получаю следующую структуру кода: пример: это функция, которая будет обрабатывать аутентификацию для системы входа class Authentication{ function login(){ //This function is called from my Controller $result=$this->authenticate($username,$password); if($result=='wrong password'){ //increase the login trials counter //send …

2
лучшая практика для инициализации учеников в php
У меня есть много кода, как это в моих конструкторах: - function __construct($params) { $this->property = isset($params['property']) ? $params['property'] : default_val; } Лучше сделать это, чем указывать значение по умолчанию в определении свойства? то есть public $property = default_val? Иногда есть логика для значения по умолчанию, и некоторые значения по …

3
Когда уместна перегрузка метода?
Предположим, я работаю над существующей, достаточно большой системой. У меня есть объект myObjectкласса MyClass(для примера, предположим, я работаю в Java). myObjectэто композиция, содержащая Collection, скажем, а Listи другие объекты, которые (я думаю) не имеют значения. Он содержит методы делегата, которые просто служат для вызова методов, из которых Listон состоит, для …

9
Должен ли я передать объект в конструктор или создать экземпляр в классе?
Рассмотрим эти два примера: Передача объекта в конструктор class ExampleA { private $config; public function __construct($config) { $this->config = $config; } } $config = new Config; $exampleA = new ExampleA($config); Создание класса class ExampleB { private $config; public function __construct() { $this->config = new Config; } } $exampleA = new …

2
Разумно ли расширять класс только для повторного использования одной функции?
Я разрабатываю ряд пост-фильтров для сайта WordPress, и я создал первые 4 с одним классом. Последние два достаточно различны по объему, чтобы разделить только одну функцию (функцию для создания конечных ссылок) в своих классах. Разумно ли в данном случае или в любом другом подобном гипотетическом случае расширить исходный класс, чтобы …

3
Как удалить дублирующийся код (в общем)?
На языке ОО (например, но не только на Java), как вы исправляете дублирующий код в зависимости от области его появления? Я бы начал с (например) в том же классе (области действия) выполнить рефакторинг Извлечь метод (исправить) в классах той же иерархии (области видимости) выполнить Extract Method и Pull Up (исправить) …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.