Buscar

Construindo Diagramade Classes - Luciano Cardoso.

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Construindo Diagrama de Classes
Prof. Luciano Cardoso
lucianoscardoso@gmail.com
Construindo Diagrama de Classes
• Introdução
– Elaborar de forma criteriosa diagramas de classes 
é um fator de sucesso de projetos de software por 
que, além do fato de ser um momento propenso à 
inserção de defeitos no software, são neles em 
que são transformados os problemas do usuário 
em uma solução computacional, servindo como 
uma ponte entre requisitos e codificação. Se esta 
ponte for mal projetada, o software também será.
Construindo Diagrama de Classes
• Diagramas da UML
– Diagramas Estruturais (estáticos)
– Diagramas Comportamentais (dinâmicos)
Diagramas Estruturais
– Diagrama de classes (Class Diagram) - apresenta classes conectadas por 
relacionamentos. Usado para exibir entidades do mundo real, além de 
elementos de análise e projeto.
– Diagrama de objetos (Object Diagram) - apresenta objetos e valores de 
dados. Corresponde a uma instância do diagrama de classes, mostrando o 
estado de um sistema em um determinado ponto do tempo.
– Diagrama de componentes (Component Diagram) - mostra as dependências 
entre componentes de software, apresentando suas interfaces.
– Diagrama de estrutura composta (Composite Structure Diagram) - usado para 
mostrar a composição de uma estrutura. Útil em estruturas compostas de 
estruturas complexas ou em projetos baseados em componentes
– Diagrama de pacotes (Package Diagram) - usado para organizar elementos de 
modelo e mostrar dependências entre eles
– Diagrama de implantação (Deployment Diagram) - mostra a arquitetura do 
sistema em tempo de execução, as plataformas de hardware, artefatos de 
software e ambientes de software (como sistemas operacionais e máquinas 
virtuais)
Diagramas Comportamentais
• Diagrama de casos de uso (Use Case Diagram) - mostra os casos de uso, 
atores e seus relacionamentos que expressam a funcionalidade de um 
sistema.
• Diagrama de atividades (Activity Diagram) - representa a execução de 
ações ou atividades e os fluxos que são disparados pela conclusão de 
outras ações ou atividades.
• Diagrama de máquina de estados (Statechart Diagram) - representa as 
ações ocorridas em resposta ao recebimento de eventos.
Diagramas Comportamentais
• Diagramas de interação:
– Diagrama de seqüências (Sequence Diagram) - mostra as interações 
que correspondem a um conjunto de mensagens trocadas entre 
objetos e a ordem que essas mensagens acontecem.
– Diagrama de comunicação (Communication Diagram) - é o antigo 
diagrama de colaboração, que mostra objetos, seus inter-
relacionamentos e o fluxo de mensagens entre eles
– Diagrama temporal (Timing Diagram) - mostra a mudança de estado 
de um objeto numa passagem de tempo, em resposta a eventos 
externos.
– Diagrama de visão geral de interação (Interaction-Overview Diagram) -
uma variação do diagrama de atividades que mostra de uma forma 
geral o fluxo de controle dentro de um sistema ou processo de 
negócios. Cada nó ou atividade dentro do diagrama pode representar 
outro diagrama de interação.
Construindo Diagrama de Classes
• Classes;
• Atributos;
• Operações / Métodos;
• Relacionamentos;
Construindo Diagrama de Classes
Construindo Diagrama de Classes
• Identificar Classes
– Classes representam entidades (conceitos) do 
mundo real, ou seja, do problema para o qual o 
software estiver sendo desenvolvido. Elas são uma 
descrição de um conjunto de objetos que 
compartilham os mesmos atributos, operações, 
relacionamentos e semântica e representam o 
principal bloco de construção de um sistema 
orientado a objetos. 
Construindo Diagrama de Classes
• Identificar Atributos
– Podemos definir atributos como sendo as 
propriedades que caracterizam objetos definidos 
através das classes.
– Assim, para identificarmos os atributos das 
classes, devemos procurar por propriedades que 
caracterizam o objeto em questão, considerando a 
especificação dos requisitos e nosso 
conhecimento do domínio. 
Construindo Diagrama de Classes
• Identificar Operações
– O próximo passo é a definição de quais operações 
estarão alocadas em cada classe. As operações 
definem as habilidades de um determinado 
objeto, ou seja, tudo aquilo que ele pode realizar 
(ações).
– Dessa forma, ao procurar por operações 
estaremos identificando ações que o objeto de 
uma classe é responsável por desempenhar no 
contexto do sistema.
Construindo Diagrama de Classes
• Identificar Relacionamentos
– Com todas as classes identificadas e especificadas, 
devemos definir como elas estão relacionadas 
para que possamos elaborar o diagrama de 
classes. Os principais tipos de relacionamento 
entre classes presentes na UML são:
Construindo Diagrama de Classes
• Associação: são relacionamentos estruturais entre instâncias e 
especificam que objetos de uma classe estão ligados a objetos de outras 
classes. É representado por uma linha simples ligando duas classes e pode 
conter atributos como nome, multiplicidade e navegabilidade. O nome 
descreve a semântica (significado) do relacionamento; a multiplicidade 
indica quantos objetos de uma determinada classe um objeto pode se 
comunicar; a navegabilidade especifica quem enxerga quem no 
relacionamento, ou seja, se um objeto tem conhecimento da existência de 
outro;
Construindo Diagrama de Classes
• Generalização (herança simples ou composta):
– relacionamento entre um elemento mais geral e um mais específico 
onde o elemento mais específico herda as propriedades e operações 
do elemento mais geral. A relação de generalização também é 
conhecida como herança na orientação a objetos e denotam relações 
“é um tipo de” onde subclasses são especializações de superclasses.
• Agregação regular: tipo de associação (é parte de, todo/parte) 
onde o objeto parte é um atributo do todo. Agregação é 
representada por uma linha simples com um losango sem 
preenchimento do lado do todo;
• Composição: relacionamento entre um elemento (o todo) e outros 
elementos (as partes) onde as partes só podem pertencer ao todo e 
são criadas e destruídas com ele. O relacionamento de composição 
é representado por uma linha simples com um losango preenchido 
do lado do todo.
Construindo Diagrama de Classes
• Para identificarmos esses tipos de relacionamentos, aliado a 
nosso conhecimento no domínio do problema, efetuamos a 
leitura da especificação dos casos de uso e, para 
relacionamentos de:
– Generalização: verificamos se há alguma relação “é um tipo de” 
entre as classes identificadas;
– Associação:verificamos se há a necessidade de um objeto de 
uma classe utilizar serviços disponibilizados por um objeto de 
outra classe ou, simplesmente, conhecer o outro objeto;
– Agregação: verificamos se há alguma relação “parte de” entre as 
classes identificadas;
– Composição: verificamos se há alguma relação “parte de” forte 
entre as classes identificadas.
Construindo Diagrama de Classes
• Revisar Modelo
– Nesta etapa, devemos revisitar o modelo construído 
e verificar se ele faz sentido e contempla os conceitos 
definidos na especificação de requisitos do software. 
Identificando-se algum problema, este deve ser 
ajustado. 
– Estando o diagrama finalizado, este poderá ser 
entregue para a equipe de desenvolvimento junto 
com o arquiteto de software que realizará os devidos 
ajustes para tornar o diagrama mais próximo daquilo 
que será realmente implementado. 
Construindo Diagrama de Classes
• Exemplo prático
– Sistema para Transportadora
Exemplo prático
Para este sistema, os funcionários da transportadora devem cadastrar 
Clientes, Filiais, Veículos, Funcionários, Tipos de Veículos, Cidades, 
Distâncias, Categorias de Frete e Fretes de Clientes.
Clientes são pessoas físicas e possuem nome,endereço e telefone. Filiais 
têm nome, endereço, telefone, funcionário responsável e vários veículos. 
Veículos devem possuir número de placa e um tipo de veículo, além de ser 
necessariamente de uma filial. Funcionários são identificados pelo seu 
número de matrícula, e devem conter ainda nome, endereço, telefone e 
dependentes (com nome e data de nascimento), além de estar associado, 
obrigatoriamente, a uma filial. Tipo de Veículo apresenta uma descrição 
(como caminhão e moto) e o peso máximo que pode transportar, além de 
estar associado a veículos. Cidades contêm o nome da cidade e o estado a 
que pertence, representando as cidades abrangidas pela empresa de 
transporte. 
Exemplo prático
Distâncias envolvem as cidades origem e destino e, para cada par de 
cidades atendidas, deve haver a distância em quilômetros entre elas. 
Categoria do frete deve conter descrição e um percentual, que deve 
incidir sobre o valor do frete onde, por exemplo, entregas rápidas têm 
aumento de 10%, entregas super-rápidas têm aumento de 30%, e 
entrega normal não tem acréscimo no valor.
Cada Frete tem um código, um cliente, o veículo que deve efetuar o 
frete, cidade origem e cidade destino, funcionário responsável e itens 
a serem transportados, não podendo haver um frete sem os dados 
citados. Cada frete deve ter ainda o seu valor, que deve ser calculado 
através da distância entre as cidades envolvidas e da categoria do 
frete. Para isso, deve existir um valor padrão para o km rodado. Um 
Item de Transporte é cada objeto a ser transportado num frete e deve 
possuir apenas uma descrição e seu peso. Por fim, temos que o 
sistema ainda deve emitir Nota Fiscal com todas as informações de um 
determinado frete, logo após seu cadastramento.
Exemplo prático
• Diagrama de Caso de uso;
– Podem fazer!
Exemplo prático
Exemplo prático
• No diagrama de casos de uso observa-se que, como é o 
funcionário quem utiliza todas as funções do sistema, todos 
os casos de uso estão ligados a ele. Outra característica é 
relativa ao caso de uso EmitirNotaFiscal. 
• Como este caso de uso é disparado sempre que um frete 
for cadastrado, representa-se esta situação utilizando uma 
seta com o estereótipo “<<Include>>”, indicando que o 
caso de uso CadastrarFrete dispara o caso de uso 
EmitirNotaFiscal. 
• Este tipo de situação é utilizado quando se deseja destacar 
uma funcionalidade do sistema, como neste caso, ou 
quando uma determinada funcionalidade é utilizada por 
mais de um caso de uso, evitando que seja descrita mais de 
uma vez. 
Exemplo prático
• Especificação de casos de uso
Exemplo prático
• Encontrem as classes, não se preococupem 
com associações, atributos, operações.
Exemplo prático
• Classes (preliminares)
– Cliente, Filial, Veículo, Funcionário, Dependente, 
Tipos de Veículo, Cidade, Distância, Categoria de 
Frete, Fretes, Itens de Frete, e Parâmetro 
(contendo o valor do km rodado) representando 
elementos do domínio da aplicação
Exemplo prático
• Encontre os atributos
Exemplo prático - Atributos
Exemplo prático
• Encontre as operações
Exemplo prático
Exemplo prático
• O último passo refere-se à identificação dos 
relacionamentos e, para isso, efetua-se a 
análise dos casos de uso de forma a encontrar 
estas relações entre as classes já identificadas:
– Generalização: verifica-se se há alguma relação “é 
um tipo de” entre as classes identificadas.
Exemplo prático
• classes Funcionario e Cliente (ambos são 
pessoas físicas, pelo enunciado do estudo de 
caso) possuem atributos em comum (nome, 
endereco, e telefone), optou-se por criar uma 
classe PessoaFisica que agrupe estas 
características. Uma dúvida poderia surgir em 
relação à classe 
Exemplo prático
• Poderia surgir em relação à classe Filial, que 
possui os mesmos atributos. Neste caso, não 
será considerada herança entre estas classes, 
mesmo contendo os mesmos atributos. Isso 
por que uma Filial não é uma pessoa física e, 
portanto, não deve haver herança 
• a semântica “é um tipo de” não se aplica
Exemplo prático
• Associação: verifica-se se há a necessidade de um objeto de uma 
classe utilizar serviços disponibilizados por um objeto de outra 
classe ou, simplesmente, “conhecer” o outro objeto.
• Neste estudo de caso, observam-se várias associações no modelo, 
como entre Frete e Cliente (um frete é de um cliente e um cliente 
pode fazer vários fretes), entre Frete e Veiculo (um frete possui um 
veículo e um veículo pode fazer vários fretes), entre Frete e 
Funcionario (um frete possui um funcionário responsável e um 
funcionário pode ser responsável por vários fretes), entre Frete e 
CategoriaFrete (um frete possui uma categoria e uma categoria 
pode estar associada a vários fretes), entre Frete e Cidade (neste 
caso, existem duas associações entre estas classes, uma vez que um 
frete tem uma cidade representando sua origem e outra seu 
destino. (continua...)
Exemplo prático
• Além disso, cidades podem ser origem e/ou destino de diferentes 
fretes), entre Filial e Funcionário (uma filial possui diversos 
funcionários e um funcionário está lotado numa filial), entre Filial e 
Veiculo (uma filial possui diversos veículos e um veículo é de uma 
única filial) e, finalmente, entre Veiculo e TipoVeiculo (um veículo 
tem um tipo e um tipo pode estar associado a diferentes veículos).
Exemplo prático
• Auto-Associação: verifica-se se existe alguma classe que 
necessita ser relacionada a ela mesma. Neste estudo de 
caso, existe uma auto-associação na classe Cidade, 
representando que uma cidade pode estar associada a 
diversas outras, representando as distâncias atendidas pela 
empresa de transportes.
• Agregação: verifica-se se há alguma relação “parte de” 
entre as classes identificadas. Neste estudo de caso, não foi 
necessária a utilização de agregações.
Exemplo prático
• Composição: verifica-se se há alguma relação “parte de” forte 
entre as classes identificadas. Neste estudo de caso identificam-se 
dois relacionamentos deste tipo, um entre as classes Funcionario e 
Dependente, uma vez que os dependentes são como atributos 
internos de funcionários; e outro entre as classes Frete e ItemFrete, 
pelo mesmo motivo de estar representando atributos internos que 
foram deslocados para outra classe em função de suas 
características próprias e também pela multiplicidade.
• Além disso, a exclusão de um funcionário necessariamente 
implica na exclusão de seus dependentes, bem como a exclusão de 
um frete implica na exclusão de seus itens. Nestes casos, modelam-
se estas situações através de composições.
Exemplo prático
• Navegação: verifica-se se existem navegações desnecessárias entre 
classes. Neste estudo de caso, na associação entre as classes 
Veiculo e TipoVeiculo, utilizou-se a navegabilidade no sentido 
Veiculo TipoVeiculo, uma vez esta última não precisa utilizar 
nenhuma das operações definidas na classe Veiculo. O mesmo foi 
feito na associação entre as classes Frete e CategoriaFrete, 
mantendo a navegabilidade no sentido Frete � CategoriaFrete.
• Classe Associativa: verifica-se se existem informações que precisam 
estar vinculadas à associação de dois objetos. Neste estudo de caso, 
a classe Distancia está associada ao relacionamento entre dois 
objetos da classe Cidade, representando a distância entre elas. 
Modelam-se situações como esta utilizando uma classe associativa.
Exemplo prático
Conclusão
• Observem o detalhe de pessoafísica;
– Classe abstrata;
• Isso pode ser refinado ainda muitas vezes;
• Sua modelagem não precisa estar “igualzinha” 
para estar certa.

Outros materiais