![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Levbald |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2006 Где: Germany/Frankfurt Репутация: нет Всего: нет |
Привет,
У меня возникла следующая проблема! У меня уже есть приложение, написанное на PHP с MySQL! Приложение работает, но постоянно расширяется и все время надо добовлять что-то новое! Суть проблемы, что мне надо переписать приложение с помощью классов и объектов - т.е ООП, но у меня нет в этом опыта и я не знаю как лучше разбивать на классы и объекты (блоки)! Теперь коротко о приложении: На самом деле это довольно таки развернутая база по клиентам (адрес, имя и другие свойства)! Работает это так! Есть скажем проект Х (их может быть много)! Каждый день в течении месяца "советник" может добавлять в календарь "встречи" по определенному проекту X! На эту встречу скажем 2 Октября могут прийти другие "советники", а также клиенты! Для каждого клиента ведется запись - подписал ли он договор или нет! А потом в конце месяца можно из базы данных генерировать отчет! Проблема в том что только "советники" могут управлять приложением! Для этого я хочу сделать сессии и вход с паролем! Соотвественно мне надо, чтобы "советнику У" показывася скажем только его проект X, а не все сразу! Все это уже работает, но довольно неудобно! Буду рад помощи и советам, как все это организовать и разбить, чтобы было ООП! Заранее спасибо! Еще добавлю взаимосвязь - советник может иметь много клиентов - в один день ( скажем 02.10.2008) на уровне проекта X может быть назначено несколько встреч с разными клиентами, - советник может иметь несколько проектов - клиент имеет много свойств! Например можно узнать когда были встречи, с какими советниками и подписал ли клиент договор Это сообщение отредактировал(а) Levbald - 24.6.2008, 21:00 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
это учебная задача и надо по максимуму "классов и объектов" или все же надо рабочая и достаточно легкая в модификации/расширении/сопровождении система?
|
|||
|
||||
| Levbald |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2006 Где: Germany/Frankfurt Репутация: нет Всего: нет |
Опять же приходится писать довольно таки много запросов к базе данных и запросы довольно таки однотипные!
И еще одна проблема в том что сейчас приложение построено на многоуровневых for и while + array (много данных) что конечно не может не тормозить! Поэтому хочу использовать классы и объекты! Это сообщение отредактировал(а) Levbald - 24.6.2008, 21:24 |
|||
|
||||
| Levbald |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2006 Где: Germany/Frankfurt Репутация: нет Всего: нет |
Это рабочая задача, которая должна быть легкая в модификации/расширении/сопровождении! С проблемой столкнулся когда надо было сделать так чтобы после авторизации каждому советнику показывались только его проекты, клиенты и.т.д! А это опять набор из for и while! Очень не удобно! Добавлено @ 21:26 Сейчас примерно покажу как это выглядет! Заходишь на страницу! Скажем месяц - Июнь Проект Число 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ..... 30 День Воскр Пн Вт Ср Чт Пт..... Проект1 (Пн - встреча1, встреча2) Проект2 (12 Число Встреча1, Встреча2) Проект3 Т.е это таблица! И мне теперь надо, что бы советнику Х был виден только проект 1, это можно сделать, но со временем код получается ужасно большой и довольно трудно быстро что-то найти и изменить! Это сообщение отредактировал(а) Levbald - 24.6.2008, 21:39 |
|||
|
||||
| Levbald |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2006 Где: Germany/Frankfurt Репутация: нет Всего: нет |
Есть у кого-нибудь пару идей, советов?
|
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
сами по себе "классы, объекты" тебе не помогут. и код волшебным образом читабельным не сделают.
освоить ООП - это значит забыть все свои знания языка, и учиться заново. причем - не обязательно с положительным результатом. ООП не всем дается. Это сообщение отредактировал(а) Feldmarschall - 24.6.2008, 22:54 |
|||
|
||||
| Glip |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 473 Регистрация: 30.12.2006 Репутация: 7 Всего: 18 |
Levbald, ну вы же сами все и описали в так называемых User Story. у вас там в принципе прослеживаются классы "Проект" "Советник", может быть что-то еще, а может быть получатся совершенно другие. Поищите информацию по Объектно Ориентированному Проектированию, выберите для себя подходящие инструмены, благо их сейчас полно в том числе и опенсорс. Мне кажется у вас не плохая задача для изучения теории и применения её на практике.
|
|||
|
||||
| Levbald |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2006 Где: Germany/Frankfurt Репутация: нет Всего: нет |
Спасибо, за совет! Я тут посидел подумал... В голове что-то сложилось! Попробую сделать! Если что-то получится или не получится опишу здесь! Но все таки какие-нибудь принципы - например от чего плясать хотелось бы услышать! Я себе пока это так представляю: объект клиент - наследует объект советник - наследует объект встреча - наследует объект день (пример 10.02.2008) - наследует объект проект! Другими словами "клиент" наследует все свойства, вышестоящих классов (родителей)! Вот так я себе это пока представляю! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
нет. неверно. иерархия классов должна соответствовать либо абстрациям реального мира(например, "ВАЗ 2101" как подкласс "легкового автомобиля"), либо следовать логике модели. наследование "встреча - наследует день" мне кажется притянутой не только за уши.
мой взгляд: мало того, что Feldmarschall абсолютно все верно сказал и ООП не панацея, при продемонстрированном опыте работы в ООП система у тебя получится на порядок менее читаемой, чем в функционально-процедурном стиле. Именно потому, что для тебя это будет вроде учебного задания, в котором бушь вникать в разные тонкости. потому если тебе дорого время и нет желание потом эту систему переписывать с нуля, делай в том стиле, как ты привык. в общем случае, замечу, что наследование определяет абстрагирование. т.о. "советник" и "клиент" будут наследовать "учасник". а для "учасника" будет определно назначение встречи. впрочем, можно и интерфейсами обойтись, все равнореализация будет разной. наследование "днем" класса "проект" кажется мне кошмаром в ООП: абсолютно несвязанные между собой сущности. |
|||
|
||||
| Glip |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 473 Регистрация: 30.12.2006 Репутация: 7 Всего: 18 |
||||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Главная несуразность данного вопроса заключается в том, что проблема, озвученная автором, касается только вывода данных.
Не структуры приложения, не потоков данных, а вывода. А вывод в веб-приложении все равно делается через шаблонизатор, логика которого не объектная. |
|||
|
||||
| bobik02 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 26.11.2007 Репутация: 2 Всего: 14 |
Советую вникать в ООП, постепенно (Купить книжек, читать статьи, учить, использовать и т.к. и т.п.), заметил такую осбоненость что многие книги пишут что такое полиморфизм,инкапсуляция, наследование и другие "забавные вещи", не объясняя почему эти возможности существуют. Я вообще это считаю(пока!) способом организации программы (сказанно на коленке
-------------------- Have a nice day |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |