Requisitos de
Software
Modelagem de Classes de Domínio
Profa. Giliane Bernardi – giliane@unifra.br
Modelo de Classes de Domínio
O Modelo de Casos de Uso é construído para formar
a visão de casos de uso do sistema
fornece uma perspectiva do sistema a partir de um ponto
de vista externo.
Internamente, os objetos do sistema colaboram uns
com os outros para produzir resultados visíveis de
fora;
esta colaboração pode ser vista sob o aspecto dinâmico
Modelo de Classes de Domínio
O aspecto dinâmico descreve a troca de mensagens
entre os objetos e a sua reação aos eventos que
ocorrem no sistema;
O
aspecto estrutural estático
permite compreender
como o sistema está estruturado internamente para
que as funcionalidades externamente visíveis sejam
produzidas
estático porque não apresenta informações sobre como os
objetos do sistema interagem no decorrer do tempo;
Modelo de Classes de Domínio
Um dos modelos da UML que representam os
aspectos estáticos e estruturais do sistema é o Modelo
de Classes;
O
modelo
de
classes
evolui
durante
o
desenvolvimento do sistema.
À medida que o sistema é desenvolvido, o modelo de classes é incrementado com novos detalhes.
Três níveis sucessivos de abstração:
Domínio
Especificação Implementação.
Modelo de Classes de Domínio
O modelo de classes de domínio representa as classes
no domínio do negócio em questão. Não leva em
consideração restrições inerentes à tecnologia a ser
utilizada na solução de um problema.
O modelo de classes de especificação é obtido
através da adição de detalhes ao modelo anterior
conforme a solução de software escolhida.
O modelo de classes de implementação corresponde
à implementação das classes em alguma linguagem
de programação.
Modelo de Classes de Domínio
O diagrama da UML utilizado para representar
o aspecto estático é o Diagrama de Classes.
Diagrama de Classes
Nome_Classe1 Atributos Operações() Nome_Classe2 Atributos Operações()O Diagrama de Classes mostra a visão estática da
estrutura do sistema. Deve esboçar o que interage e
Um diagrama de classes é um gráfico de elementos
conectados
através
de
vários
relacionamentos
estáticos;
Pode
conter
classes,
interfaces,
pacotes,
relacionamentos e instâncias, como objetos;
Poderia ser chamado de Diagrama Estrutural Estático;
Componentes básicos
Pedido
Doce Salgada Mista ItemPedido Pizza 1..* 0..* Ingrediente 1..*
Diagrama de Classes para uma Pizzaria Nota Classe Associativa Classe Herança SuperClasse SubClasses Agregação Multiplicidade Associação
Diagrama de Classes
Diagrama de Classes - Classes
Uma classe de objetos, ou simplesmente classe,
descreve :
um conjunto de objetos com propriedades semelhantes
(atributos);
o mesmo comportamento (operações);
os mesmos relacionamentos; e
a mesma semântica.
São os blocos de construção mais importantes de
qualquer sistema orientado a objetos;
Diagrama de Classes - Classes
Representada através de uma “caixa” com no máximo
três compartimentos exibidos.
A Notação utilizada depende do nível de abstração
desejado.
Dicionário
Relatório
Bíblia
Livro
Livro Titulo Editora Ano_Publicação Edição Lingua Livro
Classe com detalhes suprimidos
Classe com detalhes a nível de análise Livro +Titulo : string[40] +Editora : string[30] -Ano_Publicação : data -Edição : int +Língua : string[15] +Cadastrar(argumento) +Excluir() +Consultar()
Classe com detalhes a nível de implementação
Diagrama de Classes - Atributos
Representam uma propriedade do objeto que está
sendo modelado;
Cada atributo possui um valor para cada instância de
um objeto;
Cada nome de atributo deve ser único dentro de uma
classe;
Podem ser representados apenas por seu nome, ou
especificando seu tipo e valor inicial;
Dicionário
Objeto do mundo Real
Objeto: Dicionário Estrutura de Dados Adicionar Palavra() Eliminar Palavra() Encontrar Palavra() Imprimir definição()
Atributos Completos Atributos Simples
Exemplo:
Diagrama de Classes - Atributos
Livro +Titulo : string[40] +Editora : string[30] -Ano_Publicação : data -Edição : int +Língua : string[15] +Cadastrar(argumento) +Excluir() +Consultar() Livro Titulo Editora Ano_Publicação Edição Lingua
Diagrama de Classes - Relacionamentos
Os dois tipos de relacionamentos mais importantes
são:
Associação - conexão entre classes, o que significa que é uma conexão entre objetos daquelas classes. Em UML, uma associação é definida com um relacionamento que descreve uma série de ligações, onde a ligação é definida como a semântica entre as duplas de objetos ligados; e
Generalização - relacionamento de um elemento mais
geral e outro mais específico. Refinamentos de uma classe.
Associações
associações normais (binárias);
associações binárias recursivas;
associação ternária; e
agregação.
Associações Normais (binárias)
Tipo mais comum de associação, sendo uma conexão entre duas classes;
Representada por uma linha sólida entre duas classes;
Uma associação pode possuir um nome, que normalmente é um verbo (substantivos são aceitos);
Cada terminação da associação pode possuir um papel, mostrando como uma classe é vista pela outra;
Livro Editora
Livro Pertence Editora
Diretor Empregado Trabalha para
Funcionário Chefe
Associações Normais
Diagrama de Classes - Relacionamentos
Diretor Empregado Trabalha para
Funcionário Chefe
Nome da Associação
PESSOA
é casada com Pessoa Esposa Marido É casado com
Associações Binária Recursiva (reflexiva,
auto-associação)
Associação entre dois objetos, sendo que os mesmospertencem a mesma classe;
Multiplicidade
A multiplicidade especifica quantos objetos de uma
classe relacionam-se a um único objeto de classe associada;
Os diagramas de classe indicam multiplicidade com
símbolos especiais nas extremidades das linhas de associação
Correspondem as cardinalidades no DER.
um-e-somente-um zero-ou-mais um-ou-mais zero-ou-um Classe Classe 2 Classe 3 Classe 4 Classe 1 1 0..* 1..* 0..1 1..6 7...15
Diagrama de Classes - Relacionamentos
Classe Associativa
Uma classe associativa é uma associação com
propriedades de classe;
este tipo de classe surge quando duas ou mais classes estão associadas e é necessário manter informações sobre a associação; Pessoa Empresa 1..* 1..* Trabalho Função Salário 1..* 1..*
Diagrama de Classes - Relacionamentos
Classe Associativa
Não se deve nomear a linha de associação de uma classe
associativa;
somente o nome escolhido para a classe associativa deve ser suficiente para expressar o significado desejado;
Uma classe associativa pode participar de outros relacionamentos; Pessoa Empresa 1..* 1..* Trabalho Função Salário 1..* 1..* Equipamento 1 0..*
Associações Ternárias
quando três classes estão associadas entre si;
representada por um losango, ligando cada classe do
relacionamento;
Diagrama de Classes - Relacionamentos
CIDADE
PRODUTO
DISTRIBUIDOR
0..* 0..*
Associações Ternárias
pode ter uma classe associada ligada na ternária;
Diagrama de Classes - Relacionamentos
CIDADE
PRODUTO
DISTRIBUIDOR
Distribuição Data Quantidade 0..* 0..* 0..*
Agregação
Caso especial de associação;
Indica que uma das classes do relacionamento é uma
parte de outra classe – relação todo-parte;
Pode-se utilizar agregação já na fase de análise
(modelagem de classes de domínio)
pode-se utilizar apenas na fase do modelo de especificação (projeto)
Equipe Jogador
Agregação
A diferença entre associação e agregação é puramente
semântica
em uma agregação um objeto está contido no outro
Onde se puder utilizar uma agregação, pode-se usar
também uma associação;
Palavras Chaves: “consiste em”, “é parte de”;
Graficamente representada por uma linha conectando as
classes relacionadas, com um diamante (losango) branco perto da classe que representa o todo.
Diagrama de Classes - Relacionamentos
Generalização
Os termos herança, generalização e especialização referem-se a aspectos da mesma idéia e são freqüentemente usados de forma intercambiável;
Generalização – relacionamento entre classes – superclasse generaliza subclasses;
Herança – mecanismo de compartilhamento de atributos e operações utilizando o mecanismo de generalização (implementação da generalização);
Especialização – subclasses refinam ou especializam a superclasse.
ClasseMae
ClasseFilha1 ClasseFilha2
Estilo com setas separadas
Estilo com setas Agrupadas
Diagrama de Classes - Relacionamentos
Exemplo
ClasseMae
Médico Nome CRM Efetivo DataEfetivacao Especialidade Residente Orientador Generalização
Diagrama de Classes - Relacionamentos
Efetivo DataEfetivacao Especialidade Médico Nome CRM Cidade 1 0..* 1 0..* Residente DataInício Orientador 1 0..* 1 0..*
Diagrama de Classes - Relacionamentos
Generalização
Uma classe pode ter mais de uma superclasse (herança múltipla)
Diagrama de Classes - Relacionamentos
Carro Barco
Generalização
Podem existir vários níveis de especialização
Diagrama de Classes - Relacionamentos
CarroAnfíbio
Carro Barco
Exemplo Berçário
Um berçário deseja controlar suas tarefas. Para isso deseja manter um cadastro para os bebês, constando nome, médico que fez seu parto, sua mãe e data de nascimento. Para os médicos é necessário saber: o nome, data de nascimento, CRM, endereço e telefone celular. Para as mães dos bebês é necessário manter informações como: nome, data de nascimento, sobrenome, endereço e telefone. Ainda, é necessário manter um controle dos medicamentos ingeridos pelos bebês no berçário. Sobre os medicamentos é necessário manter: descrição, quantidade em estoque e unidade de medida. Um bebê pode tomar vários medicamentos, assim como um medicamento pode ser dado para vários bebês. Quando um bebê toma uma medicação ainda é importante saber a quantidade, o dia e a hora do medicamento.
Exemplo Berçário
Um berçário deseja controlar suas tarefas. Para isso deseja manter um cadastro para os bebês, constando nome, médico
que fez seu parto, sua mãe e data de nascimento. Para os
médicos é necessário saber: o nome, data de nascimento,
CRM, endereço e telefone celular. Para as mães dos bebês é
necessário manter informações como: nome, sobrenome,data
de nascimento, endereço e telefone. Ainda, é necessário
manter um controle dos medicamentos ingeridos pelos bebês no berçário. Sobre os medicamentos é necessário manter:
descrição, quantidade em estoque e unidade de medida. Um
bebê pode tomar vários medicamentos, assim como um medicamento pode ser dado para vários bebês. Quando um bebê toma uma medicação ainda é importante saber a
Medicamento Descrição Quantidade em Estoque UnidadeMedida Medicação Quantidade Data Hora Medico Nome Data de Nascimento CRM Endereço Telefone Celular Bebe nome data de nascimento 0..* 0..* 0..* 1 0..* 1 Mae Nome Data de Nascimento Sobrenome Endereco Telefone 1 1..* 1 1..* 0..* 0..*
Exemplo Berçário
Medicamento Descrição Quantidade em Estoque UnidadeMedida Medicação Quantidade Data Hora Pessoa Nome Data de Nascimento Medico CRM Endereço Telefone Celular Bebe 0..* 0..* 0..* 0..* 1 0..* Mae Sobrenome Endereco Telefone 1 1..* 1 1..* 0..* 1
faz parto possui uma
ingere
Uma pessoa pode ser um bebê, um médico ou uma mãe
Exercícios
Construa um diagrama de classes para os seguintes
objetos. Se quiser, pode incluir novas classes. Utilize
herança, agregação e demais conceitos.
Escola, computador, playground, livro, porta,
laboratório, salas, biblioteca, régua, alunos, giz, balanço, revista, janela, sala de aula, professor, carteira, sala dos professores, cadeira, teclado, monitor, escorregador, bibliotecário, quadro-negro, secretária, boletim
Exercícios
Construa um diagrama de classes para os seguintes
objetos. Se quiser, pode incluir novas classes. Utilize
herança, agregação e demais conceitos.
Casa, cozinha, sofá, banheiro, panela, armário,lâmpada,
geladeira, janela, sala, cama, pia, sala de estar, fogão, tampa da panela, sistema de alarme, abajur, sala de jantar, porta, mesa, sistema de incêndio, pão, leite, sabonete, cabo da panela