LP II
Professor: Wilton Souza
Abstract
➢ Uma classe abstrata representa entidades e conceitos
abstratos na Orientação a Objetos.
➢ Classe Abstrata são classes que não podem
instanciadas.
➢ São classes em que não criaremos nenhum objeto
dela, diretamente.
➢ Pode-se dizer que as classes abstratas servem como
modelo para outras classes que dela herdem.
Abstract
abstract class Conta {
protected double saldo;
public void setSaldo(double saldo) { [Link] =
saldo; }
public double getSaldo() { return saldo; }
public abstract void imprimeExtrato();
}
Abstract
public class ContaCorrente extends Conta{
public void imprimeExtrato() {
[Link]("### Extrato da Conta ###");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/aaaa
HH:mm:ss");
Date date = new Date();
[Link]("Saldo: "+[Link]());
[Link]("Data: "+[Link](date));
}
}
Abstract
➢ Se você tirar o método imprimeExtrato() da classe
ContaCorrente o compilador dirá que a classe deverá
ser abstrata pois não implementa todos os métodos
abstratos de Conta.
➢ Um método abstrato serve serve para “lembrar” ao
programador os métodos que deve implementar em
uma sub-classe.
Interfaces
➢ Interface é um recurso da orientação a objeto
utilizado em Java que define ações que devem ser
obrigatoriamente executadas, mas que cada classe
pode executar de forma diferente.
➢ As interfaces são padrões definidos através de
contratos ou especificações.
➢ Um contrato define um conjunto de métodos que
serão implementados nas classes que assinarem esse
contrato.
Interfaces
➢ Uma interface pode definir uma série de métodos,
mas nunca conter implementação deles.
➢ Diferentemente das classes, uma interface pode
herdar de mais de uma interface. É como um contrato
que depende que outros contratos sejam fechados
antes deste valer. Você não herda métodos e atributos,
mas sim responsabilidades.
Interfaces
➢ Todos os métodos em uma interface são
implicitamente abstratos (o equivalente à utilizar o
modificador abstract em uma classe abstrata), e
públicos.
➢ Todas as variáveis de uma interface são public, static
e final, sendo assim, todas as variáveis são
constantes (toda constante deve ser inicializada). As
declarações public, static e final são opcionais.
Interfaces
interface Tributavel {
double calculaTributos();
}
class ContaCorrente extends Conta implements Tributavel {
public double calculaTributos() {
return [Link]() * 0.01;
}
}
Comandos this e super
➢ A palavra ”this” é utilizada no Java para indicar a
atual instância do objeto que está na memória.
➢ Isso significa que, sempre que utilizarmos a
referência this estaremos pedindo ao Java que busque
atributos ou métodos que foram declarados no
próprio objeto instanciado.
Comandos this e super
public class Pessoa {
private String nome;
public String getNome() {
return [Link];
}
public void setNome(String nome) {
[Link] = nome;
}
}
Comandos this e super
➢ A palavra-chave super permite referência à
superclasse, e em especial, se for utilizada como
nome de método, ao construtor da superclasse.
Comandos this e super
public class Eletrodomestico {
private boolean ligado;
private int voltagem;
private int consumo;
public Eletrodomestico(boolean ligado, int voltagem, int consumo) {
[Link] = ligado;
[Link] = voltagem;
[Link] = consumo;
}
}
Comandos this e super
public class TV extends Eletrodomestico {
private int canal;
private int volume;
private int tamanho;
public TV(int voltagem, int consumo, int canal, int volume, int tamanho) {
super(false, voltagem, consumo);
[Link] = canal;
[Link] = volume;
[Link] = tamanho;
}
}
Comandos this e super
public class Exemplo {
public static void main(String args[]) {
TV tv1 = new TV(110, 95, 0, 0, 21);
TV tv2 = new TV(220, 127, 0, 0, 29);
}
}
Exercicios
1 Implementar o seguinte modelo de classes. Crie a
classe OperacaoMatematica abstrata e seu método
abstrato com dois parâmetros.
Exercicios
2) Implementar o seguinte modelo de classes.
Exercicios
2) Observações:
Área do circulo: PI * raio * raio (PI == 3.14)
Comprimento do circulo: 2 * PI * raio;
Área Quadrado: 2*lado;
Comprimento Quadrado: 4*lado;