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

Методологія, яка дозволяє моделювати систему як сукупність об'єктів, якими можна модульно керувати та керувати ними

4
Чи підтримують парадигми, що не входять в ООП, такі поняття, як капсулювання?
Однією з важливих концепцій об’єктно-орієнтованого програмування є інкапсуляція. Однак останнім часом світ програмного забезпечення, схоже, нахиляється на користь інших парадигм, таких як функціональне програмування. Мене змушує задуматися, що з інкапсуляцією та іншими принципами OOP? Вони помиляються? Хіба що OOP застосовується неправильно? Наприклад, Алан Кей відзначається тим, що говорить в основній …

4
Найпростіший спосіб написати логічно процедурне програмне забезпечення мовою ОО
Я інженер-електромонтажник, і я не знаю, що, до біса, роблю. Будь ласка, збережіть майбутніх утримувачів мого коду. Останнім часом я працюю над низкою менших програм (в C #), функціональність яких логічно "процедурна". Наприклад, одна з них - це програма, яка збирає інформацію з різних баз даних, використовує цю інформацію для …

5
Як змінюється концепція класу при передачі даних конструктору замість параметрів методу?
Скажімо, ми робимо аналізатор. Однією з реалізацій може бути: public sealed class Parser1 { public string Parse(string text) { ... } } Або ми могли замість цього передати текст конструктору: public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } …

7
Коли в об'єктно-орієнтованих мовах, коли об’єкти повинні робити операції над собою та коли операції слід робити на об'єктах?
Припустимо, існує Pageклас, який представляє набір вказівок для рендерінгу сторінки. І припустимо, існує Rendererклас, який знає, як візуалізувати сторінку на екрані. Можна структурувати код двома різними способами: /* * 1) Page Uses Renderer internally, * or receives it explicitly */ $page->renderMe(); $page->renderMe($renderer); /* * 2) Page is passed to Renderer …

2
Чи можемо ми реально використовувати незмінність в OOP, не втрачаючи всіх основних функцій OOP?
Я бачу переваги того, щоб зробити об’єкти в своїй програмі незмінними. Коли я по-справжньому глибоко замислююся над гарним дизайном для свого застосування, я часто природно діходжу до багатьох моїх об'єктів, непорушних. Часто доходить до того, що я хотів би, щоб усі мої об’єкти були незмінні. Це питання стосується тієї ж …

6
Як це було б запрограмовано в не-OO? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 2 роки тому . Читаючи жахливу статтю про недоліки ООП на користь якоїсь іншої парадигми, я натрапив на …

5
Яка хороша практика дизайну, щоб не задавати тип підкласу?
Я читав, що, коли вашій програмі потрібно знати, що таке клас об'єкта, зазвичай вказують на недолік дизайну, тому я хочу знати, яка хороша практика для цього. Я реалізую клас Shape з різними підкласами, успадкованими від нього, як Circle, Polygon або Rectangle, і я маю різні алгоритми, щоб знати, чи коло …

7
Реалізація стану об'єкта мовою ОО?
Мені було запропоновано деякий код Java, який імітує гонку автомобілів, яка включає реалізацію базової машини. Це не класична державна машина інформатики, а просто об'єкт, який може мати декілька станів і може перемикатися між своїми станами на основі ряду обчислень. Щоб описувати лише проблему, у мене є клас Car, з вкладеним …

3
Як повинен бути розроблений клас `Співробітник`?
Я намагаюся створити програму для управління працівниками. Однак я не можу зрозуміти, як створити Employeeклас. Моя мета - вміти створювати та маніпулювати даними працівника в базі даних за допомогою Employeeоб’єкта. Основна реалізація, про яку я думав, була така проста: class Employee { // Employee data (let's say, dozens of properties). …

5
Найкраща стратегія звітування про прогрес в інтерфейсі - як має відбуватися зворотний виклик?
Іноді користувач запускає розширену технічну операцію, яка потребує певного часу. У цих випадках зазвичай приємно відображати якусь панель прогресу, а також інформацію про те, яке завдання виконується зараз. Щоб уникнути тісного з’єднання інтерфейсу користувача та логічних шарів, зазвичай, краще, щоб спілкування відбувалося через якийсь проксі. Тобто, бек-енд не повинен маніпулювати …

2
Принцип сухості в передовій практиці?
Я намагаюся слідувати принципу DRY в моєму програмуванні так сильно, як можу. Нещодавно я вивчав шаблони дизайну в OOP, і в кінцевому підсумку повторював себе досить багато. Я створив шаблон репозиторію разом із візерунками Factory і Gateway, щоб вирішити свою стійкість. Я використовую базу даних у своїй програмі, але це …

2
Класи Python лише з одним екземпляром: Коли створити (єдиний) екземпляр класу і коли замість цього працювати з класом?
Дано клас Python, який буде інстанціюватися лише один раз, тобто буде лише один об'єкт класу. Мені було цікаво, в яких випадках має сенс створити один екземпляр класу, а не працювати безпосередньо з класом. Існує подібне питання , але воно має іншу спрямованість: йдеться про групування глобальних змінних та функцій у …

5
Чи слід віддавати перевагу складу чи спадку у цьому сценарії?
Розглянемо інтерфейс: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Цей інтерфейс реалізований низкою класів, які генерують хвилі різної форми (наприклад, SineWaveGeneratorта SquareWaveGenerator). Я хочу реалізувати клас, який формує на SoundWaveоснові музичних даних, а не необроблених звукових даних. Він отримав би назву ноти та довжину у перерахунку на удари …

4
Що означає "ООП приховує державу"? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 5 років тому . В одній із багатьох анти-ООП-рейтів на cat-v.org я знайшов уривок Джо Армстронга, який висунув …

5
Чи слід завжди повністю інкапсулювати внутрішню структуру даних?
Врахуйте цей клас: class ClassA{ private Thing[] things; // stores data // stuff omitted public Thing[] getThings(){ return things; } } Цей клас виставляє масив, який він використовує для зберігання даних, будь-якому зацікавленому коду клієнта. Я це робив у додатку, над яким працюю. У мене був ChordProgressionклас, який зберігає послідовність …

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