This file is indexed.

/usr/share/doc/kde/HTML/gl/umbrello/uml_basics.docbook is in kde-l10n-gl 4:4.8.2-0ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
<chapter id="uml-basics">
<title
>Fundamentos de &UML;</title>
<sect1 id="about-uml">
<title
>Acerca de &UML;</title>
<para
>Este capítulo daralle unha introdución rápida aos fundamentos de &UML;. Teña en conta que este non é un titorial extenso de &UML; senón unha breve introdución que pode ser lida como un titorial. Se quer aprender máis acerca do Unified Modelling Language, ou en xeral acerca da análise e deseño de sóftware, consulte un dos moitos libros disponíbeis que tratan deste tema. Tamén hai moitos titoriais en internet que pode tomar como un punto de comezo. </para>

<para
>O "Unified Modelling Language" (&UML;) é unha linguaxe ou notación de deseño para especificar, visualizar e documentar modelos de sistemas de sóftware Orientados a Obxectos. &UML; non é un método de desenvolvimento, o que significa que non lle di o que debe facer primeiro e o que debe facer despois nen como deseñar o seu sistema, senón que o axuda a visualizar o deseño e a comunicarllo a outros. &UML; está controlado polo "Object Management Group" (<acronym
>OMG</acronym
>) e é o estándar da industria para descreber graficamente o sóftware. </para>
<para
>&UML; foi pensado para o deseño de sóftware Orientado a Obxectos e ten unha utilidade moi limitada para outros paradigmas de programación. </para>
<para
>&UML; está composto de diversos elementos de modelo que representan as diferentes partes dun sistema de sóftware. Os elementos &UML; son usados para criar diagramas, que representan unha parte, ou un ponto de vista do sistema. &umbrello; soporta os seguintes tipos de diagrama: </para>

<itemizedlist>

<listitem
><para
><emphasis
><link linkend="use-case-diagram"
>Diagramas de caso de uso</link
></emphasis
> mostra actores (xente ou outros usuarios do sistema), casos de uso (os cenarios en que o sistema é usado), e as súas relacións</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="class-diagram"
>Diagramas de clase</link
></emphasis
> mostra clases e as relacións entre elas</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="sequence-diagram"
>Diagramas de secuencia</link
></emphasis
> mostra obxectos e a secuencia de chamadas a métodos de outros obxectos que fan.</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="collaboration-diagram"
>Diagramas de colaboración</link
></emphasis
> mostra obxectos e a súa relación, enfatizando os obxectos que participan no intercambio de mensaxes</para>
</listitem>

<listitem
><para
><emphasis
><link linkend="state-diagram"
>Diagramas de estado</link
></emphasis
> mostra estados, mudanzas de estado e eventos nun obxecto ou unha parte do sistema</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="activity-diagram"
>Diagramas de actividade</link
></emphasis
> mostra actividades e os cambios dunha activade para outra cos eventos que acontecen nalgunha parte do sistema</para
></listitem>

<listitem
><para
><emphasis
><link linkend="component-diagram"
>Diagramas de componentes</link
></emphasis
> mostra as componentes de alto nível (como KParts ou Java Beans).</para
></listitem>

<listitem
><para
><emphasis
><link linkend="deployment-diagram"
>Diagramas de implementación</link
></emphasis
> mostra as instancias das componentes e as súas relacións.</para
></listitem
> 

<listitem
><para
><emphasis
>Os <link linkend="entity-relationship-diagram"
>Diagramas de relacións entre entidades</link
></emphasis
> mostran datos e as relacións e restricións entre os datos.</para
></listitem
> 

</itemizedlist>

</sect1
>   <!-- about-uml -->

<sect1 id="uml-elements"
>  
<title
>Elementos &UML;</title>
<sect2 id="use-case-diagram">
<title
>Diagrama de caso de uso</title>
<para
>Os diagramas de caso de uso descreben as relacións e dependencias entre un grupo de <emphasis
>Casos de Uso</emphasis
> e os Actores a participar no proceso.</para>
<para
>É importante decatarse de que os diagramas de casos de uso non son apropriados para representar o deseño, e non poden descreber o interior dun sistema. Estes diagramas serven para facilitar a comunicación cos futuros usuarios do sistema, e cos clientes, e son especialmente úteis para determinar as funcionalidades que o sistema debe ter. Os diagramas de casos de uso indican o <emphasis
>que</emphasis
> o sistema debera ter, pero non especifica como o acada, &mdash;nen pode&mdash;.</para>
<para>
<screenshot>
<screeninfo
>Un diagrama de caso de uso de exemplo.</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="use-case-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; mostrando un diagrama de caso de uso</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; mostrando un diagrama de caso de uso </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="use-case">
<title
>Caso de uso</title>
<para
>Un <emphasis
>caso de uso</emphasis
> descrebe &mdash;desde o ponto de vista dos actores&mdash; un grupo de actividades nun sistema que produce un resultado concreto, tanxíbel.</para>
<para
>Os casos de uso son descricións das interaccións típicas entre os usarios dun sistema e o sistema en si. Representan a interface externa do sistema e especifican unha forma de requerimentos do que debe facer o sistema (lembre, só o que, non como). </para>
<para
>Cando se traballa cos casos de uso, é importante lembrar algunhas regras simples: <itemizedlist>
 <listitem
><para
>Cada caso de uso estará relacionado con polo menos un actor</para
></listitem>
 <listitem
><para
>Cada caso de uso ten un iniciador (&ie; un actor)</para
></listitem>
 <listitem
><para
>Cada caso de uso conduce a un resultado relevante (un resultado con <quote
>valor de negocio</quote
>)</para>
 </listitem>
 </itemizedlist>
</para>
<para
>Os casos de uso tamén teñen relacións con outros casos de uso. Os tres tipos de relación máis típicas entre os casos son:</para>
<itemizedlist>
<listitem
><para
><emphasis
>&lt;&lt;inclusión&gt;&gt;</emphasis
> que indica que un caso de uso acontece <emphasis
>dentro</emphasis
> doutro caso de uso</para
></listitem>
<listitem
><para
><emphasis
>&lt;&lt;extensión&gt;&gt;</emphasis
> que indica que en certas situacións, ou nalgún ponto (chamado ponto de extensión) un caso de uso será ampliado por outro.</para
></listitem>
<listitem
><para
><emphasis
>Xeneralización</emphasis
> indica que un caso de uso herda as características do <quote
>Super</quote
>caso de uso, e pode sobrescreber algunhas deles ou engadir outras novas, de xeito similar á herdanza entre clases. </para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="actor">
<title
>Actor</title>
<para
>Un actor é unha entidade externa (fora do sistema) que interactúa co sistema ao participar (e a miúdo iniciar) un caso de uso. Os actores poden ser xente real (por exemplo os usuarios do sistema), outros sistemas informáticos ou eventos externos. </para>
<para
>Os actores non representan a xente ou sistemas <emphasis
>físicos</emphasis
>, senón o seu <emphasis
>papel</emphasis
>. Isto significa que cando unha persoa interactúa co sistema de diferentes xeitos (asumindo diferentes papeis) estará representada por varios actores. Por exemplo unha persoa que dá servizo técnico aos clientes por teléfone e recive pedidos dos clientes, no sistema estaría representado por un actor <quote
>Servizo Técnico</quote
> e un actor <quote
>Comercial</quote
> </para>
</sect3>
<sect3 id="use-case-description">
<title
>Descrición do caso de uso</title>
<para
>As descricións dos casos de uso son textos que o explican o caso. Polo xeral toman a forma dunha nota ou documento que está ligado dalgún xeito ao caso de uso, e explica os procesos ou actividades que acontecen nese caso de uso. </para>
</sect3>
</sect2
> <!-- use-case-diagram -->

<sect2 id="class-diagram">
<title
>Diagramas de clase</title>
<para
>Os diagramas de clase mostran as diferentes clases que conforman o sistema e como se relacionan entre si. Sóese dicir que os diagramas de clase son <quote
>estáticos</quote
> porque mostran as clases, xunto cos seus métodos e atributos así como as relacións estáticas entre elas: que clases <quote
>coñecen</quote
> da existencia de outras ou que clases <quote
>son parte</quote
> de outras clases, pero non mostran as chamadas a métodos entre elas. </para>
<para>
<screenshot>
<screeninfo
>Un exemplo de diagrama de clase</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="class-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; mostrando un diagrama de clases</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; mostrando un diagrama de clases </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="class">
<title
>Clase</title>
<para
>Unha clase define os atributos e métodos dun conxunto de obxectos. Todos os obxectos desa clase (instancias da clase) teñen o mesmo comportamento, e teñen o mesmo conxunto de atributos (cada obxecto ten o seu proprio conxunto). Ás veces chámaselles <quote
>Tipo</quote
> no canto de Clase, pero é importante mencionar que non son o mesmo, e que Tipo é un termo máis xeral. </para>
<para
>En &UML; as clases son representadas por rectángulos, co nome da clase, que poden mostrar tamén os atributos e operacións da clase en outros dous <quote
>compartimentos</quote
> dentro do rectángulo. </para>
<para>
<screenshot>
<screeninfo
>Unha clase en &UML;</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="class.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Representación visual dunha clase en &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Representación visual dunha clase en &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect4 id="attribute">
<title
>Atributos</title>
<para
>En &UML; os atributos son mostrados con polo menos o seu nome, e tamén pode mostrar o tipo, valor inicial e outras propiedades. Os atributos tamén poden ser mostrados coa súa visibilidade: </para>
<itemizedlist>
<listitem
><para
><literal
>+</literal
> Significa que o atributo é <emphasis
>público</emphasis
></para
></listitem>
<listitem
><para
><literal
>#</literal
> Significa que o atributo é <emphasis
>protexido</emphasis
></para
></listitem>
<listitem
><para
><literal
>-</literal
> Significa que o atributo é <emphasis
>privado</emphasis
></para
></listitem>
</itemizedlist>
</sect4>
<sect4 id="operation">
<title
>Operacións</title>
<para
>As operacións (métodos) tamén son mostradas con polo menos o seu noe, e tamén pode mostrar os seus parámetros e tipo de retorno. Os igual que cos atributos, tamén pode ver a súa visibilidade: <itemizedlist>
<listitem
><para
><literal
>+</literal
> Significa que a operación é <emphasis
>pública</emphasis
></para
></listitem>
<listitem
><para
><literal
>#</literal
> Significa que a operación é <emphasis
>protexida</emphasis
></para
></listitem>
<listitem
><para
><literal
>-</literal
> Significa que a operación é <emphasis
>privada</emphasis
></para
></listitem>
</itemizedlist>
</para>
</sect4>

<sect4 id="templates">
<title
>Modelos</title>
<para
>As clases poden ter modelos, un valor que é usada para unha clase ou tipo non especificado. O tipo do modelo é especificado cando a clase é iniciada (&ie; cando se cría un obxecto). Os modelos existen en C++ e serán introducidos en Java 1.5 onde serán chamados Generics. </para>
</sect4>
</sect3>

<sect3 id="class-associations">
<title
>Asociacións entre clases</title>
<para
>As clases poden relacionarse (estar asociadas con) unhas coas outras de distintos xeitos:</para>
<sect4 id="generalization">
<title
>Xeneralización</title>
<para
>A herdanza é un dos conceitos fundamentais da programación orientada a obxectos, na que unha clase <quote
>gaña</quote
> todos os atributos e operacións da clase da que herda, e pode sobrescreber/modificar algúns deles, así como engadir máis atributos e operacións proprias. </para>
<para
>En &UML;, unha asociación de <emphasis
>Xeneralización</emphasis
> entre dúas clases ponnas nunha hierarquía que representa o conceito de herdanza dunha clase derivada respeito dunha clase base. En &UML;, as xeneralizacións son representadas por unha liña que conecta as dúas clases, cunha frecha ao lado da clase base. <screenshot>
<screeninfo
>Xeneralización</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="generalization.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Representación visual dunha xeneralización en &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Representación visual dunha xeneralización en &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect4>

<sect4 id="uml-associations">
<title
>Asociacións</title>
<para
>Unha asociación representa unha relación entre clases, e dá a semántica común e a estrutura de moitos tipos de <quote
>conexóns</quote
> entre obxectos.</para>
<para
>As asociacións son o mecanismo que lles permite aos obxectos comunicarse entre si. Describen a conexón entre diferentes clases (a conexón entre os obxectos reais é denominada conexón entre obxectos, ou <emphasis
>ligazón</emphasis
>). </para>
<para
>As asociacións poden ter un papel que especifica o propósito da asociación e pode ser uni ou bidireccional (indica se os dous obxectos participantes na relación poden enviar mensaxes uns aos outros, ou se só un deles sabe do outro). Cada extremo da asociación pode ter tamén unha multiplicidade, que dictamina cantos obxectos neste lado da asociación poden relacionarse cun obxecto do outro lado). </para>
<para
>En &UML; as asociacións represéntanse como liñas que conectan as clases participantes na relación, e tamén poden mostrar o papel e a multiplicidade de cada un dos participantes. A multiplicidade é mostrada como un rango [mín..máx] de valores non negativos, onde un asterísco (<literal
>*</literal
>) no máximo representa o infinito. <screenshot>
<screeninfo
>Asociación &UML;</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="association.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Representación visual dunha asociación en &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Representación visual dunha asociación en &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect4>

<sect4 id="aggregation">
<title
>Agregación</title>
<para
>As agregacións son un tipo especial de asociación na que as dúas clases participantes non teñen o mesmo estatus, senón que teñen unha relación <quote
>todo-parte</quote
>. Unha agregación descrebe como a clase que adopta o papel de todo, está composta por(ten) outras clases, que adoptan o papel de partes. Nas agregacións, a clase que actúa como o todo sempre ten unha multiplicidade de un. </para>
<para
>En &UML; as agregacións represéntanse mediante unha asociación cun rombo no lado do todo. <screenshot>
<screeninfo
>Agregación</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="aggregation.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Representación visual dunha relación de agregación en &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Representación visual dunha relación de agregación en &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect4>
<sect4 id="composition">
<title
>Composición</title>
<para
>As composicións son asociación que representan agregacións <emphasis
>moi fortes</emphasis
>. Isto significa que as composicións tamén representan relacións todo-parte, pero cunha relación tan forte que as partes non poden existir por si mesmas. Só existen dentro do todo, e se o todo é destruído as partes tamén.</para>
<para
>En &UML; as Composicións represéntanse cun rombo sólido no lado do todo. </para>
<para
><screenshot>
<screeninfo
>Composición</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="composition.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Representación visual dunha relación de composición en &UML;</phrase>
	  </textobject>
	</mediaobject>
</screenshot
></para>
</sect4>
</sect3
> <!--class-associations-->

<sect3 id="other-class-diagram-items">
<title
>Outros elementos dos diagramas de clase</title>
<para
>Os diagramas de clase ademais de clases poden conter outro elementos.</para>
<sect4 id="interfaces">
<title
>Interfaces</title>
<para
>As interfaces son clases abstractas que representan instancias que non poden ser criadas directamente. Poden conter operacións pero non atributos. As clases poden herdar de interfaces (mediante unha asociación de realización) e as instancias pode estar feitas destes diagramas.</para>
<!-- FIXME screenshot -->
</sect4>
<sect4 id="datatype">
<title
>Tipos de datos</title>
<para
>Os tipos de datos son primitivas que tipicamente veñen incorporadas na linguaxe. Exemplos habituais son os inteiros e os booleanos. Non poden ter relacións con clases, pero as clases poden ter relacións con eles.</para>
<!-- FIXME screenshot -->
</sect4>
<sect4 id="enum">
<title
>Enumeracións</title>
<para
>As enumeracións son listas simples de valores. Un exemplo típico é unha enumeración dos días da semana. As opcións dunha enumeración son denominadas Literais da enumeración. Ao igual cos tipos de datos non poden ter relacións coas clases pero as clases poden ter relacións con elas.</para>
<!-- FIXME screenshot -->
</sect4>
<sect4 id="package">
<title
>Paquetes</title>
<para
>Os paquetes representan un espazo de nomes na linguaxe de programación. Nos diagramas son usados para representar partes dun sistema que conteñen máis dunha clase, mesmo centos delas.</para>
<!-- FIXME screenshot -->
</sect4>
</sect3>

</sect2
> <!-- class diagram -->

<sect2 id="sequence-diagram">
<title
>Diagramas de secuencia</title>

<para
>Os diagramas de secuencia mostran o intercambio de mensaxes (&ie; chamadas a métodos) entre varios obxectos nunha situación concreta delimitada no tempo. Os obxectos son instancias das clases. Os diagramas de secuencia fan énfase na orden e tempos nos que se envían as mensaxes aos obxectos.</para>

<para
>Nos diagramas de secuencia os obxectos son representados mediante liñas verticais de pontos co nome do obxecto no cume. O eixo do tempo tamén é vertical, aumentando cara baixo, de tal xeito que as mensaxes son enviasa dun obxecto para outro na forma de frechas co nome e os parámetros da operación. </para>

<!-- FIXME update screenshot to show synchronous messages -->
<screenshot>
<screeninfo
>Diagrama de secuencia</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="sequence-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; mostrando un diagrama de secuencia</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; mostrando un diagrama de secuencia </para>
	  </caption>
	</mediaobject>
</screenshot>

<para
>As mensaxes poden ser síncronas, o tipo normal de mensaxe no que o control é pasado á obxecto chamado até que o seu método remate a execución, ou asíncronas, onde o control é devolto directamente ao obxecto que fai a chamada. As mensaxes síncronas teñen unha caixa vertical ao lado do obxecto chamado para mostrar o fluxo de control do programa.</para>
</sect2
> <!-- sequence diagrams -->

<sect2 id="collaboration-diagram">
<title
>Diagramas de colaboración</title>

<para
>Os diagramas de colaboración mostran as interaccións que acontecen entre os obxectos que participan nunha situación dada. Isto é similar á información que se mostra nun diagrama de secuencia pero neste faise fincapé en como acontecen as interaccións no tempo mentres que nos diagramas de colaboración poñen de relevo as relacións entre os obxectos e a súa topoloxía.</para>

<para
>Nos diagramas de colaboración as mensaxes enviadas entre obxectos son representadas por frechas, co nome da mensaxe, os parámetros e a secuencia da mensaxe. Os diagramas de colaboración son adecuados para mostrar un fluxo específico do programa ou unha situación e son un dos mellores tipos de diagrama para demostrar rapidamente ou explicar un proceso na lóxica do programa. </para>

<screenshot>
<screeninfo
>Colaboración</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="collaboration-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; mostrando un diagrama de colaboración</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; mostrando un diagrama de colaboración </para>
	  </caption>
	</mediaobject>
</screenshot>

</sect2
> <!-- collaboration diagrams -->

<sect2 id="state-diagram">
<title
>Diagrama de estado</title>
<para
>Os diagramas de estado mostran os diferentes estados dun obxecto durante a súa existencia e os estímulos que fan que o obxecto mude o seu estado. </para
>                              
<para
>Os diagramas de estado consideran os obxectos como <emphasis
>máquinas de estados</emphasis
> ou autómatas finitos que poden estar nun dun conxunto finito de estados e que poden mudar o seu estado mediante un conxunto finito de estímulos. Por exemplo un obxecto do tipo <emphasis
>NetServer</emphasis
> pode estar nun dos seguintes estados durante a súa vida: </para>
<itemizedlist>
<listitem
><para
>En aguarda</para
></listitem>
<listitem
><para
>A escoitar</para
></listitem>
<listitem
><para
>A traballar</para
></listitem>
<listitem
><para
>Parado</para
></listitem>
</itemizedlist>
<para
>e os eventos que poden facer que o obxecto mude de estado son</para>
<itemizedlist>
<listitem
><para
>O obxecto é criado</para
></listitem>
<listitem
><para
>O obxecto recebe a mensaxe "escoitar"</para
></listitem>
<listitem
><para
>Un cliente pide unha conexón sobre a rede</para
></listitem>
<listitem
><para
>Un cliente finaliza unha conexón</para
></listitem>
<listitem
><para
>A petizón é executada e finaliza</para
></listitem>
<listitem
><para
>O obxecto recebe a mensaxe "parar"</para
></listitem>
<listitem
><para
>etc</para
></listitem>
</itemizedlist>
<para>
<screenshot>
<screeninfo
>Diagrama de estado</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="state-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; mostrando un diagrama de estado</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; mostrando un diagrama de estado </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="state">
<title
>Estado</title>
<para
>Os estados son os tixolos cos que se fan os diagramas de estado. Un estado pertence a exactamente unha clase e representa un resumo dos valores que poden tomar os atributos dunha clase. Un estado en &UML; representa o estado interno dun obxecto nunha clase particular </para
>                       
<para
>Lembre que non todas as alteración nun atributo dun obxecto debe ser representado por un estado senón só aquelas modificación que poden afectar de xeito significativo a como traballe o obxecto</para>
<para
>Hai dous tipos especiais de estado: Inicio e Fin. Son especiais porque nengún evento pode facer que un obxecto volte ao seu estado de Inicio, do mesmo xeito que nengún evento pode facer que un obxecto volte do estado de Fin unha vez que é acadado. </para>
</sect3>

</sect2
> <!-- state diagrams -->

<sect2 id="activity-diagram">
<title
>Diagrama de actividade</title>
<para
>Os diagramas de actividade descreben a secuencia do traballo nun sistema coa axuda de Actividades. Os diagramas de actividade son unha forma especial de diagrama de estados, que só (ou maiormente) contén Actividades. </para>
<para>
<screenshot>
<screeninfo
>Un exemplo de diagrama de actividade.</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="activity-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; mostrando un diagrama de actividade</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; mostrando un diagrama de actividade </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<para
>Os diagramas de actividade son similares aos Diagramas de Fluxo dos procedimentos, coa diferenza de que todas as Actividades están claramente ligadas a Obxectos.</para>

<para
>Os diagramas de actividade sempre están asociados ou a unha <emphasis
>Clase</emphasis
>, a unha <emphasis
>Operación</emphasis
> ou a un <emphasis
>Caso de uso</emphasis
>.</para>

<para
>Os diagramas de actividade admiten actividades tanto secuenciais como paralelas. A execución en paralelo é representada mediante ícones Ramificar/Xuntar, e para as actividades con execución en paralelo, non é importante a orden na que son realizadas (poden ser executadas á vez ou unha tras da outra)</para>
<sect3 id="activity">
<title
>Actividade</title>
<para
>Unha actividade é unha etapa simples dun proceso. Unha actividade é un estado do sistema activo e, polo menos, unha transición saínte. As actividades tamén poden ter máis dunha transición saínte se teñen diferentes condicións. </para
> 
<para
>As actividades poden formar hierarquías, isto significa que unha actividade pode estar composta por varias actividades <quote
>de detalle</quote
>, neste caso as transicións entrantes e saíntes deben coincidir coas transicións de entrada e saída do diagrama de detalle. </para>

</sect3>
</sect2
> <!-- activity diagram -->

<sect2 id="helper-elements">
<title
>Elementos auxiliares</title>
<para
>Hai uns poucos elementos &UML; que non teñen valor semántico real para o modelo, pero axudan a aclarar partes do diagrama. Estes elementos son </para>
<itemizedlist>
<listitem
><para
>Liñas de texto</para
></listitem>
<listitem
><para
>Notas de texto e enganches</para
></listitem>
<listitem
><para
>Caixas</para
></listitem>
</itemizedlist
>   
<para
>As liñas de texto son úteis para engadir un texto informativo breve ao diagrama. Non están ligadas a nengún elemento e non teñen significado para o modelo en si. </para
>           

<para
>As notas son úteis para engadir información máis detallada acerca dun obxecto ou situación específica. Teñen a grande vantaxe de que poden estar ligadas a elementos &UML; para mostrar que a nota <quote
>pertence</quote
>a un obxecto ou situación específica. </para>

<para
>As caixas son rectángulos non ligado a nada que poden ser usadas para agrupar elementos e facer os diagramas máis lexíbeis. Non teñen significado lóxico no modelo.</para>

<!-- FIXME, screenshot -->
</sect2
> <!-- helper elements -->

<sect2 id="component-diagram">
<title
>Diagrama de componentes</title>
<para
>Os diagramas de componentes mostrans os componentes do sóftware (sexantecnoloxías de componentes como KParts, componentes CORBA ou Java Beans ou só seccións do sistema claramente diferenciábeis) e os artefactos cos que están feitos, como ficheiros de código fonte, bibliotecas de programación ou táboas de bases de datos relacionais.</para>

<para
>As componentes poden ter interfaces (&ie; clases abstractas con operacións) que permiten asociacións entre componentes.</para>
</sect2>

<sect2 id="deployment-diagram">
<title
>Diagramas de implementación</title>

<para
>Os diagramas de implementación mostran as instancias en tempo de execución e as súas asociación. Inclúen Nós, que son recursos físicos, tipicamente un ordenador. Tamén mostran as interfaces e os obxectos (intancias de clases).</para>

</sect2>

<sect2 id="entity-relationship-diagram">
<title
>Diagramas de relacións entre entidades</title>

<para
>Os diagramas de relacións entre entidades (Diagramas ER) mostran o deseño conceptual das bases de datos. Con eles tense unha visión das diferentes entidades (conceitos) do sistema de información e das relacións e restricións existentes entre elas. Emprégase unha extensión dos diagramas de relacións entre entidades, chamada "Diagramas ampliados de relacións entre entidades" (EER), para incorporar técnicas de deseño orientado a obxectos nos diagramas ER. </para
> 
<para>
<screenshot>
<screeninfo
>Un diagrama de relacións entre entidades de exemplo.</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="entity-relationship-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Umbrello mostrando un diagrama de relacións entre entidades</phrase>
	  </textobject>
	  <caption>
	    <para
>Umbrello mostrando un diagrama de relacións entre entidades </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="entity">
<title
>Entidade</title>
<para
>Unha <emphasis
>entidade</emphasis
> é calquer conceito do mundo real que teña existencia independente. Pode ser un obxecto físico (por exemplo un ordenador, ou un bolígrafo) ou só ter existencia conceptual (p.ex: un curso da universidade). Cada entidade ten un conxunto de atributos que descreben as propriedades da entidade.</para>
<para
><emphasis
>Nota:</emphasis
> Non hai unha notación estándar para os diagramas ER. Os diferentes textos que tratan desta materia empregan notacións distintas. Os conceitos e notacións dos diagramas EER empregados en Umbrello son tomados do seguinte libro: <emphasis
>Elmasri R. e Navathe S. (2004). Fundamentals of Database Systems 4th edn. Addison Wesley</emphasis
> </para>
<para
>Nun diagrama ER, as entidades son representadas por rectángulos, co nome da entidade na parte superior, e tamén pode mostras os atributos da entidade en outro <quote
>compartimento</quote
> dentro do rectángulo. </para>
<para>
<screenshot>
<screeninfo
>Unha entidade nun diagrama ER</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="entity.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Representación visual dunha entidade nun diagrama ER</phrase>
	  </textobject>
	  <caption>
	    <para
>Representación visual dunha entidade nun diagrama ER </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect4 id="entity-attribute">
<title
>Atributos da entidade</title>
<para
>Nos diagramas ER, os atributos das entidades represéntanse polo seu nome nun compartimento diferente da entidade á que pertencen. </para>
</sect4>
<sect4 id="constraint">
<title
>Restricións</title>
<para
>As restricións nus diagramas ER especifican as restricións nos datos do esquema de información. </para>
<para
>Umbrello admite catro tipos de restricións: <itemizedlist>
 <listitem>
    <para
><emphasis
>Chave primaria</emphasis
> O conxunto de atributos declarados como <emphasis
>chave primaria</emphasis
> son únicos da entidade. Só pode haber unha chave primaria nunha entidade e nengún dos atributos que a constitúan pode ser NULO. </para>
</listitem>
 <listitem>
    <para
><emphasis
>Chave única</emphasis
>: O conxunto de atributos declarados como <emphasis
>únicos</emphasis
> son específicos da entidade. Poda haber varias restricións de unicidade nunha entidade. Os atributos que a constitúen poden ser NULO. As chaves únicas e as chaver primarias idenfican univocamente unha fila dunha táboa (entidade)</para>
 </listitem>
 <listitem>
    <para
><emphasis
>Chave externa</emphasis
>: Unha chave externa é unha restrición referencial entre dúas táboas. A chave externa identifica unha coluna ou conxunto de colunas nunha táboa (referinte) que se refete a unha coluna ou conxunto de colunas de outra táboa (referida). As colunas na táboa referida deben formar unha chave primaria ou única. </para>
 </listitem>
 <listitem>
     <para
><emphasis
>Restrición por comprobación</emphasis
>: Unha restrición por comprobación (tamén coñecida por restrición de comprobación da táboa) é unha condición que define os datos válidos cando se engade ou actualiza unha entrada nunha táboa dunha base de datos relacional. Estas restricións aplícanse a cada fila da táboa. A restrición debe ser un predicado. Pode referirse a unha só ou a varias colunas da táboa. </para>
     <para
>Exemplo: prezo
>=0 </para>
 </listitem>
 </itemizedlist>
</para>
</sect4>
</sect3>
<sect3 id="extended-entity-relationship-concepts">
<title
>Conceitos dos diagramas de relacións ampliadas entre entidades (EER)</title>
<sect4 id="specialization">
<title
>Especialización</title>
<para
>A especialización é unha maneira de formar novas entidades empregando entidades xa definidas. As entidades novas, coñecidas como entidades derivadas, toman (herdan) atributos das preexistentes, ás que se coñece por entidades base. O propósito é reutilizar datos xa existentes con pouca ou nengunha modificación.</para>
<para
>En Umbrello, pódese especificar que a especialización sexa Disxunta ou Sobreposicionante</para>
<sect5 id="disjoint-specialization"
> <title
>Especialización disxunta</title
> <para
>A especialización disxunta indica que as subclases da especialización deben ser disxuntas. Isto significa que unha entidade pode ser membro de como moito unha das entidades derivadas da especialización</para
><para
><screenshot
> <screeninfo
>Entidates participando nunha especialización disxunta</screeninfo
> <mediaobject
> <imageobject
> <imagedata fileref="disjoint-specialization.png" format="PNG"/> </imageobject
> <textobject
> <phrase
>Representación visual da especialización disxunta nun diagrama EER</phrase
> </textobject
> <caption
> <para
>Representación visual da especialización disxunta nun diagrama EER</para
> </caption
> </mediaobject
> </screenshot
> </para
> </sect5
> <sect5 id="overlapping-specialization"
> <title
>Especialización sobreposicionante</title
> <para
>Cando as entidades derivadas non teñen a restrición de ser disxuntas, dise que o seu conxunto de entidades está en especialización con sobreposición. Isto significa que a mesma entidade do mundo real pode ser membro de máis dunha entidade derivada da especialización.</para
><para
> <screenshot
> <screeninfo
>Entidades a tomar parte nunha especialización sobreposicionante</screeninfo
> <mediaobject
> <imageobject
> <imagedata fileref="overlapping-specialization.png" format="PNG"/> </imageobject
> <textobject
> <phrase
>Representación visual da especialización sobreposicionante nun diagrama EER</phrase
> </textobject
> <caption
> <para
>Representación visual da especialización sobreposicionante nun diagrama EER</para
> </caption
> </mediaobject
> </screenshot
> </para
> </sect5
> <sect5 id="category"
> <title
>Categoría</title
> <para
> Dise que unha entidade derivada é unha <emphasis
>Categoría</emphasis
> cando representa unha coleccion de obxectos que é un subconxunto da unión dos distintos tipos de dato. A categoría modelízase cando surxe a necesidade dunha única relación superclase/subclase con máis dunha superclase, onde a superclase representa diferentes tipos de entidades. (Como a herdanza múltipla na programación orientada a obxectos). </para
> <para
> <screenshot
> <screeninfo
>Entidades a tomar parte nunha relación de Categoría</screeninfo
> <mediaobject
> <imageobject
> <imagedata fileref="category.png" format="PNG"/> </imageobject
> <textobject
> <phrase
>Representación visual dunha Categoría nun diagrama EER</phrase
> </textobject
> <caption
> <para
>Representación visual dunha Categoría nun diagrama EER</para
> </caption
> </mediaobject
> </screenshot
> </para
> </sect5
> </sect4>
</sect3>
</sect2>

</sect1
> 
</chapter>