Orientação a Objetos
Paradigma
Revisão
• Dúvidas da aula passada?
– Características de Java
– Compilador vs. Interpretador.
– Hello World
– Tipos Primitivos
– Operadores
– Casts
• Ok?
Davi Pires {[email protected]}
Trabalhando com Objetos
•
•
•
•
•
•
Classes
Métodos
Atributos
Construtores
Objetos
Pacotes
Davi Pires {[email protected]}
Classes
• “Fôrmas” de objetos.
• Define propriedades comuns a um
conjunto de objetos pertencentes à
classe.
Classe
Instanciação
Davi Pires {[email protected]}
Objetos ou
Instâncias
Classes
Definindo uma classe
class [NomeDaClasse] {
//aqui vem o corpo da classe.
}
[ modificadores ] class [NomeDaClasse] {
//aqui vem o corpo da classe.
}
Davi Pires {[email protected]}
Classes
• Devem estar definidas em arquivos com
o mesmo nome da classe.
• Tudo que você fará em Java estará
dentro de uma classe.
• Acostume-se com elas!
Davi Pires {[email protected]}
O que tem no corpo da classe?
• Atributos
– “Características” de um objeto daquela
classe.
• Construtores
– Inicializadores de objetos.
• Métodos
– Ações passíveis de serem executadas
sobre os objetos daquela classe.
Davi Pires {[email protected]}
Atributos
• Também chamados de variáveis de instância.
• Variáveis que pertencem a cada objeto.
• Todo objeto tem, com valores possivelmente
diferentes.
• Podem ter valores padrão.
Conta
1234
0,50
numero
3456
saldo
10,00
Davi Pires {[email protected]}
Conta c1
Conta c2
Atributos
• Exemplos:
– Atributos1.java
– Conta.java
Davi Pires {[email protected]}
Métodos
• Ações passíveis de serem executadas sobre
objetos de uma classe.
• Podem receber parâmetros para executar
sua computação.
• Podem retornar valores para quem chamou o
método.
• Exemplo: dado o objeto c1, do tipo Conta:
– c1.getSaldo(): não tem parâmetros e deve
retornar o saldo da conta c1 (que é um double).
– c1.creditar(3.0): credita $3,00 na conta c1. Não
precisa retornar nada (a princípio).
Davi Pires {[email protected]}
Métodos
• Assinatura de Métodos.
Tipo de Retorno
nomeDoMetodo
( lista de parâmetros )
Exemplo:
double
getSaldo
()
void
creditar
( double valorASerCreditado )
void
transferir ( double valorASerTransferido, Conta destino )
Davi Pires {[email protected]}
Métodos
• Lista de parâmetros
– Pode ser vazia
double
getSaldo
()
• Tipo de retorno
– Tipo void: indica que não o método não
retorna nada.
void
creditar
( double valorASerCreditado )
• Parâmetros só são visíveis dentro dos
métodos.
• Variáveis locais.
Davi Pires {[email protected]}
O comando ‘return’
• Em métodos com tipo de retorno
diferente de void, precisamos retornar
um valor.
• O valor retornado é especificado usando
o comando return;
• Após atingir a cláusula return, a
execução do método é interrompida.
Davi Pires {[email protected]}
Como é mesmo o corpo de
uma classe?
• Já temos bastante coisa para preencher
o corpo de uma classe agora.
• Veja em ContaComMetodos.java o que
você já sabe fazer.
• Faça os 2 exercícios mostrados no
arquivo.
• Compilem o arquivo [use o comando
javac] para checar se há erros.
Davi Pires {[email protected]}
Enfim, Objetos!
• Java é Orientada a Objetos.
– O que é isso?
• O que é um paradigma?
•pa.ra.dig.ma: s. m.
–1. Modelo, protótipo.
–2. Gram. Conjunto de fórmulas de palavras variáveis que
servem de modelo para as demais do mesmo grupo mórfico.
Davi Pires {[email protected]}
Objetos
• Programação orientada a objetos (POO)
– quer dizer que tudo que você fará serão
objetos.
– Classes são tipos.
– Objetos são variáveis desse tipo.
– Abstrações de objetos do mundo real são
obtidas através da instanciação de objetos de
classes que representem esses objetos.
– É a maneira como você analisa um problema
real.
– É uma maneira de ver o mundo.
Davi Pires {[email protected]}
Orientação a Objetos
• “Numa biblioteca são guardados livros.
Uma (ou mais) bibliotecárias organizam
os livros em prateleiras. Os usuários
podem alugar os livros. Ao fim do prazo
estabelecido, devem retorna-lo à
Biblioteca entregando-o à bibliotecária.
Usuários VIP podem alugar mais de 3
livros por mês.”
Davi Pires {[email protected]}
Composição
• Objetos como atributos de objetos.
class Data {
int dia, mes, ano;
}
class Usuario {
// ...
Data dataDeNascimento;
}
Davi Pires {[email protected]}
Composição
• Permite reutilização de código.
• Modularização.
• Escreve e testa
– se funcionar, pode ser usado em outras partes
do projeto.
• Isolamento dos bugs em partes separadas do
projeto facilita manutenção.
• Enfim, ALTA QUALIDADE DE SOFTWARE
PODE SER ATINGIDA COM POO.
Davi Pires {[email protected]}
Instanciando objetos
• O comando new:
– Cria um novo objeto da classe especificada
e inicializa seus atributos.
– Pode receber parâmetros, desde que
definido dentro da classe.
• Construtores
– Métodos especiais dentro das classes
especificando como devem ser
inicializados os atributos.
Davi Pires {[email protected]}
Construtores
• Não têm tipo de retorno.
• Têm o mesmo nome da classe.
class Data {
int dia, mes, ano;
Data (int a, int b, int c) {
dia = a;
mes = b;
ano = c;
}
}
Davi Pires {[email protected]}
Instanciando objetos
• Exemplo:
– Usando um construtor padrão:
• ContaExemplo.java
– Usando um construtor específico.
• ContaExtendida.java
Davi Pires {[email protected]}
A palavra this
• Refere-se sempre ao objeto sobre o
qual o método foi chamado.
• Num construtor, refere-se ao objeto que
está sendo instanciado.
Davi Pires {[email protected]}
A palavra this
• Geralmente é dispensável, mas facilita a
leitura do código.
class Data {
int dia, mes, ano;
Data (int a, int b, int c) {
this.dia = a;
this.mes = b;
this.ano = c;
}
}
Davi Pires {[email protected]}
A palavra this
• Exemplo
– ContaThis.java
Davi Pires {[email protected]}
O valor null
• Variáveis cujos tipos são objetos são por
default inicializadas com valor null.
• Não é permitido acessar métodos ou
atributos de objetos null.
• NullPointerException!
Davi Pires {[email protected]}
Sobrecarga de Construtores
• Classes podem ter vários construtores.
• Cada um com uma lista diferente de
parâmetros.
• Exemplos:
– ContaConstrutores.java
Davi Pires {[email protected]}
E agora, o corpo da classe...?
• A nossa classe Conta agora pode ser
extendida para incluir construtores.
• Assim ela poderá ser propriamente
instanciada.
• Já é uma boa classe para ser incluída
num projeto real.
– Teste antes!
Davi Pires {[email protected]}
Exercício
• Escolha um restaurante que você visite
com alguma freqüência. Imagine como
você modelaria um software para este
restaurante.
• Quanto maior a automatização, mais $!
• E também maior a complexidade!
• Cuidado!
Davi Pires {[email protected]}
Exercício
• Escrevam essa modelagem da forma
que quiserem
– Caixas e setas, texto, UML...
• Duplas, se quiserem.
• Escrevam pelo menos 2 classe em Java
• Pensem em Objetos!
-djfskjdf
-jkbsdkfjsjdfksbdfksdjfsfksjdbks
fbdksjfskkjfsgjdsfkgbjdslçkfjgbç
sdkfjgbçdksjfbgçkdfsjgbsdkç
-kjdbfsk
-sdjsfkgbdlçsifgbdfgjsdfkgsgfkd
sfgbdslkfjgbldskjfgbsdkljjgbdkfj
gbdkfjgbdfjgbsçfogbsdçfkgjsdç
gksdffsdlfknsdlfsfd
Davi Pires {[email protected]}
Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-Uso
Não-Comercial-Compatilhamento pela mesma licença. Para ver uma cópia desta
licença, visite http://creativecommons.org/licenses/by-nc-sa/2.0/br/ ou envie uma
carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
USA.
Download

Orientação a Objetos