Запитання з тегом «object-oriented-design»

Об'єктно-орієнтоване проектування - це процес планування системи взаємодіючих об’єктів з метою вирішення програмної проблеми.

10
Чи можемо ми жити без конструкторів?
Скажімо, чомусь усі об'єкти створені таким чином $ obj = CLASS :: getInstance (). Потім ми вводимо залежності за допомогою сеттерів і виконуємо запуску ініціалізації за допомогою $ obj-> initInstance (); Чи є справжні неприємності чи ситуації, які неможливо вирішити, якщо ми взагалі не будемо використовувати конструктори? Причина створення об'єкта …

5
Чи повинен клас знати про його підкласи?
Чи повинен клас знати про його підкласи? Чи повинен клас робити щось, що є специфічним для даного підкласу, наприклад? Мої інстинкти говорять мені, що це погана конструкція, здається, якась антидіаграма.

12
Об'єктно-орієнтований дизайн
Припустимо, у вас є наступне: +--------+ +------+ | Animal | | Food | +-+------+ +----+-+ ^ ^ | | | | +------+ +-------+ | Deer | | Grass | +------+ +-------+ Deerуспадковує від Animal, а Grassуспадковує від Food. Все йде нормально. Animalпредмети можуть їсти Foodпредмети. Тепер давайте трохи змішати його. …

6
Чи повинен об’єкт знати свій ідентифікатор?
obj.idздається досить поширеним, а також, здається, потрапляє в коло того, що об’єкт міг знати про себе. Я можу запитати, чому мій об’єкт повинен знати свій ідентифікатор? Здається, це не має причини? Однією з головних причин його існування є його отримання, і тому мої сховища повинні знати це, і таким чином …

4
Використовуйте абстрактний клас у C # як визначення
Як розробник C ++ я досить звик до файлів заголовків C ++, і вважаю вигідним мати якусь вимушену "документацію" всередині коду. Зазвичай у мене поганий час, коли мені доводиться читати якийсь код C # через це: у мене немає такої ментальної карти класу, з якою я працюю. Припустимо, що як …

9
Коли слід використовувати приватний / внутрішній клас?
Щоб уточнити, про що я прошу public class A{ private/*or public*/ B b; } vs. public class A{ private/*or public*/ class B{ .... } } Я точно можу придумати деякі причини використання тієї чи іншої, але те, що я дійсно хотів би побачити, - це переконливі приклади, які показують, що …

11
Коли ви хочете дві посилання на один і той же об’єкт?
В Java конкретно, але, ймовірно, і в інших мовах: коли було б корисно мати два посилання на один і той же об’єкт? Приклад: Dog a = new Dog(); Dob b = a; Чи є ситуація, коли це було б корисно? Чому це було б кращим рішенням для використання, aколи ви …

3
Найкращий дизайн для форм Windows, які матимуть спільний функціонал
Раніше я використовував успадкування, щоб дозволити розширення форм Windows у своїй програмі. Якщо всі мої форми мали б загальні елементи управління, твори мистецтва та функціональність, я створив б базову форму, що реалізує загальні елементи керування та функціональні можливості, а потім дозволю іншим елементам управління успадковувати цю базову форму. Однак у …

3
Ніколи не робіть публічних членів віртуальними / абстрактними - справді?
Ще в 2000-х моїй колезі сказали мені, що це зробити анти-зразком зробити публічні методи віртуальними чи абстрактними. Наприклад, він вважав такий клас, як недостатньо розроблений: public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { if (argument == null) throw new ArgumentNullException(nameof(argument)); // default …

9
Чи запах кодів init ()?
Чи є якась мета для оголошення init()способу для типу? Я не запитую, чи слід віддавати перевагу init()конструктору чи як уникнути декларуванняinit() . Я питаю, чи є якесь - або Обгрунтування оголошуючи init()метод (бачачи , наскільки часто це) , або , якщо це код запах і його слід уникати. init()Ідіоми досить …

4
Як занадто багато змінних примірників призводить до дублювання коду?
Відповідно до Refactoring to Patterns : Коли клас намагається зробити занадто багато, він часто виявляється як занадто багато змінних екземплярів. Коли у класу занадто багато змінних примірників, дублюваний код не може відстати. Як занадто багато змінних примірників призводить до дублювання коду?

4
Як створити кращий код OO в додатку, керованому реляційною базою даних, де база даних погано розроблена
Я пишу веб-додаток Java, яке складається, головним чином, із групи подібних сторінок, у яких на кожній сторінці є кілька таблиць та фільтр, який застосовується до цих таблиць. Дані в цих таблицях походять із бази даних SQL. Я використовую myBatis як ORM, що може бути не найкращим вибором у моєму випадку, …

7
Кращі практики OO для програм C [закрито]
Закрито . Це питання має бути більш зосередженим . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб воно зосередилось на одній проблемі, лише відредагувавши цю публікацію . Закрито 4 роки тому . "Якщо ви дійсно хочете OO цукру - перейдіть на C ++" - була негайна відповідь, …

1
Чому (/ зробив) Бертран Мейєр вважає, що підкласифікація - єдиний спосіб розширити «закритий» модуль?
У « Об’єктно-орієнтованій програмі» ( Майєр ) він визначає принцип відкритого / закритого типу : Модуль, як кажуть, буде відкритим, якщо він ще доступний для розширення. Наприклад, має бути можливість додати поля до структур даних, які він містить, або нових елементів до набору функцій, які він виконує. Кажуть, що модуль …

7
Чи слід створювати інтерфейси для об’єктів передачі даних?
Це гарна чи погана ідея створити інтерфейс для об’єктів передачі даних? Припускаючи, що об'єкт зазвичай змінюється. Хоча мій приклад є в Java, він повинен бути застосовний до будь-якої іншої мови, що має подібні поняття. interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.