Repositórios JPA no Projeto ecafeteria

Tamanho: px
Começar a partir da página:

Download "Repositórios JPA no Projeto ecafeteria"

Transcrição

1 Repositórios JPA no Projeto ecafeteria Um objeto EntityManager representa uma ligação à base de dados. Quando um objeto EntityManger é criado também é criado um objeto EntityTransaction associado ao EntityManager. Operações que modificam a base de dados têm de ser executadas dentro de uma transação. Para executar essas operações temos de iniciar a transação, executar as operações e fazer o commit da transação. As operações na base de dados são efetuadas por métodos existentes nos Repositórios. Se a operação a executar na base de dados afeta apenas um repositório, o início e commit da transação podem ser feitos no método existente no repositório. Assim controladores que usam apenas um agregado criam um Repositório (subclasse de) JpaTransactionalRepository, no qual cada método abre e fecha a transação working in a single immediate transaction mode. Se a operação a executar na base de dados afeta mais que um repositório, o início e commit da transação podem ser feitos no método do Controlador que usa os vários repositórios. Assim controladores que usam mais que um agregado criam Repositórios (subclasses de) JpaWithTransactionalContextRepository, no qual cada método não abre nem fecha a transação working within a TransactionalContext. Uma transação é iniciada no Controlador, a seguir são efetuadas operações nos vários Repositórios e no fim a transação é fechada no Controlador. A classe JpaTransactionalContext do projeto framework (package eapli.framework.persistence.repositories.impl.jpa) permite criar um objeto que representa uma ligação à base de dados e respetiva transação, assim como abrir e fechar a transação e fazer commit ou rollback. A linha de código seguinte cria um objeto que representa uma ligação à base de dados e respetiva transação: private final TransactionalContext TxCtx = PersistenceContext.repositories().buildTransactionalContext(); Classes base para Repositórios: public abstract class JpaBaseRepository<T, K extends Serializable> - implementa a interface IterableDataRepository - superclasse para Repositórios. - contém vários métodos CRUD que não abrem nem fecham a transação. public class JpaWithTransactionlContextRepository<T, K extends Serializable> - subclasse de JpaBaseRepository - recebe na criação um objeto TransactionalContext, através do qual obtém o objeto EntityManager e EntityManagerFactory. - não tem métodos CRUD.

2 public class JpaTransactionalRepository<T, K extends Serializable> - subclasse de JpaWithTransactionalContextRepository - recebe na criação o nome da unidade de persistência, cria o objeto TransactionalContext correspondente, e passa-o à superclasse. - tem os métodos delete(), create() e save(). - os métodos abrem e fecham a transação. public class CafeteriaJpaRepositoryBase<T, K extends Serializable> - subclasse de JpaTransactionalRepository - invoca o construtor da superclasse com o nome da unidade de persistência. - superclasse para Repositórios da aplicação ecafeteria cujas operações a executar na base de dados afetam apenas um repositório. public class JpaAutoTxRepository<T, K extends Serializable> - superclasse para Repositórios cujas operações podem afetar mais que um repositório. - tem dois atributos: repo, do tipo JpaBaseRepository, e autotx do tipo TransactionalContext. - pode receber na criação: 1) um objeto TransactionalContext que guarda no atributo autotx; cria repo do tipo JpaWithTransactionalContextRepository (métodos não abrem nem fecham a transação). 2) uma string com o nome da unidade persistência; o atributo autotx fica com o valor null e cria repo do tipo JpaTransactionalRepository (métodos abrem e fecham a transação). - JpaAutoTxRepository tem os métodos delete(), save(), findall(), findone(), count() e iterator() que delegam as ações no objeto repo.

3 O Problema Operações que modificam a base de dados têm de ser executadas dentro de uma transação. A realização de alguns casos de uso afeta apenas um repositório, mas para outros casos de uso as operações necessárias afetam mais que um repositório. Se as operações de um caso de uso afetam apenas um repositório o início e commit da transação podem ser feitos no método existente no repositório. Se as operações de um caso de uso afetam mais que um repositório o início e commit da transação podem ser feitos no método do Controlador e os repositórios usados devem ter métodos sem controlo transacional. Considerando todos os casos de uso e para cada caso de uso os repositórios usados, verificamos que existem: 1. repositórios que são sempre usados num contexto que não afeta outros repositórios, como por exemplo DishRepository, DishTypeRepository e MaterialRepository. 2. repositórios que podem ser usados quer num contexto que afeta outros repositórios, quer num contexto que não afeta outros repositórios, como por exemplo SignupRequestRepository, UserRepository e CafeteriaUserRepository. Design da solução Hierarquia de classes genéricas destinadas a criar repositórios: JpaBaseRepository<T, K extends Serializable> - classe genérica com várias operações CRUD sem controlo transacional. JpaWithTransactionlContextRepository<T, K extends Serializable> - classe genérica que recebe na criação um objeto TransacionalContext, também sem controlo transacional. JpaTransactionlRepository<T, K extends Serializable> - classe genérica com controlo transacional.

4 O projeto framework tem uma classe para servir de superclasse para os repositórios que são sempre usados num contexto que não afeta outros repositórios - JpaTransactionalRepository<T, K extends Serializable>. No entanto usa-se uma subclasse de JpaTransactionalRepository<T, K extends Serializable> em vez da própria superclasse para: Obter um tipo próprio para representar cada repositório herdando todas as funcionalidades de JpaTransactionalRepository; Ser possível estender o comportamento com métodos específicos para o repositório criado. Na aplicação ecafeteria optou-se por criar, no projeto ecafeteria.persistence.impl, a classe CafeteriaJpaRepositoryBase<T, K extends Serializable> como subclasse de JpaTransactionalRepository, para servir de superclasse às classes dos repositórios que são sempre usados num contexto que não afeta outros repositórios.

5 O projeto framework tem outra classe para representar os repositórios usados num contexto que afeta outros repositórios - JpaWithTransactionlContextRepository<T, K extends Serializable>. Mas como estes repositórios podem ser usados quer em contextos que afetam outros repositórios, quer em contextos que não afetam outros repositórios, e porque não seria modular usar classes diferentes em diferentes cenários para representar o mesmo repositório, o projeto framework tem outra classe JpaAutoTxRepository<T, K extends Serializable> para servir de superclasse a estes repositórios. Esta classe, em vez de usar herança, usa composição. A composição é mais flexível que a herança, porque enquanto a herança adiciona funcionalidades em tempo de compilação, a composição adiciona funcionalidades em tempo de execução. A classe JpaAutoTxRepository possui dois atributos, um atributo repo do tipo JpaBaseRepository e outro atributo autotx do tipo TransactionalContext. Quando JpaAutoTxRepository é usado num contexto que afeta outros repositórios: repo é um objeto do tipo JpaWithTransactionalContextRepository, e autotx é um objeto do tipo JpaTransactionalContext. Quando JpaAutoTxRepository é usado num contexto que não afeta outros repositórios: repo é um objeto do tipo JpaTransactionalRepository, e autotx é null. A classe JpaRepositoryFactory do projeto ecafeteria.persistence.impl (não incluída no diagrama acima) possui um método para criar cada um dos repositórios que são sempre usados num contexto que não afeta outros repositórios, e dois métodos para criar cada um

6 dos repositórios que podem ser usados quer em contextos que afetam outros repositórios, quer em contextos que não afetam outros repositórios: public class JpaRepositoryFactory implements RepositoryFactory { public DishTypeRepository dishtypes() { return new JpaDishTypeRepository(); public DishRepository dishes() { return new JpaDishRepository(); public MaterialRepository materials() { return new JpaMaterialRepository(); public SignupRequestRepository signuprequests() { return new JpaSignupRequestRepository( Application.settings().getPersistenceUnitName()); public SignupRequestRepository signuprequests(transactionalcontext autotx) { return new JpaSignupRequestRepository(autoTx); public UserRepository users() { return new JpaUserRepository( Application.settings().getPersistenceUnitName()); public UserRepository users(transactionalcontext autotx) { return new JpaUserRepository(autoTx); public JpaCafeteriaUserRepository cafeteriausers() { return new JpaCafeteriaUserRepository( Application.settings().getPersistenceUnitName()); public JpaCafeteriaUserRepository cafeteriausers( TransactionalContext autotx) { return new JpaCafeteriaUserRepository(autoTx); public TransactionalContext buildtransactionalcontext() { return JpaAutoTxRepository.buildTransactionalContext( Application.settings().getPersistenceUnitName(), Application.settings().getExtendedPersistenceProperties()); public DishReportingRepository dishreporting() { return new JpaDishReportingRepository();

7 Que classe usar para criar um Repositório? Se o Repositório a criar vai conter operações (a executar na base de dados) que afetam apenas um repositório (o início e commit da transação são feitos no método existente no repositório) devemos criá-lo como subclasse de CafeteriaJpaRepositoryBase. Se o Repositório a criar vai conter operações (a executar na base de dados) que nalguns cenários podem afetar apenas um repositório mas noutros cenários podem afetar mais que um repositório, devemos criá-lo como subclasse de JpaAutoTxRepository. Nos cenários em que as operações afetam mais que um repositório passamos ao construtor de JpaAutoTxRepository um objeto TransactionalContext. Este objeto permite-nos iniciar a transação no Controlador, ser usado nos repositórios para efetuar as operações na base de dados, e por fim fazer o commit da transação no Controlador. O objeto JpaAutoTxRepository cria um atributo repo do tipo JpaWithTransactionlContextRepository, que herda métodos CRUD de JpaBaseRepository, que não abrem nem fecham a transação, embora as operações sejam realizadas dentro de um contexto transacional cujo controlo está fora do repositório. Nos cenários em que as operações só afetam um repositório passamos ao construtor de JpaAutoTxRepository uma string com o nome da unidade de persistência. O objeto JpaAutoTxRepository cria um atributo repo do tipo JpaTransactionlRepository que contém métodos CRUD que abrem e fecham a transação. Assim os repositórios a criar podem ser de 3 tipos: 1. Repositórios cujas operações são sempre realizadas num contexto em que só é necessário aceder a um repositório dentro da transação => subclasse de CafeteriaJpaRepositoryBase. 2. Repositórios cujas operações podem ser realizadas quer num contexto em que só é necessário aceder a um repositório dentro da transação, quer num contexto em que é necessário aceder a mais que um repositório dentro da transação => subclasse de JpaAutoTxRepository Para os cenários em que é necessário aceder a mais que um repositório dentro de uma transação passamos ao construtor de JpaAutoTxRepository um objeto TransationalContext. O atributo repo do objeto JpaAutoTxRepository, no qual ele delega as operações na base de dados, será do tipo JpaWithTransactionalContextRepository Para os cenários em que só é necessário aceder a um repositório dentro de uma transação passamos ao construtor de JpaAutoTxRepository o nome da unidade de persistência. O atributo repo do objeto JpaAutoTxRepository, no qual ele delega as operações na base de dados, será do tipo JpaTransactionalRepository.

8 Exemplo: No caso de uso Aceitar ou Recusar Pedido de Registo o Controlador tem de modificar 3 repositórios: 1. Repos. de SignUpRequest para mudar o objeto do estado Pending para Accepted. 2. Repos. de User para criar o objeto User correspondente ao pedido. 3. Repos. de CafeteriaUser para criar o objeto CafeteriaUser correspondente ao User criado. Para modificar 3 repositórios dentro da mesma transação tem de criar um objeto TransactionalContext, criar cada um dos 3 Repositórios (subclasses de JpaAutoTxRepository) e passar-lhes o objeto TransactionalContext: JpaSignUpRequestRepository JpaUserRepository JpaCafeteriaUserRepository class AcceptRefuseSignupRequestController private final TransactionalContext TxCtx = PersistenceContext.repositories().buildTransactionalContext(); private final SignupRequestRepository signuprequestsrepository = PersistenceContext.repositories().signupRequests(TxCtx); private final UserRepository userrepository = PersistenceContext.repositories().users(TxCtx); private final CafeteriaUserRepository cafeteriauserrepository = PersistenceContext.repositories().cafeteriaUsers(TxCtx); public SignupRequest acceptsignuprequest(signuprequest thesignuprequest) { // explicitly begin a transaction TxCtx.beginTransaction(); SystemUser newuser = createsystemuserforcafeteriauser(thesignuprequest); createcafeteriauser(thesignuprequest, newuser); thesignuprequest = acceptthesignuprequest(thesignuprequest); // explicitly commit the transaction TxCtx.commit(); return thesignuprequest;

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){ UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------

Leia mais

Mapeamento da herança em JPA

Mapeamento da herança em JPA Mapeamento da herança em JPA Impedance mismatch é o termo usado para descrever as dificuldades em mapear o estado de um objecto num registo de uma tabela de uma base de dados relacional. Na modelação orientada

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto

Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II. Padrões de Projeto Universidade Federal de Uberlândia Faculdade de Computação Prof. Fabiano Azevedo Dorça Programação Orientada a Objetos II Padrões de Projeto Problema: Em algumas situações é necessário adicionar responsabilidades

Leia mais

Java para Desktop. Programação Orientada à Objetos 2 JSE

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz LÓGICA DE PROGRAMAÇÃO (JAVA) Definição A herança é um princípio da POO que permite a criação de novas classes a partir de outras previamente criadas. Essas novas classes são chamadas de subclasses, ou

Leia mais

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

JPA Com Hibernate. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo JPA Com Hibernate Paulo Ricardo Lisboa de Almeida 1 Modelo Necessário Modelo Necessário 2 JPA Mapeamento Direto entre as classes e o banco de dados Orientação a objetos para modelo relacional Feito através

Leia mais

Mapeamento da herança em JPA

Mapeamento da herança em JPA Mapeamento da herança em JPA Impedance mismatch é o termo usado para descrever as dificuldades em mapear o estado de um objecto num registo de uma tabela de uma base de dados relacional. Na modelação orientada

Leia mais

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; } Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos

Leia mais

Herança e Polimorfismo

Herança e Polimorfismo Herança e Polimorfismo 2013 O que veremos hoje? Herança e polimorfismo Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Polimorfismo em POO Mais

Leia mais

C com introdução a OO

C com introdução a OO ... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro

Leia mais

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Objetivo Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Também chamado de Kit Resumo Parece semelhante ao padrão Factory Method,

Leia mais

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. REST Representational State Transfer É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. Não é um padrão. Exemplo ASP.NET Web API namespace WebAPIApp.Models

Leia mais

Herança e Propriedades

Herança e Propriedades Herança e Propriedades 2013 O que veremos hoje? Herança e Propriedades Transparências baseadas no material do Prof. Gilbert Azevedo e Prof. Jailton Carlos Objetivos Conceito de Herança em POO Herança Herança

Leia mais

Classe Abstrata e Interface

Classe Abstrata e Interface Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10 2/10 1.1. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados como alternativos, face à disponibilização de funcionalidade a uma classe. Compare-os,

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões DCC / ICEx / UFMG Padrões de Projeto Padrões de Projeto Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Um padrão é uma descrição do problema e a essência da sua solução Documenta boas soluções para

Leia mais

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Programação Orientada a Objetos Flávio de Oliveira Silva 144 HERANÇA Herança é a capacidade de uma subclasse de ter acesso as propriedades da superclasse(também chamada classe base) relacionada a esta subclasse. Dessa forma os atributos e métodos de uma classe são

Leia mais

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel) Herança capacidade de uma classe (subclasse) herdar, adquirir atributos e funcionalidades de outra classe (superclasse), podendo juntar algumas especificidades e/ou alterar outras. Existe uma relação tipo

Leia mais

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){

Leia mais

Interfaces e Classes Abstratas

Interfaces e Classes Abstratas Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Editor Gráfico Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação com

Leia mais

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando -Herança Estrutura Hierárquica e modular Projeção de classes genéricas que podem ser especializadas

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Notas de Aula 09: Tratamento de exceções

Notas de Aula 09: Tratamento de exceções Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária

Leia mais

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco 1 Expandindo o Sistema p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco class Diretor extends Funcionario { public boolean autentica(int senha)

Leia mais

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista

Leia mais

Herança. Prof. Andrea Garcia PROW II

Herança. Prof. Andrea Garcia PROW II Herança A possibilidade de reutilizar partes de código já definidas é o que nos dá maior agilidade no diaa-dia, além de eliminar a necessidade de eventuais duplicações ou reescritas de código. O que devemos

Leia mais

Programação com Objectos 1º Teste Tipo 1º Semestre (90 minutos)

Programação com Objectos 1º Teste Tipo 1º Semestre (90 minutos) 1/7 Programação com Objectos 1º Teste Tipo 1º Semestre (90 minutos) Nome: Primeira Parte (7 valores) PERGUNTA NOTA 1.1 1.2 1.3 1.4 Segunda Parte (3 valores) PERGUNTA RESPOSTA 2.1 2.2 2.3 2.4 2.5 1ª PARTE

Leia mais

O que mudou no Demoiselle?

O que mudou no Demoiselle? Framework Demoiselle 2.0 O que mudou no Demoiselle? Robson Ximenes Thiago Mariano Para que serve este documento?... v 1. Introdução... 1

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador) Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado

Leia mais

Decorator e Composite. Nazareno Andrade (baseado no material de Hyggo Almeida)

Decorator e Composite. Nazareno Andrade (baseado no material de Hyggo Almeida) Decorator e Composite Nazareno Andrade (baseado no material de Hyggo Almeida) Decorator Vocês sabem como ler um arquivo texto em Java??? Pode-se usar a classe java.io.fileinputstream Vamos fazer um teste

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo

Leia mais

Professor Leonardo Cabral da Rocha Soares Lattes:

Professor Leonardo Cabral da Rocha Soares Lattes: Professor Leonardo Cabral da Rocha Soares Lattes: http://lattes.cnpq.br/3184602538494393 A Herança, em programação orientada a objetos (POO), é a possibilidade de escrever novas classes partindo de classes

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido

Leia mais

Avançando em Java com

Avançando em Java com Avançando em Java com Polimorfismo (Interfaces) Prof.: Hugo Barros Interfaces Como já foi dito, java não permite que uma classe herde recurso de mais de uma classe. Herança múltiplipa é um recurso muito

Leia mais

Padrão J2EE Data Access Object (DAO)

Padrão J2EE Data Access Object (DAO) Introdução CRUD DAO Exemplo Padrão J2EE Data Access Object (DAO) Prof. Enzo Seraphim Motivação para usar Componentes precisam acessar e armazenar informações em armazenamento persistente As APIs de armazenamento

Leia mais

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Aula 9 Herança. Prof. Jefersson Alex dos Santos Aula 9 Herança Prof. Jefersson Alex dos Santos Roteiro Introdução Conversão de tipo explícita (Cast) Acesso Protegido A classe Object A classe Class Reflexão Recomendações de Projeto Herança Técnica necessária

Leia mais

Computação II (MAB 225)

Computação II (MAB 225) Computação II (MAB 225) Fabio Mascarenhas - 2015.1 http://www.dcc.ufrj.br/~fabiom/pythonoo Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato em nosso

Leia mais

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática 6 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. 6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa

Leia mais

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1 Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores

Leia mais

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

TÉCNICAS DE ORIENTAÇÃO A OBJETOS TÉCNICAS DE ORIENTAÇÃO A OBJETOS APLICAÇÃO EM: C# E JAVA Sumário INTRODUÇÃO... 4 PARADIGMAS DE PROGRAMAÇÃO... 5 PROGRAMAÇÃO PROCEDURAL... 5 PROGRAMAÇÃO ESTRUTURADA... 5 PROGRAMAÇÃO ORIENTADA A OBJETOS...

Leia mais

Programação Orientada a Objetos. Herança

Programação Orientada a Objetos. Herança Programação Orientada a Objetos Herança Cristiano Lehrer, M.Sc. Introdução (1/4) Herança é um mecanismo que permite basear uma nova classe na definição de uma classe previamente existente. Usando herança,

Leia mais

Herança e Polimorfismo -Parte I - Mário Meireles Teixeira O exemplo DoME. Database of Multimedia Entertainment

Herança e Polimorfismo -Parte I - Mário Meireles Teixeira O exemplo DoME. Database of Multimedia Entertainment Herança e Polimorfismo -Parte I - Mário Meireles Teixeira mario@deinf.ufma.br O exemplo DoME Database of Multimedia Entertainment Armazena detalhes sobre CDs e vídeos CD: título, artista, número de faixas,

Leia mais

Herança e Polimorfismo - Parte I -

Herança e Polimorfismo - Parte I - Herança e Polimorfismo - Parte I - Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior O exemplo DoME Database of Multimedia Entertainment Armazena detalhes sobre

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU Aula 10 POO 1 Classes Abstratas Profa. Elaine Faria UFU - 2019 Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos

Leia mais

Composição e Herança. carro meucarro = new carro();

Composição e Herança. carro meucarro = new carro(); Composição e Herança Um dos conceitos mais interessantes das linguagens orientadas a objeto é a reutilização de código. Mas para isso realmente funcionar, você tem que conseguir fazer mais do que simplesmente

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

Desenvolvimento Web II

Desenvolvimento Web II Desenvolvimento Web II Linguagem PHP PHP Orientado a Objeto / Banco de Dados (PDO) https://secure.php.net/manual/pt_br/ Gil Eduardo de Andrade PHP Orientado a Objeto O PHP é uma linguagem de script que

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?

Leia mais

Interface vs. Implementação Herança vs. Composição

Interface vs. Implementação Herança vs. Composição Interface vs. Implementação Herança vs. Composição O que vimos na última aula? Padrões GRASP Expert Creator Low Coupling High Cohesion 2 O que veremos hoje? Interface e Polimorfismo Interface como uma

Leia mais

PROGRAMAÇÃO ORIENTADA A

PROGRAMAÇÃO ORIENTADA A PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO Prof. Angelo Augusto Frozza, MS M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 4. Técnicas de Orientação a Objetos Classes e objetos Herança Métodos Subscritos

Leia mais

Herança (parte 2) Redefinição de métodos AULA 11

Herança (parte 2) Redefinição de métodos AULA 11 Introdução a Programação IF669 http://www.cin.ufpe.br/~if669 Herança (parte 2) Redefinição de métodos AULA 11 Ricardo Massa F. Lima rmfl@cin.ufpe.br Sérgio C. B. Soares scbs@cin.ufpe.br Na aula passada

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-6 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Linguagem de Programação. Diagrama de classes

Linguagem de Programação. Diagrama de classes Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG 2 Agenda Diagrama de classes Herança Associação Agregação Exercícios 3 Diagrama de classes Mostra um

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Introdução ao Java. Prof. Herbert Rausch Fernandes

Introdução ao Java. Prof. Herbert Rausch Fernandes Introdução ao Java Prof. Herbert Rausch Fernandes Orientação a Objetos Programação Orientada por Objetos: é a construção de sistemas de software como uma coleção estruturada de implementações de tipos

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013 Introdução à orientação a objetos João Tito Almeida Vianna 18/05/2013 Roteiro Aula 1 Introdução: Programação estruturada x Orientação a objetos Orientação a objetos Classe e objeto Encapsulamento Herança

Leia mais

JPA Demonstração das Estratégias Optimistic Locking e Pessimistic Locking

JPA Demonstração das Estratégias Optimistic Locking e Pessimistic Locking JPA Demonstração das Estratégias Optimistic Locking e Pessimistic Locking Locking é uma técnica para tratamento de concorrência em transações em bases de dados. Quando duas ou mais transações em bases

Leia mais

AspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção

AspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção DCC / ICEx / UFMG AspectJ AspectJ Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Linguagem orientada a aspectos mais madura e difundida Extensão simples da linguagem Java Gera arquivos.class compatíveis

Leia mais

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) e Adapter Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Factory Method Abstract Factory 2 O que veremos hoje? (padrão de criaçã) Adapter

Leia mais

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno. Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:

Leia mais

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri Herança Forma de reutilização de software Encapsular estrutura e comportamento em um tipo não é um conceito exclusivo da orientação a objetos, pois já era usado na programação de tipos abstratos. O que

Leia mais

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Herança. Prof. Fernando V. Paulovich  23 de agosto de 2010 Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade

Leia mais

Unidade: sobrecarga, construtores e herança

Unidade: sobrecarga, construtores e herança Unidade: sobrecarga, construtores e herança 0 Unidade: sobrecarga, construtores e herança Sobrecarga Sobrecarregar (do inglês overload) um método é criar mais métodos com o mesmo nome, porém com assinaturas

Leia mais

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Programação Orientada a Objetos com Java. Prof. Júlio Machado Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que

Leia mais

Programação Orientada por Objectos 2007/2008

Programação Orientada por Objectos 2007/2008 Programação Orientada por Objectos 2007/2008 Segundo Teste, 30/6/2008, Duração 1h30 (20 valores) 1 [2v] Considere que pretende desenvolver uma função num jogo que trata uma colisão entre dois objectos

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software Enzo Seraphim 1 Padrões de Construção A maneira

Leia mais

DCC004 - Algoritmos e Estruturas de Dados II

DCC004 - Algoritmos e Estruturas de Dados II Conceito de especificação de software Renato Martins Email: renato.martins@dcc.ufmg.br https://www.dcc.ufmg.br/~renato.martins/courses/dcc004 Material adaptado de PDS2 - Douglas Macharet e Flávio Figueiredo

Leia mais

Utilizando Swing com Hibernate

Utilizando Swing com Hibernate Programando com Java Artigo http://mballem.wordpress.com/ Utilizando Swing com Hibernate Utilizando a SessionFactory Autor Marcio Ballem: é formado em Sistemas de Informação e possui certificação Oracle

Leia mais

Programação Orientada a Objetos Relacionamentos entre classes

Programação Orientada a Objetos Relacionamentos entre classes Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia composição generalização associação RELACIONAMENTO

Leia mais

12 Tipos Genéricos. Desenvolvimento OO com Java. Vítor E. Silva Souza

12 Tipos Genéricos. Desenvolvimento OO com Java. Vítor E. Silva Souza Desenvolvimento OO com Java 12 Tipos Genéricos Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

Conexão com Banco de Dados

Conexão com Banco de Dados Conexão com Banco de Dados ORM Atualmente os novos sistemas que estão sendo desenvolvidos estão utilizando a técnica de ORM para fazer conexão e acesso a banco de dados. ORM é uma técnica de mapeamento

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse

Leia mais

UNIFEI Disciplina Professor

UNIFEI Disciplina Professor UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO02 Enganharia de Software II Enzo Seraphim Nota de aula de Java Encapsulamento

Leia mais

Criando uma aplicação web

Criando uma aplicação web Criando uma aplicação web Aplicações web Criaremos uma aplicação completa utilizando: Bancos de dados Modelo MVC JavaServer Faces (PrimeFaces) Um pouco sobre banco de dados Todas as aplicações precisam

Leia mais

Prof. Msc. Vladimir Camelo

Prof. Msc. Vladimir Camelo APLICATIVOS DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS (ALPOO) PADRÃO MVC (Model-View-Controller) Prof. Msc. Vladimir Camelo O padrão arquitetural MVC (Model-View-Controller) foi criado no contexto

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Herança Visibilidade de atributos e métodos Extensão e sobreposição Uso de super Referências para objetos Polimorfismo Conceitos

Leia mais

LEIC-A / MEIC-A 2007/2008 (1º

LEIC-A / MEIC-A 2007/2008 (1º 1/11 LEIC-A / MEIC-A 2007/2008 (1º Semestre) Teste (versão A) 08 de Janeiro de 2008, 09:00 (120 minutos) Nome: Primeira Parte (5 valores) PERGUNTA RESPOSTA 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 Segunda

Leia mais

extendsé usado para indicar herança em JAVA

extendsé usado para indicar herança em JAVA Herança e Polimorfismo Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Revisando extendsé usado para indicar herança em JAVA class ClasseA{ protected int a; public int geta()

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded

Leia mais

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Instituto de Informática Estrutura de Dados II

Instituto de Informática Estrutura de Dados II Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O

Leia mais

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Programação com Objectos. 2º Teste 2015/2016 1º Semestre 1/7 2015/2016 1º Semestre 13 de Janeiro de 2016, 18:30 (120 minutos) 2º Teste Nome: Número: Primeira Parte (3 valores) PERGUNTA RESPOSTA Segunda Parte (7 valores) PERGUNTA 1.1 2.1 1.2 2.2.1 1.3 2.2.2 1.4

Leia mais