27
Java para Desktop Programação Orientada à Objetos 2 JSE

Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Embed Size (px)

Citation preview

Page 1: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java para Desktop

Programação Orientada à Objetos 2 – JSE

Page 2: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Encapsulamento

significa "ocultar informações“, ele define que

cada objeto contém todos os detalhes de

implementação necessários sobre como ele

funciona e oculta os detalhes internos sobre como

ele executa os serviços.

Page 3: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Porque devemos encapsular?

Exemplo: KM de um Carro

Existe KM negativa?

Page 4: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Porque devemos encapsular?

Carro c = new Carro();

c.km = -20;

Page 5: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Assim, para evitar esse tipo de problema,

Encapsularemos o atributo KM da classe Carro.

Mas como podemos encapsular?

Page 6: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

1º- Encapsulamos restringindo o acesso direto a propriedade;

private int km;

2º- Damos acesso a propriedade através de um método, onde não é possível valores negativos;

public void setKm(int km) {

if (km >= 0)

this.km = km;

}

Page 7: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

3º- Criamos um carro utilizando o

Encapsulamento;

Carro c = new Carro();

c.setKm(-10);

Dessa forma nunca teremos um carro com KM

negativa.

Page 8: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Os métodos Getters e Setters

Servirão como modo de acesso aos atributos

encapsulados de uma classe.

Page 9: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Método Set

Nomeamos um método acessor com set toda vez que

este método for modificar algum campo ou atributo de

uma classe;

Como o valor de um atributo da classe será modificado,

não é necessário que este método retorne nenhum valor,

por isso, os métodos setters são void. Porém,

obrigatoriamente, eles tem que receber um argumento

que será o novo valor do campo.

Page 10: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Método Get

Nomeamos um método acessor com get toda vez

que este método for verificar algum campo ou

atributo de uma classe;

Como este método irá verificar um valor, ele sempre

terá um retorno como String, int, float, etc. Mas não

terá nenhum argumento.

Page 11: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

O encapsulamento é importante porque separa a

maneira como um objeto se comporta da maneira

como ele é implementado;

A definição de como implementar os conhecimentos

ou ações de uma classe, sem informar como isto é

feito.

Page 12: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Exemplo Prático: Login e Senha de Usuários

Prática – Modelando o Projeto

Page 13: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Herança

é um mecanismo que permite que características

comuns a diversas classes sejam agrupadas em

uma classe base, ou superclasse. A partir de uma

classe base, outras classes podem ser

especificadas. Cada classe derivada ou subclasse

apresenta as características (estrutura e métodos)

da classe base e acrescenta a elas o que for

definido de particularidade para ela.

Page 14: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Quando usamos Herança?

Exemplo: Atributos comuns entre um Carro,

Bicicleta, Avião...

Page 15: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

public class Veiculo {

String modelo;

int ano;

int quantPneus;

int quantPessoasAndam;

String cor;

}

Page 16: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Mas, como Herdamos?

public class Carro extends Veiculo{

}

Agora, um Carro é um Veículo!

Page 17: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Então podemos ter a seguinte instância

de carro:

Veiculo c1 = new Carro();

c1.setAno(2010);

Page 18: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

SubClasse: uma classe que é um subtipo de uma ou

mais classes. Como tal, ela herda todas as

características de suas superclasses.

SuperClasse: classe a partir da qual todas as suas

características são herdadas por suas subclasses.

Page 19: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Exemplo Prático: Pessoa > Usuário

Pessoa > Funcionário

Page 20: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

É muito importante saber usar Herança para

beneficiar, pois se mal projetado um projeto pode

ficar comprometido pelo uso indevido desse

conceito;

Podemos introduzir o conceito de Polimorfismo

através de Herança, vamos entender mais na frente

como.

Page 21: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Polimorfismo

é o princípio pelo qual duas ou mais classes

derivadas de uma mesma superclasse podem

invocar métodos que têm a mesma identificação

(assinatura) mas comportamentos distintos,

especializados para cada classe derivada, usando

para tanto uma referência a um objeto do tipo da

superclasse.

Page 22: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Quando usamos o Polimorfismo?

Exemplo: Atributos comuns, porém serviços

(formas de fazer uma ação) diferentes.

Acelerar um Veículo.

X X

Page 23: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Podemos usar Polimorfismo de três maneiras

diferentes:

Inclusão (Interfaces)

Paramétrico (Generics)

Ad-Hoc (Override)

Page 24: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Todo veículo acelera, porém de formas diferentes.

public class Veiculo {

public void acelerar(){};

}

Page 25: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Então teríamos Polimorfismo Ad-Hoc.

public class Bicicleta extends Veiculo{

@Override

public void acelerar(){

System.out.println(“Pedalar”);

System.out.println(“Acelerando...”);

};

}

Page 26: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Podemos usar Polimorfismo com Interfaces.

public interface ServCarros{

public void acelerar();

public void freiar();

}

public class Carro implements ServCarros{

//Classe Carro é Obrigada a escrever a implementação //dos métodos

}

Page 27: Java para Desktop - aeciocosta.com.br Java Desktop/Aulas... · O encapsulamento é importante porque separa a maneira como um objeto se comporta da maneira como ... Podemos introduzir

Java – POO

Polimorfismo é muito utilizado, sua utilização vai de

Sistemas básicos até a construção de Padrões de

Projeto onde o seu uso é feito constantemente.

Composite, Observer, Strategy, Template Method