Buscar

POO_Aula9-10_Introducao_POO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Principais conceitos de OO F
Instutito de Informa´tica da UFG
Programac¸a˜o Orientada a Objetos
Cieˆncias da Computac¸a˜o
Prof. Dr. Vin´ıcius Sebba Patto
2o Semestre de 2012
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Interface
Na˜o permitem me´todos concretos nem varia´veis de
instaˆncia.
Todos os me´todos sa˜o implicitamente public e abstract.
Todos os atributos sa˜o implicitamente public, static e
final.
Classes que implementam uma interface precisam
declarar todos os me´todos especificados na interface.
Somente classes abstratas na˜o precisam declarar todos
os me´todos da interface ao implementar ela.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Declarac¸a˜o de classe
Para se declarar uma classe, usamos a seguinte sintaxe:
1 <modificador−acesso> class <nome−classe> { }
Exemplo:
1 public class Produto { }
A classe cria um novo tipo, a partir do qual podemos
criar e usar objetos:
1 Produto prod1 = new Produto( );
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Declarac¸a˜o de atributo
A declarac¸a˜o de um atributo obedece a` seguinte sintaxe:
1 <modificador−acesso> <tipo> <nome>;
Exemplo:
1 class Produto {
2 private int codigo;
3 }
Neste caso, para cada objeto do tipo Produto, criado na
memo´ria, cria-se outro espac¸o na memo´ria (para o
atributo “codigo”).
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Declarac¸a˜o de me´todo
Usamos a seguinte sintaxe para declarar me´todos:
1 <modif−acesso> <tipo−retorno> <nome>(<parametros>) {
2 /∗ codigo do metodo ∗/
3 }
Exemplo:
1 class Produto {
2 private int codigo;
3 public int getCodigo( ) {
4 return codigo;
5 }
6 public void setCodigo(int cod) {
7 codigo = cod;
8 }
9 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Manipulac¸a˜o de objetos
Em Javam objetos sa˜o manipulados por refereˆncia.
A declarac¸a˜o de refereˆncia apenas, na˜o cria objeto na
memo´ria. A refereˆncia aponta para um objeto nulo
(Null) neste caso.
1 VeiculoTerrestre carro;
Para criar o ojeto na memo´ria (instancia´-lo), e´ necessa´rio
utilizar o operador new.
1 VeiculoTerrestre carro = new
2 VeiculoTerrestre(”Opala”,0,false,”gasolina”,4,5);
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Construtores - default
Por padra˜o, o compilador Java fornece um construtor
padra˜o.
Neste caso:
Na˜o e´ necessa´rio criar o me´todo na classe;
Na˜o ha´ paraˆmetro;
O objeto e´ instanciado e os atributos recebem
valores padra˜o (default); ex:
Valores nume´ricos (byte, short, int, long, float,
double): 0;
Booleanos: false;
Char: espac¸o em branco (caractere Unicode 0);
Instaˆncias (String, Date, etc): null.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Construtores declarados no co´digo
Na˜o e´ poss´ıvel desativar o construtor default.
O construtor obrigatoriamente tem o mesmo nome da classe
(comec¸a por letra maiu´scula) e na˜o retorna valor.
O construtor pode ou na˜o receber paraˆmetro(s).
1 public class Aluno{
2
3 private int matricula;
4
5 public Aluno(int matricula){
6 this.matricula = matricula;
7 }
8 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Construtores privados
Existem casos em que e´ necessa´rio impedir a
instanciac¸a˜o da classe ou permitir a isntanciac¸a˜o
por um me´todo esta´tico.
Construtores privados evitam que classes sejam
explicitamente instanciada por usua´rios. Exemplos:
Classes utilita´rias: possuem somente me´todos
esta´ticos - System, Arrays.
Enumerations: tipo de dado enum.
Classes singleton: a classe e´ instanciada somente
uma vez.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Construtores privados - Singleton
1 public class Singleton {
2
3 private static String nome;
4 private static Singleton singleton;
5
6 public void imprimeOi( ){ System.out.println(”Ola ” + nome + ”!”); }
7
8 private Singleton(String nome){ this.nome = nome; }
9
10 public static Singleton getSingleton(String nome){
11 if(singleton == null) { singleton = new Singleton(nome); }
12 return singleton;
13 }
14
15 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Construtores privados - Singleton
1 public class UsaSingleton {
2
3 public static void main(String[ ] args){
4 Singleton singleton = Singleton.getSingleton(”Joao”);
5 Singleton singleton1 = Singleton.getSingleton(”Jean”); // Nao funciona
6 Singleton singleton2 = Singleton.getSingleton(”John”); // Nao funciona
7 singleton.imprimeOi( );
8 singleton1.imprimeOi( );
9 singleton2.imprimeOi( );
10 }
11 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Construtores privados - outro exemplo
1 public class MaximoTres {
2
3 private static int instancias = 0;
4 private static final int MAXIMO = 3;
5 private String nome;
6
7 private MaximoTres(String nome) { this.nome = nome; }
8
9 public static MaximoTres create(String nome) {
10 if (instancias < MAXIMO) {
11 instancias++;
12 return new MaximoTres(nome);
13 }
14 return null;
15 }
16
17 public String toString( ){ return ”Nome do objeto: ” + nome; }
18
19 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Construtores privados - outro exemplo
1 public class UsaMaximoTres{
2
3 public static void main(String[ ] args){
4 MaximoTres m1 = MaximoTres.create(”Lapis”);
5 MaximoTres m2 = MaximoTres.create(”Caderno”);
6 MaximoTres m3 = MaximoTres.create(”Borracha”);
7 MaximoTres m4 = MaximoTres.create(”Caneta”);
8 MaximoTres m5 = MaximoTres.create(”Livro”);
9 System.out.println(m1.toString( ));
10 System.out.println(m2.toString( ));
11 System.out.println(m3.toString( ));
12 //Tente usar um dos objetos abaixo:
13 //System.out.println(m4.toString( ));
14 //System.out.println(m5.toString( ));
15 //Apareceu: Exception in thread ”main” java.lang.NullPointerException?
16 }
17 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Sobrecarga em construtores
E´ poss´ıvel ter va´rios construtores dentro de uma mesma classe (todos
com o mesmo nome).
O compilador diferencia os construtores pela assinatura (paraˆmetros).
Os nomes dos paraˆmetros na˜o alteram a assinatura.
1 public class Aluno{
2
3 private int matricula;
4
5 public Aluno( ){
6 this(1); // Chama o construtor abaixo
7 }
8 public Aluno(int matricula){
9 this.matricula = matricula;
10 }
11 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Sobrescrita de me´todos
Sobrescrita ocorre quando me´todos com a mesma assinatura
aparecem na classe ma˜e e na classe filha.
Esta situac¸a˜o e´ u´til quando se deseja alterar um comportamento.
1 public class Mamifero{
2 public void nascimento( ){
3 lamberFilhote( );
4 }
5 ...
6 }
7
8 public class Humano extends Manifero{
9 public void nascimento( ){
10 lavarFilhote( );
11 }
12 ...
13 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Uso da palavra reservada this
O uso da palavra this permite acessar varia´veis de instaˆncia ou
me´todos de uma instaˆncia (objeto).
A palavra this so´ pode ser usada dentro de me´todos na˜o esta´ticos.
1 public class Aluno{
2
3 private int matricula;
4
5 publicAluno( ){
6 this(1); // this( ) − chama o construtor abaixo
7 }
8 public Aluno(int matricula){
9 this.matricula = matricula; // this. − invoca metodos ou propridades
10 }
11 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Uso de interfaces, classes, atributos, me´todos e objetos
Uso da palavra reservada super
O uso da palavra super permite acessar propriedades ou me´todos da
classe hierarquicamente imediatamente superior.
O uso de super( ) invoca o construtor da classe hierarquicamente
imediatamente superior.
1 public class Aluno extends Pessoa {
2
3 ...
4
5 public Aluno(int matricula){
6 super( ); // super( ) − invoca o metodo construtor da classe hierarquicamente
imediatamente superior.
7 super.getNome(this.matricula); // super. − chama propriedades ou metodos
da classe hierarquicamente imediatamente superior.
8 }
9 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Encapsulamento
Me´todo de acesso:
public getAtributo( );
Me´todo modificador:
public setAtributo(tipo atributo);
Isso na˜o seria o mesmo que:
public atributo; ?
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Encapsulamento
Me´todo de acesso: permite controlar o formato de
dados a ser retornado ao cliente.
Me´todo modificador: deve avaliar tentativas de
modificac¸a˜o de valores de atributos.
Benef´ıcios: integridade de dados.
Protec¸a˜o do co´digo do cliente (quem usa a classe);
Acesso aos dados e´ restrito a` forma como os
me´todos foram implementados.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Encapsulamento
Encapsulamento
E´ uma te´cnica que consiste em reunir no seio de um
classificador (classe) a estrutura (atributos) e o
comportamento (me´todo) de um tipo de dado.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
Heranc¸a e´ um mecanismo que permite especializar
classes.
Polimorfismo e´ um mecanismo que permite generalizar
classes.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
1 public class Inicial {
2
3 public static void main(String[ ] args) {
4 Carro opala = new Carro(”Opala”, ”gasolina”, 4, 5);
5 Aviao f16 = new Aviao(”F16”, ”querosene”, 15250, 500);
6 opala.descricao(opala);
7 f16.descricao(f16);
8 }
9
10 }
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
opala e f16 invocam o me´todo descricao( ).
descricao( ) e´ declarado dentro de
VeiculoMotorizado.
Tanto o Carro quanto o Aviao assumem forma de
VeiculoMotorizado.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Encapusulamento e Polimorfismo
Polimorfismo
Polimorfismo
E´ a capacidade de um objeto tomar diferentes formas,
quer dizer ser manipulado em func¸a˜o de seu classificador
(classe) ou de outros classificadores compat´ıveis com o
seu classificador.
Programac¸a˜o Orientada a Objetos
Principais conceitos de OO F
Fim
That’s all!
Por enquanto e´ so´, pessoal!
Programac¸a˜o Orientada a Objetos
	Principais conceitos de OO
	Uso de interfaces, classes, atributos, métodos e objetos
	Encapusulamento e Polimorfismo
	F
	Fim

Outros materiais