Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 8 - 2023/2
2
Modelos de Software
Nível de Abstração:
Modelos
3
Modelos de Software
● Desde a década de 70 têm-se investigado o uso de modelos
matemáticos - Métodos formais
● Engenheiros civis usam há séculos modelos matemáticos para
provar que uma ponte — antes de ser construída — vai suportar
determinada carga e certas condições climáticas
○ Porém, o uso de formalismos e especificações matemáticas em
Engenharia de Software não avançou como em outras
Engenharias
● Modelos de software não são formalismos matemáticos
● São representações gráficas de determinadas dimensões de um
sistema de software
● A criação de modelos tem uma importância grande na fase de
projeto 4
Modelos de Software
● Unified Modeling Language
5
Modelos de Software
Um pequeno conjunto dos Diagramas da UML podem representar a
essência de um sistema [Sommerville, 2011]:
6
Modelos de Software
Um pequeno conjunto dos Diagramas da UML podem representar a
essência de um sistema [Sommerville, 2011]:
7
Diagrama de Classes - Notação
● Representação de classe:
● Exemplo:
○ visibilidade do atributo/método: privado (-) e público (+)
8
Diagrama de Classes - Notação
● Um dos principais objetivos desse diagrama é mostrar visualmente os
relacionamentos entre as classes
● Tipos de relacionamento: associação, herança, dependência
● Associação:
class A {
...
private B b;
...
}
class B {
...
}
9
Diagrama de Classes - Notação
● Um dos principais objetivos desse diagrama é mostrar visualmente os
relacionamentos entre as classes
● Tipos de relacionamento: associação, herança, dependência
● Associação
○ Exemplo:
10
Diagrama de Classes - Notação
● Multiplicidade: indica quantos objetos podem estar associados ao
atributo responsável pela associação
● Mais comuns: 1, 0..1, *
11
Diagrama de Classes - Notação
● Multiplicidade
○ Exemplo:
class Pessoa {
private Fone[] fone;
...
}
class Fone {
...
} 12
Diagrama de Classes - Notação
● Multiplicidade
○ Exemplo:
class Pessoa {
...
private Fone fone;
...
}
class Fone {
...
private Pessoa[] dono;
...
} 13
Diagrama de Classes - Notação
● Herança:
○ Exemplo:
14
Diagrama de Classes - Notação
● Dependências: dependência que não é associação ou herança
○ uso de variável local ou parâmetro
○ relacionamento menos forte
○ Exemplo:
import java.util.Stack;
class MinhaClasse {
...
private void metodoX() {
Stack stack = new Stack();
...
} ...
}
15
Diagrama de Classes - Notação
● Dependências: dependência que não é associação ou herança
○ uso de variável local ou parâmetro
○ relacionamento menos forte
○ Exemplo:
import java.util.Stack;
class MinhaClasse {
...
private void metodoX() {
Stack stack = new Stack();
...
} ...
}
16
Diagrama de Classes de Análise
● Mostra todos os conceitos importantes no domínio do sistema, bem
como as associações entre esses conceitos.
● Diagrama que possibilita ao usuário entender os principais elementos
do domínio que estão envolvidos no sistema
■ Não mostra artefatos de software ou classes
● Ajuda a esclarecer o vocabulário do domínio
● Não deve ser confundido com o modelo de dados
○ Representa a compreensão da informação por parte dos
usuários e não sua representação física.
○ Imaginar os elementos deste modelo como informações
existentes apenas na mente do usuário
17
Diagrama de Classes de Análise
● Elementos do Diagrama de Classes:
○ Conceitos (classes)
○ Propriedades (atributos)
○ Associação entre os conceitos
18
Como identificar conceitos?
19
Diagrama de Classes de Análise
● Alguns conceitos são bastante óbvios
● Mas alguns conceitos estão implícitos e requerem uma maior
maturidade para descobri-los.
○ Passo 1: Isole (nos casos de uso ou requisitos) todos os
substantivos presentes no texto
20
Exercício
1. Modele o cenário abaixo usando Diagrama de Classes da UML:
a. ContaBancaria possui exatamente um Cliente. Um Cliente, por
sua vez, pode ter várias ContaBancaria. Existe navegabilidade
em ambos os sentidos.
b. ContaPoupanca e ContaSalario são tipos de ContaBancaria.
c. O código de ContaBancaria declara uma variável local do tipo
BancoDados.
21
Exercício
2. Crie um diagrama de classes para os seguintes trechos de código:
a) public class HelloWorldSwing {
}
Use Ferramentas como:
- VisualParadigm
- PlantUML 22
Exercício
2. Crie um diagrama de classes para os seguintes trechos de código:
b) class HelloWorldSwing extends JFrame {
public HelloWorldSwing() {
super("Hello world!");
}
23
}
Atividade
1. Pesquise sobre os Princípios SOLID e faça um mapa mental entre os
princípios SOLID e como eles se relacionam com Coesão, Acoplamento e
Encapsulamento de Informação. Será apresentado na aula do dia 06/11
24