Как стать автором
Обновить

Комментарии 46

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Не-не-не, может в других языках и методы, а в UML именно операции(operation). Так что всё верно.
НЛО прилетело и опубликовало эту надпись здесь
Ок. Если хочется доказательств, пожалуйста.

Вот страница спецификации UML: www.omg.org/technology/documents/formal/uml.htm
В спецификации смотрим пункт 7.3 (Class Descriptions), а точнее, пункт 7.3.36 (Operation).

Так что формально никаких «функций» и «методов» нету в UML, нету!

«Методы» класса, например, C# в терминах UML — «операции».
НЛО прилетело и опубликовало эту надпись здесь
>Это придирки из области используемого лексикона.
А ваши придирки не оттуда были?

>у класса нет операций, у него — методы.

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

А человек пишет про UML, а не про что-нибудь ещё. Извольте формально соблюдать нотацию.

Строго говоря, там нужно было писать, что просто операция — это операция экземпляра классификатора, а подчёркнутая — операция самого классификатора. Реализацией операций классификатора в языках программирования являются статические методы класса.

Было бы формально верно.

НЛО прилетело и опубликовало эту надпись здесь
peace =)
а в русском языке нет слова «нету», нет!
Спасибо!
Хотелось бы ещё почитать про временные диаграммы и диаграммы активности.
Вы про Sequence Diagrams? Если не боитесь английского, можете прочитать www.ibm.com/developerworks/rational/library/3101.html — лучшая статься из всех, что видел.
Прочитайте то, что вы написали — куча ошибок.
Я, конечно, понимаю, что за этот коммент мне присунут в карму все, кому не лень, включая автора, ибо так на хабре заведено, но все таки перепечатывать Гради Буча и википедию с ошибками (я не считаю орфографические ошибки и полное отсутствие запятых, только фактические) — это совсем не айс. Данные-то сильно вторичные, хотя на хабре их еще, возможно, и не было. Хотелось бы, конечно, какого-то личного опыта использования той или иной связи в тех или иных ситуациях, тонких моментов, плюсов-минусов и подводных камней :)
Ассоциация, кстати говоря, это отношение между экземплярами, то есть между двумя объектами, а не классами.
А самый клевый редактор из всех, что я видел — это Sparx EA (http://www.sparxsystems.com.au/). Правда, он сильно платный. Еще вот пользовал Visual Paradigm, рядом со спарксом не валялся, но зато есть бесплатная версия.
С использованием — это будут уже Гамма и Ко :)
нет не присунут =)
лично я поставил вам плюс в карму

ну я думаю что это не было просто перепечатывание Гради Буча — в этом случае я бы не делал фактических ошибок верно?

все довольно просто — мне хочется выучить UML, я сел и начал искать по нему информацию в интернете, на русском дохотчевой документации не нашел, стал искать на зарубежных источниках

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

если вы нашли какие либо замечания или не дочеты в моей статье — буду только рад ;)
Поспорим, если бы Вы захотели, то нашли бы много учебников по русскому языку на русском языке? Я ещё молчу, когда люди совершают ошибки по невнимательности, но когда от них зависит понимание текста — это очень плохо.
спорте =)
ошибки в студию
спорьте?
«натация»
Ну самая очевидная — это путаница в связях. Все виды ассоциации, а так же композиция и агрегация обозначают связь между экземплярами классов, генерализация и реализация между классами, а зависимость между любыми двумя структурами (в том числе и пакетами). Помимо метафизического смысла, есть и значительное практическое различие. Например, в С++ для использования ассоциации (допустим, в объекта класса A есть ссылка на объект класса B) при объявлении интерфейса класса A достаточно иметь форвард декларейшн класса B, а при использовании, допустим, отношения генерализации (наследования) нужно обязательно иметь определенный интерфейс класса B.
Про агрегацию я как-то неочень понял. Я не утверждаю, что описание ошибочное, но для меня лично неочевидное. Самый очевидный пример агрегации — это классы контейнеры или коллекции.
Где-то потерялась realization, а о такой связи как inheritance (если это не синоним generalization) я не слышал. :)
Мне кажется учить UML надо на практике, т. к. инструментов полно, а вот развивать мышление и отрабатывать навыки надо в реальных ситуациях. Я тоже хочу выучить UML, единственный более менее толковый русскоязычный ресурс: www.uml2.ru, ну и intuit.ru само собой
Поделитесь ссылками пожалуйста, кто сколько сможет.
Спасибо за статью, жду переводных статей и изложения опыта.
Берём справочник по UML авторства Г. Буча сотоварищи, открываем на 182 странице и читаем «Ассоциация — это отношение между двумя классификаторами, описывающее связь между их экземплярами». Так вот, отношение всё-таки между классами, но показывает связь между объектами. Как иначе с помощью ассоциации показать поле класса?

Кстати, интересно, а Sparx EA умеет генерить локальный веб-сайт с диаграммами, как парадигм? И он из командной строки автоматизируется?
спасибо исправил
Дело в том, что на диаграмме классов объектов нет, только классы, но связь ассоциации обозначает именно связь между экземплярами классов, то есть объектами.
HTML-репорты он генерит, а так же экспортирует в RTF и копипаст вставляет в ворд, компас и т. д. векторную метакартинку, а не растр (по крайней мере бесплатная версия парадигма вставляла у меня растр, что достаточно сильно угнетало). На счет управления из командной строки — не знаю.
И да — я немного некорректно написал. Сказанное о VP характеризует только бесплатную версию. )
Заниметльно! :) Вот только бы еще примеры на чем-нибудь, типа шарпа-явы-плюсов-смолтолка, а то эти безликие «private $var» прям таки коробят в контексте классики ООП и UML. Это мое личное пожелание, конечно же.
А по-моему отличные примеры. Примеров на других языках и так полно, да и тема в веб-разработке
Извините, я что-то недопонял? шарп-яву мы в веб-разработку не помещаем уже? ;) Или:

private $var;
function get() { return $var; }

намного понятнее, чем

private ShoppingCart cart;
public ShoppingCart get() { return cart; }

да?

Молва всего лишь о понятности и ясности примеров в контексте понимания ООП и UML.
А судя по тенденциям в отечественном веб-программировании, так на пхп прям свет клином сошелся. ОСи еще не пишут на нем, случаем? :)
Извините еще раз.
давайте я внису ясность в этот вопрос

примеры на php потому что основной язык, на котором пишет автор, это php.

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

ничего не имею против С#, Java и тп, если сильно нужно — можно попробывать портировать код на другие языки, но с учетом сложности кода — я думаю тут все должно быть все понятно
а где вы увидели private $var; ?:) я вижу только private $_cart;
Я просто не понимаю какая разница на каком языке. Пусть это будет псевдокод — всеравно такие примеры легко понимаются.

Ладно, все это оффтоп. Статья неплохая, но имхо тема слишком большая для статьи. Книгу придется какую-нибудь всеравно читать, в которой то же самое будет повторено…
По-моему примеры приведены не очень удачно. От однообразия приведенных примеров может возникнуть путаница в понимании. Лучше бы для каждого вида ассоциаций привели разные примеры, приближенные к конкретной практике использования данной ассоциации. И усваивается проще, и приходит понимание практического использования.
а мне кажется как раз наоборот — приведенные примеры как раз дают понять в чем конкретно разница
Чё-то тут всё как-то по-другому.

Я сейчас работаю с диаграммами классов и там, например, отношения по-другому выставляются (если одному клиенту соответствует несколько корзинок, то у корзинки, а не у клиента ставится "*"), связи другой смысл имеют (генерализация — это наследование одним объектом атрибутов другого, а агрегация — указание на то, что один класс принадлежит другому)… Я пользуюсь UML 2. А вы тут о какой версии писали? Может в разных версия всё по-разному? Странно…

Откуда вы взяли информацию для статьи? Источники не могли бы привести?
А вообще статья написана так, как будто её писал человек, плохо владеющий русским языком (либо над ней работал Промт, а не человек)…
Например:
Думаю этот пример Uni-directional должен быть вам знакомым

дайте рассмотрим сам код"
Эх, смешанное чувство испытываю. С одной стороны — это хорошо, что такие заметки появляются на Хабре. С другой…

Кашмарное количество синтаксических ошибок и описок. Это раз. Ну и два — есть серьёзные логические ошибки. Автор просто не до конца разобрался с понятиями. К сожалению, новичкам ни в коем случае не рекомендую использовать статью как учебную.

>>… струкрур
>>… не вдаеться
>>… отношейний
>>… струкрут
>>… виденье
>>… Агренирование
>>… наследуеться
>>… У машины есть колоса


Про агрегирование и обобщение уже люди выше сказали

спасибо за статью, толчок для дальнейшего изучения UML
За каким х. это здесь?

Проще киньте ссылку на доки к UML-проге, которые Вы здесь выдаете за авторский текст.

Причем малоинтересный!
НЛО прилетело и опубликовало эту надпись здесь
+1, перепись книги, причем неудачная.
Автор проявляет большое неуважение к читателям, не исправляя многочисленные ошибки в тексте, даже после того, как ему об этом в лоб намекнули. Что за джамшутство?!
НЛО прилетело и опубликовало эту надпись здесь
Диаграммы классов — это не небольшой, а важнейший раздел UML. И поэтому объяснять его надо очень аккуратно и качественно, ибо именно в нём закладываются и объясняются базовые понятия, используемые далее в UML.

Наиболее полным руководством является UML Reference Manual, однако «продраться» через него чрезвычайно сложно, особенно через русский «перевод». И хороших вводных статей действительно не хватает, и данная статья количество хороших, к сожалению, не увеличивает.

В хорошей обзорной статье нужно как минимум две точки зрения изложить: «теоретическую» (от авторов) и «практическую» (Фаулера, например). И совсем хорошо было бы использовать не завязшие у всех в мозгах каталожные примеры (юзер-аккаунт-customer-shop), а что-нибудь «ортогональное», поскольку почитать про покупателей-в-магазине можно в любой книге по UML, а в реальной жизни не только они встречаются.
Перезалейте, пожалуйста, картинки!
отличная статья, но всё же, перезалейте картинки
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории