Escolar Documentos
Profissional Documentos
Cultura Documentos
Nádia Félix
nadia@inf.ufg.br
Programação Orientada a Objetos
Generalização (herança);
●
Dependências
●
Programação Orientada a Objetos
–Endereço
–CPF
São atributos de Cliente e não de Conta
–Telefone
–Etc..
Programação Orientada a Objetos
Associando Classes
class Cliente {
} minhaConta agora
Cliente c = new Cliente(); tem uma referência
class Conta { para o Cliente
minhaConta.titular = c; correspondente a c
int numero;
double saldo;
minhaConta.titular.nome = “Ana”;
double limite;
Forma de
String tipo; Acessar o Cliente
Cliente titular; }
} }
Programação Orientada a Objetos
} minhaConta.titular.nome = “Ana”;
}
class Conta {
}
int numero;
Neste caso, toda conta
double saldo; quando criada terá um
double limite; cliente associado a ela
String tipo;
Associando Classes
(Vários clientes em uma conta)
class Cliente { class Programa {
double limite; }
String tipo; }
Exercício
●Crie um modelo para representar Músicas e Compositores associando as duas
classes. Os cadastros devem manter o nome da música, tipo, ano, nome do
compositor e a sua nacionalidade.
Crie um modelo para representar Alunos que estão matriculados em um curso
●
ENCAPSULAMENTO
Ocultar Informações
Programação Orientada a Objetos
Encapsulamento
Consiste na separação dos aspectos internos e externos de um
●
objeto;
●
Programação Orientada a Objetos
Encapsulamento (cont..)
●Permite ignorar os detalhes de implementação (de como as
coisas funcionam internamente) permitindo ao desenvolvedor
idealizar seu trabalho em um nível mais alto de abstração;
●
O colchão...
hora de dormir;
Basta ele oferecer uma interface amigável que todos saberão o
●
Um terminal bancário...
Controle do Acesso
Modificadores de Acesso
public
●
●private
–Simbolizado por “-”
defaut
●
●protected
–Simbolizado por “#”
Públicos:
→ saca(..)
→ deposita(..)
→ transfere(..)
Protected:
→ tipo
Package ou padrão:
→ gerente
Programação Orientada a Objetos
Encapsulamento
Encapsulamento
–Atributos privados
–Um conjunto de métodos públicos – interface da classe
Programação Orientada a Objetos
class Cliente {
private String nome;
private String endereco;
private String cpf;
private Date dataNascimento;
private int idade;
class Cliente {
private String nome;
private String endereco;
private String cpf;
private int idade;
…
...
public void mudaCPF(String cpf) {
validaCPF(cpf);
this.cpf = cpf;
}
private void validaCPF(String cpf) {
// série de regras aqui, falha caso não seja válido
}
// ..
}
Programação Orientada a Objetos
–Ex:Se existe um atributo nome em uma classe, toda vez que precisar
acessar o valor de nome, invoca o método getNome()
Programação Orientada a Objetos
–Ex: Se existe um atributo nome em uma classe, toda vez que precisar alterar
o valor de nome, invoca o método setNome(“Novo Nome”)
Programação Orientada a Objetos
Atributos privados não são acessíveis, usar GET e SET quando necessário.
●
Exemplo:
●
Saldo não deveria ser alterado diretamente, seria alterado somente através
dos métodos saca e deposita.
Atributos final
O modificador final indica que o atributo não poderá sofrer
●
externo;
Atributos final
O modificador final utilizado em um método significa que o
●
Alterando os atributos para privados, quais as alterações são necessárias nas classes ?
this.codigo = codigo; }
}
Programação Orientada a Objetos
Variáveis de Classe
Variáveis de Instância
Programação Orientada a Objetos
Variáveis de Instância
Programação Orientada a Objetos
Variáveis de Classe
Programação Orientada a Objetos
Variáveis de Classe
Exemplo:
–O banco quer controlar a quantidade de contas existentes
Conta c = new Conta(); Espalhamento de código (não resolve)
totalDeContas = totalDeContas + 1;
Conta() {
this.totalDeContas = this.totalDeContas + 1;
}
}
Variáveis de Classe
Exemplo:
–O banco quer controlar a quantidade de contas existentes
class Conta { Para Atributos de classe não usa this
private static int totalDeContas;
Conta() {
Conta.totalDeContas = Conta.totalDeContas + 1;
Não precisa criar o objeto para
}
recuperar o atributo
public static int getTotalDeContas() {
return Conta.totalDeContas;
} class Programa {
} ...
int total = Conta.getTotalDeContas();
...
Método de Classe }
Programação Orientada a Objetos
Métodos de Classe
Exercício de Fixação
Como é chamado um atributo que tem valores diferentes para cada objeto?
●