Você está na página 1de 3

1

POJO, Interface e´ Heranc¸as Multiplas

Weslley Reis Silva Universidade Federal do Tocantins, Brasil weslley.reis@mail.uft.edu.br

Abstract—Esse artico´ apresenta informac¸oes˜ introdutorias´ so- bre POJO, Interface e Heranc¸as Multiplas´ em Java, relatando diferenc¸as entre ele e´ semelhanc¸as, para auxiliar na compreensao˜ dessas ferramentas.

Index Terms—POJO, Interface, Heranc¸a Multiplas

I. POJO

A. Introduc¸ao˜

N A engenharia de software, um plain old Java object (Objetos Java Antigos Simples), (POJO) e´ um objeto

Java comum, nao˜ limitado por nenhuma restric¸ao˜ especial e nao˜ exigindo nenhum caminho de classe. O termo foi cunhado por Martin Fowler, Rebecca Parsons e Josh MacKenzie em setembro de 2000. O termo ”POJO” inicialmente denotava um objeto Java que nao˜ segue nenhum dos principais modelos, convenc¸oes˜ ou estruturas de objetos Java; hoje em dia ”POJO” tambem´ pode ser usado como um acronimoˆ para ”Plain Old JavaScript Object”, em cujo caso o termo denota um objeto JavaScript de pedigree similar.

B. Metodologia

1) Requerimento do POJO: Idealmente falando, um POJO e´ um objeto Java nao˜ limitado por nenhuma restric¸ao˜ alem´ daquelas forc¸adas pela Especificac¸ao˜ da Linguagem Java; ou seja, um POJO nao˜ deveria ter que;

Estender classes pre-especificadas,´

como em;

classe publica´ Foo estende javax . servlet . http . HttpServlet {

Implemente interfaces pre-especificadas,´

como em;

public class Bar implementa javax . ejb . EntityBean {

Contem´

anotac¸oes˜

pre-especificadas´

@

javax.persistence.Entity

classe

, como em;

publica´

Baz

{

No entanto, devido a dificuldades tecnicas´ e outras razoes,˜ muitos produtos de software ou estruturas descritas como compat´ıveis com POJO na verdade ainda exigem o uso de anotac¸oes˜ pre-especificadas´ para que recursos como per- sistenciaˆ funcionem corretamente. A ideia e´ que, se o ob- jeto (na verdade, classe) fosse um POJO antes de quaisquer anotac¸oes˜ serem adicionadas e retornasse ao status POJO se as

anotac¸oes˜ fossem removidas, ele ainda poderia ser considerado um POJO. Entao,˜ o objeto basico´ permanece um POJO, pois nao˜ possui caracter´ısticas especiais (como uma interface implementada) que o torna um ”Objeto Java Especializado” (SJO ou (sic) SoJO). 2) JavaBean: Existe objetos Java que sao˜ POJO mesmo nao˜ seguido os requisitos para tal, como o JavaBeans que e´ um POJO serializavel,´ possui um construtor sem argumentos e permite acesso a propriedades usando metodos´ getter e setter que seguem uma convenc¸ao˜ de nomenclatura simples. Devido

a essa convenc¸ao,˜ referenciasˆ declarativas simples podem ser

feitas para as propriedades de JavaBeans arbitrarios.´ O codigo´ que usa tal referenciaˆ declarativa nao˜ precisa saber nada

sobre o tipo do bean, e o bean pode ser usado com muitos frameworks sem que esses frameworks precisem conhecer o

tipo exato do bean. A especificac¸ao˜ JavaBeans, se totalmente implementada, interrompe ligeiramente o modelo POJO, pois,

a classe deve implementar o Serializable interface para ser um

verdadeiro JavaBean. Muitas classes POJO ainda chamadas de JavaBeans nao˜ atendem a esse requisito. Como o Serializable que e´ uma interface de marcador (sem metodo),´ isso nao˜ e´ um fardo muito grande.

Este exemplo mostra uma classe POJO que segue o

padrao˜

JavaBean;

public class Carro implements java.io.Serializable

{

private String nome; private String cor; public Carro() { } public Carro(String nome, String cor) { this.nome = nome; this.cor = cor; } public String getCor() { return cor; } public void setCor(String cor) { this.cor = cor; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } }

II. INTERFACE

A. Introduc¸ao˜

Vemos que um ponto cr´ıtico que define uma classe POJO

como JavaBean e a implementac¸ao˜ da Serializable interface, sabemos que uma interface e´ o contrato entre a classe e o mundo exterior. Quando uma classe implementa uma interface, se compromete a fornecer o metodos publicados por esta in- terface. As classes ajudam a definir um objeto e seus metodos

e as interfaces que auxiliam na definic¸ao˜

dessas classes.

2

B.

Metodologia

As interfaces sao˜

formadas pela declarac¸ao˜

de um ou mais

metodos,´

os quais obrigatoriamente sao˜

abstratos.

Interface FiguraGeometrica;

public interface FiguraGeometrica

{

public String getNomeFigura(); public int getArea(); public int getPerimetro();

}

As interfaces funcionam como modelos para a criac¸ao˜ de outros modelos, ou seja, as classes, nao˜ necessariamente que a classe deva ser identicaˆ a interface, mas tem que ter todos os metodos´ publicados da interface, sendo que uma classe pode implementar uma ou mais interfaces, alem´ de metodos´ proprios´ da propria´ classe.

Classe Quadrado;

de superclasses, classes base ou classe pai. Uma subclasse herda metodos´ e atributos de sua superclasse; apesar disso, pode escreve-losˆ novamente para uma forma mais espec´ıfica de representar o comportamento do metodo´ herdado. Ja´ Heranc¸a multipla,´ em orientac¸ao˜ a objetos, e´ o conceito de heranc¸a de duas ou mais classes. Ela e´ implementada nas linguagens de programac¸ao˜ C++ e em Python, por exemplo. A linguagem Java possui apenas heranc¸a simples (uma classe possui no maximo´ uma classe pai), mas permite que uma classe implemente varias´ interfaces, que sao˜ separada por virgula durante a implementac¸ao.˜

B. Metodologia

1) Interface multipla : Primeira Interface. public class TV { private int tamanho; private int canal; private int volume;

//@author Robson Fernando Gomes

private boolean ligada; public TV(int tamanho)

public class Quadrado implements FiguraGeometrica

{

{

this.tamanho = tamanho;

private int lado;

this.canal = 0;

public int getLado(); { return lado;

this.volume = 0; this.ligada = false;

}

}

public void setLado(int lado) { this.lado = lado;

}

}

Segunda Interface.

@Override public int getArea() { int area = 0; area = lado * lado; return area;

public interface ControleRemoto { void mudarCanal(int canal); void aumentarVolume (int taxa); void diminuirVolume (int taxa); boolean ligar();

}

boolean desligar();

@Override

}

public int getPerimetro() { int perimetro = 0;

Implementac¸ao.˜ public class ModeloTV001 extends TV implements

perimetro = lado * 4;

ControleRemoto

return perimetro;

{

}

public final String MODELO = ”TV001”;

@Override

public ModeloTV001(int tamanho)

public String getNomeFigura() {

{

return ”quadrado”;

super(tamanho);

}

}

}

public void desligar() { super.setLigada(false);

III. HERANC¸ A MULTIPLA

A. Introduc¸ao˜

Semelhante a interface, as heranc¸as sao˜ um princ´ıpio da POO que permite a criac¸ao˜ de novas classes a partir de outras previamente criadas. Essas novas classes sao˜ chamadas de subclasses, classes derivadas ou classes filhas; e as classes ja´ existentes, que deram origem as` subclasses, sao˜ chamadas

}

public void ligar() { super.setLigada(true);

}

public void aumentarVolume(int taxa) { } public void diminuirVolume(int taxa) { } public void mudarCanal(int canal) { }

}

3

IV.

˜

CONCLUS AO

Como foi demostrado aqui podemos perceber que o POJO em relac¸ao˜ a interface e´ mais flex´ıvel, o que torna mais favoravel´ em certas ocasioes˜ a qual se necessita apenas de um metodo´ simples, mesmo sendo que esse esteja presente em uma interface nao˜ sera´ de muita utilidade se tiver qual- quer outro metodo´ presente nela, assim tornando a utilizac¸ao˜ do POJO mais facil´ e´ viavel.´ Tambem´ temos as heranc¸as simples de classe que estao˜ presentes na programac¸ao˜ Java, sendo as heranc¸as multiplas´ representada pela implementac¸ao˜ de multiplas´ interfaces vemos um modo criativo para con- torna uma deficienciaˆ da plataforma, demostrando que na programac¸ao˜ nao˜ se deve apenas conhecer os metodos´ e´ func¸oes,˜ se deve entender como eles funcionam para que assim seja poss´ıvel criar novas soluc¸oes˜ para problemas antigos e novos.

REFERENCES

[1] Varios. (2018, marc¸o) Plain old java object. [Online]. Available:

https://en.wikipedia.org/wiki/Plain o ld J ava o bject [2] ——. (2018, marc¸o) Plain old java objects. [Online]. Available:

https://pt.wikipedia.org/wiki/Plain O ld J ava O bjects [3] D. W. Xavier. (2018, marc¸o) Interfaces. [Online]. Available:

http://www.tiexpert.net/programacao/java/interfaces.php [4] R. Fernando. (2018, marc¸o) Entendendo interfaces em java. [Online]. Available: https://www.devmedia.com.br/entendendo-interfaces-em-

java/25502

[5] W. Balbo. (2018, marc¸o) Interfaces: Programac¸ ao˜ orientada a objetos. [Online]. Available: https://www.devmedia.com.br/interfaces-programacao-

orientada-a-objetos/18695

[6] H. Geovane. (2018, marc¸o) Entendendo e aplicando heranc¸a em java. [Online]. Available: https://www.devmedia.com.br/entendendo-e-aplicando-

heranca-em-java/24544

[7] B. Nardini. (2018, marc¸o) Metodo´ padrao˜ e heranc¸a multipla´ no java 8. [Online]. Available: http://www.brunonardini.com.br/desenv-back-

end/metodo-padrao-e-heranca-multipla-no-java-8

[1] [2] [3] [4] [5] [6] [7]