Комментарии 46
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Не-не-не, может в других языках и методы, а в UML именно операции(operation). Так что всё верно.
0
НЛО прилетело и опубликовало эту надпись здесь
Ок. Если хочется доказательств, пожалуйста.
Вот страница спецификации UML: www.omg.org/technology/documents/formal/uml.htm
В спецификации смотрим пункт 7.3 (Class Descriptions), а точнее, пункт 7.3.36 (Operation).
Так что формально никаких «функций» и «методов» нету в UML, нету!
«Методы» класса, например, C# в терминах UML — «операции».
Вот страница спецификации UML: www.omg.org/technology/documents/formal/uml.htm
В спецификации смотрим пункт 7.3 (Class Descriptions), а точнее, пункт 7.3.36 (Operation).
Так что формально никаких «функций» и «методов» нету в UML, нету!
«Методы» класса, например, C# в терминах UML — «операции».
+1
НЛО прилетело и опубликовало эту надпись здесь
>Это придирки из области используемого лексикона.
А ваши придирки не оттуда были?
>у класса нет операций, у него — методы.
хотите поспорить. буду спорить. кто сказал, что у класса есть методы?
я говорю — у класса нет методов. у него есть поведение.
А человек пишет про UML, а не про что-нибудь ещё. Извольте формально соблюдать нотацию.
Строго говоря, там нужно было писать, что просто операция — это операция экземпляра классификатора, а подчёркнутая — операция самого классификатора. Реализацией операций классификатора в языках программирования являются статические методы класса.
Было бы формально верно.
А ваши придирки не оттуда были?
>у класса нет операций, у него — методы.
хотите поспорить. буду спорить. кто сказал, что у класса есть методы?
я говорю — у класса нет методов. у него есть поведение.
А человек пишет про UML, а не про что-нибудь ещё. Извольте формально соблюдать нотацию.
Строго говоря, там нужно было писать, что просто операция — это операция экземпляра классификатора, а подчёркнутая — операция самого классификатора. Реализацией операций классификатора в языках программирования являются статические методы класса.
Было бы формально верно.
+1
а в русском языке нет слова «нету», нет!
0
Спасибо!
Хотелось бы ещё почитать про временные диаграммы и диаграммы активности.
Хотелось бы ещё почитать про временные диаграммы и диаграммы активности.
+1
Вы про Sequence Diagrams? Если не боитесь английского, можете прочитать www.ibm.com/developerworks/rational/library/3101.html — лучшая статься из всех, что видел.
0
Прочитайте то, что вы написали — куча ошибок.
+4
Я, конечно, понимаю, что за этот коммент мне присунут в карму все, кому не лень, включая автора, ибо так на хабре заведено, но все таки перепечатывать Гради Буча и википедию с ошибками (я не считаю орфографические ошибки и полное отсутствие запятых, только фактические) — это совсем не айс. Данные-то сильно вторичные, хотя на хабре их еще, возможно, и не было. Хотелось бы, конечно, какого-то личного опыта использования той или иной связи в тех или иных ситуациях, тонких моментов, плюсов-минусов и подводных камней :)
Ассоциация, кстати говоря, это отношение между экземплярами, то есть между двумя объектами, а не классами.
А самый клевый редактор из всех, что я видел — это Sparx EA (http://www.sparxsystems.com.au/). Правда, он сильно платный. Еще вот пользовал Visual Paradigm, рядом со спарксом не валялся, но зато есть бесплатная версия.
Ассоциация, кстати говоря, это отношение между экземплярами, то есть между двумя объектами, а не классами.
А самый клевый редактор из всех, что я видел — это Sparx EA (http://www.sparxsystems.com.au/). Правда, он сильно платный. Еще вот пользовал Visual Paradigm, рядом со спарксом не валялся, но зато есть бесплатная версия.
+19
С использованием — это будут уже Гамма и Ко :)
0
нет не присунут =)
лично я поставил вам плюс в карму
ну я думаю что это не было просто перепечатывание Гради Буча — в этом случае я бы не делал фактических ошибок верно?
все довольно просто — мне хочется выучить UML, я сел и начал искать по нему информацию в интернете, на русском дохотчевой документации не нашел, стал искать на зарубежных источниках
в последствии решил за основу взять некоторые статьи и написать уже на русском то что я для себя вынес
если вы нашли какие либо замечания или не дочеты в моей статье — буду только рад ;)
лично я поставил вам плюс в карму
ну я думаю что это не было просто перепечатывание Гради Буча — в этом случае я бы не делал фактических ошибок верно?
все довольно просто — мне хочется выучить UML, я сел и начал искать по нему информацию в интернете, на русском дохотчевой документации не нашел, стал искать на зарубежных источниках
в последствии решил за основу взять некоторые статьи и написать уже на русском то что я для себя вынес
если вы нашли какие либо замечания или не дочеты в моей статье — буду только рад ;)
-1
Поспорим, если бы Вы захотели, то нашли бы много учебников по русскому языку на русском языке? Я ещё молчу, когда люди совершают ошибки по невнимательности, но когда от них зависит понимание текста — это очень плохо.
0
Ну самая очевидная — это путаница в связях. Все виды ассоциации, а так же композиция и агрегация обозначают связь между экземплярами классов, генерализация и реализация между классами, а зависимость между любыми двумя структурами (в том числе и пакетами). Помимо метафизического смысла, есть и значительное практическое различие. Например, в С++ для использования ассоциации (допустим, в объекта класса A есть ссылка на объект класса B) при объявлении интерфейса класса A достаточно иметь форвард декларейшн класса B, а при использовании, допустим, отношения генерализации (наследования) нужно обязательно иметь определенный интерфейс класса B.
Про агрегацию я как-то неочень понял. Я не утверждаю, что описание ошибочное, но для меня лично неочевидное. Самый очевидный пример агрегации — это классы контейнеры или коллекции.
Где-то потерялась realization, а о такой связи как inheritance (если это не синоним generalization) я не слышал. :)
Про агрегацию я как-то неочень понял. Я не утверждаю, что описание ошибочное, но для меня лично неочевидное. Самый очевидный пример агрегации — это классы контейнеры или коллекции.
Где-то потерялась realization, а о такой связи как inheritance (если это не синоним generalization) я не слышал. :)
0
Мне кажется учить UML надо на практике, т. к. инструментов полно, а вот развивать мышление и отрабатывать навыки надо в реальных ситуациях. Я тоже хочу выучить UML, единственный более менее толковый русскоязычный ресурс: www.uml2.ru, ну и intuit.ru само собой
Поделитесь ссылками пожалуйста, кто сколько сможет.
Спасибо за статью, жду переводных статей и изложения опыта.
Поделитесь ссылками пожалуйста, кто сколько сможет.
Спасибо за статью, жду переводных статей и изложения опыта.
0
Берём справочник по UML авторства Г. Буча сотоварищи, открываем на 182 странице и читаем «Ассоциация — это отношение между двумя классификаторами, описывающее связь между их экземплярами». Так вот, отношение всё-таки между классами, но показывает связь между объектами. Как иначе с помощью ассоциации показать поле класса?
Кстати, интересно, а Sparx EA умеет генерить локальный веб-сайт с диаграммами, как парадигм? И он из командной строки автоматизируется?
Кстати, интересно, а Sparx EA умеет генерить локальный веб-сайт с диаграммами, как парадигм? И он из командной строки автоматизируется?
0
спасибо исправил
0
Дело в том, что на диаграмме классов объектов нет, только классы, но связь ассоциации обозначает именно связь между экземплярами классов, то есть объектами.
HTML-репорты он генерит, а так же экспортирует в RTF и копипаст вставляет в ворд, компас и т. д. векторную метакартинку, а не растр (по крайней мере бесплатная версия парадигма вставляла у меня растр, что достаточно сильно угнетало). На счет управления из командной строки — не знаю.
И да — я немного некорректно написал. Сказанное о VP характеризует только бесплатную версию. )
HTML-репорты он генерит, а так же экспортирует в RTF и копипаст вставляет в ворд, компас и т. д. векторную метакартинку, а не растр (по крайней мере бесплатная версия парадигма вставляла у меня растр, что достаточно сильно угнетало). На счет управления из командной строки — не знаю.
И да — я немного некорректно написал. Сказанное о VP характеризует только бесплатную версию. )
0
Заниметльно! :) Вот только бы еще примеры на чем-нибудь, типа шарпа-явы-плюсов-смолтолка, а то эти безликие «private $var» прям таки коробят в контексте классики ООП и UML. Это мое личное пожелание, конечно же.
0
А по-моему отличные примеры. Примеров на других языках и так полно, да и тема в веб-разработке
0
Извините, я что-то недопонял? шарп-яву мы в веб-разработку не помещаем уже? ;) Или:
private $var;
function get() { return $var; }
намного понятнее, чем
private ShoppingCart cart;
public ShoppingCart get() { return cart; }
да?
Молва всего лишь о понятности и ясности примеров в контексте понимания ООП и UML.
А судя по тенденциям в отечественном веб-программировании, так на пхп прям свет клином сошелся. ОСи еще не пишут на нем, случаем? :)
Извините еще раз.
private $var;
function get() { return $var; }
намного понятнее, чем
private ShoppingCart cart;
public ShoppingCart get() { return cart; }
да?
Молва всего лишь о понятности и ясности примеров в контексте понимания ООП и UML.
А судя по тенденциям в отечественном веб-программировании, так на пхп прям свет клином сошелся. ОСи еще не пишут на нем, случаем? :)
Извините еще раз.
0
давайте я внису ясность в этот вопрос
примеры на php потому что основной язык, на котором пишет автор, это php.
можно привести примеры и на других языках, но как говорят лучший язык тот на котором написан твой последний проект.
ничего не имею против С#, Java и тп, если сильно нужно — можно попробывать портировать код на другие языки, но с учетом сложности кода — я думаю тут все должно быть все понятно
примеры на php потому что основной язык, на котором пишет автор, это php.
можно привести примеры и на других языках, но как говорят лучший язык тот на котором написан твой последний проект.
ничего не имею против С#, Java и тп, если сильно нужно — можно попробывать портировать код на другие языки, но с учетом сложности кода — я думаю тут все должно быть все понятно
-1
а где вы увидели private $var; ?:) я вижу только private $_cart;
Я просто не понимаю какая разница на каком языке. Пусть это будет псевдокод — всеравно такие примеры легко понимаются.
Ладно, все это оффтоп. Статья неплохая, но имхо тема слишком большая для статьи. Книгу придется какую-нибудь всеравно читать, в которой то же самое будет повторено…
Я просто не понимаю какая разница на каком языке. Пусть это будет псевдокод — всеравно такие примеры легко понимаются.
Ладно, все это оффтоп. Статья неплохая, но имхо тема слишком большая для статьи. Книгу придется какую-нибудь всеравно читать, в которой то же самое будет повторено…
0
По-моему примеры приведены не очень удачно. От однообразия приведенных примеров может возникнуть путаница в понимании. Лучше бы для каждого вида ассоциаций привели разные примеры, приближенные к конкретной практике использования данной ассоциации. И усваивается проще, и приходит понимание практического использования.
+1
Чё-то тут всё как-то по-другому.
Я сейчас работаю с диаграммами классов и там, например, отношения по-другому выставляются (если одному клиенту соответствует несколько корзинок, то у корзинки, а не у клиента ставится "*"), связи другой смысл имеют (генерализация — это наследование одним объектом атрибутов другого, а агрегация — указание на то, что один класс принадлежит другому)… Я пользуюсь UML 2. А вы тут о какой версии писали? Может в разных версия всё по-разному? Странно…
Откуда вы взяли информацию для статьи? Источники не могли бы привести?
Я сейчас работаю с диаграммами классов и там, например, отношения по-другому выставляются (если одному клиенту соответствует несколько корзинок, то у корзинки, а не у клиента ставится "*"), связи другой смысл имеют (генерализация — это наследование одним объектом атрибутов другого, а агрегация — указание на то, что один класс принадлежит другому)… Я пользуюсь UML 2. А вы тут о какой версии писали? Может в разных версия всё по-разному? Странно…
Откуда вы взяли информацию для статьи? Источники не могли бы привести?
+1
А вообще статья написана так, как будто её писал человек, плохо владеющий русским языком (либо над ней работал Промт, а не человек)…
Например:
Например:
Думаю этот пример Uni-directional должен быть вам знакомым
дайте рассмотрим сам код"
+1
Эх, смешанное чувство испытываю. С одной стороны — это хорошо, что такие заметки появляются на Хабре. С другой…
Кашмарное количество синтаксических ошибок и описок. Это раз. Ну и два — есть серьёзные логические ошибки. Автор просто не до конца разобрался с понятиями. К сожалению, новичкам ни в коем случае не рекомендую использовать статью как учебную.
>>… струкрур
>>… не вдаеться
>>… отношейний
>>… струкрут
>>… виденье
>>… Агренирование
>>… наследуеться
>>… У машины есть колоса
…
Про агрегирование и обобщение уже люди выше сказали
Кашмарное количество синтаксических ошибок и описок. Это раз. Ну и два — есть серьёзные логические ошибки. Автор просто не до конца разобрался с понятиями. К сожалению, новичкам ни в коем случае не рекомендую использовать статью как учебную.
>>… струкрур
>>… не вдаеться
>>… отношейний
>>… струкрут
>>… виденье
>>… Агренирование
>>… наследуеться
>>… У машины есть колоса
…
Про агрегирование и обобщение уже люди выше сказали
+3
спасибо за статью, толчок для дальнейшего изучения UML
+1
За каким х. это здесь?
Проще киньте ссылку на доки к UML-проге, которые Вы здесь выдаете за авторский текст.
Причем малоинтересный!
Проще киньте ссылку на доки к UML-проге, которые Вы здесь выдаете за авторский текст.
Причем малоинтересный!
0
НЛО прилетело и опубликовало эту надпись здесь
+1, перепись книги, причем неудачная.
0
Автор проявляет большое неуважение к читателям, не исправляя многочисленные ошибки в тексте, даже после того, как ему об этом в лоб намекнули. Что за джамшутство?!
0
НЛО прилетело и опубликовало эту надпись здесь
Диаграммы классов — это не небольшой, а важнейший раздел UML. И поэтому объяснять его надо очень аккуратно и качественно, ибо именно в нём закладываются и объясняются базовые понятия, используемые далее в UML.
Наиболее полным руководством является UML Reference Manual, однако «продраться» через него чрезвычайно сложно, особенно через русский «перевод». И хороших вводных статей действительно не хватает, и данная статья количество хороших, к сожалению, не увеличивает.
В хорошей обзорной статье нужно как минимум две точки зрения изложить: «теоретическую» (от авторов) и «практическую» (Фаулера, например). И совсем хорошо было бы использовать не завязшие у всех в мозгах каталожные примеры (юзер-аккаунт-customer-shop), а что-нибудь «ортогональное», поскольку почитать про покупателей-в-магазине можно в любой книге по UML, а в реальной жизни не только они встречаются.
Наиболее полным руководством является UML Reference Manual, однако «продраться» через него чрезвычайно сложно, особенно через русский «перевод». И хороших вводных статей действительно не хватает, и данная статья количество хороших, к сожалению, не увеличивает.
В хорошей обзорной статье нужно как минимум две точки зрения изложить: «теоретическую» (от авторов) и «практическую» (Фаулера, например). И совсем хорошо было бы использовать не завязшие у всех в мозгах каталожные примеры (юзер-аккаунт-customer-shop), а что-нибудь «ортогональное», поскольку почитать про покупателей-в-магазине можно в любой книге по UML, а в реальной жизни не только они встречаются.
0
0
Перезалейте, пожалуйста, картинки!
0
Поддерживаю, перезалейте картинки на хабрасторэдж ;)
0
отличная статья, но всё же, перезалейте картинки
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
UML, Классы и Отношения