Você está na página 1de 46

Programação 1

Classes e Objetos – Construtores e  


Encapsulamento

Anderson Paulo da Silva


psilva.anderson@gmail.com
Classes e Objetos

Classes e Objetos
Nós já definimos classes e objetos na aula passada, mas como
podemos dizer em linhas gerais o que são esses dois
componentes?

• Classe: Pode ser dita como sendo o “projeto” de um objeto,

Slide 2 | Porgramação I
portanto a mesma dá forma e diz o que um objeto terá e como
ele irá funcionar;

• Objeto: É a instância de uma classe, ou seja, o resultado de


algo construído a partir da classe, juntamente com todas as
características e funcionalidades definidas.
Observe a figura abaixo, ela mostra a evolução das bicicletas:

Classes e Objetos

Slide 3 | Porgramação I
Quais características as bicicletas tem em comum?
Classes e Objetos
• Rodas;

Slide 4 | Porgramação I
• Tamanho;
• Velocidade (se estiver parada, a velocidade é zero);
• Marchas (ou não);
• Modelo, marca, cor, material, etc.
Classes e Objetos

Slide 5 | Porgramação I
Quais comportamentos elas tem em comum?
Classes e Objetos

Slide 6 | Porgramação I
Quais comportamentos elas tem em comum?
• Aceleram;
Classes e Objetos

Slide 7 | Porgramação I
Quais comportamentos elas tem em comum?
• Aceleram; (essas duas características
• Freiam; afetam a velocidade certo)?
Classes e Objetos

Slide 8 | Porgramação I
Quais comportamentos elas tem em comum?
• Aceleram;
• Freiam;
Logo, as bicicletas também
• Viram a direita e a esquerda; devem ter a característica
“direção” certo?
Classes e Objetos

Slide 9 | Porgramação I
Quais comportamentos elas tem em comum?
• Aceleram;
• Freiam;
• Viram a direita e a esquerda;
Quando possuem a caraterística
• Mudam marcha;
“Marcha”!
• etc.
Classes e Objetos

Slide 10 | Porgramação I
Toda bicicleta terá essas características. Se uma delas faltar, não
será bicicleta.
Classes e Objetos

Slide 11 | Porgramação I
Ou seja, para ser uma bicicleta, é necessário um molde, um
padrão, uma forma de fazer bicicletas. Isso será chamado de
classe.
Cada bicicleta criada a partir deste molde, deste padrão será
chamado de objeto.
São características da Orientação a
Objetos:

Classes e Objetos
•  Qualquer coisa é um objeto;
•  Objetos realizam tarefas através da
requisição de serviços;
•  Cada objeto pertence a uma
determinada classe;
•  Uma classe agrupa objetos similares;
•  Uma classe possui comportamentos

Slide 12 | Porgramação I
associados ao objeto;
•  Classes são organizadas em
hierarquias.
Uma classe é uma estrutura que abstrai um conjunto de objetos
com características similares. Lembre-se da bicicleta: as bmx, as
mountain bikes, as infantis e outras possuem características
similares e podem ser agrupadas em uma estrutura chamada

Classes e Objetos
bicicleta.

Slide 13 | Porgramação I
O objeto é uma instancia da classe. É algo criado a partir da classe
que possui característica e funcionalidades que são descritas na
classe.

Classes e Objetos

Slide 14 | Porgramação I
O objeto é uma instancia da classe. É algo criado a partir da classe
que possui característica e funcionalidades que são descritas na
classe.

Classes e Objetos

Slide 15 | Porgramação I
Vamos para um exemplo de computação.

Observe a figura abaixo. Todos os exemplos da figura formam um


conjunto de “coisas” similares chamadas janelas. Logo, um diálogo

Classes e Objetos
de arquivo, de impressão, de entrada de dados etc. São exemplos
de objetos.

Slide 16 | Porgramação I
Em Java, para criar uma classe é bem fácil, observe:]

Classes e Objetos
public class Bicicleta {

Slide 17 | Porgramação I
Para criar uma classe em Java, usamos a palavra-chave class
seguida pelo nome da classe que desejamos criar. Observe que a
primeira letra da classe sempre será escrita em maiúscula por
questões de padronização.
Para criar um objeto da classe Bicicleta, a sintaxe é a seguinte:

Nome_classe nome_objeto = new Nome_classe();

Classes e Objetos
Exemplo:

Bicicleta mountainBike = new Bicicleta();

Slide 18 | Porgramação I
O objeto é criado por meio do comando new. O exemplo anterior
criou um objeto chamado “mountainBike” da classe Bicicleta.
As classes, em geral, possuem o que chamamos de atributos e
métodos:

Classes e Objetos
Atributos:
Cor
Quantidade de rodas
Quantidade de Vidros
Quantidade de Faróis

Slide 19 | Porgramação I
Tipo de vidro (fumê ou não)
Tipo de motor (1.0 ou
maior)
Etc.
As classes, em geral, possuem o que chamamos de atributos e
métodos:

Classes e Objetos
Métodos:
Abrir porta;
Acelerar;
Frear;
Mudar direção;
Mudar Marcha;

Slide 20 | Porgramação I
Etc.
Nossa bicicleta poderia ficar assim:
public class Bicicleta {

//atributos

Classes e Objetos
String numeroDeSerie;
String lote;
String marca;
String tipo;
String direcao;
float velocidade;
float aceleracao;
int numeroDeMarchas;
int marchaAtual;

//métodos

Slide 21 | Porgramação I
void parar(){

}
void acelerar(float a){

}
void virar(String direcao){

}
void mudarAMarcha(int novaMarcha){

}
Para definir métodos, precisamos:

Classes e Objetos
1. Modifcadores: como public, private e outros.
2. O tipo de retorno: o tipo de dado do valor retornado pelo método
ou void se não há retorno.

Slide 22 | Porgramação I
3. O nome do método.
4. A lista de argumentos entre parênteses: os argumentos são
separados por vírgula, seguido pelo tipo de dados e pelo nome do
argumento. Se não houver parâmetros, usa-se os parênteses sem
parâmetros, como é o caso do método parar() na classe Bicicleta.
5. O corpo do método, entre chaves.
Mãos na massa!

Construa duas classes: Pessoa e Carro.


Coloque todos os atributos e métodos que você vislumbrar
nestas classes.

Exercícios

Slide 23 | Porgramação I
Designed by Luiz Francisco
É recomendável que todo método comece por um verbo (com a
primeira letra em minúscula). Veja alguns exemplos:

correr;

Classes e Objetos
correrRapido;
getBackground;
getDados;
compareTo;
setX;
isEmpty.

Slide 24 | Porgramação I
Normalmente um nome de método é único dentro da classe.
Entretanto, um método pode ter o mesmo nome que outros
métodos. Isto é chamado de sobrecarga. Logo iremos ver este
conceito.
Quando um objeto é criado ele automaticamente recebe todos os
atributos e métodos de sua classe. Como exemplo, suponha que
a classe Janela seja definida assim:
public class Janela {

Construtores
//atributos
int posicaoX;
int posicaoY;
int largura;
int altura;
String tipo;
// outros atributos

//métodos

Slide 25 | Porgramação I
void maximizar() {

}
void minimizar() {

}
void mover() {

}
}
Para criar um novo objeto, usamos o comando new.

Quando este comando é executado, a primeira coisa que o


compilador faz após encontrar a classe é procurar o seu
construtor. Se houver, ele é executado.

Construtores
No exemplo da classe Janela, um novo objeto é criado na
posição X = 100, Y=100, com altura e largura igual a 50, do tipo
“formulário”. Ou seja, todo objeto que for criado desta classe terá
inicialmente estes valores. E este é o objetivo do construtor.

Slide 26 | Porgramação I
//construtor
Janela(){
posicaoX = 100;
posicaoY = 100;
largura = 50;
altura = 50;
tipo = "Formulario";
}
Não é uma boa prática criar objetos e deixar suas variáveis de
instâncias sem serem inicializadas. Aliás, também não é uma boa
prática deixar qualquer variável sem um valor inicial.

Construtores
Janela janelaPrincipal = new Janela();

Slide 27 | Porgramação I
Portanto, janelaPrincipal terá os valores definidos conforme o
construtor foi criado.
Toda vez que uma janela é criada no Windows por exemplo, ela
receberá uma posição na tela por padrão, uma altura, uma
largura, tipo etc.

O construtor é um método especial que é executado quando um

Construtores
objeto é criado e serve principalmente para inserir valores nas
variáveis de instância da classe. Tenha o hábito de sempre criar
pelo menos um construtor para suas classes

Slide 28 | Porgramação I
As declarações de construtores se parecem com declarações de
métodos, exceto que eles têm exatamente o mesmo nome da
classe e não possuem tipos de retorno. Veja novamente a classe
Janela:
public class Janela {

//atributos

Construtores
int posicaoX;
int posicaoY;
int largura;
int altura;
String tipo;
// outros atributos

//constutor
Janela(){

Slide 29 | Porgramação I
posicaoX = 100;
posicaoY = 100;
largura = 50;
altura = 50;
tipo = "Formulario";
}
//métodos
void maximizar() { }
void minimizar() { }
void mover() { }
}
Mãos na massa!

Crie construtores personalizados para as classes Pessoa e Carro


que você criou anteriormente.

Exercícios

Slide 30 | Porgramação I
Designed by Luiz Francisco
“Encapsulamento é o processo de esconder todos os
detalhes de um objeto que não contribuem para suas
características essenciais.” – Grady Booch

Encapsulamento

Slide 31 | Porgramação I
Encapsulamento

Slide 32 | Porgramação I
Imagine um ciclista durante uma prova.

Encapsulamento
Você acha que ele precisa saber o que ocorre
com os mecanismos, catracas, engrenagens da
bicicleta para que a marcha seja mudada?

Slide 33 | Porgramação I
Imagine um ciclista durante uma prova.

Encapsulamento
Você acha que ele precisa saber o que ocorre
com os mecanismos, catracas, engrenagens da
bicicleta para que a marcha seja mudada?

Não! Ele quer acionar o comando na bicicleta e ter a

Slide 34 | Porgramação I
marcha mudada!
Outro exemplo:

Encapsulamento
considere uma Conta Bancária como uma
classe. Quando você vai realizar uma operação
(um saque, depósito) você não precisa, e nem
quer saber, quais são os detalhes internos que
ocorrem no banco, só quer realizar as

Slide 35 | Porgramação I
operações adequadamente. Logo, os
processos são ocultos e encapsulados em um
nome: uma Conta, uma Bicicleta etc.
Alguns benefícios do encapsulamento:

• Restringir acesso ao funcionamento interno da classe;

Encapsulamento
• Permitir mudanças internas sem afetar as interfaces
externas;

• Facilidade de manutenção.

Slide 36 | Porgramação I
O usuário não precisa saber quais são as variáveis
de instância de uma classe, basta saber quais são
os métodos que ela possui e quais deles estão

Encapsulamento
disponíveis para uso.

Temos então o conceito de interface. Uma


interface lista os serviços fornecidos por um

Slide 37 | Porgramação I
componente.
No caso da Bicicleta, teríamos como serviços os
métodos parar, acelerar, virar, mudarAMarcha. No caso
da Janela, maximizar, mover, minimizar. Ou seja,

Encapsulamento
basicamente quem compõe a interface de uma classe
são seus métodos públicos.

E isso nos leva a outro conceito: os modifcadores de


acesso

Slide 38 | Porgramação I
Modificadores de Acesso são responsáveis por
restringir o acesso a atributos, métodos e até

Modificadores de acesso
mesmo classes.

Modificador público

Slide 39 | Porgramação I
public static void main(String[] args) {

Carro gol = new Carro();


}
São eles:

Modificadores de acesso
•public: Pode ser acessado por qualquer classe.

•private: Pode ser acessado somente pela própria classe.

•protected: Pode ser acessado pela própria classe e pelas


classes-filhas (Veremos exemplos mais adiante).

Slide 40 | Porgramação I
É comum e recomendável que os campos de
uma classe sejam private. Isso signifca que eles
somente podem ser acessados diretamente por

Encapsulamento
sua classe.

Porém, é necessário acessar esses campos e


seus valores. Isso pode ser feito indiretamente

Slide 41 | Porgramação I
por meio de métodos públicos que obtém o
valor para nós.
public class Janela {

//Atributos

private int posicaoX;


private int posicaoY;
private int largura;

Encapsulamento
private int altura;
private String tipo;

//outros atributos

//Construtor
Janela(){
posicaoX = 100;
posicaoY = 100;
largura = 50;

Slide 42 | Porgramação I
altura = 50;
tipo = ”Formulario”;
}

// Métodos
public void maximizar(){

//...
}
}
Mão na massa!

Modificadores de acesso
Crie uma classe Ponto, com a capacidade de armazenar a
localização de ponto no plano cartesiano, de modo que ela
possua três construtores:
•Sem parâmetros, que cria um ponto nas coordenadas
(0,0)
•Dois parâmetros de coordenadas X e Y
•Inicializa o ponto através das coordenadas de

Slide 43 | Porgramação I
um outro ponto recebido como parâmetro.

Designed by Luiz Francisco


Mão na massa!

Modificadores de acesso
Implemente uma classe Pessoa que possua como atributos
nome, idade, peso (em quilogramas) e altura (em metros).
Faça com que os dados sejam inicializados através do
construtor da classe. Adicione métodos para ler e alterar
cada um dos atributos em separado, mantendo o
encapsulamento.
Atenção: Validar os dados (idade, peso e altura positivos,

Slide 44 | Porgramação I
etc).

Designed by Luiz Francisco


Mão na massa!

Modificadores de acesso
Crie a classe Carro e adicione a estes os seus principais
atributos e métodos.
Lembre-se de adicionar métodos para ligar, desligar, acelerar
e frear.
Atenção: Este objeto deve ter métodos para mostrar quando
o mesmo está ligado ou desligado, isto também pode ser
feito na própria ação de ligar e desligar.

Slide 45 | Porgramação I
Designed by Luiz Francisco
Mão na massa!

Modificadores de acesso
Altere a classe Pessoa para que o objeto possua um Carro.
Faça com que a pessoa consiga ligar, desligar, acelerar ou
frear o próprio carro.
Atenção: Lembre-se de manter as regras de
encapsulamento.

Slide 46 | Porgramação I
Designed by Luiz Francisco

Você também pode gostar