Baixe o app para aproveitar ainda mais
Prévia do material em texto
Principais conceitos de OO F Instutito de Informa´tica da UFG Programac¸a˜o Orientada a Objetos Cieˆncias da Computac¸a˜o Prof. Dr. Vin´ıcius Sebba Patto 2o Semestre de 2012 Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Interface Na˜o permitem me´todos concretos nem varia´veis de instaˆncia. Todos os me´todos sa˜o implicitamente public e abstract. Todos os atributos sa˜o implicitamente public, static e final. Classes que implementam uma interface precisam declarar todos os me´todos especificados na interface. Somente classes abstratas na˜o precisam declarar todos os me´todos da interface ao implementar ela. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Declarac¸a˜o de classe Para se declarar uma classe, usamos a seguinte sintaxe: 1 <modificador−acesso> class <nome−classe> { } Exemplo: 1 public class Produto { } A classe cria um novo tipo, a partir do qual podemos criar e usar objetos: 1 Produto prod1 = new Produto( ); Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Declarac¸a˜o de atributo A declarac¸a˜o de um atributo obedece a` seguinte sintaxe: 1 <modificador−acesso> <tipo> <nome>; Exemplo: 1 class Produto { 2 private int codigo; 3 } Neste caso, para cada objeto do tipo Produto, criado na memo´ria, cria-se outro espac¸o na memo´ria (para o atributo “codigo”). Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Declarac¸a˜o de me´todo Usamos a seguinte sintaxe para declarar me´todos: 1 <modif−acesso> <tipo−retorno> <nome>(<parametros>) { 2 /∗ codigo do metodo ∗/ 3 } Exemplo: 1 class Produto { 2 private int codigo; 3 public int getCodigo( ) { 4 return codigo; 5 } 6 public void setCodigo(int cod) { 7 codigo = cod; 8 } 9 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Manipulac¸a˜o de objetos Em Javam objetos sa˜o manipulados por refereˆncia. A declarac¸a˜o de refereˆncia apenas, na˜o cria objeto na memo´ria. A refereˆncia aponta para um objeto nulo (Null) neste caso. 1 VeiculoTerrestre carro; Para criar o ojeto na memo´ria (instancia´-lo), e´ necessa´rio utilizar o operador new. 1 VeiculoTerrestre carro = new 2 VeiculoTerrestre(”Opala”,0,false,”gasolina”,4,5); Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Construtores - default Por padra˜o, o compilador Java fornece um construtor padra˜o. Neste caso: Na˜o e´ necessa´rio criar o me´todo na classe; Na˜o ha´ paraˆmetro; O objeto e´ instanciado e os atributos recebem valores padra˜o (default); ex: Valores nume´ricos (byte, short, int, long, float, double): 0; Booleanos: false; Char: espac¸o em branco (caractere Unicode 0); Instaˆncias (String, Date, etc): null. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Construtores declarados no co´digo Na˜o e´ poss´ıvel desativar o construtor default. O construtor obrigatoriamente tem o mesmo nome da classe (comec¸a por letra maiu´scula) e na˜o retorna valor. O construtor pode ou na˜o receber paraˆmetro(s). 1 public class Aluno{ 2 3 private int matricula; 4 5 public Aluno(int matricula){ 6 this.matricula = matricula; 7 } 8 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Construtores privados Existem casos em que e´ necessa´rio impedir a instanciac¸a˜o da classe ou permitir a isntanciac¸a˜o por um me´todo esta´tico. Construtores privados evitam que classes sejam explicitamente instanciada por usua´rios. Exemplos: Classes utilita´rias: possuem somente me´todos esta´ticos - System, Arrays. Enumerations: tipo de dado enum. Classes singleton: a classe e´ instanciada somente uma vez. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Construtores privados - Singleton 1 public class Singleton { 2 3 private static String nome; 4 private static Singleton singleton; 5 6 public void imprimeOi( ){ System.out.println(”Ola ” + nome + ”!”); } 7 8 private Singleton(String nome){ this.nome = nome; } 9 10 public static Singleton getSingleton(String nome){ 11 if(singleton == null) { singleton = new Singleton(nome); } 12 return singleton; 13 } 14 15 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Construtores privados - Singleton 1 public class UsaSingleton { 2 3 public static void main(String[ ] args){ 4 Singleton singleton = Singleton.getSingleton(”Joao”); 5 Singleton singleton1 = Singleton.getSingleton(”Jean”); // Nao funciona 6 Singleton singleton2 = Singleton.getSingleton(”John”); // Nao funciona 7 singleton.imprimeOi( ); 8 singleton1.imprimeOi( ); 9 singleton2.imprimeOi( ); 10 } 11 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Construtores privados - outro exemplo 1 public class MaximoTres { 2 3 private static int instancias = 0; 4 private static final int MAXIMO = 3; 5 private String nome; 6 7 private MaximoTres(String nome) { this.nome = nome; } 8 9 public static MaximoTres create(String nome) { 10 if (instancias < MAXIMO) { 11 instancias++; 12 return new MaximoTres(nome); 13 } 14 return null; 15 } 16 17 public String toString( ){ return ”Nome do objeto: ” + nome; } 18 19 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Construtores privados - outro exemplo 1 public class UsaMaximoTres{ 2 3 public static void main(String[ ] args){ 4 MaximoTres m1 = MaximoTres.create(”Lapis”); 5 MaximoTres m2 = MaximoTres.create(”Caderno”); 6 MaximoTres m3 = MaximoTres.create(”Borracha”); 7 MaximoTres m4 = MaximoTres.create(”Caneta”); 8 MaximoTres m5 = MaximoTres.create(”Livro”); 9 System.out.println(m1.toString( )); 10 System.out.println(m2.toString( )); 11 System.out.println(m3.toString( )); 12 //Tente usar um dos objetos abaixo: 13 //System.out.println(m4.toString( )); 14 //System.out.println(m5.toString( )); 15 //Apareceu: Exception in thread ”main” java.lang.NullPointerException? 16 } 17 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Sobrecarga em construtores E´ poss´ıvel ter va´rios construtores dentro de uma mesma classe (todos com o mesmo nome). O compilador diferencia os construtores pela assinatura (paraˆmetros). Os nomes dos paraˆmetros na˜o alteram a assinatura. 1 public class Aluno{ 2 3 private int matricula; 4 5 public Aluno( ){ 6 this(1); // Chama o construtor abaixo 7 } 8 public Aluno(int matricula){ 9 this.matricula = matricula; 10 } 11 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Sobrescrita de me´todos Sobrescrita ocorre quando me´todos com a mesma assinatura aparecem na classe ma˜e e na classe filha. Esta situac¸a˜o e´ u´til quando se deseja alterar um comportamento. 1 public class Mamifero{ 2 public void nascimento( ){ 3 lamberFilhote( ); 4 } 5 ... 6 } 7 8 public class Humano extends Manifero{ 9 public void nascimento( ){ 10 lavarFilhote( ); 11 } 12 ... 13 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Uso da palavra reservada this O uso da palavra this permite acessar varia´veis de instaˆncia ou me´todos de uma instaˆncia (objeto). A palavra this so´ pode ser usada dentro de me´todos na˜o esta´ticos. 1 public class Aluno{ 2 3 private int matricula; 4 5 publicAluno( ){ 6 this(1); // this( ) − chama o construtor abaixo 7 } 8 public Aluno(int matricula){ 9 this.matricula = matricula; // this. − invoca metodos ou propridades 10 } 11 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Uso de interfaces, classes, atributos, me´todos e objetos Uso da palavra reservada super O uso da palavra super permite acessar propriedades ou me´todos da classe hierarquicamente imediatamente superior. O uso de super( ) invoca o construtor da classe hierarquicamente imediatamente superior. 1 public class Aluno extends Pessoa { 2 3 ... 4 5 public Aluno(int matricula){ 6 super( ); // super( ) − invoca o metodo construtor da classe hierarquicamente imediatamente superior. 7 super.getNome(this.matricula); // super. − chama propriedades ou metodos da classe hierarquicamente imediatamente superior. 8 } 9 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Encapsulamento Me´todo de acesso: public getAtributo( ); Me´todo modificador: public setAtributo(tipo atributo); Isso na˜o seria o mesmo que: public atributo; ? Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Encapsulamento Me´todo de acesso: permite controlar o formato de dados a ser retornado ao cliente. Me´todo modificador: deve avaliar tentativas de modificac¸a˜o de valores de atributos. Benef´ıcios: integridade de dados. Protec¸a˜o do co´digo do cliente (quem usa a classe); Acesso aos dados e´ restrito a` forma como os me´todos foram implementados. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Encapsulamento Encapsulamento E´ uma te´cnica que consiste em reunir no seio de um classificador (classe) a estrutura (atributos) e o comportamento (me´todo) de um tipo de dado. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo Heranc¸a e´ um mecanismo que permite especializar classes. Polimorfismo e´ um mecanismo que permite generalizar classes. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo 1 public class Inicial { 2 3 public static void main(String[ ] args) { 4 Carro opala = new Carro(”Opala”, ”gasolina”, 4, 5); 5 Aviao f16 = new Aviao(”F16”, ”querosene”, 15250, 500); 6 opala.descricao(opala); 7 f16.descricao(f16); 8 } 9 10 } Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo opala e f16 invocam o me´todo descricao( ). descricao( ) e´ declarado dentro de VeiculoMotorizado. Tanto o Carro quanto o Aviao assumem forma de VeiculoMotorizado. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Encapusulamento e Polimorfismo Polimorfismo Polimorfismo E´ a capacidade de um objeto tomar diferentes formas, quer dizer ser manipulado em func¸a˜o de seu classificador (classe) ou de outros classificadores compat´ıveis com o seu classificador. Programac¸a˜o Orientada a Objetos Principais conceitos de OO F Fim That’s all! Por enquanto e´ so´, pessoal! Programac¸a˜o Orientada a Objetos Principais conceitos de OO Uso de interfaces, classes, atributos, métodos e objetos Encapusulamento e Polimorfismo F Fim
Compartilhar