Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
 Аватар для VilDara
5 / 5 / 0
Регистрация: 27.08.2012
Сообщений: 153

Проектирование проекта. Как разделить его на классы

20.12.2013, 10:32. Показов 5419. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Я проектирую один проект и не знаю, как разделить классы.


Например, должна быть регистрация, аутентификация и "забыли пароль?"

Лучше разделить на 3 класса соответственно или лучше как-то по-другому?

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2013, 10:32
Ответы с готовыми решениями:

ООП. Как разделить функции на классы?
Добрый день, форум) Хотел задать один вопрос, думаю, он не очень трудный, но все же ... Вот скажем, у меня есть отдельный класс, в нем...

Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но через классы
Как struct Queue и его операции превратить в классы, то есть нужно сделать тоже самое, но используя соотвественно классы И как...

Как придумать классы по описанию проекта
Здравствуйте, мне нужно построить UML диаграмму классов, но не могу правильно их подобрать. Суть: мой проект моделирует сервисы...

40
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
20.12.2013, 11:02
Я бы в 1 запихал. И не только это. У меня эти штуки обычно лежат в классе User
0
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
20.12.2013, 11:55
1. прочитайте про SOLID
2. вникните в него
3. руководствуйтесь им

а так, не задумывайтесь сильно об архитектуре, с помощью рефакторинга вы сможете изменить архитектуру. И во время наращивания функциональности вы сами будете видеть, когда нужно разделять(т.е. плодить) классы, когда наоборот удалять.
1
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
21.12.2013, 01:38
Цитата Сообщение от AmsTaFFix Посмотреть сообщение
а так, не задумывайтесь сильно об архитектуре, с помощью рефакторинга вы сможете изменить архитектуру. И во время наращивания функциональности вы сами будете видеть, когда нужно разделять(т.е. плодить) классы, когда наоборот удалять.
+100
0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
22.12.2013, 21:26
Используйте модель MVC и иерархическую архитектуру классов. То есть у вас должен быть один основной класс, в котором будут системные ф-ции (работа с базой, управление сессиями, шаблонизатором и прочее), который вы будете наследовать всеми другими контроллерами и который будет заменять модель.

И должна быть точка входа (view-скрипт обычно), которая определяет какую страницу показать (какой контроллер вызвать, какой файл шаблонизатора отобразить). Такая модель очень гибкая и удобная. Погуглите на тему, для навигации по страницам обычно используется GET параметр 'page' к примеру. То есть любое обращение пользователя к вашему сайту должно приходить именно на этот один скрипт, который уже будет выполнять требуемые действия
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
22.12.2013, 22:09
То есть у вас должен быть один основной класс, в котором будут системные ф-ции (работа с базой, управление сессиями, шаблонизатором и прочее)
один основной класс для работы с базой и шаблонизатором?
О_о
марш теорию учить.

Цитата Сообщение от fic Посмотреть сообщение
который вы будете наследовать всеми другими контроллерами и который будет заменять модель
хватит бред советовать
0
 Аватар для VilDara
5 / 5 / 0
Регистрация: 27.08.2012
Сообщений: 153
23.12.2013, 10:21  [ТС]
Василий Макогон, я уже прочитал все 5 пунктов SOLID. Еще взял несколько книг на тему проектирования и чистого кода, так что обучусь и этому, потом буду писать, а то мои программы всегда усложняются до "понимания уровень "БОГ".
0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
27.12.2013, 02:53
Цитата Сообщение от Василий Макогон Посмотреть сообщение
один основной класс для работы с базой и шаблонизатором?
О_о
марш теорию учить.

хватит бред советовать
Действительно, мне же очень нехватает теории..
Или на этом форуме все, у кого овер 500 сообщений смотрят как на говно на тех, у кого надпись "новичек", не вникая?
Когда имеется один корневой класс, в котором содержаться все системные методы (к примеру ф-я display, которая отображает выбранный шаблон с указанными данными, либо пользовательская ф-ция select для выборки из базы) это очень удобно. К тому же его можно таскать по всем проектам. В св-ва этого класса опять же можно вытаскивать из сессии информацию о текущем пользователе и еще много чего. Это называется точка входа.

А теперь объясните мне почему я советую бред? Ибо используя подобную архитектуру и определенный шаблонизатор можно сделать динамическую (автообновляемую страницу) почти без всякого дополнительного обвеса к обычной.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
27.12.2013, 08:24
Цитата Сообщение от fic Посмотреть сообщение
А теперь объясните мне почему я советую бред?
потому что ничего не читали. например, про толстые тупые уродливые контроллеры...

Не по теме:

Цитата Сообщение от fic Посмотреть сообщение
смотрят как на говно на тех, у кого надпись "новичек",
заметьте, сказали это вы

0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
27.12.2013, 09:11
Цитата Сообщение от ads Посмотреть сообщение
потому что ничего не читали. например, про толстые тупые уродливые контроллеры...

Не по теме:

заметьте, сказали это вы

Где я писал про то, что нужно делать "толстый, тупой, уродливый" контроллер? Я вообще что-то писал про контроллеры?

У меня в основном классе около 1200 строк, в которых все разбито на отдельные ф-ции и довольно понятно. Не думаю что если бы я разбил этот файл на еще штук 5 других, это бы улучшило читабельность (мне например проще открыть один файл большой чем постоянно переключаться по 5 разным). Приведет мне кто-то хоть один четкий аргумент минусов сбора всех основных системных ф-ций в один класс, или будем продолжать переходить на личности?

Да, действительно.. хороший программист не писатель, хороший программист читатель
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
27.12.2013, 09:23
Цитата Сообщение от fic Посмотреть сообщение
Где я писал про то, что нужно делать "толстый, тупой, уродливый" контроллер?
во всех своих сообщениях. Только вы еще не знаете, что пишете именно о нем
0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
27.12.2013, 10:13
Цитата Сообщение от ads Посмотреть сообщение
во всех своих сообщениях. Только вы еще не знаете, что пишете именно о нем
Вот уж действительно. Так может вы мне ответите на вопрос в предыдущем сообщении? Я по поводу аргументации./

P.s. я о контроллерах вообще не говорил в своих сообщениях, это вы мне навязываете эту тему. К слову, у меня все контроллеры довольно небольшие и каждый из них соотв. определенному объекту архитектуры. К примеру для пользователей свой контроллер (добавление\удаление\редактирование), для товаров (к примеру) свой и т.д.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
27.12.2013, 10:37
Цитата Сообщение от fic Посмотреть сообщение
я о контроллерах вообще не говорил в своих сообщениях
это ложь
можете вернуться к своему сообщению
Цитата Сообщение от fic Посмотреть сообщение
у вас должен быть один основной класс, в котором будут системные ф-ции (работа с базой, управление сессиями, шаблонизатором и прочее), который вы будете наследовать всеми другими контроллерами и который будет заменять модель.
про то как контроллеры наследуют "основной класс" и заменяют собой модель не вы писали? Это и есть воплощение ТТУК в самой уродливой форме. Но вам это не нужно знать.. Уже не поможет
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
27.12.2013, 13:36
Цитата Сообщение от fic Посмотреть сообщение
Не думаю что если бы я разбил этот файл на еще штук 5 других, это бы улучшило читабельность (мне например проще открыть один файл большой чем постоянно переключаться по 5 разным).
К выделенному: а зря.
0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
27.12.2013, 18:13
Цитата Сообщение от ads Посмотреть сообщение
это ложь
можете вернуться к своему сообщению про то как контроллеры наследуют "основной класс" и заменяют собой модель не вы писали? Это и есть воплощение ТТУК в самой уродливой форме. Но вам это не нужно знать.. Уже не поможет
Вы опять переходите на личности. У вас какие-то психологические проблемы, или просто вы так самовыражаетесь?

Вы представили мое сообщение так, как захотелось вам. Контроллеры НЕ ЗАМЕНЯЮТ собой модель, т.к. это контроллеры, ага. Я написал о том, что родительский класс заменяет собой модель, т.к. в нем содержатся все основные методы взаимодействия с базой. (Оригинальная цитата - "который вы будете наследовать всеми другими контроллерами и который будет заменять модель")

P.s. Постарайтесь не оскорблять людей, с которыми общаетесь, хотя бы и на форуме. Это не очень хорошая черта

Добавлено через 4 минуты
Цитата Сообщение от OnYourLips Посмотреть сообщение
К выделенному: а зря.
Ок, тогда два личных вопроса - вы в PHP писали только на Yii? (только на фреймворках?)

И второй - какой у вас опыт работы и должность (ну только не сильно врите, ладно?)
1
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
27.12.2013, 18:58
Цитата Сообщение от fic Посмотреть сообщение
Вы представили мое сообщение так, как захотелось вам.
я всего лишь его процетировал.
Цитата Сообщение от fic Посмотреть сообщение
Вы опять переходите на личности...
Постарайтесь не оскорблять людей
покажите пожалуйста, где я перехожу на личности.. И где я оскорблял людей?
Цитата Сообщение от fic Посмотреть сообщение
У вас какие-то психологические проблемы, или просто вы так самовыражаетесь?
Это как вам будет угодно, а то опять скажете что перехожу на личности и оскорбляю людей..
Цитата Сообщение от fic Посмотреть сообщение
Ок, тогда два личных вопроса - вы в PHP писали только на Yii? (только на фреймворках?)
И второй - какой у вас опыт работы и должность (ну только не сильно врите, ладно?)
Сажусь писать отчет! в трех экземплярах!
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
27.12.2013, 21:43
Цитата Сообщение от fic Посмотреть сообщение
Ок, тогда два личных вопроса - вы в PHP писали только на Yii? (только на фреймворках?)
И второй - какой у вас опыт работы и должность (ну только не сильно врите, ладно?)
Я отвечу.
Вначале (ранний junior) писал без фреймворков. Потом набрался опыта и перестал делать такие глупости. Пишу на разных фреймворках (последний год на symfony).
Опыт работы за деньги на PHP 5 лет. Senior developer.

И зачем такие вопросы?
0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
27.12.2013, 22:48
Цитата Сообщение от OnYourLips Посмотреть сообщение
Я отвечу.
Вначале (ранний junior) писал без фреймворков. Потом набрался опыта и перестал делать такие глупости. Пишу на разных фреймворках (последний год на symfony).
Опыт работы за деньги на PHP 5 лет. Senior developer.

И зачем такие вопросы?
Просто интересно, с кем приходиться вести диалог.
Дальше много текста:

Тут каждый выбирает что ему лучше и что понимать под фразой "фреймворк".
Я в процессе разработки собираю базу необходимых для работы классов и вырабатываю архитектуру для них (к слову, сейчас эта база уже довольно обширна).

По сути фреймворки это и есть подобные "базы классов". Но готовые решения лично мне не нравятся, т.к. я люблю понимать что происходит в данный конкретный момент времени, а не просто написать ф-цию do_all_right(); которая сделает все за меня (не в обиду пользователям фреймворков).

Безусловно фреймворки так же хороши тем, что код структурирован под конкретный фреймворк и с одной стороны в нем будет проще разобраться (тому кто знает этот фреймворк), но с другой стороны, я тоже стараюсь использовать максимально понятную архитектуру (в корне - модель MVC, как и в большинстве фреймворков) и прокомментированные ф-ции\классы (doxygen).

Если бы был один единственный фреймворк, который используют все и он являлся бы стандартом, то это было бы удобно. Но именно из-за их великого разнообразия и сложности некоторых из них, вероятность наговнокодить и даже не понимать этого выше, чем если не использовать фреймворки.

К примеру на Zend'е нужно сделать довольно много телодвижений для того, чтобы вывести к примеру автообновляемую (я имею в виду без обновления страницы) таблицу с живым поиском\сортировкой по каждому полю и постраничной навигацией. Мои же средства позволяют сделать это (живой поиск\автообновление\навигацию) подключив один файл к статической странице и дописав в него несколько опциональных полей. (файл на стороне сервера использует те же ф-ции получения данных, которые итак пишутся для того чтобы вывести страницу и те же шаблоны, что и сервер при выводе страницы).

В заключение - большинство обливает говном тех, кто не использует фреймворки именно потому, что процент говнокода очень большой среди разработчиков PHP, но это не дает вам права считать таковыми всех подряд. Я пытался использовать некоторые известные фреймворки (c Symfony к сожалению дела не имел) типа Zend, Yii для задачи описанной немного выше, но в некоторых это было сложно (в плане количества кода) а в других медленнее, чем моя обертка.

Спасибо что прочитали
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
27.12.2013, 22:55
Цитата Сообщение от fic Посмотреть сообщение
Тут каждый выбирает что ему лучше и что понимать под фразой "фреймворк".
Я в процессе разработки собираю базу необходимых для работы классов и вырабатываю архитектуру для них (к слову, сейчас эта база уже довольно обширна).
Поздравляю, ты делаешь свой фреймворк. Только кривой и нестабильный. И тратишь на это свое время.

Цитата Сообщение от fic Посмотреть сообщение
По сути фреймворки это и есть подобные "базы классов". Но готовые решения лично мне не нравятся, т.к. я люблю понимать что происходит в данный конкретный момент времени, а не просто написать ф-цию do_all_right(); которая сделает все за меня (не в обиду пользователям фреймворков).
В этом и отличие дилетанта от специалиста. Специалист знает фреймворк и знает, что происходит при вызове doAllRight();
С опытом придет.
Но этот опыт можно ускорить, если не упираться лбом, как ты.

Цитата Сообщение от fic Посмотреть сообщение
В заключение - большинство обливает говном тех, кто не использует фреймворки именно потому, что процент говнокода очень большой среди разработчиков PHP, но это не дает вам права считать таковыми всех подряд.
Дает. Потому что вы не смогли освоить фреймворки.
0
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
27.12.2013, 23:06
Цитата Сообщение от OnYourLips Посмотреть сообщение
Поздравляю, ты делаешь свой фреймворк. Только кривой и нестабильный. И тратишь на это свое время.
Мы перешли на "ты"?
Откуда такие выводы? Я же описал выше свою позицию. Я не трачу время, я разрабатываю проекты и одновременно с этим улучшаю и свою базу.

Цитата Сообщение от OnYourLips Посмотреть сообщение
В этом и отличие дилетанта от специалиста. Специалист знает фреймворк и знает, что происходит при вызове doAllRight();
С опытом придет.
Но этот опыт можно ускорить, если не упираться лбом, как ты.
Вы можете гарантировать что знаете механизм абсолютно всех процессов, которые происходят на страницах вашего проекта в Symfony?
Цитата Сообщение от OnYourLips Посмотреть сообщение
Дает. Потому что вы не смогли освоить фреймворки.
О, снова вы. Осознали ошибку?

Я смог освоить фреймворк (Zend) на достаточно далеком от дилетантского уровне, т.к. приходиться поддерживать проект на нем работающий и, хоть я и знаю этот фреймворк довольно неплохо, считаю его очень неудобным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2013, 23:06
Помогаю со студенческими работами здесь

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

Как вставить в UML схему классы проекта в Visual Studio Ultimate 2010
Добрый день! В проекте создал классы. Создал пустую схему классов UML. Как теперь в нее засунуть все классы проекта? Неужели...

Как разделить объявление массива контролов и его инициализацию конкретными компонентами
Всем здравствуйте. Такое объявление совмещённое с инициализацией успешно работает в конструкторе формы TButton *ArrBut = {Button1,...

Как загрузить текстовый файл с определенной строки и разделить его на столбцы
Добрый вечер, подскажите пожалуйста, как написать макрос загрузки текстового файла. Загрузив его с определенной строки, разделить его на...

Не отрисовывается изображение, после того, как я добавил его в классы
Отображается маленький квадрат. Структура font OpenSans-Regular.ttf bmw_PNG1709.png src captcha.php


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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