Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 6

Архитектура классов (ооп)

15.03.2018, 00:03. Показов 4841. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно создать crud приложение для managerов. Как это примерно будет выглядеть: Есть возможность просматривать товары. Добавлять клиентов, менеджеров (изначально будет один) Можно добавлять заказы. При добавлении указывается клиент, товары которые он заказал, дата и тд. Грубо говоря, клиент сам ничего не заказывает, менеджер руками обрабатывает заказы. Можно отдельно просматривать заказы.

Собственно сделал такую диаграмму классов, но т.к опыта нету, выглядит это не очень..

Может завести какой-то контейнер Orders состоящий из orderid и clientid и заказы хранить в клиентах?

Подскажите пожалуста, что можно изменить\исправить, чтобы ускорить разработку и увеличить гибкость?

Схему, почему-то с первого раза загрузить не удалось
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2018, 00:03
Ответы с готовыми решениями:

Архитектура классов
Не могу разобраться с тем, как собрать сущность из различных классов. Есть классы, есть иерархия (наследование). Но вот как собрать - не...

ООП, понимание абстрактных классов/методов и т.п
Работаю программистом и столкнулся с тем, что на проекте отказались от абстрактного класса в пользу интерфейса, но я не совсем понимаю...

Правильная ООП архитектура
Есть классы-Дома, наследуемые от базового класса, как показано ниже в коде. Я хочу сделать кнопки в ГУИ. При нажатии на кнопку строиться...

12
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 6
15.03.2018, 00:05  [ТС]
Схему, почему-то с первого раза загрузить не удалось

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.03.2018, 11:09
vladis_presnya, вот здесь неплохо обсудили подобную тему, глянь
1
8 / 8 / 1
Регистрация: 18.03.2018
Сообщений: 26
18.03.2018, 01:51
Непонятно каким боком тут ООП. Вы хотите создать набор классов, которые будут отражать то, как данные будут лежать в базе данных? Тогда исходите из реляционных принципов, и ваш вопрос уже про моделирование базы данных. Если база данных уже у вас смоделирована, то исходите из ней.
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
18.03.2018, 17:29
Возьмём, например, класс Order:
Нет полей, соответствующих связям.
Даты имеют тип строка.
Деньги имеют тип целое число.
Названия странные. Oid - order id? WholeSum - total? ArriveDate - delivery date?
Зачем нужны даты отгрузки и доставки? Они заполняются в другое время и другими людьми.
Почему нет даты создания заказа?
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 6
19.03.2018, 23:55  [ТС]
Цитата Сообщение от csproj Посмотреть сообщение
Вы хотите создать набор классов, которые будут отражать то, как данные будут лежать в базе данных
Нет. Суть задачи не создание БД, а ООП ради ООП. Тема действительно не ООП, а для создание БД, мне она самому не нравится.+
Цитата Сообщение от iSmokeJC Посмотреть сообщение
vladis_presnya, вот здесь неплохо обсудили подобную тему, глянь
Спасибо. Гляну.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Они заполняются в другое время и другими людьми.
Видимо для чего-то нужны.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Почему нет даты создания заказа
Спасибо, учту и добавлю.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Даты имеют тип строка.
Деньги имеют тип целое число.
Само собой это всё достаточно предварительно.
Дата будем типа DateTime или около того.
Деньги наверное строкой. Или enum с валютами.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Нет полей, соответствующих связям.
Понял о чем вы. Да, добавлю в Order ссылку на Customer[a]

Насколько хорошая идея в Customer хранить список с заказами?
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
20.03.2018, 10:18
Цитата Сообщение от vladis_presnya Посмотреть сообщение
Видимо для чего-то нужны.
Это признак плохой архитектуры.

Цитата Сообщение от vladis_presnya Посмотреть сообщение
Тема действительно не ООП, а для создание БД,
В современных ORM есть опция "code first". То есть, Вы пишите код, а ORM сама создаёт БД.

Цитата Сообщение от vladis_presnya Посмотреть сообщение
Деньги наверное строкой.
Строкой плохо. Нужно decimal.

Цитата Сообщение от vladis_presnya Посмотреть сообщение
Или enum с валютами.
Имеет смысл заказы выставлять в одной валюте. В той, в которой хранятся цены на товары. И это не отменят возможность оплатить в любой валюте.

Цитата Сообщение от vladis_presnya Посмотреть сообщение
добавлю в Order ссылку на Customer[a]
А ещё на манагера и на магазин, судя по стрелкам на схеме.
И на схеме не хватает таблицы для списка товаров в заказе.

Цитата Сообщение от vladis_presnya Посмотреть сообщение
Насколько хорошая идея в Customer хранить список с заказами?
Если вопрос о БД, то плохая. Этот список легко получить дешёвым запросом.
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 6
22.03.2018, 16:13  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
В современных ORM есть опция "code first". То есть, Вы пишите код, а ORM сама создаёт БД.
О БД пока речи не идет.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Строкой плохо. Нужно decimal.
Понял.
Цитата Сообщение от Shamil1 Посмотреть сообщение
И на схеме не хватает таблицы для списка товаров в заказе.
Вы имеет ввиду, поля которое отвечало бы за список купленных товаров?
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
22.03.2018, 16:18
Цитата Сообщение от vladis_presnya Посмотреть сообщение
Вы имеет ввиду, поля которое отвечало бы за список купленных товаров?
Да. Обычно такую таблицу называют OrderDetails. Поля (минимум): ссылка на Заказ, ссылка на товар, количество, цена.
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 6
22.03.2018, 16:46  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
OrderDetails. Поля (минимум): ссылка на Заказ, ссылка на товар, количество, цена.
Хорошо. Спасибо, понял.

На данный момент у меня нет требования делать функционал, который позволит пользователю выбирать товары самому.
Но в друг.
Я правильно понимаю, что структура по сути не сильно изменится?
К примеру: пользователь заходит, выбирает товары. Жмет купить.
Потом заходит в историю заказов, я должен из общей коллекции Order, которая есть у Shop, выбрать те у которых ссылка на Customer[a] ?
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
22.03.2018, 17:14
Цитата Сообщение от vladis_presnya Посмотреть сообщение
выбрать те у которых ссылка на Customer[a]
У пользователя может быть несколько заказов, и в каждом - свой список товаров со своими ценами.
0
0 / 0 / 0
Регистрация: 14.03.2018
Сообщений: 6
22.03.2018, 17:50  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
У пользователя может быть несколько заказов, и в каждом - свой список товаров со своими ценами.
Ну. Правильно. Здесь вопрос только в одном, хранить ли в пользователе коллекцию, состоящую из ссылок на заказы, или же из общего списка Orders, который есть в магазине, в определенны момент выбирать те, которые относятся к нужному пользователю.
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
24.03.2018, 16:27
Цитата Сообщение от vladis_presnya Посмотреть сообщение
хранить ли в пользователе коллекцию
Что значит "хранить"? Свойство в классе пусть будет. При загрузке пользователя из БД, если требуется, можно это свойство заполнить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2018, 16:27
Помогаю со студенческими работами здесь

ООП архитектура игр
Добрый день! Если в игре есть главный цикл, и я делаю надстройку ООП, нужно ли заносить этот цикл в класс окна/приложения...

ООП, Архитектура приложения на C++
Доброго дня! Не знаю в тот ли раздел, но буду писать на C++ и в ООП новичок. Неплохо знаю Си, "Си++ с классами". В основном...

Наследование интерфейса схожих классов (архитектура)
Имеется класс абстрактных операций. В нем есть чисто виртуальный метод operate( AbstractObj * ) class Abstractperation{ public: ...

Насколько удобна архитектура классов модуля для написания программ?
unit Graphics; uses GraphABC; type ///Style-object Style = class private pC, pC2: Color; pS: integer;

Архитектура приложения "Кукольный театр" (ООП)
Всем доброго времени суток. Не могли бы вы мне помочь исправить мои ошибкиБпосмотреть код и сказать в чем проблема. Делаю домашку...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru