orientação a objetos edson e. scalabrin, marcos a. h. shmeil e alcides calsavara {scalabrin, shm,...

120
Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Orientação a Objetos

Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara

{scalabrin, shm, alcides}@ppgia.pucpr.brTelefone: 0xx-41-330-1669

Page 2: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Introdução

Modelagem orientada a objetos• Permite representar diretamente as entidades

do mundo real e as relações entre essas entidades

Page 3: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Introdução (continuação)

Quais são os objetos presentes no cenário e as relações entre eles ?

Page 4: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Introdução (continuação)

Modelagem orientada a objetos Permite representar diretamente as entidades do

mundo real em ambientes informatizados, sem a necessidade de deformar ou de decompor os mesmos.

Relacionamentos entre entidades :• generalização : é-um • agregação : parte-de• associação : relacionamento qualquer

Page 5: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Introdução (continuação)

Usuário

Desenvolvedores

Gerentes

Geramsolicitações

ConstróiModelos

Enunciado doProblema

Entrevistas com o usuário

Conhecimento do domínio

Experiência do mundo realModelo de ObjetosModelo DinâmicoModelo Funcional

Análise

Projeto

Page 6: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Introdução (continuação)

O modelo objeto• especifica o que acontece a quem• representa a estrutura estática de um sistema

O modelo dinâmico• especifica quando algo deve acontece• representa a estrutura de controle de um sistema

O modelo funcional:• descreve os cálculos executados em um sistema• especifica o que acontece

Page 7: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Bibliografia Básica

James Rumbaugh et al. Modelagem e Projetos Baseados em Objetos. Editora Campus, 1994. ISBN 85-7001-8410-X.

Grady Booch. Object-Oriented Analysis and Design with Applications. Second Edition. Addison-Wesley, 1994. ISBN 0-8053-5340-2.

Ivar Jacobson. Object-Oriented Software Engineering - a Use Case Driven approach. Addison-Wesley, 1996. ISBN 0-201-54435-0.

Peter Coad. Objet Models - Strategies, Patterns & Applications. Prentice-Hall, 1997. ISBN 0-13-840117-9.

Dennis de Champeaux. Object-Oriented Development Process and Metrics. Prentice-Hall, 1997. ISBN 0-13-099755-2.

Gregory Satir and Doug Brown. C++ : The Core Language. O’Reilly & Associates, 1995. ISBN 1-56592-116-X.

Page 8: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Bibliografia Complementar

Jag Sodhi and Prince Sodhi. Object-Oriented Methos for Software Development. McGraw Hill, 1996. ISBN 0-07-059574-7.

Chris Zimmermann (Ed). Advances in Object-Oriented Metalevel Architectures and Reflection. CRC Pr, 1996. ISBN 0-84-932663-X.

Jonathan Pletzke. Advanced Smalltalk.. John Wiley & Sons, 1996. ISBN 0-47-116350-3.

Al Stevens. C++ Database Development. Mis Pr, 1994. ISBN 1-55-828357-9.

Grady Booch and Ed Eykholt (Eds). The Best of Booch: Designing Strategies for Object Technology. Prentice-Hall, 1996. ISBN 0-13-739616-3.

Page 9: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Ementa

Conceituação de OO Método para modelagem OO

• Modelagem de Objetos• Modelagem Dinâmica• Modelagem Funcional

Programação OO

Page 10: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Conceitos de OO

Modelagem de Objetos

Page 11: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Vantagens

Independência de implementação Esconder detalhes Flexibilidade Clareza conceitual Modularização Reusabilidade

Page 12: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Áreas de aplicação

Linguagens de programação Bancos de dados Sistemas operacionais Sistemas distribuídos Interface gráfica Métodos de modelagem de sistemas Métodos formais: Z++ Empacotamento de software: classes, componentes Integração de sistemas: CORBA, DCOM Reflexão: tolerância a falhas, reconfiguração

Page 13: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Conceitos fundamentais

Objeto Identidade Encapsulamento Classificação/Instanciação Generalização/Especialização Herança Polimorfismo

Page 14: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Objeto

Um conceito, uma abstração, algo com limites e significados definidos para o problema em questão

Um objeto do mundo real Um conjunto de atributos (estado) e

métodos (comportamento) Uma instância de uma classe

Page 15: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Identidade

Característica peculiar de um objeto que denota a existência em separado do objeto, mesmo que ele tenha os mesmos valores de atributos de outro objeto

Uma identificação única de cada objeto

Page 16: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Encapsulamento

Técnica de modelagem e implementação que separa os aspectos externos de um objeto dos detalhes internos de implementação do mesmo objeto

Os atributos (estado) de objeto só é modificável a partir de seus métodos (interface)

Page 17: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Atributo

Propriedade denominada de uma classe, que descreve o valor de um dado contido por cada objeto da classe

Todo atributo tem um tipo e, opcionalmente, um valor default inicial

Cada instância de uma classe possui todos os atributos definidos pela classe

Page 18: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Método (ou Operação)

Função ou transformação que pode ser aplicada aos objetos de uma classe

Todo método definido para uma classe pode ser aplicado a qualquer instância daquela classe

Um método tem um nome, uma lista de argumentos, um tipo de retorno e uma implementação

Page 19: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Classe

Descrição de um grupo de objetos com propriedades semelhantes, comportamento, relacionamentos e semântica comuns

Instância: um objeto descrito por uma classe

Page 20: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exemplo de classe

MOTO

Marca: Stringcor: Stringestado: boolean

ligaMotor(),mostraAtributos()

Nome da classe

Atributos + tipos

Métodos

Page 21: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exemplo de classe definida em Java

class MOTO{private String marca, cor; boolean estadoMotor;void ligaMotor() {

if (estadoMotor == true)System.out.println(“O motor já esta ligado”);

else {estadoMotor = true;System.out.println(“Agora o motor já esta

ligado”);}

} // fim do método ligaMotorvoid mostraAtributos() {

System.out.println(“Cor: “ + cor+ “ Marca: “ + marca + “Estado: “ + estadoMotor);

}

Page 22: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exemplo de classe definida em Java (continuação)

class MOTO{ . . .

public static void main ( String args[] ){

MOTO m = new MOTO();

m.marca = “Yamaha RZ350”;

m.cor = “amarela”;

m.mostraAtributos();

m.ligaMotor();

m.mostraAtributos();

m.ligaMotor();

} // fim do método main

} // fim da classe MOTO

Page 23: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Generalização

Relacionamento entre uma classe e uma ou mais versões refinadas ou especializadas da classe

Especialização: relacionamento inverso Superclasse: versão mais abstrata de outra

classe, a subclasse Subclasse: versão mais refinada de outra

classe, a superclasse

Page 24: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Herança

Mecanismo baseado em objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização

Uma subclasse herda atributos e métodos da superclasse

Page 25: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Polimorfismo

Assume muitas formas A propriedade segundo a qual uma operação

(método) pode comportar-se diferentemente em classes diferentes

A subclasse redefine a implementação de um método herdado da superclasse

Onde se espera uma instância de um certa classe pode aparecer uma instância de qualquer subclasse daquela classe

Page 26: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exemplo de herança e polimorfismo

BOTÃO

Estado: booleancor: Coresx: inty: int

desenhe(), aperte(),desaperte(),pegaEstado(),mova(float x1, float x2)

BOTÃO REDONDO

raio : int

desenhe()

BOTÃO QUADRADO

diagonal : int

desenhe()

Page 27: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Implantação da classe Botão

class Botao

{boolean estado;int cor;float x, y;

public Botao(int cor){

estado = true;cor = 0;x = y = 0;

}

public void aperte(){estado = true; }

public void desaperte() {estado = false; }

public boolean pegaEstado() { return estado; }

public void desenhe() {}

public void mova( float x1, float y1)

{ x = x1; y = y1; }

}

Page 28: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Implantação da classe Botão Quadrado

class BotaoQuadrado extends Botao{

float diagonal;public BotaoQuadrado(int cor, float dia){

super( cor );diagonal = dia;

}public void desenhe(){

System.out.println("Desenhe Botão Quadrado");

}}

Page 29: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Implantação da classe Botão Redondo

class BotaoRedondo extends Botao{

float raio;public BotaoRedondo(int cor, float r){

super( cor );raio = r;

}public void desenhe(){

System.out.println("Desenhe Botão Redondo");

}}

Page 30: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Implantação da classe Janela

class Janela {

public static void main( String args[] ){

BotaoQuadrado bq = new BotaoQuadrado(1, (float)4.5);

bq.desenhe();

BotaoRedondo br = new BotaoRedondo(1, (float)5.0);

br.desenhe();}

}

Page 31: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exercício

Escreva um diagrama de classes para estas 3 (três) instâncias. Não é necessário incluir métodos.

(Aparelho de troca de calor)nome = E302fabricante = Brownpeso = 5000 kgpreço = $20000área da superfície diâmetro do tubo = 2 cmcomprimento do tubo = 6 mpressão do tubo = 15 atmpressão da concha = 1,7 atm

(Tanque de teto flutuante)nome = T111fabricante = Simplexpeso = 10000 kgpreço = $50000volume = 400000 Lpressão = 1,1 atmdiâmetro = 8 maltura = 9m (Bomba de diafragma)

nome = P101fabricante = Simplexpeso = 100 kgpreço = $5000pressão de sucção = 1,1 atmpresssão de descarga = 3,3 atmtaxa de fluxo = 300 I/hmaterial do diafragma = Teflon

Page 32: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exemplos/Exercícios

Componentes de uma interface gráfica: botões, menus, barras, ...

Pessoas: aluno, professor, secretária, reitor Veículos: bicicleta, veleiro, carro, caminhão, avião,

planador, motocicleta, cavalo Habitações: tenda, caverna, barraco, garagem,

celeiro, casa, arranha-céu

Page 33: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Notação:Multiplicidade e Ordenação

Classe A

Classe A

Classe A

Classe A

Classe A

Classe A

Classe A

Classe A

Classe A

Classe A

Classe A

Classe A

0..*

1

0..1

1..*

2-5,10

0..* {ordenado}

1+

2-5,10

{ordenado}

OMT UML

Page 34: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Ligação

Uma conexão física ou conceitual entre objetos Exemplo: O país Brasil tem como capital a cidade

de Brasília. Exemplo: O funcionário João trabalha na empresa

Transamérica S.A. Exemplo: O artigo “OO Solutions” foi publicado na

conferencia OOPSLA’99.

Page 35: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação

Relacionamento entre instâncias de duas ou mais classes descrevendo um grupo de ligações com estrutura e semântica comuns.

Exemplo: Um país tem como capital uma cidade. Exemplo: Um funcionário trabalha numa empresa.

Page 36: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Agregação

Forma especial de associação, entre o todo e suas partes, na qual o todo é composto pelas partes

Também chamada de herança horizontal Exemplo: Um artigo é publicado em uma

conferência, isto é, o artigo faz parte da conferência (ou dos anais da conferência).

Page 37: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Multiplicidade e Papel

Multiplicidade: Número de instâncias de uma classe que podem se relacionar a uma única instância de um classe associada (ou agregada).

Papel: nome que identifica inequivocamente uma extremidade de uma associação.

Page 38: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Classe PessoaDiagrama de instâncias

(Pessoa)uma avó

(Pessoa)um avô

(Pessoa)uma tia

(Pessoa)um primo

(Pessoa)você

(Pessoa)sua mãe

(Pessoa)seu pai

Cônjuge

Cônjuge

Primo

filho

filho

filho

Irmão

filho filho

mãe pai

pai mãemãe

Page 39: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Classe PessoaDiagrama de instâncias

(Pessoa)Ederiges

(Pessoa)Casemiro

(Pessoa)Fátima

(Pessoa)Marcelo

(Pessoa)Edson

(Pessoa)Vitória

(Pessoa)Emílio

Cônjuge

Cônjuge

Primo

filho

filho

filho

Irmão

filho filho

mãe pai

pai mãemãe

Page 40: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Atributo de Ligação

Um valor de dados presente em cada ligação (nível de instâncias) de uma associação (nível de classes)

Uma propriedade da ligação entre objetos, e não dos objetos ligados, propriamente ditos

Exemplos: permissão de acesso que um usuário possui para a um arquivo; o salário de uma pessoa em um emprego em uma companhia

Page 41: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Atributo de Ligação Exemplo: Muitos para Muitos

ArquivoString : nome

UsuárioString : nome

Integer : permissão

Acessível por

/etc/termcap ( leitura ) John Doe/etc/termcap ( leitura-escrita )

Mary Brown/usr/doe/.login ( leitura-escrita ) John Doe

Page 42: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Atributo de Ligação Exemplo: Um para Muitos

PessoaString : nomeString : telefone

EmpresaString : nomeString : endereço

Float : salárioString : cargo

Trabalha-para

Float : desempenho

chefe

trabalhadorGerencia

Page 43: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação como uma Classe

Cada ligação de uma associação é uma instância de uma classe

Uma ligação é um objeto, com atributos e métodos

Útil quando ligações podem participar em associações com outros objetos

Útil quando ligações sofrem operações Exemplo: autorização para usuários em estações

de trabalho

Page 44: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação como uma Classe Exemplo

PessoaString : nomeString : telefone

Estação TrabalhoString : IP

UsuárioInteger : prioridadeInteger : privilégios

IniciarSessao() : void

Autorizado

DiretórioString : nome

Diretóriobásico

Page 45: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação Ternária

Representa ligações entre 3 objetos Não pode ser dividida em associações binárias sem

que haja perda de informações Associações de grau maior que 3 são raras e devem

ser evitadas devido a complexidade de entendimento e implementação

Exemplo: pessoas que são programadoras usam linguagens de programação em projetos

Page 46: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação Ternária + Papel

PessoaString : nomeString : telefone

VeículoString : marcaString : cor

ConcessionáriaString : nomeString : endereço

objeto

vendedor

comprador1. .*

1

1

Compra

Data : data

Page 47: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação Ternária + Papel

PessoaString : nomeString : telefone

VeículoString : marcaString : cor

ConcessionáriaString : nomeString : endereço

objetovendedor

comprador

1. .*

1

1

Compra

Data : data

Page 48: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exercício

Pessoa

nome : Stringidade : IntID empregador 1 : ?ID empregador 2 : ?ID empregador 3 : ?endereço : StringID Pessoa : ?

Carro

ID proprietário : ?ID carro : ?tipo proprietário : ?modelo : Stringano : Int

Empréstimo

ID proprietário : ?ID cliente : ?número de conta : IntID banco : ?juro : Realsaldo atual : Realtipo proprietário : ?

Empresa

nome : StringID Empresa : ?

Banco

nome : StringID banco : ?

Estas classes possuem atributos que são ponteiros para outras classes de objetos. Estes ponteiros podem ser substituídos por associações. Considerando que:

• cada pessoa pode ter até três empregos em empresas diferentes. • cada pessoa, carro, empresa e banco possui o seu próprio identificador (ID). • o proprietário de um carro pode ser: uma pessoa, uma empresa ou um banco. • em um empréstimo, o carro é o objeto penhorado (ou comprado).

Prepare um diagrama de classes, onde os ponteiros são substituídos por relações. Pode haver a necessidade de acrescentar uma ou mais classes. Elimine todos os ID. Certos atributos podem ser transformados em discriminantes *.

* Um discriminante é um atributo do tipo enumeração que indica que uma propriedade de um objeto tornou-se abstrata através de uma relação de generalização.

Page 49: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exercício

Pessoa

nome : Stringidade : IntID empregador 1 : ?ID empregador 2 : ?ID empregador 3 : ?endereço : StringID Pessoa : ?

Carro

ID proprietário : ?ID carro : ?tipo proprietário : ?modelo : Stringano : Int

Empréstimo

ID proprietário : ?ID cliente : ?número de conta : IntID banco : ?juro : Realsaldo atual : Realtipo proprietário : ?

Empresa

nome : StringID Empresa : ?

Banco

nome : StringID banco : ?

Resposta Veículo

String : modeloInteger : ano

Proprietário

String : nome

Possui

PessoaInteger : idadeString : endereço

Empresa BancoEmpréstimoInteger : contaFloat : jurosFloat : saldo

cedente

penhor

Emprega

beneficiário

Page 50: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Ordenação em Associações

Em alguns casos o conjunto de objetos associados a um certo objeto apresenta uma ordem

A palavra "ordenado" deve aparecer junto à multiplicade "muitos" de uma associação para indicar que existe uma ordem entre os objetos ligados

Exemplos: as janelas visíveis em uma tela possuem uma ordem; os vértices de um polígono

Page 51: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exercício

• Prepare um diagrama de classes a partir do diagrama de instâncias em questão. Explique suas decisões de multiplicidade. Cada ponto tem uma coordenada x e uma coordenada y. Qual é o menor número de pontos necessários para a construção de um polígono? Faz alguma diferença se um ponta pode ou não ser compartilhado por diversos polígonos? Como você pode expressar o fato de que os pontos estão em seqüência?

(Pessoa)-1010

(Ponto)-10-10

(Ponto)10-10

(Ponto)1010

(Polígono)

Tem

Tem Tem

Tem

Page 52: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Resposta

Exercício

(Pessoa)-1010

(Ponto)-10-10

(Ponto)10-10

(Ponto)1010

(Polígono)

Tem

Tem Tem

Tem

Ponto

X : RealY : Real

Polígono

3+{ordenado}

Page 53: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exercício

• Prepare um diagrama de classes e implemente-o (numa linguagem de programação de computadores orienta a objetos) a partir do diagrama de instâncias da figura abaixo. Explique suas decisões de multiplicidade. Como o seu diagrama expressa o fato de que os pontos estão em seqüência?

(Pessoa)-1010

(Ponto)-10-10

(Ponto)10-10

(Ponto)1010

(Polígono)

próximo

próximo

primeiroúltimo

próximo

próximo

Page 54: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exercício

(Pessoa)-1010

(Ponto)-10-10

(Ponto)10-10

(Ponto)1010

(Polígono)

próximo

próximo

primeiroúltimo

próximo

próximo

Resposta PontoX : realY : real

Polígonoprimeiro

último

próximo

Page 55: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação Qualificada

Relaciona dois objetos e um qualificador O qualificador reduz a multiplicidade Exemplo: Um diretório contém muitos arquivos,

mas é o nome do arquivo dentro do diretório que identifica o arquivo (e identifica um único arquivo)

Maior precisão na informação!!

Page 56: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Associação QualificadaExemplos

Diretório Arquivonome do arquivo

Empresa Pessoaescritórioorganização

funcionárioABC W Presidente Roger SlickABC W Tesoureiro Joe EmbezzleABC W Diretor Joe BoeABC W Diretor Jane DoeABC W Diretor Moe BrownXYZ Candy Presidente Moe Brown

Page 57: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Uso de Agregação

Na dúvida, use associação! Herança não representa o relacionamento

parte-todo Agregados recursivos são freqüentes Agregação normalmente implica em

propagação de operações

Page 58: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Uso de AgregaçãoExemplo

Documento SentençaParágrafo

Pessoa

Possui

cópiacópia

cópia() : void cópia() : void cópia() : void

Propagação de operação

Page 59: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Uso de AgregaçãoExemplo

Microcomputador

Monitor Mouse Teclado

Chassis C . P . U R . A . M Ventoinha

Caixa do Sistema

Page 60: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Uso de AgregaçãoExercício

Prepare um diagrama de classes a partir do diagrama de instâncias de um documento geométrico mostrado na seqüência. Esse documento tem 4 páginas. A primeira página tem um ponto vermelho e um quadrado amarelo desenhados nela. A segunda página contém uma linha e uma elipse. Um arco, um círculo e um retângulo aparecem nas duas últimas páginas. Ao preparar seu diagrama, utilize exatamente um relacionamento de agregação e um ou mais relacionamentos de generalização

Page 61: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Uso de AgregaçãoExercício

(Ponto)dimensões = 0cor = vermelhoposição = (5,4)

(Linha)dimensões = 1cor = azulposição = (12,9)orientação = 36 grauscomprimento = 7

(Arco)dimensões = 1cor = verdeposição = (25,36)orientação = 45 grausdiâmetro = 13

(Círculo)dimensões = 2cor = laranjaposição = (10,78)largura = 5altura = 5

(Quadrado)dimensões = 2cor = amareloposição = (54,88)orientação = 22 grauslargura = 10altura = 10

(Elipse)dimensões = 2cor = marromposição = (-300,49)orientação = 0 grauslargura = 100altura = 50

(Retângulo)dimensões = 2cor = azulposição = (102,158)orientação = 30 grauslargura = 5altura = 10

(Página)N. página = 1 (Página)

N. página = 2 (Página)N. página = 3

(Página)N. página = 4

Page 62: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Uso de AgregaçãoExercício

Resposta PáginaFiguracor

posição

Contem

Ponto

Figura 0D

Linhacomprimento

Figura 1Dorientação

Retângulo

Figura 2Dlarguraalturaorientação

Elipse

Quadrado Circulo

Arcodiâmetroangulo

Page 63: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Classes Abstratas e Concretas

Classe abstrata: classe que não pode ter instâncias diretas, mas cujos descendentes sim; organizam características comuns a diversas classes; mecanismo para reutilizar código; pode definir operações abstratas (sem um correspondente método)

Classe concreta: classe que pode ter instâncias diretas; não pode definir operações abstratas

Page 64: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Cancelamento para extensão

A nova operação é igual à operação herdada, exceto pelo fato de acrescentar alguns detalhes de comportamento, normalmente afetando novos atributos da subclasse.

Page 65: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Cancelamento para restrição

A nova operação restringe o protocolo (assinatura da operação), podendo reduzir os tipos de argumentos.

A operação herdada fica fechada (restrita) dentro de cada subclasse específica.

Page 66: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Cancelamento para otimização

O novo método tem o mesmo protocolo externo e apresenta o mesmos resultados

A implementação do novo método (algoritmo utilizado) pode ser completamente diferente

Page 67: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Cancelamento por conveniência

Emprego ad hoc de herança para reutilizar classes. Uma nova classe é tornada subclasse de uma classe

existente e substitui os métodos inconvenientes. Semanticamente errado e conduz a problemas de

manutenção; recomenda-se criar uma terceira classe (superclasse das demais)

Page 68: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Herança Múltipla

Uma classe possui mais de uma subclasse e herda características de todos os seus ancestrais

Maior capacidade de especificação de classes Maior oportunidade de reutilização Perda em simplicidade conceitual e de

implementação Surgem classes de junção

Page 69: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Modelagem Dinâmica

Page 70: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Modelo Dinâmico

Representa os aspectos de um sistema relativos ao tempo e às modificações de estado

Abrangência:• interações• seqüência de operações• fluxo de controle

Page 71: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Controle de um sistema

Descreve as seqüências de operações que ocorrem em resposta a estímulos externos, sem considerar ao que as operações fazem, sobre o que elas atuam ou como são implementadas.

Page 72: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Conceitos fundamentais

EVENTO: representa um estímulo externo; conduz informação de um objeto para outro.

ESTADO: representa valores (atributos e ligações) de um objeto; estado externo do objeto.

MÁQUINA DE ESTADOS FINITOS

Permite especificação de controle

Page 73: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagrama de Estados

Representação gráfica de uma máquina de estados finitos

Representa o padrão de eventos, estados e transições de estados para uma classe

O modelo dinâmico de um sistema é composto por um conjunto de diagramas de estados, uma para cada classe.

Cada máquina de estado funciona de maneira independente; são combinadas através de eventos compartilhados.

Page 74: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Eventos

Um evento é algo que acontece "instantaneamente", em um certo momento.

Exemplos:

• pressionar um botão do mouse

• aparecer uma janela na tela

• partida de um avião

• chegada de um avião

• tocar um telefone

• atender ao telefone

Page 75: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exemplo de cenário :chamada telefônica

chamador levanta receptor sinal de discar começa chamador disca dígito( 3 ) sinal de discar pára chamador disca dígito ( 3 ) chamador disca dígito ( 0 ) chamador disca dígito ( 8 ) chamador disca dígito ( 0 ) chamador disca dígito ( 8 ) chamador disca dígito ( 1 ) telefone chamado começa a tocar ouve-se o tilintar do telefone chamado pessoa chamada atende telefone chamado pára de tocar som de chamada desaparece do telefone chamador telefones são interligados pessoa chamada desliga telefones são desligados chamador desliga

Page 76: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Exemplo de diagrama de eventos :chamada telefônica

Chamador Linha telefônica Chamadochamador levanta receptorsinal de discar começa

disca ( 3 )sinal de discar pára

disca ( 3 )disca ( 0 )disca ( 8 )disca ( 0 )disca ( 8 )disca ( 1 )

telefone tocasom de campainhaatende telefonecampainha párasom de campainha pára

telefones interligadostelefones interligadosPessoa chamada desliga

conexão desfeitaconexão desfeitachamador desliga

Page 77: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Relacionamentos entre eventos

Causal: existe uma ordem entre os eventos. Exemplo: O vôo 123 deve partir de Chicago antes de chegar a São Francisco.

Concorrente: ordem dos eventos é irrelevante. Exemplo: O vôo 123 pode partir antes ou depois que o vôo 456 parta de Roma. (Se fosse "para Roma", deveríamos considerar se não usam a mesma pista.)

Page 78: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Classes de eventos

Indicam estrutura e comportamentos comuns a eventos.

Simplificam a construção de diagramas de estados. Exemplo: classe partidas de aviões, com atributos

linha aérea, número de vôo, cidade de origem, cidade destino.

O momento ocorrência de um eventos é um atributo implícito.

Page 79: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Cenário

Seqüência de eventos que ocorrem durante uma determinada execução do sistema

Ilustra uma situação típica do sistema Auxilia no entendimento do problema e na

condução para uma representação geral (modelo dinâmico)

Diagrama de eventos: representação gráfica de um cenário. Exemplo: uma chamada telefônica.

Page 80: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagramas de Estados

Relaciona eventos e estados Um objeto muda de estado dependendo do evento

e do estado atual. Transição: modificação de estado causada por

um evento (mesmo quando estado final e inicial coincidem).

Um evento pode ser irrelevante para um objeto em um certo estado.

Exemplo: linha telefônica

Page 81: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagramas de EstadosExemplo : Linha telefônica

Inativa

Sinal de discar

Ligando

Tocando

Interligando

Desligando

Queda-da-linha

Mensagem gravadaSinal de

ocupado

Sinal de ocu-pado rápido

no-gancho

dígito( n )

no-gancho

Discando

Mensagemterminada

encaminhado

telefone chamado atende

telefone chamado desliga

número válido

número invalido

fora-do-gancho

dígito( n )

número ocupado

tronco ocupado

queda-da-linha

queda-da-linha

Page 82: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Tipos de diagramas de estados

Diagrama de laço contínuo: representa um ciclo de vida; sem estado inicial ou final. Exemplo: linha telefônica.

Diagrama de uma só passagem: representa objetos com vida finita; possuem um estado inicial (criação do objeto) e um estado final (destruição do objeto).

Exemplo: jogo de xadrez

Page 83: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagramas de EstadosExemplo : jogo de xadrez

Vez dasbrancas

Vez daspretas

brancasjogam

pretasjogam

Início cheque-mate

empate forçado

empate forçado

cheque-mate

Pretasvencem

Brancasvencem

Empate

Diagrama de estados de uma só passagem para um jogo de xadrez

Page 84: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Condições

Uma condição é uma função booleana de valores, válida dentro de um intervalo de tempo.

Condições funcionam como guardas nas transições: uma transição só dispara quando ocorre o evento e a condição de guarda for verdadeira.

Exemplo: Pessoa com relação ao atributo "estar de luvas".

Page 85: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagramas de EstadosExemplo : Veículo

Leste / Oestepodem dobrar

à esquerda

tempodecorrido

Diagrama de estados com transições guardadas

Leste / Oestepodem ir em frente

Norte / Sulpodem ir em frente

tempo decorrido [ carrosnas vias esquerdas N / S ]

tempo decorrido [ carrosnas vias esquerdas L / O ]

tempodecorrido

tempo decorrido [ sem carros

nas vias esquerdas N / S ]

Norte / Sulpodem dobrar

à esquerda

tempo decorrido [ sem carros

nas vias esquerdas L / O ]

Page 86: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Controle de Operações

Atividades e ações podem ser vinculadas a estados e eventos a fim de se especificar o que faz o objeto quando está em um determinado estado e o que faz em resposta a estímulos externos.

Definem o comportamento do objeto!

Page 87: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Atividade

Está sempre vinculada a um estado Consome tempo para se completar É executada continuamente durante o tempo em que o

objeto está num certo estado Notação: faça: atividade Exemplo: Um vendedor logo após ter recebido dinheiro

para pagamento do item vendido deve calcular o troco.

faça: calcular troco

Page 88: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Ação

Está normalmente vinculada a um evento, mas também pode estar vinculada a um estado (ações de entrada, saída e internas)

É executada "instantaneamente" Notação: evento / ação Exemplo: Exibir um menu quando o botão direito do

mouse é pressionado.

botão direito pressionado / exibir menu

Page 89: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Controle de Operações

Ações para um menu instantâneo

Inativo

botão direito pressionado /exibir menu instantâneo

Menu visível

botão direito liberado / apagar menu instantâneo

cursor movimentado / iluminar item do menu

Page 90: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagrama de Estados com Operações

Notação

Estado 1faça : atividade 1

Evento 1 ( atributos )[ condição 1 ] / ação 1 Estado 2

. . .

Exercício:rescrever o diagrama de uma chamada telefônica utilizando a notação acima

Page 91: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagramas de Estados Nivelados

Permitem refinamentos sucessivos do modelo dinâmico

Permitem uma descrição estruturada do sistema Pode-se expandir:

• um evento e sua correspondente ação

• uma atividade realizada em um certo estado Exemplo: Máquina de vender

Page 92: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagramas de Estados NiveladosExemplo : máquina de vender

Inativa

moedas introduzidas ( quantia ) / verificar saldo

Recolhendo dinheiromoedas introduzidas ( quantia ) /

acrescentar ao saldo

faça : entregaritem

faça : preparartroco

faça : testar item e calcular troco

[ troco = 0 ] [ troco > 0 ]

[ troco < 0 ]

Selecionar ( item )[ item vazio ]

cancelar / devolver moedas

Page 93: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Diagramas de Estados NiveladosExemplo : máquina de vender

Faça : moverbraço para afileira correta

faça : prepararitem

Faça : moverbraço para a

coluna correta

faça : empurraritem para forada prateleira

braço pronto braço pronto empurrado

dígito( n )

clear

faça : acrescentar

dígito

dígito( n )

enter

Selecionar( item )

Atividade entregar item da máquina de vender

Transição selecionar item da máquina de vender

Page 94: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Generalização de Estados

Os estados de um objeto podem ser organizados de forma hierárquica, em super-estados e sub-estados.

Um sub-estado é um refinamento de um super-estado, i.e., um sub-estado é um dos possíveis estados do objeto dentro daquele super-estado.

Um sub-estado herda as transições do super-estado; transições que se aplicam ao super-estado também se aplicam ao sub-estado.

Exemplos: linha telefônica, transmissão automática de um automóvel

Page 95: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Generalização de Estados Exemplo : transmissão de um carro

Primeira Segunda Terceira

sobe

Neutro Réapertar R

apertar N

reduz

sobe

reduz

Para a frente

pára

apertar Fapertar N

Page 96: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Generalização de Eventos

Os eventos que ocorrem em um sistema podem ser organizados de forma hierárquica, em super-eventos e sub-eventos.

Um sub-evento herda atributos do super-evento. Onde um evento é descrito qualquer sub-evento seu é

implicitamente descrito. A generalização de eventos facilita a abstração e permite

concisão na representação de diagramas. Exemplo: Entrada do usuário.

Page 97: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Generalização de EventosExemplo : eventos de teclado

evento

Entrada do usuário

Botão do mouse

apertado

controle gráfico

espaço alfanumérico pontuação

tempo

dispositivo

Botão do mouselocalização

caracter do tecladocaracter

Botão do mouse

liberado

Hierarquia parcial deeventos para eventos

de teclado

Page 98: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Concorrência de Agregação

O estado de um objeto composto (um agregado) é determinado pelos estados dos objetos que o compõem.

Exemplo: O estado de um carro é determinado pelo estado da ignição, da transmissão, do freio, do acelerador, do motor, ...

Os componentes de um agregado normalmente interagem entre si: a mudança de estado de um componente pode disparar uma transição em outro componente.

A interação entre diagramas de estados de componentes é representada através de eventos compartilhados e/ou condições de guarda.

Page 99: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Concorrência de Agregação

CarroIgnição Transmissão Freio Acelerador

Desligada Partida Ligada

Girar chave para dar partida[ transmissão em Neutro ]

desligar a chave

liberar chave

Ignição

Desligado Ligado

apertaracelerador

apertar freio

liberar acelerador liberar freio

Acelerador Freio

Desligado Partido

Page 100: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Concorrência Interna de Objetos

O diagrama de estados de um objeto pode ser particionado de acordo com atributos e ligações em sub-diagramas.

O estado do objeto compreende um estado de cada sub-diagrama.

Um mesmo evento pode causar transições em mais de um sub-diagrama.

Exemplo: Jogo de bridge rubber.

Page 101: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Concorrência Interna de Objetos

Não vulnerável

Não vulnerável

Vulnerável

Vulnerável

N-S vence rubber

L - O vence rubber

Vulnerabilidade N - S

jogo N - S

Vulnerabilidade L - O

jogo L - O

jogo N - S

jogo L - O

Jogando rubber

Jogo de bridge com estados concorrentes

Page 102: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Transição Automática

Disparada quando a atividade vinculada a um estado termina

O "evento" que causa a transição é o término da atividade

Exemplo: Máquina de vender no estado correspondente a atividade testar item e calcular troco pode disparar uma de quatro transições automáticas.

Page 103: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Ações de Entrada e de Saída

Ações vinculadas ao ato de entrar ou sair de um estado

Não adicionam poder de expressão, mas permitem uma representação mais concisa

Exemplo: Controle de uma porta de garagem

Page 104: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Envio de Eventos

Uma ação pode ser especificada como enviar um certo evento para outro objeto.

Notação: enviar E (atributos)

(palavra enviar pode ser omitida) Exemplo: Uma linha telefônica envia o evento

ligar(número-de-telefone) para o comutador quando um número completo é discado.

número completo / ligar(número-de-telefone)

Page 105: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Sincronização de Eventos Concorrentes

Um objeto pode executar várias atividades de forma concorrente (paralela).

As atividades não são necessariamente sincronizadas, mas todas devem terminar para que ocorra transição de estado.

Exemplo: Caixa automática.

Page 106: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Sincronização de Eventos Concorrentes

Faça : entregar dinheiro

Faça : ejetar cartão

Pronta parareinicializar

Emitindo

cartão recolhido

dinheiro recolhido

Preparação

Page 107: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Modelagem Funcional

Page 108: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Introdução

O modelo funcional:• descreve os cálculos executados em um

sistema• especifica o que acontece

O modelo dinâmico• especifica quando acontece

O modelo objeto• o que acontece a quem

Page 109: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Modelo funcional

O modelo funcional é composto por múltiplos DFD que especificam o significado das operações e restrições

Um DFD mostra os relacionamentos funcionais dos valores calculados por um sistema, incluindo-se aí valores de entrada e de saída e de depósitos internos de dados

Page 110: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

D.F.D.

Ele mostra• o fluxo dos valores de dados desde suas origens nos objetos,

através dos processos que os transformam, até seus destinos em outros objetos

Ele NÃO mostra• informações de controle, como o momento em que os

processos são executados, ou decisões entre vias alternativas de dados; essas informações pertencem ao modelo dinâmico

• a organização dos valores no interior dos objetos; essa informação pertence ao modelo de objetos

Page 111: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

D.F.D.

Um D.F.D. contém:• processos que transformam dados,

• fluxos de dados que movimentam dados,

• objetos atores que produzem e consomem dados e

• objetos depósitos de dados que armazenam dados passivamente

Page 112: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

D.F.D.

Expandirem vetores

Cortar vetores

Converterem vetores

Deslocar vetores

Buffer da tela

Definiçõesde ícones Janela

nome deícone

localização

localização

tamanho

lista de vetoresda janela

lista de vetores de aplicação

operações de pixels

lista de vetoresda tela

Page 113: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Processos

DividirInteira

dividendo

divisor

quociente

resto

ExibirÍcone

nome do ícone

localização

operaçõesde pixels

Page 114: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Fluxos de dados

• Um fluxo de dados interliga a saída de um objeto ou processo à entrada de outro objeto ou processo.

• Os fluxos de dados representam os valores intermediáriosde dados em uma computação.

• Os valores não são modificados pelos fluxos

número endereço

rua e número

códigopostal

cidade

estado

Page 115: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Atores

Um ator é um objeto que dirige o DFD produzindo ou consumindo valores.

Os atores são vinculados às entradas e saídas de um DFD. Os atores, normalmente, se localizam nos limites do DFD

tanto como origens ou como destinos de dados Um ator é desenhado como um retângulo para mostrar que

ele é um objeto. As flechas entre o ator e o diagrama são entradas e saídas

do diagrama. Exemplo: o “buffer” de tela é um ator que consome operações

de pixels.

Page 116: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Depósitos de dados

Um depósito de dados é um objeto passivo, em DFD, que armazena dados para uso futuro.

Um depósito de dados permite que o acesso aos valores seja feito em uma ordem diferente daquela em que foram gerados.

Depósitos de dados agregados como listas e tabelas, permitem acesso aos dados por ordem de inserção ou por chaves de indexação.

Exemplo: como depósito de dados pode-se incluir o banco de dados de reserva de lugares em uma empresa aérea, contas bancárias e uma lista de registros de temperatura do dia anterior.

Page 117: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Depósitos de dados

Um depósito de dados é desenhado como um par de linhas paralelas contendo o nome do depósito

As setas de entrada indicam informações ou operações que modificam os dados armazenados, incluindo :• o acréscimo de elementos ;• a modificação de valores ;• a eliminação de elementos.

As setas de saída indicam a recuperação de informações do depósito, incluindo:• a recuperação de todo o valor ou• de uma parte dele.

Page 118: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Depósitos de dados

Leituras

Lista depreços

Tabelaperiódica

temperaturatemp. max.

temp. min.

nome do item

preço

acharpreço

acharpeso

nome do item preço elemento

peso atômico

pesos atômicos

cliente --

Conta

saldoretirada

Page 119: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Depósitos de dados

Bancocontas

Escolha Conta

AtualizarCliente

saldo

solicitaçãonome

Criação dinâmica ou seleção de um objeto para uso posterior

Page 120: Orientação a Objetos Edson E. Scalabrin, Marcos A. H. Shmeil e Alcides Calsavara {scalabrin, shm, alcides}@ppgia.pucpr.br Telefone: 0xx-41-330-1669

Depósitos de dados

Abrir conta

Banco

Cliente

nome,depósito

Criação de um novo objeto

Contanúmero da conta

conta