Translation by Artem Sereda with my minor changes
[kde-ru.git] / docs / kdesdk / umbrello / uml_basics.docbook
blob66664c0b653d01999eb4c83dd8677417a0538e4e
1 <chapter id="uml-basics">
2 <title
3 >Основы &UML;</title>
4 <sect1 id="about-uml">
5 <title
6 >О языке &UML;</title>
7 <para
8 >Данный раздел предоставит вам небольшой обзор основ &UML;. Он не является учебником по &UML;, и если вы хотите узнать побольше об &UML; или в целом о планировании разработки программного обеспечения, обратитесь к одной из многих книг по данной теме. В Интернете есть много учебных пособий, можете начать с них. </para>
10 <para
11 >Унифицированный язык моделирования (&UML;) является языком диаграмм или обозначений для спецификации, визуализации и документации модели объектно-ориентированных программных систем. &UML; не является методом разработки, то есть он не определяет последовательность действий при разработке программного обеспечения. Он помогает описать свою идею и взаимодействовать с другими разработчиками системы. &UML; управляется Object Management Group (OMG) и является промышленным стандартом, описывающим модели программного обеспечения. </para>
12 <para
13 >&UML; создан для применения в разработке объектно-ориентированного программного обеспечения, и с некоторыми ограничениями может применяться для других парадигм программирования. </para>
14 <para
15 >&UML; состоит из множества модельных элементов, которые представляют различные компоненты разрабатываемой системы. Элементы &UML; используются для создания диаграмм, которые описывают определённую часть системы или точку зрения на неё. &umbrello; поддерживает следующие типы диаграмм: </para>
17 <itemizedlist>
19 <listitem
20 ><para
21 ><emphasis
22 ><link linkend="use-case-diagram"
23 >Диаграммы вариантов использования</link
24 ></emphasis
25 > отображают действующих лиц (людей или пользователей системы), варианты использования (сценарии использования системы) и их взаимодействие.</para
26 > </listitem>
28 <listitem
29 ><para
30 ><emphasis
31 ><link linkend="class-diagram"
32 >Диаграммы классов</link
33 ></emphasis
34 > отображают классы и взаимодействие между ними.</para
35 > </listitem>
37 <listitem
38 ><para
39 ><emphasis
40 ><link linkend="sequence-diagram"
41 >Диаграммы последовательностей</link
42 ></emphasis
43 > отображают объекты и их взаимодействие, выделяя хронологию обмена сообщениями между объектами.</para
44 > </listitem>
46 <listitem
47 ><para
48 ><emphasis
49 ><link linkend="collaboration-diagram"
50 >Диаграммы взаимодействия</link
51 ></emphasis
52 > отображают объекты и их взаимодействие, выделяя объекты, которые участвуют в обмене сообщениями.</para>
53 </listitem>
55 <listitem
56 ><para
57 ><emphasis
58 ><link linkend="state-diagram"
59 >Диаграммы состояния</link
60 ></emphasis
61 > отображают состояния, изменения состояний и события в объектах или компонентах системы.</para
62 > </listitem>
64 <listitem
65 ><para
66 ><emphasis
67 ><link linkend="activity-diagram"
68 >Диаграммы активности</link
69 ></emphasis
70 > отображают активность, состояния и изменения состояний объектов, а также события, возникающие в компонентах системы.</para
71 ></listitem>
73 <listitem
74 ><para
75 ><emphasis
76 ><link linkend="component-diagram"
77 >Диаграммы компонентов</link
78 ></emphasis
79 > показывают компоненты верхнего уровня (такие как KParts или Java Beans).</para
80 ></listitem>
82 <listitem
83 ><para
84 ><emphasis
85 ><link linkend="deployment-diagram"
86 >Диаграммы выпуска</link
87 ></emphasis
88 > показывают экземпляры компонентов и их взаимоотношения.</para
89 ></listitem
90
92 </itemizedlist>
94 </sect1
95 >   <!-- about-uml -->
97 <sect1 id="uml-elements"
98 >  
99 <title
100 >Элементы &UML;</title>
101 <sect2 id="use-case-diagram">
102 <title
103 >Диаграмма вариантов использования</title>
104 <para
105 >Диаграммы вариантов использования описывают взаимоотношения и зависимости между группами <emphasis
106 >вариантов использования</emphasis
107 > и <emphasis
108 >действующих лиц</emphasis
109 >, участвующими в процессе.</para>
110 <para
111 >Важно понимать, что диаграммы вариантов использования не предназначены для отображения проекта и не могут описывать внутреннее устройство системы. Диаграммы вариантов использования предназначены для упрощения взаимодействия с будущими пользователями системы, с клиентами, и особенно пригодятся для определения необходимых характеристик системы. Другими словами, диаграммы вариантов использования говорят о том, <emphasis
112 >что</emphasis
113 > система должна делать, не указывая <emphasis
114 >сами</emphasis
115 > применяемые методы.</para>
116 <para>
117 <screenshot>
118 <screeninfo
119 >Пример диаграммы вариантов использования.</screeninfo>
120         <mediaobject>
121           <imageobject>
122             <imagedata fileref="use-case-diagram.png" format="PNG"/>
123           </imageobject>
124           <textobject>
125             <phrase
126 >Диаграмма вариантов использования</phrase>
127           </textobject>
128           <caption>
129             <para
130 >Диаграмма вариантов использования </para>
131           </caption>
132         </mediaobject>
133 </screenshot>
134 </para>
135 <sect3 id="use-case">
136 <title
137 >Вариант использования</title>
138 <para
139 ><emphasis
140 >Вариант использования</emphasis
141 > описывает, с точки зрения действующего лица, группу действий в системе, которые приводят к конкретному результату.</para>
142 <para
143 >Варианты использования являются описаниями типичных взаимодействий между пользователями системы и самой системой. Они отображают внешний интерфейс системы и указывают форму того, что система должна сделать (именно что, а не как). </para>
144 <para
145 >При работе с вариантами использования важно помнить несколько простых правил: <itemizedlist>
146  <listitem
147 ><para
148 >Каждый вариант использования относится как минимум к одному действующему лицу</para
149 ></listitem>
150  <listitem
151 ><para
152 >Каждый вариант использования имеет инициатора</para
153 ></listitem>
154  <listitem
155 ><para
156 >Каждый вариант использования приводит к соответствующему результату (результату с <quote
157 >бизнес-значением</quote
158 >).</para>
159  </listitem>
160  </itemizedlist>
161 </para>
162 <para
163 >Варианты использования также могут взаимодействовать с другими вариантами использования. Три наиболее часто встречающихся типа взаимодействия между вариантами использования приведены ниже:</para>
164 <itemizedlist>
165 <listitem
166 ><para
167 ><emphasis
168 >&lt;&lt;включение&gt;&gt;</emphasis
169 > указывает, что вариант использования встраивается <emphasis
170 >в</emphasis
171 > другой вариант использования;</para
172 ></listitem>
173 <listitem
174 ><para
175 ><emphasis
176 >&lt;&lt;добавление&gt;&gt;</emphasis
177 > указывает, что в определённых ситуациях или в некоторой точке (называемой точкой расширения) вариант использования будет расширен другим;</para
178 ></listitem>
179 <listitem
180 ><para
181 ><emphasis
182 >&lt;&lt;обобщение&gt;&gt;</emphasis
183 > указывает, что вариант  использования наследует характеристики <quote
184 >родительского</quote
185 > варианта использования и может переопределить некоторые из них или добавить новые, подобно наследованию в классах. </para>
186 </listitem>
187 </itemizedlist>
188 </sect3>
189 <sect3 id="actor">
190 <title
191 >Действующее лицо</title>
192 <para
193 >Действующее лицо является внешним источником (не элементом системы), который взаимодействует с системой через вариант использования. Действующие лица могут быть как реальными людьми (например, пользователями системы), так и другими компьютерными системами или внешними событиями. </para>
194 <para
195 >Действующие лица представляют не <emphasis
196 >физических</emphasis
197 > людей или системы, а их <emphasis
198 >роли</emphasis
199 >. Эти означает, что когда человек взаимодействует с системой различными способами (предполагая различные роли), он отображается несколькими действующими лицами. Например, человек, работающий в службе поддержки и принимающий от клиентов заказы, будет отображаться в системе как <quote
200 >участник отдела поддержки</quote
201 > и <quote
202 >участник отдела продаж</quote
203 >. </para>
204 </sect3>
205 <sect3 id="use-case-description">
206 <title
207 >Описание варианта использования</title>
208 <para
209 >Описания вариантов использования являются текстовыми пояснениями варианта использования. Они обычно принимают форму заметки или документа, который каким-то образом прикрепляется к варианту использования и описывает процесс или активность, который имеет место быть в варианте использования. </para>
210 </sect3>
211 </sect2
212 > <!-- use-case-diagram -->
214 <sect2 id="class-diagram">
215 <title
216 >Диаграмма класса</title>
217 <para
218 >Диаграммы классов отображают различные классы, из которых состоит система, и их взаимодействие между собой. Диаграммы классов являются <quote
219 >статичными</quote
220 > диаграммами, потому что они отображают классы вместе с их методами и атрибутами, так же как и статические взаимодействия между ними: какие классы <quote
221 >знают</quote
222 > о каких классах или какие классы <quote
223 >являются частью</quote
224 > других классов, но не отображают обмен сообщениями между классами. </para>
225 <para>
226 <screenshot>
227 <screeninfo
228 >Пример диаграммы класса</screeninfo>
229         <mediaobject>
230           <imageobject>
231             <imagedata fileref="class-diagram.png" format="PNG"/>
232           </imageobject>
233           <textobject>
234             <phrase
235 >Диаграмма класса</phrase>
236           </textobject>
237           <caption>
238             <para
239 >Диаграмма класса </para>
240           </caption>
241         </mediaobject>
242 </screenshot>
243 </para>
244 <sect3 id="class">
245 <title
246 >Класс</title>
247 <para
248 >Класс определяет атрибуты и методы набора объектов. Все объекты класса (называемые экземплярами) имеют одинаковое поведение и одинаковый набор атрибутов (у каждого объекта - собственный набор атрибутов). Иногда вместо класса используется термин <quote
249 >тип</quote
250 >, но важно понимать, что эти термины неодинаковы. Термин <quote
251 >Тип</quote
252 > имеет более общий смысл. </para>
253 <para
254 >В &UML; классы представлены прямоугольниками с именем класса, которые могут отображать атрибуты и операции класса, помещённые внутри прямоугольника. </para>
255 <para>
256 <screenshot>
257 <screeninfo
258 >Класс в &UML;</screeninfo>
259         <mediaobject>
260           <imageobject>
261             <imagedata fileref="class.png" format="PNG"/>
262           </imageobject>
263           <textobject>
264             <phrase
265 >Визуальное представление класса в &UML;</phrase>
266           </textobject>
267           <caption>
268             <para
269 >Визуальное представление класса в &UML; </para>
270           </caption>
271         </mediaobject>
272 </screenshot>
273 </para>
274 <sect4 id="attribute">
275 <title
276 >Атрибуты</title>
277 <para
278 >В &UML; атрибуты отображаются как минимум их названием, но также могут показывать свой тип, начальное значение и другие свойства. Атрибуты также могут отображаться с указанием их области видимости: </para>
279 <itemizedlist>
280 <listitem
281 ><para
282 ><literal
283 >+</literal
284 > отмечает <emphasis
285 >public</emphasis
286 > атрибуты;</para
287 ></listitem>
288 <listitem
289 ><para
290 ><literal
291 >#</literal
292 > отмечает <emphasis
293 >protected</emphasis
294 > атрибуты;</para
295 ></listitem>
296 <listitem
297 ><para
298 ><literal
299 >-</literal
300 > отмечает <emphasis
301 >private</emphasis
302 > атрибуты.</para
303 ></listitem>
304 </itemizedlist>
305 </sect4>
306 <sect4 id="operation">
307 <title
308 >Методы</title>
309 <para
310 >Методы (операции) также отображаются как минимум их названием, но также могут показывать свои параметры и возвращаемый тип. Подобно атрибутам, методы имеют область видимости: <itemizedlist>
311 <listitem
312 ><para
313 ><literal
314 >+</literal
315 > отмечает <emphasis
316 >public</emphasis
317 > операции;</para
318 ></listitem>
319 <listitem
320 ><para
321 ><literal
322 >#</literal
323 > отмечает <emphasis
324 >protected</emphasis
325 > операции;</para
326 ></listitem>
327 <listitem
328 ><para
329 ><literal
330 >-</literal
331 > отмечает <emphasis
332 >private</emphasis
333 > операции.</para
334 ></listitem>
335 </itemizedlist>
336 </para>
337 </sect4>
339 <sect4 id="templates">
340 <title
341 >Шаблоны</title>
342 <para
343 >Классы могут иметь шаблоны, значение которых используется для неуказанного класса или типа. Тип шаблона указывается при инициализации класса (то есть, при создании объекта). Шаблоны используются в современном C++ и будут введены в Java 1.5, где будут обозначаться как Generics. </para>
344 </sect4>
345 </sect3>
347 <sect3 id="class-associations">
348 <title
349 >Ассоциации классов</title>
350 <para
351 >Классы могут взаимодействовать друг с другом различными способами:</para>
352 <sect4 id="generalization">
353 <title
354 >Обобщение</title>
355 <para
356 >Наследование является основной концепцией объектно-ориентированного программирования, в которой класс <quote
357 >получает</quote
358 > все атрибуты и методы наследуемого класса и может переопределять/модифицировать некоторые из них, имея возможность добавлять собственные атрибуты и методы.</para>
359 <para
360 >В &UML; ассоциация <emphasis
361 >обобщения</emphasis
362 > между двумя классами помещает их в иерархию, представляющую концепцию наследования производного класса от базового. В &UML; обобщения отображаются в виде линии, соединяющей два класса, со стрелочкой у базового класса. <screenshot>
363 <screeninfo
364 >Обобщение</screeninfo>
365         <mediaobject>
366           <imageobject>
367             <imagedata fileref="generalization.png" format="PNG"/>
368           </imageobject>
369           <textobject>
370             <phrase
371 >Визуальное представление обобщения в &UML;</phrase>
372           </textobject>
373           <caption>
374             <para
375 >Визуальное представление обобщения в &UML; </para>
376           </caption>
377         </mediaobject>
378 </screenshot>
379 </para>
380 </sect4>
382 <sect4 id="uml-associations">
383 <title
384 >Ассоциации</title>
385 <para
386 >Ассоциации отображают взаимодействия между классами и определяют общую семантику и структуру многих типов <quote
387 >связей</quote
388 > между объектами.</para>
389 <para
390 >Ассоциации являются механизмом, который позволяет объектам взаимодействовать с друг другом. Они описывают связи между различными классами (связи между объектами называются соединениями объектов или <emphasis
391 >ссылками</emphasis
392 >. </para>
393 <para
394 >Ассоциации могут иметь роль, которая определяет назначение ассоциации и может быть одно- или двунаправленной, показывая, могут ли взаимодействующие объекты обмениваться сообщениями, или только один объект может отсылать сообщения. Каждый конец ассоциации имеет описание множественности, которое указывает, какое количество объектов на этой стороне ассоциации может взаимодействовать с одним объектом на другой стороне. </para>
395 <para
396 >В &UML; ассоциации отображаются в виде линии, соединяющей взаимодействующие классы, и могут показывать роль и количество объектов с каждой стороны. Множественность отображается в виде диапазона [мин..макс] неотрицательных значений, звёздочка (<literal
397 >*</literal
398 >) в качестве максимального значения обозначает бесконечность. <screenshot>
399 <screeninfo
400 >&UML;-ассоциации</screeninfo>
401         <mediaobject>
402           <imageobject>
403             <imagedata fileref="association.png" format="PNG"/>
404           </imageobject>
405           <textobject>
406             <phrase
407 >Визуальное представление ассоциации в &UML;</phrase>
408           </textobject>
409           <caption>
410             <para
411 >Визуальное представление ассоциации в &UML; </para>
412           </caption>
413         </mediaobject>
414 </screenshot>
415 </para>
416 </sect4>
418 <sect4 id="aggregation">
419 <title
420 >Объединение</title>
421 <para
422 >Объединения являются специальным типом ассоциаций, в котором два участвующих класса не равнозначны по статусу, но создают взаимодействие типа <quote
423 >часть-целое</quote
424 >. Объединение описывает, как класс, играющий роль целого, создаётся из других классов, играющих роль частей. Для объединений класс, выступающий в роли целого, всегда имеет множественность, равную единице. </para>
425 <para
426 >В &UML; объединения отображаются в виде линии с ромбом на стороне целого, соединяющей взаимодействующие классы. <screenshot>
427 <screeninfo
428 >Объединение</screeninfo>
429         <mediaobject>
430           <imageobject>
431             <imagedata fileref="aggregation.png" format="PNG"/>
432           </imageobject>
433           <textobject>
434             <phrase
435 >Визуальное представление объединения в &UML;</phrase>
436           </textobject>
437           <caption>
438             <para
439 >Визуальное представление объединения в &UML; </para>
440           </caption>
441         </mediaobject>
442 </screenshot>
443 </para>
444 </sect4>
445 <sect4 id="composition">
446 <title
447 >Композиция</title>
448 <para
449 >Композиция является ассоциацией, которая представляет <emphasis
450 >очень тесное</emphasis
451 > объединение. Это означает, что Композиция формирует взаимодействия типа <quote
452 >часть-целое</quote
453 >, но эти взаимодействия настолько сильные, что части не могут существовать сами по себе. Они существуют только внутри целого, и при уничтожении целого уничтожаются и части.</para>
454 <para
455 >В &UML; композиции отображаются в виде линии с закрашенным ромбом на стороне целого, соединяющей взаимодействующие классы. </para>
456 <para
457 ><screenshot>
458 <screeninfo
459 >Композиция</screeninfo>
460         <mediaobject>
461           <imageobject>
462             <imagedata fileref="composition.png" format="PNG"/>
463           </imageobject>
464           <textobject>
465             <phrase
466 >Визуальное представление композиции в &UML;</phrase>
467           </textobject>
468         </mediaobject>
469 </screenshot
470 ></para>
471 </sect4>
472 </sect3
473 > <!--class-associations-->
475 <sect3 id="other-class-diagram-items">
476 <title
477 >Другие элементы диаграммы класса</title>
478 <para
479 >Диаграммы классов могут содержать другие элементы внутри классов.</para>
480 <sect4 id="interfaces">
481 <title
482 >Интерфейсы</title>
483 <para
484 >Интерфейсы являются абстрактными классами, следовательно, объекты данных классов не могут быть созданы напрямую. Они могут содержать методы, но не атрибуты. Классы могут наследоваться от интерфейсов (через ассоциацию реализации), и полученные объекты затем могут использоваться при составлении диаграмм.</para>
485 <!-- FIXME screenshot -->
486 </sect4>
487 <sect4 id="datatype">
488 <title
489 >Типы данных</title>
490 <para
491 >Типы данных являются примитивами, которые обычно встроены в язык программирования. Яркими примерами могут служить целые и логические типы. Они могут не иметь отношения к классам, но классы могут использовать их.</para>
492 <!-- FIXME screenshot -->
493 </sect4>
494 <sect4 id="enum">
495 <title
496 >Перечисления</title>
497 <para
498 >Перечисления представляют собой простой список значений. Примером перечисления является перечисление дней недели. Подобно типам данных, они могут использоваться в классах.</para>
499 <!-- FIXME screenshot -->
500 </sect4>
501 <sect4 id="package">
502 <title
503 >Пакеты</title>
504 <para
505 >Пакеты представляют собой пространства имён в языке программирования. В диаграмме они используются для представления частей системы, которые содержат более одного класса (число классов может превышать несколько сотен).</para>
506 <!-- FIXME screenshot -->
507 </sect4>
508 </sect3>
510 </sect2
511 > <!-- class diagram -->
513 <sect2 id="sequence-diagram">
514 <title
515 >Диаграммы последовательностей</title>
517 <para
518 >Диаграммы последовательностей показывают обмен сообщениями (то есть вызовы методов) между различными объектами в специфической, ограниченной по времени, ситуации. Диаграммы последовательностей специально выделяют порядок и времена отсылки сообщений объектам.</para>
520 <para
521 >В диаграммах последовательностей объекты представляются вертикальными прерывистыми линиями с именем объекта наверху. Временная ось также направлена сверху вниз. Таким образом, сообщения, посылаемые от одного объекта к другому, отображаются стрелками с указанием операции и параметров. </para>
523 <!-- FIXME update screenshot to show synchronous messages -->
524 <screenshot>
525 <screeninfo
526 >Диаграмма последовательности</screeninfo>
527         <mediaobject>
528           <imageobject>
529             <imagedata fileref="sequence-diagram.png" format="PNG"/>
530           </imageobject>
531           <textobject>
532             <phrase
533 >Диаграмма последовательности</phrase>
534           </textobject>
535           <caption>
536             <para
537 >Диаграмма последовательности </para>
538           </caption>
539         </mediaobject>
540 </screenshot>
542 <para
543 >Сообщения могут быть либо синхронными, когда управление передаётся вызываемому объекту вплоть до момента окончания его работы, либо асинхронными, когда управление сразу же возвращается вызывающему объекту. Синхронные сообщения обозначаются вертикальным прямоугольником на стороне вызываемого объекта для отображения передачи управления в программе.</para>
544 </sect2
545 > <!-- sequence diagrams -->
547 <sect2 id="collaboration-diagram">
548 <title
549 >Диаграммы взаимодействий</title>
551 <para
552 >Диаграммы взаимодействий показывают взаимодействия между объектами, участвующими в конкретной ситуации. Это более или менее повторяет информацию, отображаемую диаграммами последовательностей, но там основной упор делается на то, как взаимодействия проявляются во времени, а здесь выделяются связи между объектами и их топологией.</para>
554 <para
555 >На диаграммах взаимодействий сообщения, пересылаемые от одного объекта к другому, представляются в виде стрелок с указанием имени, параметров и последовательности сообщений. Диаграммы взаимодействий наиболее удачно подходят для отображения процесса работы программы или какой-либо ситуации, а также является лучшим типом диаграмм для демонстрации или объяснения какого-либо процесса в логике программы. </para>
557 <screenshot>
558 <screeninfo
559 >Взаимодействие</screeninfo>
560         <mediaobject>
561           <imageobject>
562             <imagedata fileref="collaboration-diagram.png" format="PNG"/>
563           </imageobject>
564           <textobject>
565             <phrase
566 >Диаграмма взаимодействия</phrase>
567           </textobject>
568           <caption>
569             <para
570 >Диаграмма взаимодействия </para>
571           </caption>
572         </mediaobject>
573 </screenshot>
575 </sect2
576 > <!-- collaboration diagrams -->
578 <sect2 id="state-diagram">
579 <title
580 >Диаграмма состояния</title>
581 <para
582 >Диаграммы состояний показывают различные состояния объекта в течение его времени жизни и причины, вызывающие их смену. </para
583 >                              
584 <para
585 >Диаграммы состояний рассматривают объекты как <emphasis
586 >конечные автоматы</emphasis
587 >, которые могут быть в одном из нескольких конечных состояний. Конечные состояния могут изменяться с помощью конечного набора причин. Например, объект типа <emphasis
588 >NetServer</emphasis
589 > может находиться в одном из следующих состояний: </para>
590 <itemizedlist>
591 <listitem
592 ><para
593 >Готовность</para
594 ></listitem>
595 <listitem
596 ><para
597 >Ожидание</para
598 ></listitem>
599 <listitem
600 ><para
601 >Обработка</para
602 ></listitem>
603 <listitem
604 ><para
605 >Остановка</para
606 ></listitem>
607 </itemizedlist>
608 <para
609 >а события, которые могут привести к смене объектом своего состояния, это:</para>
610 <itemizedlist>
611 <listitem
612 ><para
613 >Создание объекта</para
614 ></listitem>
615 <listitem
616 ><para
617 >Объект принял ожидаемое сообщение</para
618 ></listitem>
619 <listitem
620 ><para
621 >Клиент запросил соединение по сети</para
622 ></listitem>
623 <listitem
624 ><para
625 >Клиент прервал запрос</para
626 ></listitem>
627 <listitem
628 ><para
629 >Запрос выполнен</para
630 ></listitem>
631 <listitem
632 ><para
633 >Объект получил завершающее сообщение</para
634 ></listitem>
635 <listitem
636 ><para
637 >и так далее</para
638 ></listitem>
639 </itemizedlist>
640 <para>
641 <screenshot>
642 <screeninfo
643 >Диаграмма состояния</screeninfo>
644         <mediaobject>
645           <imageobject>
646             <imagedata fileref="state-diagram.png" format="PNG"/>
647           </imageobject>
648           <textobject>
649             <phrase
650 >Диаграмма состояния</phrase>
651           </textobject>
652           <caption>
653             <para
654 >Диаграмма состояния </para>
655           </caption>
656         </mediaobject>
657 </screenshot>
658 </para>
659 <sect3 id="state">
660 <title
661 >Состояние</title>
662 <para
663 >Состояния являются ключевыми элементами диаграмм состояний. Состояния принадлежат ровно одному классу и представляют собой совокупность значений, которые могут принимать атрибуты класса. В &UML; состояние описывает внутреннее состояние объекта одного определённого класса. </para
664 >                       
665 <para
666 >Следует отметить, что не стоит отображать на диаграмме состояний все состояния, отображайте только важные состояния, которые значительно влияют на работу объекта.</para>
667 <para
668 >Существуют два особых типа состояний: начало и конец. И вот почему: нет такого события, которое заставит объект возвратиться в состояние начало, если он из него вышел; нет такого события, которое заставит объект выйти из состояния конец, если он в него вошёл. </para>
669 </sect3>
671 </sect2
672 > <!-- state diagrams -->
674 <sect2 id="activity-diagram">
675 <title
676 >Диаграмма действий</title>
677 <para
678 >Диаграммы действий описывают последовательность действий в системе с помощью действий. Диаграммы действий являются специальной формой диаграмм состояний, только в основном содержат действия. </para>
679 <para>
680 <screenshot>
681 <screeninfo
682 >Пример диаграммы действий</screeninfo>
683         <mediaobject>
684           <imageobject>
685             <imagedata fileref="activity-diagram.png" format="PNG"/>
686           </imageobject>
687           <textobject>
688             <phrase
689 >Диаграмма действий</phrase>
690           </textobject>
691           <caption>
692             <para
693 >Диаграмма действий </para>
694           </caption>
695         </mediaobject>
696 </screenshot>
697 </para>
698 <para
699 >Диаграммы действий подобны процедурным диаграммам потока, с той разницей, что все действия напрямую присоединены к объектам.</para>
701 <para
702 >Диаграммы действий всегда ассоциируются с <emphasis
703 >классами</emphasis
704 >, <emphasis
705 >методами</emphasis
706 > или <emphasis
707 >вариантами действий</emphasis
708 >.</para>
710 <para
711 >Диаграммы действий поддерживают как последовательные, так и параллельные действия. Параллельное выполнение представляется с помощью пиктограмм Fork/Wait. Для действий, выполняющихся параллельно, порядок, в котором они выполняются, не имеет значения (они могут выполняться одновременно или друг за другом).</para>
712 <sect3 id="activity">
713 <title
714 >Действие</title>
715 <para
716 >Действие представляет собой один шаг процесса. Одно действие представляет одно состояние системы с внутренним действием и, как минимум, с одним результатом действия. Действия могут иметь более одного результата, если они происходят при разных условиях. </para
718 <para
719 >Действия могут формировать иерархию, это означает, что действие может быть составлено из нескольких <quote
720 >мелких</quote
721 > действий. В этом случае входящие и исходящие переходы должны соответствовать входящим и исходящим переходам на детализированной диаграмме. </para>
723 </sect3>
724 </sect2
725 > <!-- activity diagram -->
727 <sect2 id="helper-elements">
728 <title
729 >Вспомогательные элементы</title>
730 <para
731 >Существует несколько вспомогательных элементов в &UML;, которые не имеют реального семантического значения для модели, но помогают внести ясность в диаграмму. Перечислим их: </para>
732 <itemizedlist>
733 <listitem
734 ><para
735 >Текстовые строки</para
736 ></listitem>
737 <listitem
738 ><para
739 >Текстовые заметки и якоря</para
740 ></listitem>
741 <listitem
742 ><para
743 >Контейнеры</para
744 ></listitem>
745 </itemizedlist
746 >   
747 <para
748 >Текстовые строки удобно использовать для добавления краткой текстовой информации в диаграмму, это свободно прикрепляемый текст, который ничего не значит для модели. </para
749 >           
751 <para
752 >Текстовые заметки следует использовать для добавления более детальной информации об объекте или о специфической ситуации. Текстовые заметки могут быть прикреплены к элементам &UML;. </para>
754 <para
755 >Контейнеры являются свободными прямоугольниками, которые могут быть использованы для группирования элементов диаграмм. Они не несут никакой смысловой нагрузки для модели.</para>
757 <!-- FIXME, screenshot -->
758 </sect2
759 > <!-- helper elements -->
761 <sect2 id="component-diagram">
762 <title
763 >Диаграммы компонентов</title>
764 <para
765 >Диаграммы компонентов отображают компоненты программного обеспечения (компонентные технологии, такие как KParts, CORBA или Java Beans или просто разделы системы, ясно отличающиеся друг от друга) и сущности, из которых они возникли, например, файлы с исходным кодом, библиотеки или таблицы баз данных.</para>
767 <para
768 >Компоненты обладают интерфейсами (то есть абстрактными классами с методами), которые позволяют создавать ассоциации между компонентами.</para>
769 </sect2>
771 <sect2 id="deployment-diagram">
772 <title
773 >Диаграммы выпуска</title>
775 <para
776 >Диаграммы выпуска отображают объекты, созданные во время выполнения программы, и их ассоциации. Они включают в себя узлы, которые являются физическими ресурсами, обычно одиночными компьютерами. Они также отображают интерфейсы и объекты.</para>
778 </sect2>
780 </sect1
782 </chapter>