Material adaptado dos slides do Prof. Luiz Antonio M. Pereira Diagrama de Classes - Motivao Durante as nossas conversas com o cliente a respeito do novo sistema, relacionamos, alm dos requisitos: As informaes que tratam de "coisas" ou conceitos com os quais os colaboradores em uma organizao lidam no dia a dia; Os relacionamentos que os conceitos mantm entre si; Restries/regras diversas... 3 Diagrama de Classes - Motivao Uma descrio textual no apropriada porque Os conceitos tipicamente possuem muitos detalhes; Os conceitos usualmente se relacionam de formas intrincadas e obedecendo regras ou restries complexas.
Diagramas de classes so bons para essas descries. 4 Diagrama de Classes - Conceitos 5 Diagrama de Classes - Conceitos uma viso esttica do sistema.
Descreve relaes atemporais entre elementos do domnio.
Compe-se de classes, relacionamentos entre elas, restries, etc.
6 Diagrama de Classes - Conceitos Tambm podem modelar o domnio sob trs perspectivas: Conceitual. Especificao. Implementao.
Cada perspectiva representa o domnio com graus diferentes de abstrao 7 Diagrama de Classes - Conceitos Na perspectiva conceitual queremos: Representar abstraes; Independncia de implementaes; Representar informaes do mini-mundo; Facilidade de comunicao. 8 Diagrama de Classes - Conceitos Na medida em que se caminha em direo implementao ...
... dotamos nosso modelo de mais detalhes (perspectiva de especificao). Ento Representamos as navegabilidades; Definimos os tipos e visibilidades dos atributos. ... 9 Diagrama de Classes - Conceitos Antes de iniciarmos a implementao devemos ter todos os detalhes definidos
Na perspectiva de implementao, onde representamos: As operaes get/set; As operaes/atributos protected e privatee demais detalhes necessrios implementao na LP escolhida, etc.
10 Elementos do Diagrama de Classes Diagrama de Classes Classes 12 Diagrama de Classes Classes Classes: Cada classe deve ter um nome (centralizado, iniciando por maiscula e em negrito) que a diferencie de outras classes (substantivos ou expresses breves); Retngulos compartimentados ou no, dependendo da perspectiva; Mais compartimentos podem ser criados para acomodao de regras de negcios, restries, responsabilidades, etc. 13 Diagrama de Classes Atributos 14 Diagrama de Classes Atributos Atributos: Alinhados esquerda, no segundo compartimento (e se no houver atributos?); Sintaxe UML: visibilidade nome: tipo = valor_default {propriedade} Visibilidade = + (public), # (protected), - (private) Visibilidade, tipos e valores default podem ser omitidos (perspectiva!);
Multiplicidade (qdo. for o caso) entra depois do nome. Ex: ... +contato[0..1]:string ... 15 Diagrama de Classes Atributos Propriedade: {changeable|addOnly|frozen}; changeable: no h restries p/ modificao do atributo; addOnly: novos valores podem ser adicionados quando multiplicidade > 1; frozen: atributo no pode ser modificado aps iniciao do objeto (const em C); Default = changeable
16 Diagrama de Classes Operaes Colocadas no terceiro compartimento, na perspectiva de especificao em diante (diagramas conceituais de classes usualmente no apresentam operaes) 17 Diagrama de Classes Operaes Operaes: So processos que a classe sabe realizar; Alinhados esquerda, no terceiro compartimento (e se no houver operaes?); Sintaxe UML: visibilidade nome (lista_parmetros): expresso_de_tipo_de_retorno {propriedade} Visibilidade: (vide atributos); Lista_de_parmetros: separados por ,, com a seguinte sintaxe: {in|out|inout} nome : tipo = valor_default Expresso_de_tipo_de_retorno: lista de tipos de retorno separados por , (so permitidos vrios tipos de retorno);
18 Diagrama de Classes Associaes 19 Diagrama de Classes Associaes Associaes: Representam relaes entre ocorrncias de classes; Quando a navegabilidade representada significa que os objetos da classe origem tm a responsabilidade de determinar os objetos da classe destino aos quais esto relacionados; Navegabilidades so normalmente associadas a questes de performance e facilidade de implementao; So usualmente deixadas para a perspectiva de especificao. 20 Diagrama de Classes - Associaes 21 Diagrama de Classes - Associaes Navegabilidades podem ser: Uni-direcionais; Bidirecionais; Indeterminadas.
Notao: Uni-direcional: uma seta; Bidirecional: _ _ _ _ setas ... ou nenhuma seta (convenciona-se para o projeto).
22 Diagrama de Classes - Associaes 23 Diagrama de Classes - Associaes 24 Diagrama de Classes - Associaes 25 Diagrama de Classes - Associaes Semntica do * sozinho: 0 a
Possibilidades: 1..* 2..3 2..3, 5..7, 15..20 26 Diagrama de Classes - Associaes 27 Diagrama de Classes - Associaes Pontas das associaes chamam-se papis; Pontas podem ser rotuladas. Quando rtulos existem estes do nomes aos papis. Quando no existentes, os papis levam o nome das classes alvo. 28 Diagrama de Classes - Associaes Pode haver auto-associao. Exemplos: 29 Diagrama de Classes - Generalizao 30 Diagrama de Classes - Generalizao Generalizao: Atributos e operaes comuns ficam na super-classe; Diferenas vo para as sub-classes que herdam da super-classe atributos e operaes comuns; L-se um tipo de 31 Diagrama de Classes - Generalizao 32 Diagrama de Classes - Generalizao 33 Diagrama de Classes - Generalizao 34 Diagrama de Classes - Generalizao Parties Completo (complete): as especializaes geram TODAS as instncias dos objetos (cobertura total). Incompleto (incomplete): objetos podem ser instncias das especializaes ou da generalizao (cobertura parcial). Disjunto (disjoint): instncias so de um tipo OU (exclusivo) de outro. Sobreposto (overlapping): instncias podem ser de um tipo E de outro (s). 35 Diagrama de Classes - Generalizao Parties - Exemplos 36 Diagrama de Classes - Agregao Agregao: o relacionamento todo-parte; Provida de quase nenhuma semntica (placebo de modelagem - Rumbaugh); L-se
Exemplos 37 Diagrama de Classes - Agregao 38 Diagrama de Classes - Agregao 39 Dvidas 40