orientação a objetos
DESCRIPTION
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?. Trabalhando com Objetos. Classes Métodos Atributos Construtores Objetos Pacotes. Classes. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/1.jpg)
Orientação a Objetos
Paradigma
![Page 2: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/2.jpg)
Davi Pires {[email protected]}
RevisãoRevisão
• Dúvidas da aula passada?– Características de Java– Compilador vs. Interpretador.– Hello World– Tipos Primitivos– Operadores– Casts
• Ok?
![Page 3: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/3.jpg)
Davi Pires {[email protected]}
Trabalhando com ObjetosTrabalhando com Objetos
• Classes
• Métodos
• Atributos
• Construtores
• Objetos
• Pacotes
![Page 4: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/4.jpg)
Davi Pires {[email protected]}
ClassesClasses
• “Fôrmas” de objetos.
• Define propriedades comuns a um conjunto de objetos pertencentes à classe.
InstanciaçãoClasse Objetos ouInstâncias
![Page 5: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/5.jpg)
Davi Pires {[email protected]}
ClassesClasses
Definindo uma classe
class [NomeDaClasse] {
//aqui vem o corpo da classe.
}
[ modificadores ] class [NomeDaClasse] {
//aqui vem o corpo da classe.
}
![Page 6: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/6.jpg)
Davi Pires {[email protected]}
ClassesClasses
• 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!
![Page 7: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/7.jpg)
Davi Pires {[email protected]}
O que tem no corpo da classe?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.
![Page 8: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/8.jpg)
Davi Pires {[email protected]}
AtributosAtributos
• 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.
numero
saldo
Conta 1234
0,50
3456
10,00
Conta c1
Conta c2
![Page 10: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/10.jpg)
Davi Pires {[email protected]}
MétodosMé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).
![Page 11: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/11.jpg)
Davi Pires {[email protected]}
MétodosMétodos
• Assinatura de Métodos.
double getSaldo
( lista de parâmetros )Tipo de Retorno nomeDoMetodo
Exemplo:
( )
void creditar ( double valorASerCreditado )
void transferir ( double valorASerTransferido, Conta destino )
![Page 12: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/12.jpg)
Davi Pires {[email protected]}
• Lista de parâmetros– Pode ser vazia
• Tipo de retorno– Tipo void: indica que não o método não
retorna nada.
• Parâmetros só são visíveis dentro dos métodos.
• Variáveis locais.
MétodosMétodos
double getSaldo ( )
void creditar ( double valorASerCreditado )
![Page 13: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/13.jpg)
Davi Pires {[email protected]}
O comando ‘return’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.
![Page 14: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/14.jpg)
Davi Pires {[email protected]}
Como é mesmo o corpo de uma classe?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.
![Page 15: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/15.jpg)
Davi Pires {[email protected]}
Enfim, Objetos!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.
•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.
![Page 16: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/16.jpg)
Davi Pires {[email protected]}
ObjetosObjetos
• 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.
![Page 17: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/17.jpg)
Davi Pires {[email protected]}
Orientação a ObjetosOrientaçã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.”
![Page 18: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/18.jpg)
Davi Pires {[email protected]}
ComposiçãoComposição
• Objetos como atributos de objetos.
class Data {
int dia, mes, ano;
}
class Usuario {
// ...
Data dataDeNascimento;
}
![Page 19: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/19.jpg)
Davi Pires {[email protected]}
ComposiçãoComposiçã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.
![Page 20: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/20.jpg)
Davi Pires {[email protected]}
Instanciando objetosInstanciando 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.
![Page 21: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/21.jpg)
Davi Pires {[email protected]}
ConstrutoresConstrutores
• 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;
}
}
![Page 22: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/22.jpg)
Davi Pires {[email protected]}
Instanciando objetosInstanciando objetos
• Exemplo:– Usando um construtor padrão:
• ContaExemplo.java
– Usando um construtor específico.• ContaExtendida.java
![Page 23: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/23.jpg)
Davi Pires {[email protected]}
A palavra thisA 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.
![Page 24: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/24.jpg)
Davi Pires {[email protected]}
A palavra thisA 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;
}
}
![Page 26: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/26.jpg)
Davi Pires {[email protected]}
O valor nullO 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!
![Page 27: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/27.jpg)
Davi Pires {[email protected]}
Sobrecarga de ConstrutoresSobrecarga de Construtores
• Classes podem ter vários construtores.
• Cada um com uma lista diferente de parâmetros.
• Exemplos:– ContaConstrutores.java
![Page 28: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/28.jpg)
Davi Pires {[email protected]}
E agora, o corpo da classe...?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!
![Page 29: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/29.jpg)
Davi Pires {[email protected]}
ExercícioExercí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!
![Page 30: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/30.jpg)
Davi Pires {[email protected]}
ExercícioExercí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-jkbsdkfjsjdfksbdfksdjfsfksjdbksfbdksjfskkjfsgjdsfkgbjdslçkfjgbçsdkfjgbçdksjfbgçkdfsjgbsdkç-kjdbfsk-sdjsfkgbdlçsifgbdfgjsdfkgsgfkdsfgbdslkfjgbldskjfgbsdkljjgbdkfjgbdkfjgbdfjgbsçfogbsdçfkgjsdçgksdffsdlfknsdlfsfd
![Page 31: Orientação a Objetos](https://reader035.vdocuments.com.br/reader035/viewer/2022070404/56813c50550346895da5d12a/html5/thumbnails/31.jpg)
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.