Análise e Projeto de Software Orientados a Objetos
Aula 4 - Diagramas de classes.
Artur Oliveira Gomes
Sistemas de Informação - CPAN - UFMS
1 Introdução
2 Propósito do uso de diagramas de classe
Introdução
O diagrama de classe é um diagrama estático. Ele representa a visão estática de uma aplicação. Diagramas de classe não são apenas usados para visualição, descrição e documentação de diferentes aspectos de um sistema, mas também para a construção de código executável da aplicação desejada.
Os diagramas de classe descrevem os atributos e operações de uma classe e também as restrições impostas ao sistema. Os diagramas de classe são usadas de forma abrangente na modelagem de sistemas orientados a objetos por que eles são os únicos diagramas em UML que permitem o mapeamento direto entre linguagens orientadas a objetos.
Os diagramas de classe mostram uma coleção de classes, interfaces, associações, colaborações e restrições. Eles também são conhecidos como diagramas estruturais.
Introdução
O diagrama de classe é um diagrama estático. Ele representa a visão estática de uma aplicação. Diagramas de classe não são apenas usados para visualição, descrição e documentação de diferentes aspectos de um sistema, mas também para a construção de código executável da aplicação desejada.
Os diagramas de classe descrevem os atributos e operações de uma classe e também as restrições impostas ao sistema. Os diagramas de classe são usadas de forma abrangente na modelagem de sistemas orientados a objetos por que eles são os únicos diagramas em UML que permitem o mapeamento direto entre linguagens orientadas a objetos.
Os diagramas de classe mostram uma coleção de classes, interfaces, associações, colaborações e restrições. Eles também são conhecidos como diagramas estruturais.
Introdução
O diagrama de classe é um diagrama estático. Ele representa a visão estática de uma aplicação. Diagramas de classe não são apenas usados para visualição, descrição e documentação de diferentes aspectos de um sistema, mas também para a construção de código executável da aplicação desejada.
Os diagramas de classe descrevem os atributos e operações de uma classe e também as restrições impostas ao sistema. Os diagramas de classe são usadas de forma abrangente na modelagem de sistemas orientados a objetos por que eles são os únicos diagramas em UML que permitem o mapeamento direto entre linguagens orientadas a objetos.
Os diagramas de classe mostram uma coleção de classes, interfaces, associações, colaborações e restrições. Eles também são conhecidos como diagramas estruturais.
Propósito do uso de diagramas de classe
O propósito do uso de diagramas de classe é a modelagem da visão estática de uma aplicação. Os diagramas de classe são os únicos diagramas que podem ser mapeados diretamente com a linguagem de programação e com isso são amplamente usados no tempo da construção. Então o propósito dos diagramas de classe podem ser sumarizados como:
Análise e modelagem de uma visão estática da aplicação. Descreve responsabilidades do sistema.
É base para os diagramas de componente e implantação. Engenharia direta e reversa.
Propósito do uso de diagramas de classe
O básico dos diagramas de classe
Como mencionado anteriormente, o propósito dos diagramas de classe é mostrar os tipos sendo modelados entre um sistema. Na maioria dos modelos uml, estes tipos incluem:
Uma classe Uma interface Um data type Um componente
UML usa um nome especial para estes tipos: “classificadores”.
Geralmente, a gente pode pensar em um classificador como uma classe, mas na verdade, um classificador é um termo mais geral que refere também aos outros três tipos acima.
Propósito do uso de diagramas de classe
Nome da classe
A representação UML de uma classe é um retângulo contendo três compartimentos empilhados verticalmente, como mostrado no diagrama abaixo. O compartimento superior mostra o nome da classe. O
compartimento intermediário lista os atributos da classe. O compartimento inferior lista as operações (métodos) da classe.
NomeDaClasse nome : tipo do atributo
nome : tipo do atributo = valor padrão
nome(lista de parametros) : tipos de valores de retornos Quando modelamos um elemento classe num diagrama de classe, precisamos usar obrigatoriamente o compartimento superior; os demais são opcionais e podem ser representados como vazios.
Propósito do uso de diagramas de classe
Exemplo
Abaixo temos uma classe de um vôo de uma companhia aérea modelada em UML. Como podemos ver, o nome da classe é VooComercial, e no compartimento do meio, temos três atributos: numeroDoVoo,
horaDePatida e duracaoDoVoo. Finalmente, temos duas operações da classe: atrasoDeVoo e retornaHoraDeChegada.
VooComercial numeroDoVoo : Inteiro
horaDePartida : Data duracaoDoVoo : Minutos
Propósito do uso de diagramas de classe
Herança
Um conceito muito importante na modelagem orientada a objeto é a herança, que refere à habilidade de uma classe (classe filho) herdar funcionalidades idênticas à outra classe (classe mãe, super classe), e então, adicionar a nova funcionalidade para si própria.
Para modelar herança num diagrama de classe, uma linha sólida é desenhada da classe filha (classe herdando o comportamento) com uma seta fechada e não preenchida, apontando para a super classe.
Propósito do uso de diagramas de classe
Exemplo ContaBancaria titular : String saldo : Reais = 0 deposito(quantia : Reais) saque(quantia : Reais) VerificaConta fundosInsuficientes : Reais processaCheque ( chequeParaProcessar : Cheque )saque ( quantia : Reais )
ContaPoupanca rendimentoAnual : Porcenta-gem
rendimentoMensal ( ) saque ( quantia : Reais )
Associações
Quando modelamos um sistema, certos objetos serão relacionados entre eles, e estes relacionamentos precisam ser modelados por motivos de clareza. Há cinco tipos de associação. Falaremos agora de dois deles: unidirecional e bidirecinal.
Associações
Associação bidirecional
Uma associação é uma ligação entre duas classes. Assumimos que qualquer associação é bidirecional; isto significa que ambas as classes conhecem uma a outra e conhecem seu relacionamento, a não ser que seja qualificado como algum tipo.
Associações
Associação bidirecional VooComercial numeroDoVoo : Inteiro horaDaPartida : Data duracaoDeVoo : Minutos aeroportoDePartida : String aeroportoDeChegada : StringatrasoDeVoo ( numeroDeMinutos : Minutos ) horaDeChegada ( ) : Data Aviao tipoDeAviao : String velocidadeMaxima : KPH distanciaMaxima : Km identificacaoDeAviao : String aviaoAssociado 0..1 0..* vooAssociado
Associações
Associação unidirecional
Numa associação unidirecional, duas classe são relacionadas, porém apenas uma classe sabe da existencia do relacionamento. O diagrama abaixo mostra um exemplo de uma transação numa conta descoberta, com uma associação unilateral.
RelatorioDeContaDescoberta geradoEm : Data atualizar ( ) ContaBancaria titular : String saldo : Reais deposito(quantia : Reais) contasDescobertas 0..*
Associações
Interfaces
Uma classe e uma interface são distintas: uma classe pode ter uma instancia atual de seu tipo, enquanto uma interface deve ter ao menos uma classe que a implemente. Na UML, uma interface é considerada como sendo uma especialização de uma classe modelando um elemento. Contudo, uma interface é desenhada exatamente como uma classe, contudo seu compartimento superior do bloco "classe"em UML contém um texto "«interface»"como no diagrama abaixo.
<<interface>> Pessoa primeiroNome : String sobrenome : String
Associações
Agregação
Uma associação com um relacionamento de agregação indica que uma classe é parte de outra classe. Num relacionamento de agregação, a classe filho é uma instancia que pode existir sem a existencia da classe que a agrega. Para representar uma relação de agregação, desenhamos uma linha sólida da classe "todo"em direção a classe "parte", e desenhamos um losango não preenchido no lado do classe que precisa agregar componentes. O exemplo abaixo mostra a necessidade de um carro agregar quatro rodas, representado em UML.
Associações
Agregação Carro Roda temRodas 4Associações
Composição
Uma composição é apenas uma outra forma de relacionamento de agregação, onde a existencia da classe "parte"depende da classe "todo". Abaixo, vemos uma composição entre uma classe Departamento e uma classe Companhia. veja que o relacionamento é desenhado
semelhantemente, contudo, o losango é preenchido com preto.
Companhia
Departamento
temDepartamentos 1..*