Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для BadCats
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119

Как развить навык разбиения сущностей на абстракции?

24.08.2020, 21:40. Показов 2285. Ответов 2

Студворк — интернет-сервис помощи студентам
Приведу пример:

Допустим, у нас есть кухонный кран. Лично мне, удалось выделить у него следующие характеристики:
  • Пропускная способность - литр/час
  • Тип смесителя - двухвентильные/однорычажные
  • Марка стали
  • Габариты - высота в пике
  • Производитель
  • Заявленный срок службы
  • Цена


Пример, более приближенный к программированию:
Программа для "чистки" данных в файлах разного формата - txt, xlsx, accdb
Требования, которые у меня получилось сформулировать и которыми должна обладать система:

Вся система должна быть разбита на 4 отдельных класса-блока:


  • Класс для чтения данных, вне зависимости от формата:

  1. Непосредственно, читает данные в контейнер по заданному разделителю (для txt)
  2. Позволяет удобно и гибко рабоать с файловой системой - рекурсивно обходя директории,читая и ища только файлы заданного/-ных типа/-ов

  • Класс для предварительной обработки и нормализации данных:
  1. Удалят пустые записи.
  2. Приводит все строки к одному виду.


  • Класс, для непосредственной работы с подготовленными данными, в который подается список "заданий" для каждого элемента контейнера - например, список указателей на методы, которые буду применены к определенным элементам.
  • Класс для удобного создания таблицы, путем передачи одному из методов класса методу sql-запроса в виде строки.
Вот о таких примерах я говорю.
Как научиться сразу-же анализировать задачу или проблему подобным, инженерным образом?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2020, 21:40
Ответы с готовыми решениями:

Память, как правильно ее развить?
Добрый день всем В общем, вопрос в заголовке, сейчас сдаю экзамены по Microsoft одновременно идет ,, учеба и еще работа, получаю довольно...

Как развить знания на практике?
Доброго времени суток. Давно изучал HTML, CSS, JS. Недавно "прошёлся" по изученному. Как развить знания? В плане практики. Просто...

Как правильно развить группу вконтакте ?
Вот недавно задался целью развить хорошую группу на свадебную тематику в контакте, что бы через нее в дальнейшем реализовывать свадебные...

2
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.08.2020, 19:43
По-моему, не нужно множить сущности.

1) Условно, описали "структуру" для внутреннего представления объекта - и остановились.
2) Потом описали абстрактный класс с методами "чтение/запись" (кодер/декодер, серилизатор/десериализатор). Смысл поняли.
3) Отнаследовались - и реализовали конкретный формат хранения (например, в текстовых файлах).
1
698 / 572 / 75
Регистрация: 20.09.2014
Сообщений: 3,700
29.08.2020, 04:36
Совет - применять системный подход. Видеть во всем системы (не объекты). Совет, конечно, очень расплывчатый, так как найти курс или какое-то чтиво на эту тему - это тоже самое, что найти тренинг по ООП.
Объект - это близкое к системе понятие, однако, в объектах переменные не делятся на входные и выходные. Это не даёт видения взаимосвязей.

Итак, ваше приложение - объект система, у которой есть какие-то входы и выходы. Входы - это события мыши/клавиатуры и т.п., выход - это некий вывод на экран (графика), записи в базы данных, в файлы... Декомпозируете свою систему, т.е. разбиваете на отдельные части по выходам (подсистема графики, подсистема БД и т.д.). Потом системы переведёте в объекты.

Это теоретический подход. Но на практике программист обычно использует интуитивный подход (это ускоряет процесс) - на основе ощущений и опыта выделяет объекты.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.08.2020, 04:36
Помогаю со студенческими работами здесь

Как развить тяговое усилие управляя с пульта?
Всем привет. Помогите пожалуйста реализовать устройство. Суть в том, что нужно с пульта радиоуправления (модуль закажу с китая),...

Как развить творческие способности, улучшить мышление?
Чтобы мозг начал креативно мыслить новыми категориями, как-то расширить сознание (без употребления чего-либо;) ). Добавлено через 8...

Подскажите как развить сайт и в каком направлении двигаться
Новичок в этом деле вот моя работа http://newspak.in/ строго не судите

Подскажите как развить силу мышц рук за лето на максимум
Подскажите как развить силу мышц рук за лето на максимум Какие упражнения для этого необходимы? Что нужно есть побольше? Что поменьше? ...

Как избавится от составной связи сущностей?
Каким образом можно реализовать одинарную связь между сущностями, представленными рисунке (схема данных). То есть эти сущности связаны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru