0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 27
|
|
1 | |
Правильное разделение классов и методов14.03.2017, 12:06. Показов 2199. Ответов 8
Метки нет (Все метки)
Парни, привет. Учу ООП на своём примере (интернет магазин). У меня еще один вопрос нерешен. Верно ли я определил классы и методы?
Пользователь Свойства: id, email, пароль, имя, телефон Методы: регистрация, авторизация, проверка авторизации, редартирование и удаление. Товар Свойства: id, название, цена, категория, описание Методы: добавление, изменение, удаление, загрузка аватарки, замена аватарки БД синглтон Корзина заказа Свойство id сессии, id товара, количество Методы: добавление товара, удаление, изменение количества, сохранение и отправка заказа
0
|
14.03.2017, 12:06 | |
Ответы с готовыми решениями:
8
Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) Правильное разделение кода Правильное использование методов DrawXXX из класса DrawingContext Partial с методами - Разделение описания и определения методов |
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
|
14.03.2017, 13:43 | 2 |
Редактирование текущего пользователя (который записан в объекте) или вообще любого? Если второе, то в свойствах нет смысла.
Нет получения объекта юзера. Без него опять же нет смысла в свойствах, поскольку вы их просто не используете. Категория? Обычно для категорий делают отдельную таблицу и связывают с товарами по ID. Имхо замена аватарки лишняя, можно использовать загрузку и для добавления, и для изменения. А зачем ID сессии? Пусть корзина хранится у юзера в сессии/куках, зачем она вам?
1
|
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 27
|
|
14.03.2017, 13:52 [ТС] | 3 |
Jodah, Благодарю.
Наверное у меня никак не пересчелкнет в голове мышление с процедурного на ООП стиль. Ранее у меня был файл users.php. В нем были функции для работы с пользователями. Каждая функция отвечала за определенный метод. Например funtion users_create(.....); funtion users_update($id, ....); funtion users_del($id); funtion users_list(); Они возвращали true/false или массив. Я и подумал заменить на класс. Может я правда класс не для того сделал?)
0
|
Почетный модератор
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||||||
14.03.2017, 14:21 | 4 | |||||
Это не относится к пользователю, и добавлять в класс пользователя валидацию данных, аутенфикацию и т.п. не является корректным. Класс User должен отвечать только за пользователя - т.е. айди/логин/пароль/мыло и т.п. В другой вашей теме я уже давал ссылку про это..
в чистом виде не имеет смысла. Иначе, при необходимости создать несколько активных соединений вы сядете в лужу. Да и вообще, драйвер не будет создавать соединение заново, если данные для подключения указаны такие же, а будет использовать существующее. Хотя можно перенести эту проверку и на сторону PHP - но для возможности создать несколько активных соединений необходимо использовать примерно такой вариант:
1
|
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
|||||||||||
14.03.2017, 14:25 | 5 | ||||||||||
Stas107, в соседней теме я не зря порекомендовал вам изучить AR и DataMapper.
В упрощённом виде DataMapper + Entity выглядит примерно так (псевдокод):
Подробней об этом тут. Если вы хотите просто объединить несколько независимых функций - создайте статический класс:
1
|
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 27
|
|
14.03.2017, 16:55 [ТС] | 6 |
Спасибо парни. Кое что мне ясно, но надо разбираться.
Видимо я вообще не кодер. Я уже 2 месяца не могу понять принципы ООП. Вообще никак. ВООБЩЕ.. Люди рисуют жирафов, домики, или сразу переходят на крутые ооп фреймворки. Но ни одного земного примера самого простого сайта визитки и интернет магазина нет в сети. Всё абстрактно, как и словечки из ООП. Самое печальное, что те примеры, которые я встречал, содержат контроллеры и экшны закодированные руками! Да взять любой магазин, там вложенность страницы любая может быть и страница та же "товара" может на 3-й вглубь лежать, а может и в пятой. У нас всегда БД определяла какой тип страницы. Даже мои "процедурности" гораздо проще воспринять. Не знаю как это называется, может реестр, мож еще как, но собирается массив, который наполняют функции и в конце собирается. Если же речь про повторный вызов соединения, то я и взял синглтон как основу, чтоб один раз соединиться и всё. Иногда грешу global ом)
0
|
KOPOJI
|
14.03.2017, 17:01
#7
|
Не по теме: пару месяцев назад мне потребовалось добавить интеграцию с БД на MsSQL. Сам сайт работает на MySQL. Никогда не знаешь, что может потребоваться завтра - захотите настроить интеграцию со сторонним поставщиком через БД - и вот вам необходимость использования нескольких одновременных активных соединений с БД
0
|
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
|
|
15.03.2017, 12:53 | 8 |
Именно так тебе и стоит поступить. Просто копипасть пример из документации фреймворка и адаптируй под проект. Со временем начнешь понимать что к чему.
0
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
15.03.2017, 14:14 | 9 |
Весь гитхаб просмотрели? Есть например репозиторий laravel.su. Его как раз переделывают, можно стримы посмотреть.
Так фреймворки для этого и предназначены. А готовый функционал вы можете в CMS поискать. Ну или на базе фреймворка собрать свою CMS, но это не так просто. В общем нужно грамотно выбирать инструмент. Это не проблема. Настроить можно как угодно.
0
|
15.03.2017, 14:14 | |
15.03.2017, 14:14 | |
Помогаю со студенческими работами здесь
9
Создание java классов в коде С++ и вызов Java методов и классов из C++ Правильное объявление классов Правильное подключение классов Правильное название классов MVC Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |