Diagrama de Classes e
Diagrama de Objetos
Abstração e Classificação
• Uma abstração denota as características essenciais de um objeto
que o distingue de todos os outros tipos de objetos e, portanto,
fornece limites conceituais definidos claramente, relativos à
perspectiva do observador.
• Enfoca a visão externa do objeto e, assim, serve para separar um
comportamento essencial do objeto de sua implementação (a
interface de um objeto fornece seu comportamento essencial ou
métodos públicos e nada mais).
A orientação a objetos estimula os programadores e usuários a pensarem sobre
aplicações em termos abstratos. Começam com um conjunto de objetos para os
quais criam um comportamento comum e encaixam em superclasses abstratas.
As bibliotecas de classe detêm um depósito de elementos comuns e reutilizáveis e
a herança mantém automaticamente as relações entre classes organizadas
hierarquicamente na biblioteca. Além disso, cada nível de abstração faz com que
o trabalho fique mais fácil, pela maior disponibilidade de codificação reutilizável.
Herança
Na Herança Simples, os métodos e atributos definidos na superclasse
são refletidos em todas as subclasses da hierarquia.
Forma
origem
mover()
exibir()
Retângulo
ponto : Ponto
Círculo
raio : float
Polígono
pontos : ListaDePontos
exibir()
Quadrado
Herança
Na Herança Múltipla, há mais de uma superclasse para uma mesma
subclasse, das quais ela herda os métodos e atributos.
Veículo
Veículo Terrestre
Veículo Aquático
Veículo Anfíbio
Tipos de Classes
• Há três tipos de classes numa hierarquia:
– Classe base é a raiz da hierarquia, a superclasse de todas as classes.
Os métodos e atributos definidos nesta classe são refletidos em todas
as classes da hierarquia. Define o comportamento do objeto.
– Classes abstratas são superclasses que contém a definição de
comportamento de todo um ramo da hierarquia, porém sem
implementá-lo (somente a declaração dos métodos). Nunca são
instanciadas.
– Classes concretas são localizadas geralmente nas extremidades da
hierarquia. Em um programa OO, os objetos são instanciados a partir
dessas classes.
Telefone
A classe Telefone não pode ser
instanciada. Telefone Convencional e
Telefone Celular são concretas,
implementam os métodos e podem
ser instanciadas.
Telefone Convencional
Telefone Celular
Classes
• Em UML as classes são representadas por um retângulo dividido
em três compartimentos:
– o compartimento de nome, que conterá
apenas o nome da classe modelada
– o de atributos, que possuirá a relação de
atributos que a classe possui em sua
estrutura interna
– o compartimento de operações, que serão os
métodos de manipulação de dados e de
comunicação de uma classe com outras do
sistema.
Cliente
Nome : String
Idade : Num
Criar ()
Destruir ()
Variações de Representação
Indivíduo
Indivíduo
código: int
sexo: char
nome: String
Indivíduo
inluir()
atualizar()
Indivíduo
código: int
sexo: char
nome: String
inluir()
atualizar()
Atributos
• Um atributo representa alguma propriedade do que está
sendo modelado, que é compartilhada por todos os objetos da
classe.
• Os atributos descrevem os dados contidos nas instâncias de
uma classe.
• Em um momento dado, um objeto de uma classe conterá
valores para todos os atributos descritos na sua classe.
Cliente
nome
endereço
telefone
Atributos de uma classe
podem ser identificados
apenas com seus nomes
ou
podem ter seus tipos (ou
classes) especificados e ter
valores padrão definidos
Parede
altura : real
largura : real
espessura : real
viga : boolean = false
Operações
• Uma operação é uma abstração de alguma coisa que se pode
fazer com um objeto e que é compartilhada por todos os objetos
da classe.
• Um classe pode ter qualquer número de operações, inclusive
nenhuma.
Como para os atributos, pode-se especificar uma
operação apenas com seu nome
ou
pode-se também especificar a assinatura da
operação: seus parâmetros, o tipo desses
parâmetros e o tipo de retorno
Retângulo
mover()
aumentar()
diminuir()
Visibilidade
• Pode-se usar marcações de acesso para especificar o tipo de
acesso permitido aos atributos e operações.
Classificador:
classes, interfaces, componentes, nós, use cases, subsistemas.
+ público: todos os classificadores podem usar.
- privado: somente o próprio classificador poderá usar.
# protegido: qualquer descendente do classificador
poderá usar.
Relacionamentos
• Poucas classes vivem sozinhas. A maioria das classes colabora com
outras classes de várias maneiras.
• Os relacionamentos ligam as classes/objetos entre si, criando relações
lógicas entre essas entidades.
• Os relacionamentos podem ser dos seguintes tipos:
- Associação
- Agregação
- Composição
- Generalização
- Dependência
- Refinamento
Interfaces
• Uma interface é um conjunto de operações usado para especificar
um serviço de uma classe ou componente.
• Diferentemente das classes, as interfaces não especificam
nenhuma estrutura e não podem conter atributos (especificam o
contrato para uma classe ou componente, sem definir como ele
será implementado).
• O uso de interfaces é uma maneira elegante e poderosa de isolar a
especificação da implementação, um relacionamento entre uma
especificação e sua implementação.
Interfaces (notação)
<<interface>>
Empregado
verificarFicha()
calcularSalário()
| Empregado
Realização (notação)
<<interface>>
Empregado
Empregado_Impl
verificarFicha()
calcularSalário()
Empregado_Impl
Empregado
Diagrama de classes
Conteúdo:
Classes
Interfaces
Colaborações
Relacionamentos de dependência, generalização e associação
• Os diagramas de classes são os principais diagramas
estruturais da UML.
• Diagramas de classe mostram classes, interfaces e os
relacionamentos entre esses elementos.
• As classes especificam a estrutura e o comportamento dos
objetos.
• Objetos são instâncias de classes.
Diagrama de classes
Cliente
Pedido
-nome: String
-endereco: String
-dataPrimeiraCompra: Date
-dataUltimaCompra: Date
-totalComprado: Currency
-codigo: Integer
-dataRecebido
-total: Currency
+confirmar()
+cancelar()
-calcularTotal():Currency
gerarNovoCodigo: String
itens
#creditoPermitido: Currency
#nivelCredibilidade()
*
Item de Pedido
-quantidade: Integer
-preco: Currency
-emEstoque: Boolean
Cliente pessoa-jurídica
nomeContato: String
telefones[1..10]: String
CNPJ: String
FAX[1..3]: String
Cliente pessoa-física
nome: String
CPF: String
numCartaoCredito
colocarListaNegra()
*
Produto
representante
de vendas
*
Empregado
IPessoa
Objetos
• Um objeto é um elemento que podemos manipular, acompanhar
seu comportamento, criar, destruir etc. Um objeto existe no
mundo real, podendo ser uma parte de qualquer tipo de sistema,
por exemplo, uma máquina, uma organização ou negócio.
Existem objetos que não encontramos no mundo real, mas que
podem ser vistos de derivações de estudos da estrutura e
comportamento de outros objetos do mundo real.
• Em UML um objeto é mostrado como uma classe, só que seu
nome é sublinhado e pode ser mostrado opcionalmente com o
nome da classe.
• Os diagramas de objetos mostram uma “fotografia” de um
sistema OO em execução. São mostrados os objetos, com os
valores de seus atributos e as ligações entre eles. São úteis para a
modelagem de estruturas de dados complexas, depuração etc.
Objetos
Representação de um objeto
Marcia Moita:Cliente
Nome do Objeto
Nome : “Marcia Moita”
Idade : 20
Atributos
Criar ()
Destruir ()
Operações
Objetos simples
: Curso
codCurso: "IF291"
descrição: "MPS"
codTurma: I7
George Bush
Jaelson: Professor
: Aluno
Monica: Aluno
Fulano :
Multiobjetos
• Multiobjetos são conjuntos de objetos, com um número
indeterminado de elementos.
• São usados, por exemplo, em diagramas de colaboração para
modelar uma mensagem enviada para vários objetos ao mesmo
tempo.
p2: Profe s s or
1: cadeira :=
encontrar(número)
c3: Curs o
c1: Curs o
Agente de
Reservas
: Cadeira
c2: Curs o
: Aluno
: Aluno
2: reservar(nomeCliente)
: Cadeira
Multiobjetos
Diagrama de objetos
•
É comum haver centenas ou milhares de objetos em um
sistema em execução, a maioria deles anônimos, por isso o
diagrama de objetos mostra apenas uma parte dos objetos
no sistema.
• Diagramas de objetos são estáticos e não mostram a evolução
do sistema com o tempo.
• Para mostrar o comportamento de um objeto, deve-se usar
diagramas de comunicação, diagramas de seqüência ou
diagramas de estados.
• É comum colocar um diagrama de classes junto com um
diagrama de objetos, para facilitar a identificação dos objetos.
Diagrama de objetos
Curso
Professor
ministra
-matrícula: String
-nome: String
[1..3]
[1..5]
-codDisciplina: String
-descrição: String
-codTurma: String
Aluno
* -matrícula: String
-nome: String
-período: Integer
[0..10]
p1: Prof essor
p2: Prof essor
matricula: "205-6712-09"
nome: "Jaelson Castro"
c1: Curso
: Curso
c2: Curso
: Curso
codCurso: "IF291"
descrição: "MPS"
codTurma: I7
codCurso: "IF185"
descrição: "AER"
codTurma: I6
c3: Curso
: Aluno
: Aluno
: Aluno
: Aluno
: Aluno
:aluno
Bill
matricula: "219846534"
nome: "Nelson Mandella"
:aluno
matricula: "562746134"
nome: "John Major"
: Aluno
Lew insky
Download

classesobjetos2