Você está na página 1de 51

Contedo

1. Introduo
2. Levantamento de Requisitos
3. Anlise Orientada a Objetos
4. Projeto Orientado a Objetos
5. UML
6. Mtodos geis

Projeto Orientado a Objetos

Projeto Orientado a Objetos


Durante o projeto de objeto, desenvolvida uma soluo lgica
baseada no paradigma orientado a objetos.
Uma aplicao orientada a objetos construda a partir de objetos que
interagem atravs do envio de mensagens que requerem informaes
ou ao.
Para um mesmo problema existem diferentes solues de projeto e os
projetistas no produzem solues idnticas.
Geralmente so definidos:
Diagrama de Classes de Projeto: define as classes de software e
interfaces que sero implementadas.
Diagramas de Interao: ilustram como os objetos colaboram para
satisfazer os requisitos.

Diagrama de Classes de Projeto


As classes de projeto mostram definies das classes de software e
no dos conceitos do mundo real.
Classe do Modelo de Domnio x Classe do Modelo de Projeto

Classe do Modelo de Domnio: abstrao de um conceito do


mundo real tratado pelo sistema.

Classe do Modelo de Projeto: componente de software.

Diagrama de Classes de Projeto


Classes do Modelo de Domnio x Classes do Modelo de Projeto
Registrador

captura

Compra
Venda

data
completa
horario

Modelo do Domnio

Modelo do Projeto

Registrador

Compra
Venda

1
finalizaCompra
entraItem
fazPagamento

captura

data
completa
horario
fazItemLinha

Diagrama de Classes de Projeto


Informaes includas nos diagramas de classes de projeto:
 Classe, Atributo, Associao, Agregao e Herana
 Operao
 Interface
 Navegabilidade
 Dependncia

aparecem no modelo conceitual

Diagrama de Classes de Projeto


Definio do diagrama de classes de projeto:

O diagrama definido a partir dos diagramas de interao.

Um diagrama preliminar (classes, atributos e relacionamentos)


pode ser definido no incio do projeto, a partir do diagrama de classes
conceituais.
O diagrama refinado em paralelo com os diagramas de interao.

Diagramas de Interao
(Seqncia e Comunicao)
da UML

Diagrama de Interao
Diagrama de Interao: expressam interaes atravs de mensagens.

Diag. de Interao = Diag. de Seqncia + Diag. de Comunicao


mais usado

Obs: Diagrama de Comunicao da UML 2.0 = Diagrama de Colaborao da UML 1.0

Diagrama de Seqncia
Diagramas de Seqncia: Ilustram as interaes entre os objetos em
uma espcie de cerca, na qual cada novo objeto adicionado a direita.

public class A
{
private B myB = new B( );
public void doOne( )
{
myB.doTwo( );
myB.doThree( );
}
//
}

Diagrama de Seqncia
:Registrador

:Compra

Object1

fazPagamento(dinheiro)

fazPagamento(dinheiro)

create(dinheiro)

Cdigo relacionado com o Diagrama de Seqncia


public class Compra {
private Pagamento pagamento;
public void fazPagamento (Money dinheiro){
pagamento = new Pagamento (dinheiro);
//
}
}

:Pagamento

Diagrama de Comunicao
Diagramas de Comunicao: Ilustram as interaes entre os objetos
em um grafo, no qual os objetos so colocados em qualquer lugar do
diagrama.

2: fazPagamento(dinheiro)

:Registrador

1: fazPagamento(dinheiro)

Object1

:Compra

1.1: create(dinheiro)

public class Compra {


private Pagamento pagamento;
public void fazPagamento (Money dinheiro){
pagamento = new Pagamento (dinheiro);
//
}
}

:Pagamento

Diagrama de Seqncia
Vantagens (em relao aos diagramas de comunicao):
Mostra claramente a ordem das mensagens das mensagens.
Conjunto maior de opes de notao.
:InstanciaClasseA

Object1

mensagem1
mensagem2
mensagem3

:InstanciaClasseB

Diagrama de Comunicao
Vantagens: (em relao aos diagramas de seqncia)
Facilita a incluso de novos objetos sem ocupar muito espao.

3: mensagem1

Object1

InstanciaClasseA

1: mensagem2
2: mensagem3
InstanciaClasseB

Notao dos Diagrama de Interao


 Os diagramas de interao representam a troca de mensagens,
geralmente, entre instncias das classes.
:Compra

c1: Compra

metaclass
Compra

uma instncia da classe Compra

instncia c1 da classe Compra

classe Compra
somente se for invocado um mtodo de classe da
classe Compra

Notao dos Diagrama de Interao


compras:
ListaArrayCompra

uma instncia da classe ListaArray que contm


objetos do tipo Compra

uma instncia da classe Compra selecionada


compras[i]: Compra

x : Lista

da coleo compras

Lista pode ser uma interface

Exerccio
Defina um diagrama de sequncia para o mtodo a seguir:
public void submeteArtigo(String nome, String resumo, String[] nomesAutores,
{
Artigo artigo = new Artigo(nome);
artigo.setResumo(resumo);
artigo.setIdentificador(identArtigo);
identArtigo++;
for (int i=0; i<nomesAutores.length; i++){
String nomeAutor = (String)nomesAutores[i];
Autor autor = new Autor (nomeAutor);
int indice = this.autores.indexOf(autor);
if (indice == -1)
this.autores.add(autor);
else
autor = this.autores.get(indice);
artigo.associaAutor(autor);
}
this.artigos.add(artigo);
}

Notao dos Diagrama de Interao


 Sintaxe para a expresso das mensagens:
retorno = mensagem (parmetro : tipoParmetro) : tipoRetorno
Exemplos:
inicializa (tamanho)
espec = getEspecProduto (id)
espec = getEspecProduto (id: IDitem)
espec = getEspecProduto (id: IDitem) : EspecProduto

Notao dos Diagramas de Seqncia


 1. Linha de Vida de um Objeto
 2. Mensagem
 3. Retorno de uma mensagem
 4. Criao de Instncias
 5. Looping
 6. Mensagem Condicional

1. Linha de Vida de um Objeto


A linha vertical (tracejada ou no) representa o tempo de vida de um
objeto.
Object1

:Compra

create

:Pagamento

destroy

 A destruio de um objeto representada pela mensagem destroy,


um grande X e uma linha de vida menor.

2. Mensagem
Cada mensagem entre dois objetos representada pela sua expresso
em uma linha direcionada (com seta preenchida) entre dois objetos.
A ordem seqencial das mensagens organizada de cima para baixo.
:Registrador

:Compra

Object1

msg1

msg2
msg3

found message: o emissor da


mensagem no est especificado.
O crculo opcional.

msg4
msg5

 O retngulo de especificao de execuo mostra o foco de


controle. opcional.

2. Mensagem
Uma mensagem pode ser enviada de um objeto para ele mesmo.
:Registrador

Object1

mensagem1
clear

3. Retorno de uma Mensagem


O retorno de uma mensagem pode ser mostrado como:
 uma linha tracejada no final do retngulo de especificao de execuo
 ou pela especificao do retorno na prpria mensagem.
:Registrador

:Compra

msg1
d1 = getData
getData
data

4. Criao de Instncias
Geralmente o nome create usado para representar uma mensagem
que cria uma instncia.

 O objeto criado colocado na altura da sua criao.


:Registrador

fazPagamento(dinheiro)

:Compra

create(dinheiro)

autoriza

:Pagamento

5. Looping
O looping indicado com um retngulo onde aparece o label loop e
uma clusula de looping.

6. Mensagem Condicional
A mensagem condicional indicada com uma clusula junto a
mensagem.
A mensagem enviada somente se a clusula verdadeira.

6. Mensagem Condicional
Um condio sob um conjunto de mensagens indicada com uma
clusula de looping.
As mensagens so enviadas somente se a clusula verdadeira.

6. Mensagem Condicional
Mensagens podem ser mutuamente exclusivas.
Mensagens condicionais mutuamente exclusivas so indicadas com
um retngulo onde aparece o label alt e uma linha pontilhada
separando as mensagens.
:A

:B

msg1
alt

[ x < 10 ]

[ else ]

calcula

calcula

:C

Mensagem para um Singleton


 Singleton: somente 1 instncia de uma classe pode ser instanciada.

:Registrador

:Loja

msg1
msg 2

o objeto marcado com o 1 na parte superior direita

Msgs que invocam mtodos de classe

Mensagens Polimrficas

Mensagens Polimrficas

Referncia entre Diagramas

7. Chamadas Assncronas e Sncronas


Uma chamada de uma mensagem assncrona no precisa esperar por
uma resposta.

Notao dos Diagramas de Comunicao


 1. Ligao (Link)
 2. Mensagem
 3. Criao de Instncias
 4. Seqncia dos Nmeros das Mensagens
 5. Mensagem Condicional
 6. Looping

1. Ligao (Link)
Uma ligao um caminho de conexo entre dois objetos. Ela indica
que existe alguma forma de navegao entre os objetos.

:Registrador

1: fazPagamento
2: foo
2.1: bar

:Compra

 Vrias mensagens podem fluir em uma mesma ligao.

2. Mensagem
Cada mensagem entre dois objetos representada pela sua expresso
e uma pequena seta indicando a direo da mensagem.
Um nmero sequencial adicionado para mostrar a ordem seqencial
das mensagens na tarefa corrente.

:Registrador

1: fazPagamento
2: foo
2.1: bar

:Compra

2. Mensagem
Uma mensagem pode ser enviada de um objeto para ele mesmo.

2: mensagem1

Object1

:Registrador

1: clear

3. Criao de Instncias
Geralmente o nome create usado para representar uma mensagem
que cria uma instncia.

:Registrador

:Registrador

:Registrador

1: create (caixa)

1: create (caixa)

create
1: faz (caixa)

:Compra

:Compra {new}

:Compra

4. Seqncia dos Nmeros das Mensagens


A ordem das mensagens mostrada atravs de nmeros seqenciais:
A primeira mensagem, geralmente, no numerada.
A ordem e aninhamento das mensagens subsequentes mostrada
com um esquema de numerao onde um nmero anexado s
mensagens aninhadas.
3: msg1

:ClasseA

:ClasseB

1: msg2
1.1: msg3
2.1: msg5

Object1

2: msg4

:ClasseC

2.2: msg6
:ClasseD

5. Mensagem Condicional
Uma mensagem condicional mostrada pelo nmero seqencial
seguido de uma clusula condicional entre colchetes.
A mensagem enviada somente se a clusula verdadeira.

:Foo

1:[cor = vermelha] calcula

:Bar

5. Mensagem Condicional
Mensagens podem ser mutuamente exclusivas.

:ClasseE
2: msg4()
msg1()

:ClasseA

1a [teste] : msg2()

1b [not teste] : msg3()

:ClasseD

:ClasseB

6. Looping
O looping indicado com um * e uma clusula de looping opcional.

2: execute

Object1

:Simulador

1:*[i:=1..N] num:=nextItem

:Random

6. Looping sobre uma Coleo de Objetos

Msgs que invocam mtodos de classe

Mensagens Polimrficas

7. Chamadas Assncronas e Sncronas

Nota
Smbolo de Nota: um retngulo com a orelha virada que pode ser
utilizado em qualquer diagrama da UML. Geralmente utilizado no
diagrama de classes.
{c.completa = true}

autor = Manuel

Object1

2: finalizaCompra

:Registrador

1: ehCompletada

c:Compra

Pode conter:
 Nota ou Comentrio: no tem impacto semntico. Exemplo: autor de
um diagrama.
 Restrio: uma informao semanticamente significante anexada
a um elemento do modelo. apresentada entre chaves { }.
 Mtodo: implementao de uma operao.

Exerccios
Definam diagramas de seqncia para os seguintes mtodos:
public class ListBoxChoice extends MultiChoice {
JawtList list;
Vector choices;
public JPanel getUI() {
JPanel p = new JPanel();
list = new JawtList(choices.size());
list.setMultipleMode(true);
p.add(list);
for (int i=0; i< choices.size(); i++)
list.add((String)choices.elementAt(i));
return p;
}

Exerccios
public class TimeSwimData extends SwimData {
protected Vector swimmers;
public TimeSwimData(String filename) {
String s = "";
swimmers = new Vector();
InputFile f = new InputFile(filename);
s= f.readLine();
while (s != null) {
swimmers.addElement(new Swimmer(s));
s= f.readLine();
}
f.close();
}

Exerccios
public class ContadorPalavras {
public TabelaHash contaPalavras (String frase){
TabelaHash tabela = new TabelaHash(13);
StringTokenizer st = new StringTokenizer (frase, " ", false);
while (st.hasMoreTokens()){
String token = st.nextToken();
Integer ocorrencia = (Integer) tabela.retorna(token);
if (ocorrencia != null){
int numOcorrencia = ocorrencia.intValue();
tabela.remove(token);
tabela.insere(token, new Integer(numOcorrencia+1));
else{
tabela.insere(token, new Integer(1));
}
}
return tabela; }

Você também pode gostar