A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Classes Abstratas e Interface

Apresentações semelhantes


Apresentação em tema: "Classes Abstratas e Interface"— Transcrição da apresentação:

1 Classes Abstratas e Interface
Modelagem e Programação Orientada a Objetos Curso Superior de Tecnologia em Sistemas para Internet Prof. Cristiano Stüpp Nunes

2 Classe Abstrata Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos); Como classes abstratas são modelos de classes, então, não podem ser instanciadas, devem sempre ser herdadas por classes concretas; Todos os métodos abstratos de uma classe abstrata devem obrigatoriamente ser implementados (sobrescritos) em uma classe concreta.

3 Classe Abstrata Um método abstrato não possui corpo, apenas define a assinatura (protótipo) do método; Classes abstratas são úteis quando uma classe define métodos a serem implementados apenas pelas suas subclasses; Usamos o modificador de acesso abstract, uma palavra reservada do Java, para se criar classes abstratas; Usa-se o mesmo modificador de acesso para se definir os métodos abstratos.

4 Classe Abstrata Toda classe que possui pelo menos um método abstrato é automaticamente abstrata e deve ser declarada como tal; Uma classe pode ser declarada abstrata mesmo se ela não possuir métodos abstratos; Não existem atributos abstratos.

5 Definição de uma Classe Abstrata
public abstract class AparelhoEletronico { private boolean ligado; //métodos abstratos – não são implementados public abstract void ligar(); public abstract void desligar(); public void setLigado(boolean ligado) { this.ligado = ligado; } public boolean isLigado() { return ligado;

6 Estendendo uma Classe Abstrata
public class TV extends AparelhoEletronico { private int canal; private int volume; public TV() { } /* implementação dos métodos abstratos */ public void desligar() { super.setLigado(false); setCanal(0); setVolume(0); public void ligar() { super.setLigado(true); setCanal(3); setVolume(25); // abaixo teríamos os métodos de get e set para canal e volume...

7 Estendendo uma Classe Abstrata
public class Radio extends AparelhoEletronico { public static final short AM = 1; public static final short FM = 2; private int banda; private float sintonia; private int volume; /* implementação dos métodos abstratos */ public void desligar() { super.setLigado(false); setBanda(0); setSintonia(0); } public void ligar() { super.setLigado(true); setBanda(this.FM); setSintonia(88.1f); // abaixo teríamos todos os métodos de get e set para banda, sintonia e volume...

8 Interface (o termo) O termo interface pode ser confuso em Java, pois pode ser referenciar as duas formações distintas que no fundo tem o mesmo propósito: 1) Interface (sem ser a palavra reservada): Compreende o conjunto de métodos públicos que permite acessar os atributos ou invocar comportamentos próprios da classe; É o meio que permite o objeto a trocar informações com o meio externo.

9 Interface (o termo) 2) Interface (a palavra reservada):
Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades que funcionam como um tipo de "contrato", onde são especificados os atributos e métodos que as classes que implementem a interface são obrigadas a implementar.

10 Interface (sem ser a palavra reservada)
public class Conta { private double saldo; /* ##### Início da Interface dessa classe ##### */ public double getSaldo() { return saldo; } public void setSaldo(double saldo) { this.saldo = saldo; public void deposite(double deposito) { saldo = saldo + deposito; public void saque(double saque) { saldo = saldo - saque; /* ##### Fim da Interface dessa classe ##### */

11 Interface (a palavra reservada)
public interface ControleRemoto { /* Perceba que apenas a assinatura dos métodos estão aqui. E cada método termina com um ponto-e-vírgula (;) ou seja, não são implementados */ void mudarCanal(int canal); void aumentarVolume(int taxa); void diminuirVolume(int taxa); boolean ligar(); boolean desligar(); }

12 Interface (a palavra reservada)
Como vimos anteriormente, uma classe pode estender suas funcionalidades obtendo as características de outra classe num processo que chamamos de herança; Uma interface não é herdada, mas sim, implementada; É um conjunto de métodos relacionados que não tem corpo, ou seja, sem implementação;

13 Interface (a palavra reservada)
Todo o código dos métodos da interface deve ser escrito dentro da classe que a implementa; Obtemos as assinaturas dos métodos da interface em uma classe usando a palavra reservada implements; Uma classe só pode estender (herdar) um única superclasse, mas pode implementar várias interfaces, provendo uma maneira de se ter “herança múltipla” em Java.

14 Motivação para o uso de Interface
Estabelecer um “tipo” comum, um contrato, o qual várias outras classes podem fazer uso, sem necessitar saber da implementação; Necessidade de implementar interfaces múltiplas (“herança múltipla”), por exemplo, quando uma classe pode ter comportamentos variados (um rádio-relógio, por exemplo, pois tem função de rádio e relógio)

15 Interface como um “tipo”
public interface Funcionario { public String getNome(); public double getSalario(); } public class Pessoa implements Funcionario { private String nome; private double salario; public Pessoa(String nome, double salario) { this.nome = nome; this.salario = salario; } public String getNome() { return nome; public double getSalario() { return salario; public class ExecutaPessoa { public static void main (String[] args) { Funcionario func = new Pessoa("José Dirceu", ); System.out.println( func.getSalario()); }

16 Implementando múltiplas interfaces
public interface Radio { public void liga(); public void desliga(); public void trocaEstacao( int frequencia); } public class RadioRelogio implements Radio, Relogio { public void liga() { // Implentação } public void desliga() { public void trocaEstacao (int frequencia) { public String getHoras() { return null; public interface Relogio { public String getHoras(); }

17 Particularidades sobre Interfaces
Todos os atributos de uma interface são do tipo public static final (constantes) – mesmo que esses modificadores não sejam explícitos; Todos os métodos de uma interface são implicitamente públicos e abstratos; Todos os métodos de uma interface devem ser escritos na classe que a implementa; Não há como instanciar uma interface, portanto não há método construtor;


Carregar ppt "Classes Abstratas e Interface"

Apresentações semelhantes


Anúncios Google