![Page 1: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/1.jpg)
Projeto Orientado a Objetos
Renata Araujo
Projeto e Construção de Aplicaçôes com Ambiente de ProgramaçãoUNIRIO2002.1
![Page 2: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/2.jpg)
Projeto Orientado a Objetos
Ciclo de Vida de Desenvolvimento de Software – Principais atividades
Definição de RequisitosDefinição de Requisitos
AnáliseAnálise
ProjetoProjeto
ImplementaçãoImplementação
TestesTestes
![Page 3: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/3.jpg)
Projeto Orientado a Objetos
Análise de Requisitos Objetivos
Definição de RequisitosDefinição de Requisitos
AnáliseAnálise
ProjetoProjeto
Durante a fase de análise é dada prioridade ao conhecimento: do domínio do problema dos requisitos, conceitos e
operações relacionadas com o sistema.
As questões da análise se concentram em o que é o software.
![Page 4: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/4.jpg)
Projeto Orientado a Objetos
Análise Orientada a Objetos - UML
Conjunto de artefatos UML gerados na fase de análise:
Casos de Uso Quais são os processos do domínio da aplicação
Modelo Conceitual/Classes & Objetos Quais são os conceitos e termos
Diagramas de Sequência Quais são os eventos e operações do sistema
![Page 5: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/5.jpg)
Projeto Orientado a Objetos
Projeto – Objetivo e Resultados
Conceber uma solução lógica para o sistema
Adaptar os resultados da análise às restrições impostas pelo ambiente de implementação
Refinamento dos modelos para adequarem-se a requisistos de desempenho
AnáliseAnálise
ProjetoProjeto
ImplementaçãoImplementação
![Page 6: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/6.jpg)
Projeto Orientado a Objetos
Projeto Orientado a Objetos
Objetivos Refinamento dos modelos obtidos na fase de análise e
construção de outros modelos para comportar decisões quanto a:
Arquitetura
Interface
Persistência
Colaboração entre objetos
Requisitos não funcionais (desempenho, segurança, confiabilidade ...)
![Page 7: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/7.jpg)
Projeto Orientado a Objetos
Arquitetura
Decomposição do sistema em subsistemas/módulos estrutura e interface entre os subsistemas
Subsistema OO/Pacote: Conjunto de classes que agem como uma unidade e provêem
um comportamento específico para o sistema
Subsistemas podem ser alocados a diferentes processadores, facilitando o processo concorrente
![Page 8: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/8.jpg)
Projeto Orientado a Objetos
Arquitetura em três camadas – Visão clássica
Interface de Apresentação
Lógica da Aplicação
Armazenamento
Janelas, relatórios
etc
Tarefas e regras de governam o processamento
Mecanismo de persistência
Objetos de interface
Objetos do domínio da aplicação
Objetos persistentes
![Page 9: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/9.jpg)
Projeto Orientado a Objetos
Arquitetura multicamadas
Decomposição mais fina das camadas anteriores
Acréscimo de camadas adicionais
Administração da complexidade na implementação
Pagamento Venda
Interface com o BD Gerador de Relatório
Lógica da Aplicação
Conceitos do domínio
Serviços
![Page 10: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/10.jpg)
Projeto Orientado a Objetos
Disposição física
As camadas podem ser dispostas fisicamente em várias configurações
Interface - Cliente Lógica e Armazenamento – Servidor
Interface e Lógica – Cliente Armazenamento - Servidor
![Page 11: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/11.jpg)
Projeto Orientado a Objetos
Definição da Arquitetura em UML
Diagrama de Pacotes
Elementos Centrais Vendas
Conceitos do Domínio
![Page 12: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/12.jpg)
Projeto Orientado a Objetos
Projeto Orientado a Objetos
Conjunto de artefatos gerados na fase de projeto
Descrição de Casos de Uso “reais” Projeto concreto de como o caso de uso será realizados Detalhamento da interface com o usuário
Diagramas de Colaboração Comunicação entre objetos para atender aos casos de uso
Diagramas de Classes de Projeto Detalhamento das classes do sistema com definições que
permitam sua implementação Tipos de atributos, detalhamento de serviços etc
![Page 13: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/13.jpg)
Projeto Orientado a Objetos
Interface com Usuário
Identificação dos elementos da interface a partir dos casos de uso especificados para o sistema
Definição de Casos de Uso “Reais” A descrição de um caso de uso “real” descreve o projeto real em
termos da tecnologia de entrada e saída e sua implementação em geral.
“Design” da interface visando a usabilidade do sistema
![Page 14: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/14.jpg)
Projeto Orientado a Objetos
Casos de Uso “reais”Caso de Uso: Comprar itens – versão 1 (pagamento somente com dinheiro)Objetivo: Capturar uma venda e seu pagamento em dinheiro.Atores: Cliente (iniciador), Caixa.Pré-condição: ... Pós-Condição: ...Descrição: Um cliente chega a um ponto de venda, trazendo vários itens que deseja comprar. O Caixa registra os itens da compra e recebe um pagamento em dinheiro. Ao término, o Cliente sai com os itens comprados. Sequência típica de eventos: Ator1. Este caso de uso começa quando um Cliente chega a um ponto de venda equipado com um POST, trazendo vários itens que deseja comprar.2. Para cada item, o Caixa registra o Código Universal de Produto (UPC) em A da Janela1. Se houver mais de um exemplar do item, a quantidade pode ser entrada opcionalmente em E. O Caixa pressiona H após cada entrada do item.4. No término da entrada de itens, o Caixa indica para o POST que a entrada de itens está completa, apertando I.
Sistema3. Acrescenta informação sobre o item à transação de vendas em andamento. A descrição e o preço do item corrente são apresentados em B e F da Janela-1.5.Calcula e exibe o total da venda em C.
A
B
C
D
E
F
G
H I J
![Page 15: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/15.jpg)
Projeto Orientado a Objetos
Diagramas de Colaboração
Mostra como os objetos (pertencentes às classes identificadas no modelo de classes&objetos) interagem através de mensagens para cumprir tarefas (em geral definidas nos casos de uso)
:POSTentrarItem(upc,qtd)
:Venda
1:[new venda] criar()3: criar ItemdeLinha(espec, qtd)
2: espec:=especificação (upc)
:Catálogode Produtos
:EspecificaçãodeProduto
2.1: espec:=enontrar (upc)
:LinhadeItemdeVenda
1.1: criar()
3.2: adicionar(lv)
:LinhadeItemdeVenda
3.1: criar(espec, qtd)
Primeira mensagem Primeira mensagem interna
Direção da mensagem
instância
![Page 16: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/16.jpg)
Projeto Orientado a Objetos
Diagramas de Colaboração - Notação
:VendaVenda v1:Venda
Classe: Instância: Instância nomeada:
Ligações (caminhos/associações de comunicação):
:POST :Venda
:POST :Venda
1: acrescentarPagamento( quantia:int)
Mensagens, parâmetros e valores de retorno:
:POST :Venda
1: tot := total( ) : integer
:POST
1: limpar()
![Page 17: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/17.jpg)
Projeto Orientado a Objetos
Diagramas de Colaboração - Notação
:POST :Venda
Iteração:
:POST :Venda
1*: li := proximaLinhadeItem() : LinhadeItemdeVenda
1*: [i :=1..10] li := proximaLinhadeItem() : LinhadeItemdeVenda
:POST:Venda
Criação de instâncias:1: criar(caixa)
![Page 18: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/18.jpg)
Projeto Orientado a Objetos
Diagramas de Colaboração - Notação
Número de sequência de mensagens:
:ClasseA :Classe B
Msg1()
:Classe C
1: Msg2()
1.1: Msg3()
1: Msg4()2.1: Msg5()
:Classe D
2.2: Msg6()
![Page 19: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/19.jpg)
Projeto Orientado a Objetos
Diagramas de Colaboração - Notação
Mensagens condicionais:
:POSTentrarItem(upc,qtd)
:Venda1:[nova venda] criar()
:LinhadeItemdeVenda
1.1: criar()
Caminhos condicionais:
:ClasseA :Classe B
Msg1()
:Classe C
1a: [test1] Msg2()
1a.1: msg3()
1b.1: msg5()
:Classe D
:ClasseE
1b: [not test1] Msg4()
2: Msg6()
![Page 20: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/20.jpg)
Projeto Orientado a Objetos
Diagramas de Colaboração - Notação
Coleções de objetos:
:Venda
:LinhadeItemdeVenda
1: s:= tamanho() : int
![Page 21: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/21.jpg)
Projeto Orientado a Objetos
Conectando a Camada de Apresentação à camada de Domínio
venda:Vendapost:POST
:POSTWindow
EntrarItem()
1: entrarItem(upc, qtd)
2: [nenhuma venda] venda := getVenda() : Venda
3: t := total() : Float Classes de Apresentação/Interface
Classes de Domínio
![Page 22: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/22.jpg)
Projeto Orientado a Objetos
Determinando Visibilidade
Para um objeto enviar uma mensagem a outro objeto, o objeto receptor deve ser visível pelo objeto emissor.
O objeto emissor deve ter algum tipo de referência ao objeto receptor para enviar sua mensagem.
:POST
prodCatalogo:CatalogodeProdutos
1: espec := especificação(upc)
No exemplo ao lado, para enviar a mensagem especificação() para o
objeto de CatalogodeProdutos, oobjeto da classe POST necessita tê-lo
visível.
Class POST {... private prodCatalago CatalogodeProdutos;...}
entrarItem(upc, qtd))
![Page 23: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/23.jpg)
Projeto Orientado a Objetos
Tipos de Visibilidade
Visibilidade por atributo
:POST
prodCatalogo:CatalogodeProdutos
1: espec := especificação(upc)
Class POST {... private prodCatalago CatalogodeProdutos;...
entrarItem( upc, qtd ){ ... espec = prodCatalogo.especificação(upc); ... }}
entrarItem(upc,qtd)
![Page 24: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/24.jpg)
Projeto Orientado a Objetos
Tipos de Visibilidade
Visibilidade por parâmetro
:POST
prodCatalogo:CatalogodeProdutos
1: espec := especificação(upc)
Class Venda {... construirLinhadeItem( Especificação espec, qtd ){ ... lv = new LinhadeItemdeVenda(espec, qtd); ... }}
venda:Venda2: construirLinhadeItem(espec, qtd)entrarItem(upc,qtd)
![Page 25: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/25.jpg)
Projeto Orientado a Objetos
Tipos de Visibilidade
Visibilidade localmente declarada
:POST
prodCatalogo:CatalogodeProdutos
1: espec := especificação(upc)
Class POST {... entrarItem( upc,qtd ){ ... Venda venda = new Venda(); ... venda.construirLinhadeItem( espec, wtd ); ... }}
venda:Venda3: construirLinhadeItem(espec, qtd)
1: [nova venda] criar()entrarItem(upc,qtd)
![Page 26: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/26.jpg)
Projeto Orientado a Objetos
Tipos de Visibilidade
Visibilidade global
Atribuir uma instância a uma variável global
![Page 27: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/27.jpg)
Projeto Orientado a Objetos
Diagramas de Classes de Projeto
Algumas estratégias para detalhar o diagrama de classes na fase de projeto:
Identificar todas as classes participantes da solução de software. Tanto de domínio como de interface.
Identifique métodos, com seus parâmetros e tipos de retorno. Métodos necessários em todas as classes:
Construtores Métodos de Acesso aos atributos: consultar e modificar valores.
Identifique novos atributos e seus tipos. Acrescente associações necessárias para se suportar a
visibilidade entre objetos
![Page 28: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/28.jpg)
Projeto Orientado a Objetos
Diagramas de Classes de Projeto
Métodos de Acesso
LojaString: endereçoString: nomecriarLoja()informarNome():stringintormarEndereço():stringatribuirNome( string ) atribuirEndereço( string )...
![Page 29: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/29.jpg)
Projeto Orientado a Objetos
Diagramas de Classes de Projeto
Algumas estratégias para detalhar o diagrama de classes na fase de projeto:
Identificar todas as classes participantes da solução de software. Tanto de domínio como de interface.
Identifique métodos, com seus parâmetros e tipos de retorno. Identifique novos atributos e seus tipos. Acrescente associações necessárias para se suportar a
visibilidade entre objetos
![Page 30: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/30.jpg)
Projeto Orientado a Objetos
Persistência
Armazenamento e recuperação de objetos
Soluções: Arquivos sequenciais – Serialização de objetos Bancos de dados orientados a objetos – Jasmine, O2 Bancos de dados relacionais – Oracle, MsAccess Outros bancos de dados: Objeto/Relacional
Dependendo da solução, haverá maior ou menor esforço para construção da interface para mapeamento dos dados para a camada de persistência.
![Page 31: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/31.jpg)
Projeto Orientado a Objetos
Persistência
Domínio
Interface para Banco de Dados Relacional
BDOO
Banco Relacional
Arquivos
![Page 32: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/32.jpg)
Projeto Orientado a Objetos
Persistência
A forma mais fácil de resolver o problema é a utilização dos Sistemas Gerenciadores de Bancos de Dados Orientados a Objetos (SGBDOO) Ex: O2, Ontos, ObjectStore, Jasmine, etc.
Com SGBDOOs, os objetos são transparentemente transientes quanto persistentes
![Page 33: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/33.jpg)
Projeto Orientado a Objetos
O Problema da Persistência
Ex: Classes GerenteMatrícula e Alunoint GerenteMatrícula::IncluirNovoAluno(String nome, Date dtNascimento) {
Aluno novoAluno;int ultimoCodMatricula;
OODBMS->StartTransaction();ultimoCodMatricula = (int)OODBMS->ExecOQL(“select max(matricula) from Aluno”);Aluno novoAluno = new Aluno(ultimoCodMatricula + 1, nome, dtNascimento); OODBMS->Commit();
}
Problemas: SGBDOOs são caros e não tem o mesmo desempenho que SGBDs Relacionais
![Page 34: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/34.jpg)
Projeto Orientado a Objetos
O Problema de Persistência
Outras Estratégias:
Serialização É basicamente um DUMP da memória para o disco. Interessante para aplicações de pequeno porte e de um usuário.
Mapeamento OO – Relacional Muito utilizado Existência de pacotes de comunicação com bancos relacionais em
linguagens OO Ex: JDBC (Java Database Connectivity)
Problema: Como fazer o Projeto da Aplicação???
Mapeamento OO – SGBDs Objeto-Relacional Raro, mas promissor se os SGBDs evoluirem.
![Page 35: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/35.jpg)
Projeto Orientado a Objetos
Estratégias de Implementação:Ambiente O.O.
Armazenamento
Classes da Aplicação ou (Transientes)
Classes de Interface (Transientes)
Mensagens
Mensagens
![Page 36: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/36.jpg)
Projeto Orientado a Objetos
Estratégias de Implementação:Ambiente O.O. - Relacional (1)
Classes da Aplicação ou (Transientes)
Classes de Interface (Transientes)
Mensagens
Interação com o SGBD
Tabelas Relacionais
![Page 37: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/37.jpg)
Projeto Orientado a Objetos
Estratégias de Implementação:Ambiente O.O. - Relacional (2)
Classes do Domínio (Transientes) c/ Métodos paraManipulação do Banco
Classes da Aplicação ou (Transientes)
Classes de Interface (Transientes)
Mensagens
Mensagens
Tabelas Relacionais
Interação com o SGBD
![Page 38: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/38.jpg)
Projeto Orientado a Objetos
Estratégias de Implementação
A escolha da estratégia de persistência com SGBDs Relacionais vai depender de decisões do projeto baseadas principalmente nos diagramas de casos de uso e de classes. Existem métodos importantes no domínio da aplicação? O volume de objetos é crítico na aplicação? Desempenho é um aspecto crítico?
![Page 39: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/39.jpg)
Projeto Orientado a Objetos
Mapeamento OO – RelacionalRegras GeraisRegras Gerais
Para cada classe instanciável criamos uma tabela dentro do SGBD Relacional.
Os atributos de cada classe também tornam-se atributos da tabela Exceções: Atributos Implícitos (destinados à implementação de
relacionamentos) e Arrays (se não for possível)
Adicione uma chave primária em cada tabela (adote sempre o mesmo tipo, ex: LONGINT)
Os relacionamentos 1 1..* (implementados por atributos implícitos) tornam-se chave estrangeira.
![Page 40: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/40.jpg)
Projeto Orientado a Objetos
Mapeamento OO – RelacionalRegras GeraisRegras Gerais
Os relacionamentos 1..* 1..* requerem a implementação de tabelas para associação.
Classes não-instanciáveis devem ser implementadas como visões, onde a consulta que define a visão utiliza um UNION entre as tabelas que representam especializações.
As regras podem ser mudadas caso encontre-se uma solução particular que traga benefícios de desempenho ou legibilidade.
![Page 41: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/41.jpg)
Projeto Orientado a Objetos
Mapeamento OO – RelacionalRegras GeraisRegras Gerais
Ex:
Pessoa
nome : String
<<abstract>>
Aluno
Matricula : integer
Funcionário
MatrFuncional : Integer
Departamento
Nome : String
1..1
1..*
1..1
1..*
Curso
1..*
1..*
1..*
1..*
está matriculado em ->
1..* 1..1
É Administrado por -->
1..* 1..1
![Page 42: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/42.jpg)
Projeto Orientado a Objetos
Mapeamento OO – RelacionalRegras GeraisRegras Gerais
Solução:Aluno(IdAluno, Nome, Matrícula)Funcionario(IdFuncionario, Nome, MatrFuncional)Curso(IdCurso, Nome, IdDepartamento)Departamento(IdDepartamento, Nome)Matriculado_em(IdAluno, idCurso)View Pessoa as
Select IdAluno, Nome, “ ALUNO ” from Aluno UNION
Select IdFuncionario, Nome, “FUNCIONARIO” from Funcionario
![Page 43: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/43.jpg)
Projeto Orientado a Objetos
Serialização
Serialização: Acomodação dos dados de objetos em arquivos sequenciais
Streams definidas no pacote java.io especiais para persistência de objetos: ObjectInputStream ObjectOutputStream
![Page 44: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/44.jpg)
Projeto Orientado a Objetos
Serialização
Gravando objetos...
// cria um stream the saída para um arquivo FileOutputStream out = new FileOutputStream("theTime.dat"); //associa o stream the saída a um stream de objetos (serializado) ObjectOutputStream s = new ObjectOutputStream(out); //escreve um objeto da classe string no stream (dado primitivo) s.writeObject("Today"); //escreve um objeto da classe Date no stream (dado estruturado) s.writeObject(new Date()); //libera stream para arquivo s.flush();
Ao se gravar um objeto em arquivo através da serialização, todos os seus dados (atributos) são armazenados recursivamente, inclusive se forem outro objetos.
![Page 45: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/45.jpg)
Projeto Orientado a Objetos
Serialização
Recuperando objetos...
// cria um stream the entrada para um arquivo FileInputStream in = new FileInputStream("theTime.dat"); //associa o stream the entrada a um stream de objetos
(serializado) ObjectInputStream s = new ObjectInputStream(in); //Lê um objeto da classe String String today = (String)s.readObject(); //Lê um objeto da classe Date Date date = (Date)s.readObject();
Ao se recuperar um objeto em arquivo através da serialização, todos os seus dados (atributos) são recuperados recursivamente, inclusive se forem outro objetos.
![Page 46: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/46.jpg)
Projeto Orientado a Objetos
Serialização
Determinando a serialização de objetos em suas classes Um objeto é serializável somente se sua classe implementa a
interface Serializable
public class MySerializableClass implements Serializable { ... }
Não é preciso definir nenhum método A serialização das instâncias desta classe é garantida pelos métodos
da classe ObjectOutputStream Estes métodos escrevem automaticamente todas as informações que
são necessárias para se gravar um objeto
![Page 47: Projeto Orientado a Objetos Renata Araujo Projeto e Construção de Aplicaçôes com Ambiente de Programação UNIRIO 2002.1](https://reader034.vdocuments.com.br/reader034/viewer/2022051820/552fc105497959413d8c04b2/html5/thumbnails/47.jpg)
Projeto Orientado a Objetos
Serialização
Em alguns casos, é preciso que o programador customize a serialização de um objeto
Para isso, há que criar os métodos writeObject e readObject para a classe que se deseja serializar os objetos:
private void writeObject(ObjectOutputStream s) throws IOException { s.defaultWriteObject(); // customized serialization code }
private void readObject(ObjectInputStream s) throws IOException {
s.defaultReadObject(); // customized deserialization code ... // followed by code to update the object, if necessary }