Você está na página 1de 24

Projeto de Software

Aula 8 - 2023/2

Profª. Sofia Costa Paiva


sofialarissa@ufg.br
Modelos de Software
Nível de Abstração:

Alto nível Linguagem que o usuário compreende

Baixo nível Código-Fonte

2
Modelos de Software
Nível de Abstração:

Alto nível Linguagem que o usuário compreende

Modelos

Baixo nível Código-Fonte

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

Linguagem de modelagem para sistemas OO

Possui vários de diagramas que


apoiam a criação de diferentes
perspectivas de um sistema

5
Modelos de Software
Um pequeno conjunto dos Diagramas da UML podem representar a
essência de um sistema [Sommerville, 2011]:

● Diagrama de Atividades: mostra a perspectiva externa (contexto)


● Diagrama de Casos de Uso: mostra as interações entre sistema e
seu ambiente
● Diagrama de Sequência: mostra as interações entre o sistema e seu
ambiente
● Diagrama de Classe: mostra a estrutura do sistema
● Diagrama de Comunicação: mostra o comportamento dinâmico

6
Modelos de Software
Um pequeno conjunto dos Diagramas da UML podem representar a
essência de um sistema [Sommerville, 2011]:

● Diagrama de Atividades: mostra a perspectiva externa (contexto)


● Diagrama de Casos de Uso: mostra as interações entre sistema e
seu ambiente
● Diagrama de Sequência: mostra as interações entre o sistema e seu
ambiente
● Diagrama de Classe: mostra a estrutura do sistema
● Diagrama de Comunicação: mostra o comportamento dinâmico

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.

Use Ferramentas como:


- VisualParadigm
- PlantUML

21
Exercício
2. Crie um diagrama de classes para os seguintes trechos de código:
a) public class HelloWorldSwing {

public static void main(String[] args) {


JFrame frame = new JFrame("Hello world!");
frame.setVisible(true);
}

}
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!");
}

public static void main(String[] args) {


HelloWorldSwing frame = new HelloWorldSwing();
frame.setVisible(true);
}

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

Você também pode gostar