Desenvolvimento para
Dispositivos Móveis
Aula 3 – Programação OO para Desenvolvimento Android
Programação Orientada a Objetos
O estado do objeto é armazenado nos atributos e o comportamento é
exposto através dos métodos
class Cachorro{
int tamanho;
string raca;
public void latir(){
}
}
Programação Orientada a Objetos
public class Principal{
public static void main(String args[]){
cachorro c1 = new Cachorro();
[Link]ça = "Pitbull";
[Link] = 3;
[Link]();
}
}
Atividade – Conta Corrente
Criar uma classe Conta que irá ContaCorrente
manipular contas de um banco
int numero
float saldo
String nome
emitirSaldo()
sacar(float valor)
depositar(float valor)
Programação Orientada a Objetos
Conceitos Base
Classe, Objeto (estado e comportamento), Relacionamento,
Encapsulamento (public, private), Herança e Polimorfismo
Herança
Diferentes tipos de objetos têm, frequentemente, algo em comum. No
entanto, cada um também possui estado ou comportamento adicionais
que os tornam diferentes
A POO permite que classes herdem estado e comportamento comumente
usado de outras classes
Em Java, cada classe é permitido ter apenas uma superclasse direta, e
cada superclasse tem o potencial para um número ilimitado de subclasses
Herança
Mecanismo que permite que classes, chamadas de
subclasse, herdem (reutilizem) atributos e
métodos de outras classes, superclasses
As subclasses podem adicionar novos métodos
e/ou atributos
Facilita a reutilização de código
Ave é um tipo de Animal
Mamífero é um tipo de
Animal
Herança
A classe Funcionário apresenta 2 descendentes e um ancestral;
José é um objeto instanciado da classe Gerente;
A classe Técnico herda todos os atributos de Funcionário e Pessoa;
A classe Funcionário é subclasse de Pessoa e superclasse de Gerente e
Técnico;
O objeto Pedro poderia herdar os métodos de Pessoa, caso existissem;
Se for incluído um novo atributo na classe Pessoa todas as outras
descendentes passariam a ter esse atributo também.
Como Implementar?
Para criar uma subclasse, usamos a palavra reservada extends
Exemplo
class subClasse extends superClasse
{
...
}
Exemplo
Pessoa Física
String CPF
Cliente
String nome
String end
String tel
String ultimaCompra Pessoa Jurídica
emitirNotaFiscal() String CNPJ
String nomeFantasia
String razaoSocial
Classe Cliente Classe PessoaFisica
class Cliente { class PessoaFisica extends Cliente{
String nome; String cpf;
String end; }
public void emitirNotaFiscal(){
[Link]("Nota Fiscal");
}
}
Classe PessoaJuridica Classe Principal
class PessoaJuridica extends Cliente{ class Main {
String cnpj; public static void main(String[] args) {
String nomeFantasia; Cliente f1 = new PessoaFisica();
} [Link] = "Ana";
[Link] = "Rua A";
[Link]([Link]);
[Link]();
}
}
Polimorfismo
1. Formas de modificar totalmente o código de um método herdado de uma
superclasse
Ex.:
- Classe 1 possui 2 métodos: métodoA() e métodoB()
- Classe 2 herda a classe 1
- Classe 2 reescreve todo o métodoA() que pertence a classe 1
Polimorfismo
2. Está relacionado, também, à possibilidade de se usar o mesmo nome
para métodos diferentes e à capacidade que o programa tem em
discernir, dentre os métodos homônimos, aquele que deve ser executado
Exemplo
Superclasse: Carro
Método: aumentar()
Subclasses: Fusca, Ferrari, Gol
Exemplo
Todo ano, os carros tem um aumento: a Ferrari 5%, o Fusca 1% e o Gol 3%
Cada objeto terá que calcular seu aumento de forma diferente, pois
terão diferentes valores de aumento
Método aumentar() diferente em cada uma das subclasses existentes:
[Link]() [Link]()
class Carro { public class TesteVeiculo {
void aumentar() { public static void main(String[] s) {
[Link] (“Ver tabela”);
} Carro c1 = new Carro();
} [Link]();
Carro f1 = new Fusca();
class Fusca extends Carro { [Link]();
void aumentar() { Ferrari f2 = new Ferrari();
[Link] (“3%”); [Link]();
} }
} }
class Ferrari extends Carro {
void aumentar() {
[Link] (“15%”);
}
}