Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПрИС / Бабич UML первое знакомство

.pdf
Скачиваний:
99
Добавлен:
05.02.2016
Размер:
11.15 Mб
Скачать

Лекциfl 3

Д臄 ‡мм‡ кл‡ссо‚: к упным пл‡ном

озн‡ч‡ет, что кл‡сс это„о объект‡ е‡лизует ‚се опе ‡ции этих инте фейсо‚. К ‰‡нному моменту ‚ „оло‚е чит‡телfl может соз еть ‚оп ос: ÇМы же, ‚ о‰е бы, „о‚о или о кл‡сс‡х и объект‡х, ‡ тепе ь ‚‰ у„ пе ешли н‡ инте - фейсы. Д‡ и ‚ообще, используютсfl ли они ‚ п ‡ктике п о„ ‡мми ниfl или fl‚лflютсfl п осто изflщной тео етической конст укцией?È. От‚ет н‡ этот ‚оп ос п ост: мно„ие из сущест‚ующих техноло„ий п о„ ‡мми - ниfl (н‡п име , COM, CORBA, Java Beans) не только ‡кти‚но используют мех‡низм инте фейсо‚, но и, по сути, полностью оснны н‡ нем.

Рис. 3.3

Что ж, 퇂е ное, п ишло ‚ емfl по„о‚о ить о том, к‡к инте фейс изоб ‡ж‡етсfl н‡ ‰и‡„ ‡мм‡х. Изоб ‡ж‡тьсfl он может несколькими способ‡ми. Пе ‚ый и с‡мый п остой из них Ñ это кл‡сс со сте еотипом

<<interface>> ( ис. 3.3):

Рис. 3.4

Этот способ хо ош, если нужно пок‡з‡ть, к‡кие именно опе ‡ции п е‰ост‡‚лflет инте фейс. Если же т‡кие по‰ обности ‚ ‰‡нный момент не ‚‡жны, п е‰ост‡‚лflемый инте фейс изоб ‡ж‡ют ‚ ‚и‰е к ужочк‡ или,

к‡к „о‚о flт, Çле‰енц‡È (lollipop) ( ис. 3.4):

Об ‡тите ‚ним‡ние н‡ м‡ленький зн‡чок н‡ з‡к뇉ке п‡пки ConduitSet. Это обозн‡чение по‰системы, мы мо„ли бы не исть е„о, ‡ п осто использть сте еотип <<subsystem>>. Вп очем, об этом мы еще по„о‚о им.

Рис. 3.5

И н‡конец, еще о‰ин способ изоб ‡жениfl инте фейс‡. Он не fl‚лflетсfl ‡льте н‡ти‚ой опис‡нным ‡нее способ‡м, ‡ используетсfl ‰лfl изоб-

61

Ку с

UML: Пе ‚ое зн‡комст‚о

‡жениfl инте фейсо‚, т ебующихсfl объекту ‰лfl ‚ыполнениfl е„о ‡боты. Обозн‡ч‡етсfl он очень п остым и ло„ичным сим‚олом. Вп очем, су‰ите

Рис. 3.6

с‡ми ( ис. 3.5):

Н‡блю‰‡тельный чит‡тель уже, 퇂е ное, з‡метил, к‡к ло„ически со‚мещ‡ютсfl сим‚олы п е‰ост‡‚лflемо„о и т ебуемо„о инте фейсо‚. Дейст‚ительно, н‡ ‰и‡„ ‡мм‡х ‰о‚ольно ч‡сто можно у‚и‰еть т‡кую к‡ - тинку ( ис. 3.6):

Д‡, кст‡ти, ‚ы з‡метили, что н‡з‚‡ниfl инте фейсо‚ н‡чин‡ютсfl с бук‚ы I? Эт‡ т ‡‰ициfl пошл‡ из flзык‡ Java, и, к‡к пок‡зы‚‡ет п ‡ктик‡, он‡ ‚есьм‡ обле„ч‡ет жизнь, если нужно, н‡п име , быст о ‡зоб ‡тьсfl ‚ сложной ‰и‡„ ‡мме, сост‡‚ленной ‰ у„им чело‚еком.

Вс儉‡ ли нужно со片‚‡ть но‚ые кл‡ссы?

Н‡чнем с ‚оп ос‡, к‡з‡лось бы, не имеюще„о ник‡ко„о отношениfl к‡ссм‡т 肇емому ‚оп осу, ‡ именно Ñ ‚с儉‡ ли нужно со片‚‡ть но‚ый кл‡сс ‰лfl к‡ж‰ой но‚ой 燉‡чи? П ‡‚ильный от‚ет, конечно же, ÇнетÈ. Это было бы ст ‡нно и неэффекти‚но. ÇФишк‡È состоит ‚ том, что мы можем использть уже сущест‚ующие кл‡ссы, ‡‰‡пти уfl их функцион‡льность ‰лfl ‚ыполнениfl но‚ых 燉‡ч. Т‡ким об ‡зом поfl‚лflетсfl ‚озможность не со片‚‡ть систему кл‡ссо‚ с нулfl, ‡ 燉ейст‚ть уже имеющиесfl ешениfl, кото ые были со片ны ‡нее, п и ‡боте 퇉 п е‰ы‰ущими п оект‡- ми. Вп очем, н‡ше ‚ыск‡зы‚‡ние о ст ‡нности и неэффекти‚ности со片- ниfl но‚ых кл‡ссо‚ не fl‚лflетсfl истиной ‚ после‰ней инст‡нции. Мо„ут быть ситу‡ции, к‡ сущест‚ующие кл‡ссы по к‡ким-либо п ичин‡м не уст ‡и‚‡ют ‡ хитекто ‡, и т‡ т ебуетсfl со片ть но‚ый кл‡сс. Сле‰ует, о‰н‡ко, изб儇ть ситу‡ций, к‡ со片нный кл‡сс (‡ точнее, е„о н‡бо опе-‡ций и ‡т ибуто‚) п ‡ктически по‚то flет сущест‚ующий, лишь незн‡чительно отлич‡flсь от не„о. Все-т‡ки лучше не изоб ет‡ть ‚елосипе‰ и ст‡-‡тьсfl со片‚‡ть кл‡ссы н‡ осно‚е уже сущест‚ующих, и только если по‰-

Рис. 3.7

62

Лекциfl 3

Д臄 ‡мм‡ кл‡ссо‚: к упным пл‡ном

хо‰flщих кл‡ссо‚ не н‡шлось Ñ со片‚‡ть с‚ои, кото ые, ‚ с‚ою оче е‰ь, мо„ут (и ‰олжны!) служить осно‚ой ‰лfl ‰ у„их кл‡ссо‚. Мы уже не „о‚о им о том, что со片ние кл‡ссо‚ п е‰по뇄‡ет зн‡чительный объем усилий по ко‰и нию и тести нию. В общем случ‡е, ск‡з‡нное ‚ыше можно п оиллюст и ть т‡кой ‰и‡„ ‡ммой ( ис. 3.7):

В ‰ополнение можно н‡з‚‡ть несколько п ичин, почему стоит использть уже сущест‚ующие кл‡ссы:

Во-пе ‚ых, и‰fl этим путем, мы пользуемсfl плми ‡нее п и- нflтых ешений. Дейст‚ительно, если к‡-то мы уже ешили некото ую п облему, з‡чем н‡чин‡ть ‚се Çс нулflÈ, по‚то flfl уже о‰н‡ж‰ы п о‰ел‡нные ‰ейст‚иfl?

Во-‚то ых, т‡ким об ‡зом мы ‰ел‡ем ешение мобильным и ‡с- ши flемым. Используfl уже сущест‚ующие кл‡ссы и со片‚‡fl н‡ их осно‚е но‚ые, мы можем ‡з‚肇ть ешение п ‡ктически нео- „ ‡ниченно, ‰оᇂлflfl лишь необхо‰имые н‡м ‚ ‰‡нный момент ‰ет‡ли Ñ ‡т ибуты и опе ‡ции.

В-т етьих, сущест‚ующие кл‡ссы, к‡к п ‡‚ило, хо ошо отл‡жены и пок‡з‡ли себfl ‚ ‡боте. Р‡з ‡ботчику не 퇉о т ‡тить ‚ емfl н‡ ко‰и ние, от뇉ку, тести ние и т. ‰., Ñ мы ‡бот‡ем с хо ошо отл‡женным и п о‚е енным ‚ еменем ко‰ом, кото ый з‡ екомен‰о‚‡л себfl ‚ ‰ у„их п оект‡х и ‚ кото ом уже ‚ыfl‚лено и исп ‡‚лено большинст‚о ошибок.

А тепе ь ‚ним‡ние Ñ мы мно„о „о‚о или о том, что нужно со片‚‡ть кл‡ссы н‡ осно‚е уже сущест‚ующих, но т‡к и не ск‡з‡ли ни сл о том, к‡к это с‰ел‡ть. П ишло ‚ емfl ‚нести flсность ‚ этот ‚оп ос. Тем с‡мым мы по‰би ‡емсfl к понflтию обобщениfl или „ене ‡лиз‡ции, кото ое и„ ‡ет очень ‚‡жную оль ‚ ООП, fl‚лflflсь о‰ним из е„о б‡зо‚ых п инципо‚. Обобщение Ñ это отношение меж‰у более общей сущностью, н‡зы‚‡емой супе кл‡ссом, и ее конк етным ‚оплощением, н‡зы‚‡емым по‰кл‡ссом. Ин‡ обобщение н‡зы‚‡ют отношениflми тип‡ Çfl‚лflетсflÈ, имеfl ‚ ‚и‰у, что о‰ни сущности (н‡п име , к у„, ꂇ‰ ‡т, т еу„ольник) fl‚лflютсfl ‚о- площением более общей сущности (н‡п име , кл‡сс‡ Ç„еомет ическ‡fl фи„у ‡È). П и этом ‚се ‡т ибуты и опе ‡ции супе кл‡сс‡ не燂исимо от мо‰ифик‡то о‚ ‚и‰имости ‚хо‰flт ‚ сост‡‚ по‰кл‡сс‡.

Обобщение (или, к‡к ч‡сто „о‚о flт, н‡сле‰о‚‡ние) н‡ ‰и‡„ ‡мм‡х обозн‡ч‡етсfl очень п осто Ñ нез‡к ‡шенной т еу„ольной ст елкой, н‡- п ‡‚ленной ‚ н‡п ‡‚лении супе кл‡сс‡ ( ис. 3.8).

Длfl то„о чтобы н‡учитьсfl эффекти‚но мо‰ели ть н‡сле‰о‚‡ние, об ‡тимсfl к кл‡ссик‡м, ‡ именно к Г. Бучу. Он со‚етует п о‚о‰ить эту п оце‰у у ‚ т‡кой после‰о‚‡тельности:

63

Ку с

UML: Пе ‚ое зн‡комст‚о

Рис. 3.8

Рис. 3.9

1.Н‡й‰ите ‡т ибуты, опе ‡ции и обflз‡нности, общие ‰лfl ‰‚ух или более кл‡ссо‚ из ‰‡нной со‚окупности. Это поз‚олит избеж‡ть ненужно„о ‰убли ниfl ст укту ы и функцион‡льности объекто‚.

2.Вынесите эти элементы ‚ некото ый общий супе кл‡сс, ‡ если т‡ко„о не сущест‚ует, то со片йте но‚ый кл‡сс.

3.Отметьте ‚ мо‰ели, что по‰кл‡ссы н‡сле‰уютсfl от супе кл‡сс‡, уст‡но‚и‚ меж‰у ними отношение обобщениfl.

А ‚от и п име п именениfl это„о по‰х ( ис. 3.9):

Н‡ пе ‚ый ‚з„лfl‰, к‡жетсfl ст ‡нным, что кл‡сс Çточк‡È не имеет ни- к‡ких ‡т ибуто‚, ‡ к у„ имеет только ‡‰иус. С п flмоу„ольником, ‚ о‰е бы, ‚се понflтно Ñ ши ин‡ и ‚ысот‡, но ‚от только „‰е он ‡сположен ‚ п ост ‡нст‚е, этот п flмоу„ольник? Д‡‚‡йте поп обуем сле‰о‚‡ть со‚е- т‡м Буч‡. Ит‡к, положение ‚сех т ех фи„у можно о‰нозн‡чно оп е‰е-

64

Лекциfl 3

Д臄 ‡мм‡ кл‡ссо‚: к упным пл‡ном

лить с помощью п‡ ы чисел. Длfl точки Ñ это ‚ообще е‰инст‚енные ее х‡-‡кте истики, ‰лfl к у„‡ и п flмоу„ольник‡ Ñ их цент ы (по‰ цент ом п flмоу„ольник‡ мы поним‡ем точку пе есечениfl е„о ‰и‡„он‡лей). Вот они, общие ‡т ибуты! Т‡ким об ‡зом, мы со片ли супе кл‡сс ÇФи„у ‡È, имеющий ‰‚‡ ‡т ибут‡ Ñ коо ‰ин‡ты цент ‡. Все ост‡льные кл‡ссы н‡ этой ‰и‡„ ‡мме с‚flз‡ны с кл‡ссом ÇФи„у ‡È отношением обобщениfl, т. е. ‚ них нужно ‰ооп е‰елить только Çне‰ост‡ющиеÈ ‡т ибуты Ñ ‡‰иус, ши ину и ‚ысоту. Ат ибуты, описы‚‡ющие коо ‰ин‡ты цент ‡, эти кл‡с- сы имеют изн‡ч‡льно к‡к потомки кл‡сс‡ ÇФи„у ‡È Ñ они их н‡сле‰уют. З‡метим, что опе ‡ции кл‡ссо‚ мы тут не ‡ссм‡т 肇ем: понflтно, что с ними был‡ бы т‡ же исто иfl.

Т‡к, с н‡сле‰о‚‡нием ‚ о‰е бы ‡зоб ‡лись. П ишло ‚ емfl ‰лfl м‡- ленькой п о‚ок‡ции с н‡шей сто оны. Кл‡ссы-потомки ‚е‰ь н‡сле‰уют ‡т ибуты и опе ‡ции супе кл‡сс‡? Т‡ким об ‡зом, они мо„ут н‡сле‰о‚‡ть и их инте фейсы Ñ то есть объекты ‡бсолютно ‡зной п и о‰ы мо„ут иметь о‰ин и тот же инте фейс! Т‡к к‡к же т‡ оп е‰елить, к‡ко„о же ‚се-т‡ки кл‡сс‡ объект? Д‡ и нужно ли это ‚ообще?

Дейст‚ительно, объекты ‡зной п и о‰ы (или „о‚о fl п още, ‡зных кл‡ссо‚) мо„ут пе ж肇ть о‰ин и тот же инте фейс именно т‡к, к‡к то„о ож艇ет пользтель. П име ом тому может служить ‡ссмот ен- н‡fl ‚ыше ‰и‡„ ‡мм‡ с „еомет ическими фи„у ‡ми. Все ‡ссмот енные фи„у ы имеют, н‡п име , опе ‡цию исниfl н‡ эк ‡не. С точки з е- ниfl пользтелfl ‚ к‡ж‰ом случ‡е это о‰но и то же ‰ейст‚ие. О‰н‡ко е- ‡лизны эти опе ‡ции по- ‡зному Ñ ‚е‰ь п оце‰у ‡ изоб ‡жениfl п fl- моу„ольник‡ сильно отлич‡етсfl от по‰обной п оце‰у ы ‰лfl к у„‡. Но ‰лfl пользтелfl это н傇жно: ‚е‰ь си„н‡ту ‡-то о‰н‡ и т‡ же! А ‚озможно это б뇄 fl еще о‰ному из осно‚ных п инципо‚ ООП Ñ полимо физму. К‡к мы только что упомflнули, ‡бот‡ мех‡низм‡ полимо физм‡ осн- н‡ н‡ со‚ении си„н‡ту ы мет, объfl‚ленно„о ‚ инте фейсе, и си„н‡- ту ы с‡мо„о мет. Мето‰ы ‚нут и кл‡ссо‚-потомко‚ мо„ут быть (и н‡- ‚е нflк‡ бу‰ут!) пе еоп е‰елены, их е‡лиз‡ции бу‰ут ‡зличными, ‡ си„- н‡ту ы ост‡нутсfl неизменными. Т‡ким об ‡зом (и ‚ этом ле„ко ощутить мощь ООП), ‚ыполнflfl о‰ни и те же опе ‡ции, ‡зные объекты мо„ут ‚е- сти себfl по- ‡зному.

Полимо физм fl‚лflетсfl осно‚ой ‰лfl е‡лиз‡ции мех‡низм‡ инте - фейсо‚ ‚ flзык‡х п о„ ‡мми ниfl. Вот, кст‡ти, и от‚ет н‡ ‚оп ос, к‡- ко„о кл‡сс‡ объект: к‡к только пользтель об ‡щ‡етсfl к некото ой опе ‡ции че ез инте фейс, оп е‰елflетсfl ф‡ктический кл‡сс объект‡ и ‚ызы‚‡етсfl соот‚етст‚ующ‡fl опе ‡циfl кл‡сс‡. П име ы полимо физм‡ можно у‚и‰еть ‚ с‡мых обы‰енных ‚ещ‡х, кото ыми мы пользуемсfl ‚ по‚се‰не‚ной жизни. О„лflнитесь ‚ок у„ Ñ ми пост оен по ООП, М‡т-иц‡ ‡бот‡ет! Н‡п име , ‚сем п и‚ычн‡fl к е‰итн‡fl к‡ точк‡, fl‚лflflсь

65

Ку с

UML: Пе ‚ое зн‡комст‚о

инте фейсу ‰лfl ‰оступ‡ к б‡нко‚скому счету че ез б‡нком‡т (и не только), о‰ин‡ко‚о ‡бот‡ет ‚ любой ст ‡не, ‚от только ‚е‰ет себfl чуть-чуть по- ‡зному, т. к. б‡нком‡т ‚ы‰‡ет ‰ень„и ‚ местной ‚‡люте. Со„л‡сны, п име не очень ко ектный, но з‡то очень 퇄лfl‰ный! Дум‡ем, пон‡- блю‰‡‚ з‡ ок уж‡ющим ми ом, чит‡тель с‡м сможет п и‚ести м‡ссу п име о‚ полимо физм‡.

Инк‡псулflциfl, н‡сле‰о‚‡ние и полимо физм, с кото ыми мы только что позн‡комились, fl‚лflютсfl теми с‡мыми т емfl кит‡ми, н‡ кото ых ‰е житсfl ООП. Если ‚ы понflли суть этих б‡зо‚ых п инципо‚ и осозн‡ли их истинную мощь, ‚ы п ошли большую ч‡сть пути, ‚е‰уще„о к полному о‚뇉ению ООП к‡к н‡иболее ‡‰еꂇтной мето‰икой опис‡ниfl (т‡к и тflнет ск‡з‡ть Çп оекти ниflÈ) ок уж‡юще„о н‡с ми ‡.

Отношениfl меж‰у кл‡сс‡ми

Ни о‰ин из объекто‚ ок уж‡юще„о н‡с ми ‡ не сущест‚ует с‡м по себе. Птицы лет‡ют потому, что есть ‚оз‰ух, н‡ кото ый опи ‡ютсfl их к ыльfl. К‡ж‰ый из н‡с с‚flз‡н с м‡ссой ‰ у„их лю‰ей ‡знооб ‡знымио‰ст‚енными, п офессион‡льными и ‰ у„ими с‚flзflми, п е‰по뇄‡ю- щими ‡зличные типы отношений. Точно т‡к же и кл‡ссы с‚flз‡ны меж‰у собой. И чтобы ‚ полной ме е о‚뇉еть ООП, н‡м необхо‰имо понflть суть этих отношений и н‡учитьсfl их и‰ентифици ть.

Мы ск‡з‡ли, что объекты н‡хо‰flтсfl ‚ оп е‰еленных отношениflх ‰ у„ с ‰ у„ом. О‰ин из типо‚ т‡ких отношений Ñ это 燂исимость. Дум‡- ем, суть т‡ко„о отношениfl понflтн‡ уже из е„о н‡з‚‡ниfl Ñ з‡‚исимость ‚озник‡ет т‡, к‡ е‡лиз‡циfl кл‡сс‡ о‰но„о объект‡ 燂исит от специфик‡ции опе ‡ций кл‡сс‡ ‰ у„о„о объект‡. И если изменитсfl специфик‡циfl опе ‡ций это„о кл‡сс‡, н‡м неминуемо п и‰етсfl ‚носить изменениfl и ‚ 燂исимый кл‡сс. П и‚е‰ем п остой п име , опflть-т‡ки ‚зflтый из н‡шей по‚се‰не‚ности. Ин‡ к н‡м ‚ уки по‡ют

Рис. 3.10

66

Лекциfl 3

Д臄 ‡мм‡ кл‡ссо‚: к упным пл‡ном

‚и‰еоф‡йлы, ‚осп оиз‚ести кото ые Çс летуÈ не у‰‡етсfl. Почему? П ‡- ‚ильно, потому что н‡ компьюте е не уст‡но‚лены соот‚етст‚ующие ко- ‰еки. То есть опе ‡циfl ÇВосп оиз‚е‰ениеÈ, е‡лизуем‡fl п о„ ‡ммой-ме- ‰и‡плее ом, 燂исит от опе ‡ции ÇДекомп ессиflÈ, е‡лизуемой ко‰еком. Если специфик‡циfl опе ‡ции ÇДекомп ессиflÈ изменитсfl, п и‰етсfl менflть ко‰ ме‰и‡плее ‡, ин‡че он п осто не сможет ‡бот‡ть с к‡ким-то ко- ‰еком и, ‚ лучшем случ‡е, 燂е шит с‚ою ‡боту с ошибкой. А ‚от т‡к з‡- ‚исимость меж‰у кл‡сс‡ми изоб ‡ж‡етсfl ‚ UML ( ис. 3.10):

Стоит отметить, что 燂исимости н‡ ‰и‡„ ‡мм‡х изоб ‡ж‡ют ‰‡леко не ‚с儉‡, ‡ только ‚ тех случ‡flх, к‡ их отоб ‡жение fl‚лflетсfl ‚‡жным

Рис. 3.11

‰лfl поним‡ниfl мо‰ели. Ч‡сто 燂исимости лишь по‰ ‡зум傇ютсfl, т. к. ло„ически сле‰уют из п и о‰ы кл‡ссо‚.

Рис. 3.12

Д у„ой ‚и‰ отношений меж‰у объект‡ми Ñ это ‡ссоци‡циfl. Это п осто с‚flзь меж‰у объект‡ми, по кото ой можно меж‰у ними пе емещ‡тьсfl. Ассоци‡циfl может иметь имfl, пок‡зы‚‡ющее п и о‰у отношений меж‰у объект‡ми, п и этом ‚ имени может ук‡зы‚‡тьсfl н‡п ‡‚ление чтениfl с‚flзи п и помощи т еу„ольно„о м‡ ке ‡. О‰нон‡п ‡‚ленн‡fl ‡ссоци‡циfl может изоб-‡ж‡тьсfl ст елкой. П оиллюст и уем ск‡з‡нное п име ‡ми ( ис. 3.11):

67

Ку с

UML: Пе ‚ое зн‡комст‚о

Рис. 3.13

К оме н‡п ‡‚лениfl ‡ссоци‡ции, мы можем ук‡з‡ть н‡ ‰и‡„ ‡ммеоли, кото ые к‡ж‰ый кл‡сс и„ ‡ет ‚ ‰‡нном отношении, и к ‡тность, то есть количест‚о объекто‚, с‚flз‡нных отношением ( ис. 3.12):

И н‡счет олей, и н‡счет к ‡тности н‡ этой ‰и‡„ ‡мме ‚се понflтно Ñ чело‚ек может ‚ообще не ‡бот‡ть, ‡бот‡ть ‚ о‰ной или более комп‡ниflх, ‡ ‚от комп‡нии ‚ любом случ‡е нужен хотfl бы о‰ин сот у‰ник. Кст‡- ти, о к ‡тности. Ассоци‡циfl может объе‰инflть т и и более кл‡сс‡. В этом случ‡е он‡ н‡зы‚‡етсfl n-‡ ной и изоб ‡ж‡етсfl омбом н‡ пе есечении линий, к‡к пок‡з‡но н‡ этой ‰и‡„ ‡мме, поз‡имст‚нной н‡ми из Zicom Mentor ( ис. 3.13):

Р‡нее мы „о‚о или, что ‡ссоци‡циfl Ñ это Çп осто с‚flзьÈ меж‰у объект‡ми. Н‡ с‡мом ‰еле, ‚ е‡льности с‚flзи бы‚‡ют Çп осто с‚flзflмиÈ к ‡йне е‰ко. Обычно п и ближ‡йшем ‡ссмот ении по‰ ‡ссоци‡цией поним‡етсfl более сложное отношение меж‰у кл‡сс‡ми, н‡п име , с‚flзь тип‡ Çч‡сть-целоеÈ. Т‡кой ‚и‰ ‡ссоци‡ции н‡зы‚‡етсfl ‡ссоци‡цией с ‡„ е- „и нием. В этом случ‡е о‰ин кл‡сс имеет более ‚ысокий ст‡тус (целое) и состоит из низших по ст‡тусу кл‡ссо‚ (ч‡стей). П и этом ‚ы‰елflют п о- стое и композитное ‡„ е„и ние и „о‚о flт о собст‚енно ‡„ 儇ции и композиции. П ост‡fl ‡„ 儇циfl п е‰по뇄‡ет, что ч‡сти, от‰еленные от цело- „о, мо„ут п о‰олж‡ть с‚ое сущест‚ние не燂исимо от не„о. По‰ композитным же ‡„ е„и нием поним‡етсfl ситу‡циfl, к‡ целое ‚л‡‰еет с‚оими ч‡стflми и их ‚ емfl жизни соот‚етст‚ует ‚ емени жизни цело„о, т.

68

Лекциfl 3

Д臄 ‡мм‡ кл‡ссо‚: к упным пл‡ном

Рис. 3.14

е. не燂исимо от цело„о ч‡сти сущест‚ть не мо„ут. П име ы этих ‚и- ‰о‚ ‡ссоци‡ций и их обозн‡чений ‚ UML можно у‚и‰еть н‡ сле‰ующей

Рис. 3.15

‰и‡„ ‡мме ( ис. 3.14).

П име ы, к‡к н‡м к‡жетсfl, очень п остые и понflтные. Винчесте можно ‚ынуть из компьюте ‡ и уст‡но‚ить ‚ но‚ый компьюте или ‚ USB-к‡ м‡н, т. е. сущест‚ние жестко„о ‰иск‡ с ‡збо кой системно„о блок‡ не з‡к‡нч肇етсfl. А ‚от кнопки без окон обычно сущест‚ть не мо„ут Ñ с з‡к ытием окн‡ кнопки т‡кже исчез‡ют.

69

Ку с

UML: Пе ‚ое зн‡комст‚о

Рис. 3.16

И, н‡конец, еще о‰н‡ ‚‡жн‡fl ‚ещь, к‡с‡ющ‡flсfl ‡ссоци‡ции. В отношении меж‰у ‰‚умfl кл‡сс‡ми с‡м‡ ‡ссоци‡циfl тоже может иметь с‚ойст‚‡ и, сле‰о‚‡тельно, тоже может быть п е‰ст‡‚лен‡ ‚ ‚и‰е кл‡сс‡. П и- ме п ост ( ис. 3.15):

Дейст‚ительно, пе е‰ н‡ч‡лом т у‰о‚ых отношений ‡ботник и ‡- боттель по‰писы‚‡ют меж‰у собой конт ‡кт, кото ый имеет т‡кие ‡т-ибуты, к‡к, н‡п име , опис‡ние ‡бот, с оки их ‚ыполнениfl, по fl‰ок опл‡ты и т. ‰.

А ‚от более сложный, но, опflть-т‡ки, ‚зflтый из е‡льной жизни п име мо‰ели ниfl отношений меж‰у кл‡сс‡ми, поз‡имст‚нный н‡ми из Zicom Mentor ( ис. 3.16):

И н‡конец, ‰ок‡з‡тельст‚о то„о, что UML можно использть ‰лfl че„о у„о‰но, ‚ том числе и ‰лfl з‡писи ск‡зок: ‰и‡„ ‡мм‡, описы‚‡ющ‡fl п е‰метную обл‡сть ск‡зки о Ку очке Рflбе и ‚зflт‡fl с с‡йт‡ конку с‡ шу-

ток н‡ UML (http://www.umljokes.com/) ( ис. 3.17):

Узн‡ете ‡сск‡з, зн‡комый с ‰етст‚‡?

70

Соседние файлы в папке ПрИС