Sei sulla pagina 1di 23

Diagrama de Classes

2 Parte

Jos Osvano da Silva, PMP

Arquitetura e Construo de Software 1


Sumrio
Notao UML
Associao
Herana
Exemplos
Exerccios
Referncias

Arquitetura e Construo de Software 2


Notao UML

Arquitetura e Construo de Software 3


Associao

Uma associao estabelece uma relao


semntica estrutural entre duas ou mais
classes que descreve as ligaes entre
suas instncias (uma pessoa trabalha
para uma companhia, uma companhia
tem vrios escritrios, etc.).
O tipo mais comum de associao a
binria (entre duas classes).

Arquitetura e Construo de Software 4


Associao

Arquitetura e Construo de Software 5


Associao
O diagrama indica que um Pedido vem de um
nico cliente e que um Cliente pode fazer vrios
pedidos ao longo do tempo.
Cada Pedido tem vrios Itens de Pedido, cada
um dos quais se refere a um nico Produto. A
associao tem dois lados, cada lado ligado a
uma classe indicando um relacionamento entre
as classes.
A terminao de uma associao pode ser
explicitamente nomeada (cliente, pedido ou
produto, no exemplo).
Arquitetura e Construo de Software 6
Associao
Este nome chamado de papel (role). Assim, um
objeto da classe Produto exerce o papel de
produto para a classe ItemPedido.
Um objeto da classe Pedido exerce o papel
pedido para a classe ItemPedido e assim por
diante.
A terminao de uma associao tambm tem
uma multiplicidade, que uma indicao do
nmero de objetos que podem participar do
relacionamento.
Arquitetura e Construo de Software 7
Associao
O * no lado do Pedido na Associao Pedido-
Cliente indica que um Cliente pode ter vrios
Pedidos associados com ele, enquanto que o 1
do outro lado indica que um Pedido vem de um
nico Cliente.

Arquitetura e Construo de Software 8


Associao
A partir do diagrama, posso inferir a seguinte
interface para as classes em Java:
class Pedido {
private boolean ehPrePaga;
private String numero;
private double preco;
private Date dataRecebimento;

private Cliente cliente; // associacao com Cliente


private List itemPedido = new ArrayList();
// associacao com ItemPedido

public void despacha() {


// acrescentar cdigo
}

public void fecha() {


// acrescentar cdigo
}
}
Arquitetura e Construo de Software 9
Associao
class ItemPedido {
private int quantidade;
private double preco;
private boolean foiAtendido;

private Pedido pedido; // associacao com Pedido


private Produto produto; // associacao com Produto
}

class Cliente {
private String nome;
private String endereco;
private List pedido = new ArrayList(); // associacao com Pedido

public String analiseCredito() {


// implementar o cdigo depois
return "";
}
}
Arquitetura e Construo de Software 10
Associao
class Produto {
private List itemPedido = new ArrayList();
// associacao com ItemPedido
}

Arquitetura e Construo de Software 11


Herana
Especializao de Atributo

Arquitetura e Construo de Software 12


Herana
Herana de Mtodos

O mtodo getPreco() est definido tambm para as subclasses Jogo e Filme


Arquitetura e Construo de Software 13
Herana
Herana e Especializao de Associaes

Arquitetura e Construo de Software 14


Herana
A classe Produto abstrata: no pode haver um
objeto instanciado a partir da classe Produto
O mtodo getPreco() abstrato: ele tem de
obrigatoriamente ser redefinido nas subclasses
As multiplicidades das associaes definidas na
superclasse so vlidas tambm para as
subclasses.
A subclasse Filme tem associaes (categoria)
no definidas para a superclasse.

Arquitetura e Construo de Software 15


Herana
Implementao em Java
class VideoLocadora {

abstract class Produto {


protected VideoLocadora videoLocadora;
protected String codigo;
protected String titulo;
protected String descricao;
abstract protected double getPreco();
}

class Jogo extends Produto {


protected String versao;
public double getPreco() {
// implementar depois
return 0;
}
}
Arquitetura e Construo de Software 16
Herana
Implementao em Java

class CategoriaFilme {
private String nome;
private double precoNormal;
private double precoLancamento;
}

class Filme extends Produto {


private CategoriaFilme categoria;
protected String genero;
protected int anoLancamento;
protected String idioma;
public double getPreco() {
// implementar depois
return 0;
}
}
Arquitetura e Construo de Software 17
Herana
Resumindo

A subclasse herda todos os atributos, operaes


e associaes da superclasse.
Cada subclasse pode definir novos atributos
Cada subclasse pode definir novas operaes
Cada subclasse pode redefinir operaes da
superclasse
Cada subclasse pode participar de associaes
especficas

Arquitetura e Construo de Software 18


Exemplo

Escreva as classes em Java.


Arquitetura e Construo de Software 19
Exemplo

Escreva as classes em Java.


Arquitetura e Construo de Software 20
Exerccios
Exerccio 08
Uma empresa deseja armazenar todos os seus
funcionrios em um Banco de Dados, para isso ser
necessrio cadastrar os funcionrios com: Cdigo, Nome,
Telefone, E-mail, Endereo, Complemento, Bairro, Cdigo
da Cidade e Cep. Dever ser armazenado as Cidades
com: Cdigo da Cidade, Nome e Sigla do Estado. Ser
armazenado tambm os Estados com: Sigla e Nome. Os
gerentes da empresa sero um tipo de funcionrio que
receber uma bonificao e essa bonificao dever ser
armazenada. Voc foi contratado(a) para criar as classes
para o projeto.
Arquitetura e Construo de Software 21
Referncias
Craig Larman, 2007, Utilizando UML e Padres, 3 ed.
SOMMERVILLE, Ian, Engenharia de Software, 8
Edio, So Paulo, Editora Pearson Prentice Hall, 2007.
PRESSMAN, R. S. Engenharia de software: uma
abordagem profissional. 7 Edio. Porto Alegre: AMGH,
2011. 780 p.
BOOCH, G UML: Guia do Usurio. Rio de Janeiro:
Campus, 2005.

Arquitetura e Construo de Software 22


Dvidas

Jos Osvano da Silva


joseosvano@unipac.br

Arquitetura e Construo de Software 23

Potrebbero piacerti anche