Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задачки по проектированию, хочется порешать под руководством знаток 
:(
    Опции темы
0000
Дата 25.12.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



Цитата(ida @ 25.12.2007,  16:42)
Да-да, именно умозрительного
Т.е. ничего общего с практикой вообще не имеющего. Я видите ли очень хорошо себе представляю, что это такое - ежедневно сталкиваюсь по работе. От такого умозрительного анализа хочется взять толстую грязную палку и проложить вдоль спины программиста smile Сопровождая словами: "Нееечего выдумывать, нееечего... ТЗ дадено - по нему и пишем."

Простите, была напугана.

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

и во-вторых...ТЗ толком-то не дадено smile, дан именно набор требований...так что палки тут ни причем smile

вот вы так все говорите, сталкиваетесь, сталкиваетесь...а нас все никак не столкнете с этим..ну пример бы свой хоть дали...
PM MAIL ICQ   Вверх
baldina
Дата 25.12.2007, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: нет
Всего: 101



Цитата

Студент приходит на экзамен.


Хороший пример. Похоже на пример работы банкомата, который так любят американские афторы smile 
PM MAIL   Вверх
0000
Дата 25.12.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



Цитата(ida @ 25.12.2007,  16:42)
Могу предложить свою версию теста на объектное мышление (т.е. проверки, насколько у человека заточены мозги под ОО-проектирование и стоит ли ему вообще в это погружаться, т.е. будет ли от этого какая-то польза).

Студент приходит на экзамен.
Отдает зачетку преподавателю, тащит билет, готовится.
Выходит отвечать. Если преподавателю нравится ответ, он ставит оценку, отдает зачетку и студент уходит. Если ответа недостаточно, преподаватель задает дополнительные вопросы. Если студент не смог ответить на дополнительне вопросы, ему предлагают тянуть другой билет или прийти на пересдачу. Решает студент.

Нарисуйте:
1. Диаграмму классов для описанного примера
2. Алгоритм - диаграмму деятельности
3. Жизненный цикл зачетки - диаграмма состояний
4. Диаграмму последовательности, где объектами будут студент и преподаватель

А там поглядим...

ida, спасибо за примерчик  smile 
обязательно попробую, главное чтобы сессия не помешала smile
PM MAIL ICQ   Вверх
Platon
Дата 2.1.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



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

Вот мои наработки по задаче:

user posted image

user posted image

user posted image

user posted image
PM MAIL ICQ   Вверх
ida
Дата 9.1.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



Platon, с диаграммой деятельности я в целом согласна.
С остальными - нет.

Работа над ошибками.

1. Диаграмма последовательностей.

Постараюсь попозже нарисовать, а пока объясняю.
Итак, у нас есть два объекта - Преподаватель и Студент.
В хронологическом порядке сообщения, которыми они обмениваются, будут такими:
1.1. Преподаватель -> Студенту: Билет
Студент готовится (обработка)
1.2. Студент -> Преподавателю: Ответ
1.3. Преподаватель -> Студенту: Оценка
ВСЕ!

Это основной поток.
Если есть желание, можно нарисовать альтернативные, например:
1.3. Преподаватель -> Студенту: Дополнительный вопрос
1.4. Студент - > Преподавателю: Ответ на вопрос
1.5. Преподаватель -> Студенту: Оценка

Ветвления также можно изобразить на такой диаграмме, но я предпочитаю рисовать отдельные диаграммы на основной поток и альтернативные потоки.

2. Диаграмма классов.

Попутно будет ясно, почему Экзамен не является объектом.

Я согласна с классами:
Преподаватель, Студент, Зачетка, Билет, Предмет (хотя последние два для нашей задачи лишние)

Экзамен, ЭкзаменующийПреподаватель, ЭкзаменуемыйСтудент, СостояниенаЭкзамене и его потомки - это не классы, а состояния.

ОтветНаВопрос и ДопВопрос - это не классы, а сообщения.

Чтобы понять, почему, вспомним, что такое состояние.
Состояние - это набор значений атрибутов класса.

У нас есть классы Студент и Преподаватель. Если бы мы нарисовали жизненный цикл студента на экзамене, то выделили бы несколько его состояний: 
перед вытягиванием билета, 
после вытягивания билета до момента ответа, 
после ответа до получения оценки, 
после получения оценки и т.д.

Они не являются классами, т.к. сами по себе никакой смысловой нагрузки не несут. Иными словами, их можно использовать лишь применительно к классу Студент.

Хороший вопрос на стадии оптимизации диаграммы классов: "Где это используется?" Если вы обнаруживаете класс, который нигде не используется сам по себе - значит, он лишний. Т.е. это либо атрибут, либо состояние, либо сообщение.

Это сообщение отредактировал(а) ida - 9.1.2008, 09:37
PM WWW   Вверх
Platon
Дата 9.1.2008, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Здорово!!! А то я думал, мне уже никто не ответит!!!
PM MAIL ICQ   Вверх
0000
Дата 11.1.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



Всех с прошедшими праздниками и с приближающимся старым-новым годом!

покажу пока тока свою диаграмму классов по поводу студентов...
прошу простить меня - я обычно рисую карандашиком на бумажке...с visual paradigm первый раз работал..посему и долго разбирался..

ЗЫ. как вообще картинку нормально запостить, Platon, расскажи плз..



http://ipicture.ru/uploads/080111/6d6CCr55R4.jpg

ida, жду Ваших комментариев.
PM MAIL ICQ   Вверх
Platon
Дата 12.1.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Цитата(ida @  9.1.2008,  10:23 Найти цитируемый пост)
ЭкзаменующийПреподаватель, ЭкзаменуемыйСтудент

Ну, на самом деле, это лишь логическое разделение объекта студент, потому что к примеру у студента могут быть много таких подобъектов: СтудентНаКонтрольной, СтудентНаЛекции и прочее. Я полагаю, что все эти функции в одном объекте Студент поддерживать очень сложно,более того составные классы позволят работать над ними нескольким разработчикам, разве нет?

Цитата(ida @  9.1.2008,  10:23 Найти цитируемый пост)
Они не являются классами, т.к. сами по себе никакой смысловой нагрузки не несут.

как я вычитал из умной книжки, эта фишка называется делегированием, не понимаю почему они не являются классами?
В книге пример: class Window, в нем class Shape, и определены методы getArea() {return shape.getArea(); }, paing(Graphics g) { g.paintShape(shape); }

и тут также, к примеру, представьте студент в состоянии подготовки, и тут к нему запрос от препода отвечать объект подготовки на этот запрос выкинет преподу исключение: "не правильное состояние, я еще не готов!" вот и всё.
Так что я бы тут поапеллировал.

Цитата(ida @  9.1.2008,  10:23 Найти цитируемый пост)
ОтветНаВопрос и ДопВопрос - это не классы, а сообщения.

ну, на самом деле они весьма хлипкие для классов, но как сообщения, я что-то не пойму как это?

Добавлено через 2 минуты и 40 секунд
0000, нажимаю на pic на панели инструментов.
PM MAIL ICQ   Вверх
ida
Дата 12.1.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



Цитата(Platon @ 12.1.2008,  12:49)
Ну, на самом деле, это лишь логическое разделение объекта студент, потому что к примеру у студента могут быть много таких подобъектов

И в этом ваша концептуальная ошибка.

Путать классы с состояниями - ошибка грубейшая. Она проходит с опытом.

Вторая ошибка - скакать от реализации. Ее допускают разработчики.
Нас с вами сейчас не волнует, какими программными классами вы опишете модель предметной области - мы с вами модель еще толком не построили. Что вы уже собрались программировать?... Вот и получаются кривые-косые-корявые-горбатые компоненты, непригодные не то что для повторного применения, а вообще мало к чему пригодные.

Почитайте книжку "UML 2.0", авторы - Рамбо и Блаха. Там очень хорошо и подробно расписаны моделирование и предметной области, и приложения.

Это сообщение отредактировал(а) ida - 12.1.2008, 18:42
PM WWW   Вверх
Platon
Дата 12.1.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Цитата(ida @  12.1.2008,  19:36 Найти цитируемый пост)
Она проходит с опытом.

Дай Бог.

Цитата(ida @  12.1.2008,  19:36 Найти цитируемый пост)
Вторая ошибка - скакать от реализации.

А как же не скакать? Всё равно же, надо думать о том как это будет реализовано... Чем меньше детализация, тем больше воли программисту.


Цитата(ida @  12.1.2008,  19:36 Найти цитируемый пост)
Почитайте книжку "UML 2.0", авторы - Рамбо и Блаха.

спасибо за индивидуальную рекомендацию! Я видимо, привык сначала попробовать, потом мне скажут, что я делаю всё не правильно, и только потом с поубавленным пылом сажусь за книжки ^_^
PM MAIL ICQ   Вверх
Platon
Дата 13.1.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Цитата(ida @  12.1.2008,  19:36 Найти цитируемый пост)
Почитайте книжку "UML 2.0", авторы - Рамбо и Блаха.

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

Добавлено через 1 минуту и 31 секунду
или хотя бы написать фамилии на буржуйском.
PM MAIL ICQ   Вверх
ida
Дата 13.1.2008, 19:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



Platon, книжку я покупала на Озоне. Выглядит она вот так.

Насчет свободного доступа - честно говоря, не искала.

А по поводу опыта - когда нам в Политехе преподавали ООП, слушала как совершенную дичь. Сравнительно недавно поняла, почему. Потому что скакали от реализаци. Нас учили, как программировать. А надо было учить - как понять задачу. И только потом - программировать (что в этом случае будет происходить гораздо быстрее). Собственно, время, затраченное на составление грамотной модели - это время, которое вам потом не надо будет тратить на написание кода, т.к. вы найдете оптимальное решение. И свои 10 классов сведете к 2-3. Но это надо сначала увидеть. Хотя бы на бумаге.

Это сообщение отредактировал(а) ida - 14.1.2008, 10:59
PM WWW   Вверх
Platon
Дата 14.1.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: нет
Всего: 40



Цитата(ida @  13.1.2008,  20:34 Найти цитируемый пост)
И свои 10 классов сведете к 2-3. Но это надо сначала увидеть. Хотя бы на бумаге. 

Не поверите, но я вам верю ^_^ 
Более того, такой опыт уже получил совсем недавно. Правда, об идеальном UML говорить не пришлось, но людям на удаленном компьютере стала ясна моя мысль, пошли советы, пошла реконструкция, в итоге не написав ни одной строчки кода, были выявлены неправильности и уязвимости системы, также была проведена оптимизация, как вы заметили, уменьшилось число классов. В итоге, получилось уже что-то хорошее ^_^
PM MAIL ICQ   Вверх
ida
Дата 14.1.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



0000, а что вы скажете по поводу такой модели:

1. Класс Преподаватель
Методы:
Слушать_ответ()
Задавать_вопрос()
Ставить_оценку()

2. Класс Студент
Методы:
Тянуть_билет()
Отвечать()

Что интересно: вы оба поместили на диаграмму классов Предмет - хотя его не было в описании задачи (!!!). Это пример того, как работают стереотипы у нас в голове. Для нас ведь совершенно не важно, по какому предмету сдается экзамен. Это лежит за рамками задачи. Вот если бы пример был из области, которая вам совершенно незнакома, лишних классов на диаграмме бы не появилось - вы бы просто не знали об их существовании.
PM WWW   Вверх
0000
Дата 14.1.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: нет
Всего: 5



Цитата(ida @ 14.1.2008,  11:07)
0000, а что вы скажете по поводу такой модели:

1. Класс Преподаватель
Методы:
Слушать_ответ()
Задавать_вопрос()
Ставить_оценку()

2. Класс Студент
Методы:
Тянуть_билет()
Отвечать()

Что интересно: вы оба поместили на диаграмму классов Предмет - хотя его не было в описании задачи (!!!). Это пример того, как работают стереотипы у нас в голове. Для нас ведь совершенно не важно, по какому предмету сдается экзамен. Это лежит за рамками задачи. Вот если бы пример был из области, которая вам совершенно незнакома, лишних классов на диаграмме бы не появилось - вы бы просто не знали об их существовании.

эээ..у меня в диаграмме нет предмета...

по поводу модели...я понял,  что немного ее нагромоздил может и действительно пока не могу начать проектирование, не задумываясь о реализации...попробовал это сделать - получилось где-то такое же, что Вы предложили..но
классы ответа и вопроса все равно вынесены..
Вообще-то нечто подобное я и представил в диаграмме..но все-таки нагромоздил....
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Системный анализ, проектирование и UML"
Се ля ви

Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем:

• предпроектные обследования объектов автоматизации;

• разработка концепции создания систем;

• моделирование бизнес-процессов (в т.ч. на UML);

• проектирование архитектуры систем;

• управление проектами;

• управление качеством;

• CASE-средства;

• реинжиниринг.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.