Vimos no post anterior um pouco sobre UML algumas definições e uma breve introdução a diagramas do tipo Caso de Uso.
Hoje vamos analisar a estrutura estática de nosso sistema, e para tal vamos utilizar o diagrama de Classe. Estão prontos? Claro que estão =P então, prontos ou não aí vamos nós!!!
Diagrama de Classe
Um diagrama do tipo Classe captura a estrutura do sistema, suas classes, seus atributos e o relacionamento entre elas. De uma forma bem rústica, poderíamos dizer que classes são os tijolinhos que montam nosso sistema.
Quando usar
Após ter abstraido o comportamento do sistema com os diagramas de Caso de Uso, é hora de reduzir a abstração e modelar as entidades (classes) que compõe o sistema.
Geralmente você realiza esta modelagem analisando a declaração de cada Caso de Uso e idêntificando substântivos como potênciais classes. É aqui que vai entrar sua capacidade de abstração e classificação! Da informação coletada em cada Caso de Uso você vai tomar nota de todos os substântivos sejam eles concretos (como uma pessoa por exemplo) ou abstrato (um anuncio ou conta bancária).
Elementos
Os elementos que encontramos em diagramas de Classe são:
Classe: É uma entidade formada por atributos (suas característcas) e métodos (seu comportamento) podendo representar tanto "coisas" abstratas ou concretas, e quando agrupadas com outras classes formam a estrutura estática do sistema.
Relacionamento: Um aspecto importânte de um Objeto é justamente a interação que este têm com os demais (objetos) do sistema, sua "missão". Abaixo uma breve descrição dos principais relacionamentos entre os objetos (nota: farei um post especialmente sobre Relacionamentos em breve):
Associação: Pode ocorrer entre dois objetos (binária) ou três objetos (ternária)
Composição: Também conhecido como "contém um" define um relacionamento "forte" entre os dois objetos. Imagine um Carro, sabemos que ele é composto por, motor, rodas, portas... certo? É exatamente assim que podemos definir uma Composição, uma Classe é parte de outra, que pode ser composta por uma ou mais classes. Quando a Classe container é destruída, a outra Classe que a compõe é também destruída... (bem que poderiam chamar de relacionamento Romeu e Julieta...).
Agregação: Ao contrário de Composição, Agregação não define um tipo de relacionamento "forte" (ou de dependencia) ou seja, um objeto pode existir mesmo que o Objeto container seja destruído.
Generalização: Ahhh Herança... que relacionamento mais pratico! Aqui a sub parte (Juridica e Fisica) também é parte da super parte (Anunciante). As sub partes possuem todas as definições (características e comportamentos) da super parte, como no exemplo que usamos para montar nosso site de Anuncios.
Cardinalidade: Definem quantas instâncias (ou referências) de A podem aparecer em B.
0..1: Podemos encontrar nenhuma ou no máximo uma referência (também conhecido como relacionamento opcional)
1: Mínimo um, máximo um
0..* ou apenas *: Nenhum ou muitos
1..*: Mínimo um, máximo muitos
1..3,6,9..*: Defini um intervalo conhecido (nota: raramente vi este tipo de relacionamento ser usado)
Conclusão
É isso ae, já temos o básico para podermos entrar em maiores detalhes nos próximos exemplos. Espero que tenham gostado deste post, e não se sintam tímidos! Enviem seus comentários para que juntos possamos melhorar este blog e quem sabe mudar o mundo!!! =D ... hmm apenas postem ^^
Até o próximo post!!!







