Файл: Бабич UML первое знакомство.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.12.2019

Просмотров: 6273

Скачиваний: 39

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

К‡ кие ‰и ‡ „‡м мы пе‰ ст‡‚ лfl ют си с те му ‚ ‰и н‡ ми ке?

Вы ‡з ‡ б‡ ты ‚‡ е те ком пью те ную по „‡м му ‰лfl и„ ы ‚ ш‡х м‡ -
ты. К‡ к‡fl ‰и ‡ „‡м м‡ UML бы л‡ бы по лез ной ‚ этом слу ч‡е? По -
че му?

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

Спи сок ис поль зо ‚‡н ных ис точ ни ко‚

1.

Г. Буч, А. Дже коб сон, Дж. Р‡м бо. UML: Ру ко ‚о‰ ст ‚о поль зо ‚‡ те лfl. –
http://alice.stup.ac.ru/~dvn/uproc/books/uml_user_guide/index.htm.

2.

Уни фи ци о ‚‡н ный flзык мо ‰е ли о ‚‡ ниfl ПО. Scott W. – Ambler
Copyright © 1998 Software Development magazine. –
http://zone1c.narod.ru/.

3.

Дж. Шму ле. Ос ‚ой с‡ мо сто fl тель но UML з‡ 24 ч‡ с‡. – 2-е из‰.,
пе. с ‡н„л. М.: Из‰. ‰ом «Ви ль flмс», 2002.

4.

Ле о нен ко‚. С‡ мо учи тель по UML. – 
http://khpi-iip.mipk.kharkiv.edu/library/case/leon/index.html.

5.

OMG Unified Modeling Language Specification. – Copyright © 2000,
Object Management Group. – http://www.omg.org/cgi-bin/apps/
doc?formal/03-03-01.pdf.

6.

Sample: The UML ©. Dr. Richard J. Botting, California State University. – 
http://www.csci.csusb.edu/dick/samples/uml.html.

Кус

56

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


background image

Лек циfl 3. Ди ‡ „‡м м‡ кл‡с со‚: куп ным пл‡ ном

Ди ‡ „‡м м‡  кл‡с со‚  —  о‰ин  из  н‡ и бо лее  ч‡ с то  ис поль зу е мых  ‚и ‰о‚

‰и ‡ „‡мм  UML.  Обыч но  со з‰‡ ние  ‰и ‡ „‡м мы  кл‡с со‚  зн‡ ме ну ет  со бой
окон ч‡ ние по цес с‡ ‡н‡ ли з‡ и н‡ ч‡ ло по цес с‡ по ек ти о ‚‡ ниfl. Мы уже
‚сте ч‡ лись с ни ми ‚ лек ции «Ви ‰ы ‰и ‡ „‡мм», ‡ те пеь изу чим их бо лее
‚ни м‡ тель но. В этой лек ции мы ‡с смо т им т‡ кие ‚о по сы:

К‡к кл‡сс изо б ‡ ж‡ ет сfl н‡ ‰и ‡ „‡м ме UML?

А что ‚ну т и?

К‡к ис поль зо ‚‡ть объ ек ты кл‡с с‡?

Все „‰‡ ли нуж но со з‰‡ ‚‡ть но ‚ые кл‡с сы?

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

К‡к кл‡сс изо б ‡ ж‡ ет сfl н‡ ‰и ‡ „‡м ме UML?

А хи тек то  по „‡мм но „о  обес пе че ниfl  ‚  пе ‚ую  оче е‰ь  об ‡ щ‡ ет

‚ни м‡ ние н‡ объ ек ты пе‰ мет ной об л‡ с ти. По „‡м мист же кон цен т и у -
ет сfl н‡ по ‚е ‰е нии этих объ ек то‚, поль зу flсь 

кл‡с с‡ ми

, к ко то ым они пи -

퇉 ле ж‡т. Вот по это му-то ‰и ‡ „‡м м‡ кл‡с со‚ и fl‚ лfl ет сfl о‰ ной из ‚‡ж ней -
ших ‰и ‡ „‡мм UML. Он‡ ис поль зу ет сfl ‰лfl ‰о ку мен ти о ‚‡ ниfl по „‡мм -
ных си с тем, и ос но‚ ным ее ком по нен том fl‚ лfl ет сfl 

кл‡сс

. Что т‡ кое кл‡сс,

мы  уже  „о ‚о и ли  ‡ нее,  ко„ ‰‡  зн‡ ко ми лись  с  ‚и ‰‡ ми  ‰и ‡ „‡мм  UML.  В
пе ‰ы ‰у щей  лек ции  мы  ‡с см‡ т и ‚‡ ли  н‡ зн‡ че ние  ‰и ‡ „‡м мы  кл‡с со‚,
зн‡ ко ми лись  с  пи ме ‡ ми  „о то ‚ых  ‰и ‡ „‡мм,  но  не  ‚ни к‡ ли  ‚  тон ко сти
обо зн‡ че ний,  ис поль зу е мых  н‡  ‰и ‡ „‡м ме.  В  тех  пи ме ‡х  ‚се  к‡ з‡ лось
н‡м очень по нflт ным и ло „ич ным. Тем не ме нее, не ко то ые ню ‡н сы ‚се же
сле ‰у ет ‡с смо т еть, и к‡к ‡з этим мы сей ч‡с и з‡й мем сfl.

Кл‡сс н‡ ‰и ‡ „‡м ме изо б ‡ ж‡ ет сfl ‚ ‚и ‰е пfl мо у„оль ни к‡, ‡з ‰е лен -

но „о „о и зон т‡ль ны ми ли ни fl ми н‡ ти ч‡ с ти. В пе ‚ой ч‡ с ти ук‡ зы ‚‡ ет сfl
퇠炇 ние  кл‡с с‡.  К‡к  п‡ ‚и ло,  имfl  кл‡с с‡  со сто ит  из  о‰ но „о,  м‡к си мум
‰‚ух сло‚. Вто ‡fl ч‡сть со ‰е жит пе е чень ‡т и бу то‚ кл‡с с‡, ко то ые х‡ -
‡к те и зу ют тот или иной объ ект это „о кл‡с с‡ ‚ мо ‰е ли пе‰ мет ной об л‡ -

57

Лекциfl 3

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

Рис. 3.1


background image

с ти.  Те тьfl  ч‡сть  со ‰е жит  пе е чень  опе ‡ ций,  от ‡ ж‡ ю щих  е„о  по ‚е ‰е -
ние ‚ мо ‰е ли пе‰ мет ной об л‡ с ти (ис. 3.1). Все очень по сто, не т‡к ли?

А что ‚ну т и?

Мы уз н‡ ли, к‡к кл‡сс изо б ‡ ж‡ ет с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 ‚ е ‡ль ном ми е.

В по „‡м ми о ‚‡ нии ин к‡п су лfl циfl обес пе чи ‚‡ ет сfl не мно „о по-‰у -

„о му — с по мо щью т. н. 

мо ‰и фи к‡ то о‚ ‚и ‰и мо с ти

. С их по мо щью мож но

о„ ‡ ни чить  ‰о ступ  к  ‡т и бу т‡м  и  опе ‡ ци flм  объ ек т‡  со  сто о ны  ‰у „их
объ ек то‚. З‚у чит это не мно „о п󠄇 ю ще, но н‡ с‡ мом ‰е ле ‚се по сто. Ес ли
‡т и бут или опе ‡ циfl опи с‡ ны с мо ‰и фи к‡ то ом 

private

, то ‰о ступ к ним

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

public

, то

Кус

58

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


background image

к ним мож но по лу чить ‰о ступ из лю бой ч‡ с ти по „‡м мы. Мо ‰и фи к‡ то

protected

‡з е ш‡ ет ‰о ступ толь ко из опе ‡ ций это „о же кл‡с с‡ и кл‡с со‚,

со з‰‡ ‚‡ е мых н‡ е„о ос но ‚е. В flзы к‡х по „‡м ми о ‚‡ ниfl мо „ут ‚сте ч‡ть -
сfl мо ‰и фи к‡ то ы ‚и ‰и мо с ти, о„ ‡ ни чи ‚‡ ю щие ‰о ступ н‡ бо лее ‚ы со ком
уо‚ не, н‡ пи ме, к кл‡с с‡м или их „уп п‡м, о‰ н‡ ко смысл ин к‡п су лfl ции
от это „о не из ме нfl ет сfl. В UML ‡т и бу ты и опе ‡ ции с мо ‰и фи к‡ то ‡ ми
‰о сту п‡ обо зн‡ ч‡ ют сfl спе ци ‡ль ны ми сим ‚о л‡ ми сле ‚‡ от их имен:

Сим ‚ол

Зн‡ че ние

+

public 

— от кы тый ‰о ступ

-

private

— толь ко из опе ‡ ций то „о же кл‡с с‡

#

protected

— толь ко из опе ‡ ций это „о же кл‡с с‡ и кл‡с со‚, 

со з‰‡ ‚‡ е мых н‡ е„о ос но ‚е

Р‡с смо т ен ный  ‡ нее  пи ме  с  те ле ‚и зо ом  се‰ ст ‚‡ ми  UML  (ко -

неч но же, это очень ‚ы со ко уо‚ не ‚‡fl ‡б ст ‡к циfl) мож но изо б ‡ зить т‡к
(ис. 3.2):

Не  п‡‚ ‰‡  ли,  ‚се  по нflт но  и  пе ‰ель но  по сто?  З‡ чем,  н‡ пи ме,

поль зо ‚‡ те лю зн‡ть чис ло ‚ые зн‡ че ниfl ч‡ с тот к‡ н‡ ло‚? Он зн‡ ет, что ‰о -
ст‡ точ но з‡ пу с тить по це ‰у 󠇂 то м‡ ти че с ко „о по ис к‡ к‡ н‡ ло‚ и те ле ‚и зо
‚се с‰е л‡ ет з‡ не „о. Вот ‚‡м и ин к‡п су лfl циfl — ок‡ зы ‚‡ ет сfl, он‡ по ‚сю ‰у
‚о ку„ н‡с. О„ лfl ни тесь и по ‰у м‡й те, сколь ко ‚е щей ‚о ку„ име ют скы тые
с‚ой ст ‚‡ и ‚ы пол нfl ют скы тые опе ‡ ции. Ис п󠄇 лись? Вот то-то же!

59

Лекциfl 3

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

Рис. 3.2


background image

К‡к ис поль зо ‚‡ть объ ек ты кл‡с с‡?

Ит‡к,  мы  ‡с смо т е ли  ин к‡п су лfl цию  —  о‰ но  из  се‰ст‚  з‡ щи ты

объ ек то‚. Все ‚о ‰е бы по нflт но, но к‡к же имен но ‡ бо т‡ть с объ ек том?
Ес ли уж „о ‚о ить о з‡ щи те объ ек т‡, то что бы он‡ ‰ей ст ‚и тель но бы л‡ эф -
фек ти‚ ной,  н‡ ‰о  по з‡ бо тить сfl  о  не ко ем  ст‡н ‰‡т ном  и  бе зо п‡с ном,  не
з‡ ‚и сfl щим от flзы к‡ по „‡м ми о ‚‡ ниfl спо со бе ‰о сту п‡ к объ ек ту. К то -
му же т‡ кой ст‡н ‰‡т ный спо соб ‰о сту п‡ ‰ол жен быть по стым и с точ ки
зе ниfl ис поль зо ‚‡ ниfl, и с точ ки зе ниfl е ‡ ли з‡ ции. Вспом ни те пи ме
с  те ле ‚и зо ом.  Н‡ жи м‡fl  кноп ки  н‡  пуль те,  мы  ожи ‰‡ ем,  что  те ле ‚и зо
от клик нет сfl н‡ это ‰ей ст ‚ие к‡ ким-то оп е ‰е лен ным об ‡ зом — имен но
т‡к, к‡к мы ожи ‰‡ ем, ‡ не ин‡ че. То есть, с о‰ ной сто о ны, пульт ДУ fl‚ -
лfl ет сfl се‰ ст ‚ом ‰о сту п‡ к скы тым опе ‡ ци flм, ‚ы пол нfl е мым те ле ‚и зо -
ом, ‡ с ‰у „ой сто о ны — пульт обес пе чи ‚‡ ет нуж ное ‰лfl н‡с по ‚е ‰е ние
те ле ‚и зо ‡. В ‰‡н ном пи ме е имен но пульт fl‚ лfl ет сfl т‡ ким ст‡н ‰‡т ным
се‰ ст ‚ом ‰о сту п‡ к те ле ‚и зо у. Мож но ‰‡ же ск‡ з‡ть, се‰ ст ‚ом ‰о сту п‡,
не з‡ ‚и сfl щим от кон кет ной мо ‰е ли те ле ‚и зо ‡ — ‚спом ни те об уни ‚е -
с‡ль ных  пуль т‡х  и  о  том,  к‡к  от клю ч‡ е те  з‚ук  н‡ ‰о е‰ ли ‚ой  ек л‡ мы  н‡
эк ‡ не ‚ ‚‡ „о не по ез ‰‡, ис поль зуfl КПК!

В том же пи ме е с те ле ‚и зо ом у н‡с ‚пе ‚ые по мельк ну ло сло ‚о 

ин -

те фейс

.  И  не  слу ч‡й но  по мельк ну ло:  имен но  т‡к  н‡ зы ‚‡ ют  тот  с‡ мый

ст‡н ‰‡т ный спо соб ‰о сту п‡ к объ ек ту. Бо лее сто „о, 

ин те фейс

— это ло „и -

че с к‡fl „уп п‡ от кы тых (public) опе ‡ ций объ ек т‡. О‰ин и тот же объ ект мо -
жет иметь не сколь ко ин те фей со‚. У те ле ‚и зо ‡, н‡ пи ме, их ‰‚‡ — пульт
ДУ и кноп ки н‡ ко пу се. А мо жет и боль ше — ‚спом ни те о ‚оз мож но с ти уп -
‡‚ лflть бы то ‚ой тех ни кой с по мо щью КПК или уни ‚е с‡ль но „о пуль т‡ ДУ.

Кст‡ ти,  по смо т и те  ‚ни м‡ тель нее  н‡  пульт  ДУ  или  н‡  эк ‡н  по -

„‡м мы  у‰‡ лен но „о  кон то лfl.  Что  ‚ы  ‚и ‰и те  —  кноп ки?  Или  кноп ки,
с„уп пи о ‚‡н ные по функ ци о н‡ль но му пи зн‡ ку? Д‡, имен но т‡к: кноп -
ки,  пе е клю ч‡ ю щие  к‡ н‡ лы,  ‡с по ло же ны  от ‰ель но,  fl ‰ом  —  „уп п‡
кно пок,  от ‚е ч‡ ю щих  з‡  е „у ли о‚ ку  „ом ко с ти  з‚у к‡,  fl ‰ом  —  „уп п‡
по „‡м ми у е мых кно пок, и т. ‰. В пин ци пе, мож но ск‡ з‡ть, что пульт
е ‡ ли зу ет не о‰ин, ‡ не сколь ко ин те фей со‚ — по чис лу функ ци о н‡ль ных
„упп кно пок. Впо чем, это уже фо м‡ лизм: мы по сто хо те ли по ил лю -
с т и о ‚‡ть сло ‚‡ «ло „и че с к‡fl „уп п‡» ‚ оп е ‰е ле нии ин те фей с‡.

О‰ н‡ ко  ин те фейс  —  это  не  толь ко  и  не  столь ко  „уп п‡  опе ‡ ций

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

Ин те фейс ‚се „‰‡ е ‡ ли зу ет сfl не ко то ым кл‡с сом, ко то ый ‚ т‡ ком

слу ч‡е н‡ зы ‚‡ ют кл‡с сом, 

по‰ ‰е жи ‚‡ ю щим 

ин те фейс. К‡к мы уже „о ‚о -

и ли ‡ нее, о‰ин и тот же объ ект мо жет иметь не сколь ко ин те фей со‚. Это

Кус

60

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