UML – Diagrama de Classe
Conceitos Básicos
Prof. Ricardo Terra
Diferenciação entre classe e objeto
As classes formam o alicerce do diagrama de classes. Assim, para
trabalhar com diagrama de classes, você precisa ter uma noção
clara da diferença entre classes e objetos. Portanto:
Classe é a definição para um recurso. Ela inclui informações que
descrevem os recursos de uma entidade e como ela pode ser utilizada
Objetos, ao contrário, são instâncias de uma classe. Pode-se dizer que
um objeto é uma entidade identificável de forma exclusiva de acordo
com as regras definidas pela classe
Linguagem e Técnica de Programação III 2
Diagrama de Classes
“Se alguém chegar perto de você em um beco escuro e disser:
“Psiu, quer ver um diagrama UML:”, esse provavelmente seria um
diagrama de classes. A maioria dos diagramas UML que vejo é
composta por diagrama de classes.” (FOWLER, 2005)
“O diagrama de classes provavelmente é o diagrama mais utilizado
da UML. Na verdade, o diagrama de classes é a ferramenta de
modelagem principal para descrever a própria UML.” (PENDER,
2004)
Linguagem e Técnica de Programação III 3
Diagrama de Classes
Um diagrama de classes descreve os tipos de objetos presentes no
sistema e os vários tipos de relacionamento estáticos existentes
entre eles
Os diagramas de classe também mostram as propriedades e
operações de uma classe e as restrições que se aplicam à maneira
como os objetos estão conectados
Linguagem e Técnica de Programação III 4
Classe
Uma classe é uma descrição de um conjunto de objetos que
partilham os mesmos atributos, operações, relações e semântica
Por exemplo, na classe Cliente, "João da Silva" pode ser
considerado um dos objetos em um sistema que pretende
manipular informação referente aos clientes de uma empresa
Linguagem e Técnica de Programação III 5
Classe
Uma classe é descrita por seus aspectos estruturais através de
seus atributos e através de seus aspectos comportamentais através
de suas operações
Uma classe (seus atributos e operações) pode ser detalhada
através de sua visibilidade e sua multiplicidade. Uma classe é
representada como mostrado no desenho abaixo:
Linguagem e Técnica de Programação III 6
Operações e Atributos de uma Classe
Uma classe é definida nos seus aspectos estruturais através de
seus atributos e nos seus aspectos comportamentais através de
suas operações
Uma classe não tem necessariamente que corresponder a uma
entidade humana ou, mais genericamente, a uma entidade com
representação física (por exemplo, uma fatura)
Pode-se representar entidades mais abstratas (por exemplo, venda)
Linguagem e Técnica de Programação III 7
Atributos de uma Classe
Atributo da classe
São propriedades semelhantes que os objetos de uma classe possuem.
O "João da Silva" além do nome, também é caracterizado por outros
atributos, como endereço, número do contribuinte, cpf, rg, etc
Cada atributo permite definir um intervalo de valores que as instâncias
dessa propriedade podem apresentar
Meu carro é branco, o seu é preto
Essas propriedades de carro são descritas pelo atributo cor
Linguagem e Técnica de Programação III 8
Atributos de uma Classe
Tanto nos atributos quanto nas operações de uma classe podem
ser especificados detalhes de sua visibilidade e de sua
multiplicidade
A sintaxe básica de um atributo é:
[visibilidade] nome-do-atributo : [tipo] { =valor-inicial }
Exemplos:
+ nome : String
- salario : double = 1000.00
# nota : int
Linguagem e Técnica de Programação III 9
Operações de uma Classe
Operações da Classe
O João da Silva possui uma identidade própria, isto é, para a empresa,
ele é distinto de todos os outros clientes
Essa identidade não é só descrita pelos atributos. Todos os objetos de
uma classe podem fazer alguma coisa (um serviço) ou pode-se fazer
com ele alguma coisa
As operações são responsáveis pela efetivação dos serviços prestados
pelas classes
Sobre o cliente "João da Silva" pode-se efetuar várias operações como
emitir-lhe faturas, alterar seu endereço, apagá-lo da base de dados, etc
Linguagem e Técnica de Programação III 10
Operações de uma Classe
A sintaxe básica de uma operação é:
[visibilidade] nome-da-operação ( [lista-de-parâmetros] ) : [tipo-retorno]
Exemplos:
- mostrar() : void
+ calcularTaxa( valorDolar : double ) : double
# somar (a : int , b: int ) : int
Linguagem e Técnica de Programação III 11
Operações e Atributos Estáticos
Uma operação ou um atributo que não pertence a uma instância da
classe, mas à classe como um todo é chamado de operação e
atributo estático, respectivamente
Operações e atributos estáticos são compartilhados por todas as
instâncias da classe, mas não pertence a nenhuma instância
Linguagem e Técnica de Programação III 12
Visibilidade
Os atributos e operações de uma classe podem ser especificados
para mostrar como a mesma pode ser vista e utilizada pelos outros
elementos do sistema
Os níveis de visibilidade para o atributo ou a operação:
(+) PÚBLICO:
Todas as classes visualizam
(-) PRIVADO:
Somente a própria classe visualiza
(#) PROTEGIDO:
Todas as classes do mesmo pacote e sub-classes visualizam
(~) PACOTE:
Todas as classes do mesmo pacote visualizam
Linguagem e Técnica de Programação III 13
Visibilidade
Exemplo:
Somente a própria classe tem acesso direto aos atributos do veículo
Qualquer classe pode ligar ou desligar o veículo
Somente classes do mesmo pacote ou sub-classes podem acelerar ou
frear o veículo
Somente a própria classe pode ativar o ABS
Somente classes do mesmo pacote podem ver o consumo do veículo
Linguagem e Técnica de Programação III 14
Associação
Outra maneira de se criar um atributo é através de uma
associação
Associação é uma linha cheia entre duas classes, direcionadas
da classe de origem para a classe de destino. A direção pode
ser nos dois sentidos, o que gera uma Associação Bidirecional
Exemplo:
Este exemplo indica que um objeto NotaFiscal possui pelo menos
um objeto ItemNotaFiscal.
Linguagem e Técnica de Programação III 15
Associação
Ainda no exemplo:
Como pode ser visto não deve-se colocar uma associação como
atributo, pois a própria associação já nos diz isto
O código Java ficaria assim:
public class NotaFiscal {
private List<ItemNotaFiscal> itensNotaFiscal;
...
}
public class ItemNotaFiscal{
private NotaFiscal notaFiscal;
...
}
Linguagem e Técnica de Programação III 16
Classes Associativas
Algumas associações de muitos para muitos exige a necessidade
da criação de uma classe associativa entre as duas classes
associadas
No exemplo abaixo existe a classe Paciente com seus atributos e a
classe Exame com seus atributos. Do relacionamento entre
Paciente e Exame, tem-se a data da realização e o diagnóstico
Observe:
Linguagem e Técnica de Programação III 17
Multiplicidade
A multiplicidade de uma classe é o número de instâncias possíveis
que uma classe pode ter considerando uma única instância da outra
classe a qual ela é associada. Ou seja, é o número de objetos de
uma classe que pode relacionar com um único objeto de uma outra
classe
Multiplicidades são números simples ou intervalos de números. A
tabela abaixo exemplifica os tipos comuns de multiplicidades
0..1 Uma instância opcional.
1 Exatamente uma instância.
0..* Zero ou mais instâncias.
1..* Pelo menos uma instância.
Linguagem e Técnica de Programação III 18
Multiplicidade
No exemplo abaixo, um pedido pode estar vinculado a um único
cliente, porém um cliente poderá possuir qualquer quantidade de
pedidos
E esses?
Linguagem e Técnica de Programação III 19
Generalização
Trata-se da ação de uma classe herdar toda a estrutura de uma
outra classe
Uma sub-classe sempre herda de sua super-classe:
Atributos
Operações
Relacionamentos
Uma sub-classe pode:
Adicionar atributos e operações
Adicionar relacionamentos
Sobrepôr (override) operações herdadas
Sobrecarregar (overload) operações herdadas
Uma sub-classe sempre herda tudo de sua super-classe, isto é, não
tem como herdar somente alguns atributos ou operações.
Linguagem e Técnica de Programação III 20
Generalização
Exemplo:
ContaCorrente é um tipo de Conta
ContaPoupanca é um tipo de Conta
Linguagem e Técnica de Programação III 21
Pacotes
Um pacote é um mecanismo de agrupamento
Pode ser utilizado para agrupar qualquer elemento UML (como
casos de uso, atores, classes, componentes e outros pacotes)
Geralmente utizada para especificar uma distribuição lógica
Linguagem e Técnica de Programação III 22
Pacotes
Os pacotes em um diagrama de classes são altamente utilizados,
pois, na implementação do sistema, a organização das classes são
sempre feitas utilizando pacotes
Linguagem e Técnica de Programação III 23
Notas e Comentários
Assim como todo diagrama UML pode ser inseridos notas ou
comentários
Linguagem e Técnica de Programação III 24
Cuidado
Diagrama de Classes não é um modelo ER
O maior perigo com os diagramas de classes é que você pode
focalizar exclusivamente na estrutura e ignorar o comportamento
Linguagem e Técnica de Programação III 25
Referência Bibliográfica
FOWLER, Martin. UML Essencial. 3 ed. Porto Alegre: Bookman,
2005.
PENDER, Tom. UML, a Bíblia. 2 reimp. Rio de Janeiro:
Campus, 2004.
Linguagem e Técnica de Programação III 26
Гораздо больше, чем просто документы.
Откройте для себя все, что может предложить Scribd, включая книги и аудиокниги от крупных издательств.
Отменить можно в любой момент.