Escolar Documentos
Profissional Documentos
Cultura Documentos
Diagrama de Classes
Classe / Objeto
Classe
●
As classes são os blocos de construção mais
importantes de qualquer sistema orientado a
objetos;
●
uma classe é uma descrição de um conjunto de
objetos que possuem os mesmos:
●
atributos,
●
operações (métodos),
●
relações e
●
semântica.
●
Uma classe pode implementar uma ou mais
interfaces.
Classe
●
As classes são representadas por um retângulo dividido
em três compartimentos:
●
o de nome, que conterá apenas o nome da classe
modelada:
– o nome da classe sempre se inicia com uma letra maiúscula e
– se o nome da classe estiver em itálico, significa que esta é uma classe
abstrata;
●
o de atributos, que possuirá a relação de atributos
(variáveis) que a classe possui em sua estrutura interna e
que representam suas características e
●
o de operações, que possuirá os métodos (funções) de
manipulação de dados (valores armazendos nos atributos)
e de comunicação de uma classe com outras do sistema.
Classe
●
De acordo com Guedes (2011, p. 103), não é
realmente obrigatório que uma classe apresente as
três divisões, pois, pode haver classes que não
tenham atributos ou que não contenham métodos.
Ou pode acontecer ainda que seus atributos e
métodos não precisem ser apresentados no
diagrama, já que é recomendado apresentar apenas
atributos relevantes ao diagrama. Isto para evitar, por
exemplo, tornar o diagrama muito poluído. Assim, é
possível encontrar classes com somente duas
divisões ou mesmo com apenas uma, no caso, aquela
que contém a descrição (nome) da classe, porque
esta é obrigatória.
Classe
●
Representação gráfica:
Nome da
classe
Atributos da
classe
Métodos da
classe
Tipos de Relacionamentos /
Associação
●
Associação simples
●
Herança
●
Realização
●
Dependência
●
Agregação
●
Composição
Conceitos
●
Nome da classe em itálico
chamada de classe abstrata significa que não poderão existir objetos instânciados
desta classe;
●
atributo contendo uma “/” (barra) antes do nome
significa que o atributo é estático, ou seja, todos os objetos que forem intanciados
daquela classe compartilharão o mesmo atributo. Se o valor do atributo em questão
sofrer uma alteração em alguma das instâncias, todas as outras enxergarão a
mudança;
●
atributo com sinal de “=” após o tipo seguido de um valor
Conceitos
●
Multiplicidade em “atributos” e “relacionamentos”
Símbolo Significado
0..1 No mínimo 0 (zero ou nenhum) e no máximo 1 (um)
1 Idêntico a 1..1
* Idêntico a 0..*
Conceitos
●
Visibilidade de “atributos” e “métodos”
Símbolo Significado
+ Público (public)
- Privado (private)
# Protegido (protected)
~ Pacote (package)
Atributo
Estático
Atributo
Classe
Abstrata
Conceitos
Protegido
Atributo
Privado
Inicialização
do atributo
Método
Público
Multiplicidade
Atributo
Calculado
Objetos
Objetos
Objetos
Fonte: <https://pt.aliexpress.com/item/32849196131.html>. Acesso em: 23 Out. 2019.
Objetos Objeto
Fonte: <https://pt.aliexpress.com/item/32797936162.html>. Acesso em: 23 Out. 2019.
Objeto
●
É um elemento que podemos manipular,
acompanhar seu comportamento, criar, destruir e
etc.;
●
um objeto que existe no mundo real pode ser
uma parte de qualquer tipo de sistema. Por
exemplo: uma máquina, uma organização ou um
negócio e
●
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.
Objeto
●
Em UML um objeto é mostrado na forma
de uma classe, só que seu nome é
sublinhado e pode ser mostrado,
opcionalmente, seguido do nome da
classe.
Associação
Tipos de Associação
●
Uma classe pode possuir um ou mais atributos
que são objetos de outras classes;
●
este tipo de relacionamento é chamado de
ASSOCIAÇÃO e se subdivide em quatro subtipos:
●
Autorrelacionamento,
●
Associação Simples ou Binária;
●
Agregação e
●
Composição.
Modelo de Associação
●
De acordo com Bezerra (2007, p. 117), para melhor
esclarecer o significado de uma associação no diagrama
de classes, a UML define três recursos de notação:
●
nome de associação,
●
direção de leitura e
●
papel. Nome da
associação
Papel Papel
Direção de
leitura
Papéis
●
Informação que pode ajudar no entendimento das associações
entre as classes;
●
podem ajudar a explicar o porquê de uma função ou de um
objeto (o papel que este representa) dentro da associação;
●
no slide a seguir ver-se-á dois papéis especificados no diagrama:
●
chefe e
●
subordinado
●
ambos os papéis especificados possuem visibilidade pública (+).
●
Além dos papéis, poder-se-á ver também que ao relacionamento foi
dado um nome, chefia e
●
que a multiplicidade foi especificada, ou seja, um funcionário chefia
nenhum ou muitos funcionários (0..*).
Autorrelacionamento
Papel
Classe “Funcionário”:
Multiplicidade
explícita
Direção
de
leitura
1..1
Nome do
Multiplicidade Papel relacionamento /
implícita associação
Associação Simples
ou Binária
●
Estabelece uma relação simples entre as classes. Ou
seja:
●
são 2 objetos independentes um do outro,
●
eles não estabelecem uma relação de todo-parte.
●
Representada por um traço entre as classes:
●
este traço pode ser apenas um traço ou
●
pode possuir uma seta representando a navegabilidade,
que segundo Guedes (2011, p. 110) define em que
sentido os métodos poderão ser disparados;
●
Exemplo:
●
um funcionário possui dependente(s).
Unidade 05 – Diagrama de Classes 20
Análise e Projeto Orientados a Objetos
Prof. Edwar Saliba Júnior
Associação Simples
Objeto
Dependente
Objeto
Funcionário
Objeto
Dependente
PAI
MÃE
FILHO
Associação Simples
●
Reforçando:
●
estes são objetos independentes.
Associação Simples
Objeto
Empresa
Objeto
Funcionário Objeto
Funcionário
Objeto Objeto Objeto
Funcionário Funcionário Funcionário
Agregação
●
Estabelece uma relação “todo-parte” entre as
classes, sendo que a parte pode existir sem o
todo e
●
é representada por uma linha com um
losango aberto no lado “todo”.
●
Exemplo: carro e roda. Roda é parte de um
carro, porém ela é um objeto que pode existir
sem o carro.
Agregação
Objeto maior Objetos menores
que é formado que existem
por diversos independentemente
outros objetos do objeto maior
menores. existir ou não.
Objetos “parte”
existem indepen-
Objeto “todo”. dentemente do
“todo” existir.
Agregação
Objeto Objeto
Carro Banco
Objeto
Roda
Objeto
Volante
CULTURA MIX. Mini Roadster. Disponível em: <https://autos.culturamix.com/dicas/carros-conversiveis>. Acesso em: 16 jan. 2020.
Composição
●
Estabelece um relação “todo-parte” entre as
classes. Sendo que a parte não existe sem o
todo e
●
é representada por uma linha com um
losango cheio do lado “todo”.
●
Exemplo: pedido e itens de pedido. Se o
pedido for destruído os itens que o compõem
também deverão ser.
Composição
Objeto “parte” só existe
Objeto “todo”. se o “todo” também existir.
Objeto Composição
Pedido
Objeto
Item
Objeto
Item
Objeto
Item
Objeto
Item
.
.
.
Unidade 05 – Diagrama de Classes 31
Análise e Projeto Orientados a Objetos
Prof. Edwar Saliba Júnior
Composição
O software ArgoUML
representa a multi-
plicidade depois do
nome do atributo ao
invés de depois do
tipo do atributo.
Composição
Objeto
RevistaCientífica
Objetos
Artigo
{estão dentro
da revista}
Associação N-ária
●
Associação n-ária é aquela que se dá com 3 ou mais
classes e em que todas as relações são de muitos para
muitos.
●
Exemplo:
●
Observação: este tipo de associação deve ser evitada.
Classe Associativa
●
Segundo Guedes (2011, p. 115), são aquelas
produzidas quando da ocorrência de
associações que tenham multiplicidade
muitos (*) em todas as extremidades e
●
são necessárias nos casos em que existem
atributos relacionados à associação e que não
podem ser armazenados por nenhuma das
classes envolvidas.
Classe Associativa
●
De acordo com Blaha e Rumbaugh (2006, p. 37),
deve-se tomar cuidado para não confundir uma
classe associativa com uma associação que foi
promovida a uma classe.
●
A classe associativa tem apenas uma ocorrência
para cada par de Pessoa e Empresa (exemplo no
próximo slide) e
●
numa associação que foi promovida a classe,
pode haver qualquer quantidade de ocorrências
de uma Compra para cada Pessoa e Empresa
(exemplo no próximo slide).
Classe Associativa
Classe
associativa
Classe
normal
Classe Associativa
●
Uma classe associativa pode ser
substituída por uma classe ordinária
(comum). (Bezerra, 2007, p. 120)
●
Na prática, ou seja, na construção do
código-fonte, é exatamente isto que
acontece.
Dependência
Dependência
●
Como o próprio nome diz, identifica certo grau de
dependência de uma classe em relação a outra.
●
O relacionamento de dependência é representado por
uma linha tracejada entre duas classes contendo uma
seta apontando para a classe da qual se depende
(Guedes, 2011, p. 116) e
●
ocorre quando:
●
uma classe tem um atributo cujo o tipo é outra classe
ou
●
um método possui um parâmetro cujo o tipo é outra
classe e
●
etc.
Unidade 05 – Diagrama de Classes 40
Análise e Projeto Orientados a Objetos
Prof. Edwar Saliba Júnior
Dependência
●
Um relacionamento de dependência é um
relacionamento no qual um elemento, o Cliente, usa
ou depende de outro elemento, o Fornecedor;
●
um relacionamento de dependência também pode ser
utilizado para representar precedência, em que um
elemento de modelo deve preceder outro e
●
geralmente, os relacionamentos de dependência não
têm nomes.
IBM. Disponível em: <https://www.ibm.com/support/knowledgecenter/pt-br/SSCLKU_7.5.5/com.ibm.xtools.modeler.doc/topics/
cdepend.html>. Acesso em: 20 jan. 2020.
Dependência
●
O relacionamento de dependência serve, principalmente,
para conectar duas classes e indicar que a conexão entre
elas está em um nível superior de abstração, se comparado a
um relacionamento de associação.
●
O relacionamento de dependência indica que a classe Cliente
executa uma das seguintes funções:
●
utiliza temporariamente uma classe Fornecedor que possui escopo
global
●
utiliza temporariamente uma classe Fornecedor como um
parâmetro para uma de suas operações
●
utiliza temporariamente uma classe Fornecedor como uma variável
local para uma de suas operações ou
●
envia uma mensagem para uma classe Fornecedor.
IBM. Disponível em: <https://www.ibm.com/support/knowledgecenter/pt-br/SSCLKU_7.5.5/com.ibm.xtools.modeler.doc/topics/
cdepend.html>. Acesso em: 20 jan. 2020.
Realização
Realização
●
Uma realização é um relacionamento
semântico entre classificadores, em que um
classificador especifica um contrato que outro
classificador garante executar.
●
Realizações serão encontradas em dois
locais:
●
entre interfaces e as classes ou componentes
que as realizam e
●
entre casos de uso e as colaborações que os
realizam. (Booch et al., 2000, p. 24)
Realização
●
O relacionamento de realização é uma linha
pontilhada com uma seta vazada na ponta.
Unidade 05 – Diagrama de Classes 45
Análise e Projeto Orientados a Objetos
Prof. Edwar Saliba Júnior
Generalização / Especialização
(Herança)
Reutilização / Reuso
●
São palavras-chave no conceito de herança.
●
Reutilizar um código que já tenha sido escrito, e
que já esteja sendo utilizado por um outro
software é muito bom, pois:
●
evita-se “reinventar a roda”;
●
economiza-se tempo de desenvolvimento;
●
aumenta-se a qualidade do software, pois, partes
reutilizadas já foram testadas e depuradas e
●
diminui-se o custo para produção do software.
Herança
●
É um recurso que permite que novas classes sejam
definidas a partir de classes já existentes;
●
na UML representa o relacionamento do tipo “é um”;
●
na hierarquia de classes:
●
superclasse (ou ascendente): são as ascendentes de
um classe;
●
subclasse (ou descendente): são as descendentes
de uma classe;
●
classe Mãe: é a ascendente direta de uma classe e
●
classe Filha: é a descendente direta de uma classe.
Herança
Generalização
●
Pessoa é superclasse
de Funcionário e de
Cliente;
●
Funcionário e Cliente
são subclasses de
Pessoa;
●
Funcionário e Cliente
herdam as definições da
classe Pessoa. Ou seja,
herdam atributos e
métodos da
superclasse.
Especialização Especialização
Herança
Herança
l Corrente possui como atributos:
especial,
limiteChequeEspecial e
contaEspecial
possui também:
agência,
número,
nome e
saldo
pois, herda estes últimos da classe Conta;
Interface
Conceito
●
Interfaces:
●
definem e padronizam coisas;
●
muito útil quando se utiliza polimorfismo
(conceito que veremos em breve!);
●
especifica quais operações um objeto deve
possuir, mas não especifica como essas
operações são realizadas e
●
descrevem um conjunto de métodos que
deverão ser criados pelas classes que as
implementarem.
Interface
●
Sua declaração inicia-se com a palavra-chave interface e
contém somente constantes e métodos abstract;
●
todos os membros de uma interface devem ser public;
●
interfaces não podem especificar nenhum detalhe de
implementação como:
●
declarações de métodos concretos e/ou
●
variáveis de instância;
●
todos os métodos declarados em uma interface são
implicitamente: public abstract e
●
todos os campos são implicitamente: public, static e
final.
Interface
Restrições
Restrições
●
De acordo com Blaha e Rumbaugh (2006, p. 80), uma
restrição é uma condição booleana envolvendo
elementos do modelo, como:
●
objetos,
●
classes,
●
atributos,
●
ligações,
●
associações e
●
conjuntos de generalizações.
●
Uma restrição limita os valores que os elementos
podem assumir.
Unidade 05 – Diagrama de Classes 58
Análise e Projeto Orientados a Objetos
Prof. Edwar Saliba Júnior
Restrições
●
Constituem-se em informações extras que definem condições a serem validadas
durante a implementação:
●
dos métodos de uma classe,
●
das associações entre as classes ou
●
dos seus atributos. (Guedes, 2011, p. 120)
●
São representadas por textos (formais ou informais) limitados por chaves;
●
é comum colocar a restrição dentro do componente UML usado para “notas” (um
papelzinho com a pontinha superior dobrada). Mas isto não é uma regra!
●
Para especificar uma restrição (constraint) pode-se usar:
●
linguagem natural, por exemplo: Português, Inglês e etc.;
●
linguagem de programação, por exemplo: Java, C, Python e etc.;
●
linguagem matemática ou
●
uma Object Constraint Language (OCL), que é uma linguagem formal para
especificação de restrições (
https://en.wikipedia.org/wiki/Object_Constraint_Language).
Restrições
Restrição em
uma associação.
Restrições
Restrições em
atributos.
Restrições
Restrição com
“ou” exclusivo.
OCL
OCL
OCL
●
Para Generalização / Especialização (Herança):
●
disjoint (disjuntos ou separados): as subclasses
são mutuamente exclusivas. Cada objeto pertence
a exatamente um das subclasses;
●
overlapping (sobreposto): as subclasses podem
compartilhar alguns objetos. Um objeto pode
pertencer a mais de uma subclasse;
●
complete: a generalização lista todas as possíveis
subclasses e
●
incomplete: a generalização pode estar com
algumas subclasses faltando.
OCL
Collections
Introdução
●
Java fornece implementação de Estruturas de
Dados recorrentemente utilizadas. Exemplos:
●
Fila,
●
Pilha,
●
Lista e
●
Hash;
●
estas estruturas são denominadas collections
(coleções) e
●
o programador as utiliza sem se preocupar
com a forma como foram implementadas.
Unidade 05 – Diagrama de Classes 69
Análise e Projeto Orientados a Objetos
Prof. Edwar Saliba Júnior
Collections
●
Em Java, uma coleção:
●
é um objeto,
●
pode armazenar referências a outros objetos e
●
possui um iterator (mecanismo que provê
interação com os objetos contidos na coleção).
●
Exemplos de coleções:
●
HashSet,
●
HashMap,
●
ArrayList e
●
etc.
Arranjos
Array
●
Classe java.util.Arrays;
●
este pacote fornece métodos estáticos (static) para
manipulação de arranjos.
●
Dentre os diversos métodos existentes destacam-se:
●
sort – Ordena os elementos de um arranjo,
●
copyOf – Faz uma cópia de um arranjo e
●
equals – compara dois arranjos.
List
●
java.util.List interface de Java que define
listas;
●
A interface List é implementada por:
●
Vector (em desuso!): uma implementação
para arranjos em Java 1.0 antes das coleções
serem implementadas;
●
ArrayList: realiza basicamente as mesmas
operações que Vector, porém, com melhor
desempenho e
●
LinkedList: implementação para listas
encadeadas.
Lista
Stack
●
Nesta coleção o primeiro elemento que entra é o último a
sair;
●
Classe java.util.Stack;
●
Principais métodos:
●
peek: verifica o elemento do topo da pilha;
●
pop: retira o elemento do topo da pilha;
●
push: coloca um elemento no topo da pilha e
●
empty: verifica se a pilha está vazia.
Stack (Pilha)
PXHERE. Pilha de Pratos. Disponível em: <https://pxhere.com/pt/photo/1234972>. Acesso em: 17 jan. 2020.
HashSet
●
Um conjunto não pode conter elementos
duplicados;
●
java.util.Set é a interface que define
conjuntos em Java e
●
a classe java.util.HashSet é uma
classe que implementa a interface Set.
HashSet
Adaptado de: NUNES, Vitor. Queres aprender Matemática?. Disponível em: <https://www.matematica.pt/faq/subconjunto-
conjunto.php>. Acesso em: 17 jan. 2020.
HashMap
●
Mapas (mapeamento):
●
associam chaves a valores e
●
as chaves não podem ser duplicadas.
●
Diferença entre mapa e conjuntos:
●
conjuntos possuem somente valores e
●
mapas possuem chaves que são associadas
a valores.
HashMap
Polimorfismo
Polimorfismo
Considere que o código-fonte das classes deste
diagrama foi criado.
Polimorfismo
ArrayList<Figura> figs
Polimorfismo
●
Função polimórfica
Polimorfismo
●
Outra função polimórfica
Pacotes
●
Pode-se colocar um modelo de classes em
uma única página para muitos problemas de
pequeno e médio porte.
●
Porém, normalmente é muito difícil fazer isto
com um modelo grande.
●
Recomenda-se então, que os modelos
grandes sejam particionados de modo que as
pessoas possam entendê-los. Para isto usam-
se “pacotes” (packages).
texto adaptado de Blaha e Rumbaug (2006, p. 83)
Pacotes
●
Um pacote é um grupo de elementos (classes,
associações, generalizações e pacotes) com
um tema comum;
●
um pacote particiona o modelo tornando-o
mais fácil de ser entendido e gerenciado;
●
aplicações grandes podem exigir várias
camadas de pacotes e
●
esta é a notação para pacotes:
Pacotes
Estereótipos
Estereótipos
●
Denominam uma maneira de destacar determinados
componentes do diagrama, tornando explícito que tais
componentes executam alguma função um pouco
diferente dos demais componentes;
●
existem vários estereótipos predefinidos na UML;
●
a UML permite a criação de estereótipos particulares e
●
existem estereótipos gráficos (figuras) e textuais (entre
aspas francesas). (Guedes, 2011, p. 126-127)
Estereótipos
●
Existem quatro estereótipos
predefinidos na UML que merecem
destaque, pois, são amplamente
utilizados nos diagramas de classe:
<<entity>>
<<boundary>> Aspas francesas
<<control>>
<<enumeration>>
Estereótipo <<entity>>
●
Tem por objetivo tornar explícito que
uma classe é uma entidade, ou seja, a
classe contém informações recebidas e
armazenadas pelo sistema ou geradas
por meio deste.
●
Classes com este estereótipo
geralmente terão muitos objetos e
estes, possivelmente, terão um período
de vida longo.
Estereótipo <<entity>>
●
À esquerda tem-se o estereótipo gráfico, ele modifica o desenho
padrão da classe. Ele esconde os atributos e métodos da classe.
Isto pode ser útil em diagramas grandes;
●
à direita tem-se o estereótipo textual, neste caso a classe
aparece completa.
Estereótipo <<boundary>>
●
Também conhecido como estereótipo de fronteira,
identifica uma classe que serve de comunicação entre
atores externos e o sistema propriamente dito;
●
um classe deste tipo, muitas vezes precisa interagir com
uma classe do tipo <<control>>;
●
classes do tipo <<boundary>> são importantes quando
precisa-se definir a existência de uma interface para o
sistema, mas desnecessária em sistemas muito simples e
●
a notação gráfica para este estereótipo é:
Estereótipo <<control>>
●
Identifica classes que servem de intermédio entre classes
<<boundary>> e as demais do sistema;
●
objetos <<control>> são responsáveis por interpretar os
eventos ocorridos sobre os objetos <<boundary>>, como:
movimento do mouse ou pressionamento de botão, e
retransmiti-los aos objetos das classes do sistema.
●
À esquerda objeto do tipo <<boundary>> e à direita objeto do
tipo <<control>>.
Adaptado de Guedes (2011, p. 128)
Estereótipo <<enumeration>>
●
Uma enumeração é um tipo de dado cujos
valores são enumerados no modelo como
literais (Strings) de enumeração. Cada String
corresponde a um valor numérico que ela
representa e
●
uma classe deste tipo lista todos os valores
válidos que um tipo de dados pode assumir.
Sistema Bancário
Bibliografia
●
BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. 2. ed. Rio de
Janeiro: Elsevier, 2007.
●
BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML Guia do Usuário. Rio de Janeiro: Campus, 2000.
●
BLAHA, Michael; RUMBAUGH, James. Modelagem e Projetos Baseados em Objetos com UML 2.
2. ed. Rio de Janeiro: Elsevier, 2006.
●
DEITEL, H. M.; DEITEL, P. J. Java Como Programar; tradução Edson Furmankiewicz; revisão técnica
Fábio Lucchini. 6. ed., São Paulo: Pearson, 2005.
●
ESCOLA TÉCNICA LAURO GOMES. UML – Linguagem de Modelagem Unificada. Disponível em:
<http://www.etelg.com.br/paginaete/downloads/informatica/apostila_uml.pdf>. Acesso em: 09 Out.
2019.
●
GUEDES, Gilleanes T. A. UML2 : uma abordagem prática. 2. ed. São Paulo: Novatec Editora,
2011.
●
IBM KNOWLEDGE CENTER. Elementos do Modelo UML. Disponível em:
<https://www.ibm.com/support/knowledgecenter/pt-br/SS5JSH_9.5.0/com.ibm.xtools.modeler.doc/
topics/cme.html>. Acesso em: 12 Out. 2019.
●
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO TRIÂNGULO MINEIRO. Revista
Inova Ciência e Tecnologia. Fonte: <http://periodicos.iftm.edu.br/index.php/inova/index>. Acesso
em: 17 jan. 2020.