Escolar Documentos
Profissional Documentos
Cultura Documentos
ORIENTADA A
OBJETOS
Classes e objetos
Rafael Leal Martins
OBJETIVOS DE APRENDIZAGEM
Introdução
A programação orientada a objetos é um dos principais paradigmas de pro-
gramação usados atualmente. A linguagem Java é uma das mais populares
linguagens orientadas a objetos. Segundo Deitel e Deitel (2010), os programas
orientados a objetos costumam ser mais fáceis de entender, corrigir e modificar.
Neste capítulo, você vai conhecer os fundamentos da programação orien-
tada a objetos. Além disso, vai ver como criar classes e objetos na linguagem
Java e como declarar atributos e métodos para uma classe. Por fim, vai aplicar
na prática dois conceitos primordiais da orientação a objetos: abstração e
encapsulamento.
Abstração
Os objetos do mundo real são complexos, com uma infinidade de caracterís-
ticas, ações e comportamentos. Seria inviável, ou até impossível, representar
todas essas informações dentro de um sistema de software.
A abstração consiste em criar um modelo do objeto do mundo real dentro
do software, e apenas as características, os comportamentos e as ações do
objeto que são relevantes para o sistema desenvolvido são consideradas.
O restante das informações do objeto é simplesmente ignorado.
Encapsulamento
Na programação orientada a objetos, o encapsulamento é uma forma de
vincular o código e os dados que esse código trata, e isso mantém os dois
seguros contra a interferência e a má utilização externa (SCHILDT, 2015).
Em uma linguagem orientada a objetos, os dados e as operações que podem
ser realizadas sobre eles podem ser vinculados de tal forma que se cria um
sistema tipo “caixa preta”. Quando as instruções do programa e os dados são
vinculados dessa forma, cria-se um objeto. O conceito de objeto é o que dá
então suporte ao encapsulamento. Em um objeto, o código (métodos) e os
dados (atributos) podem ser privados desse objeto ou públicos. Métodos ou
atributos privados só são acessíveis dentro do próprio objeto, ou seja, o código
ou os dados privados não podem ser acessados por uma parte do programa
que esteja fora da estrutura do objeto. Quando os atributos e métodos são
públicos, outras partes do programa podem acessá-los. Normalmente, as
partes públicas de um objeto são usadas para fornecer uma interface de
acesso para os seus elementos privados.
CPF;
nome completo;
telefone;
idade;
altura;
peso.
class Cliente {
String cpf;
String nome;
String telefone;
int idade;
double altura;
double peso;
}
Classes e objetos 5
NomeClasse nomeObjeto = new NomeClasse();
nomeObjeto.nomeAtributo
class AppCliente {
public static void main(String[] args) {
Cliente novoCliente = new Cliente();
novoCliente.cpf = "999.888.777-66";
novoCliente.nome = "Fulano de Tal";
novoCliente.telefone = "(62)9999-8888";
novoCliente.idade = 34;
novoCliente.altura = 1.72;
novoCliente.peso = 85.3;
6 Classes e objetos
System.out.println("Nome do Cliente: " + novoCliente.
nome);
double imc = novoCliente.peso / (novoCliente.al-
tura * novoCliente.altura);
System.out.println("IMC: " + imc);
}
}
tipoRetornado nomeMetodo(listaParametros) {
instruções
...
return valor;
}
Exemplos
Vamos criar dois métodos para a classe Cliente definida anteriormente.
Criaremos um método denominado calcularIMC, que retorna o valor do IMC
de um objeto cliente a partir dos valores dos seus atributos peso e altura.
Também vamos criar um método denominado calcularPesoDesejado,
que retorna a diferença do peso atual do cliente para o peso que ele deseja
alcançar. Por fim, vamos criar o método imprimirDados, que imprime na
tela do console os dados do cliente. O código Java para esses métodos é
mostrado a seguir:
class Cliente {
String cpf;
String nome;
String telefone;
int idade;
double altura;
double peso;
double calcularIMC() {
double imc = peso / (altura * altura);
return imc;
}
double calcularPesoDesejado(double metaPeso) {
if (peso > metaPeso) return peso - metaPeso;
else return metaPeso - peso;
}
8 Classes e objetos
void imprimirDados() {
System.out.println(
"CPF=" + cpf + ", Nome=" + nome +
", Telefone=" + telefone + ", Idade=" + idade +
", Altura=" + altura + "m" + ", Peso=" + peso + "Kg");
}
}
class AppCliente {
public static void main(String[] args) {
Cliente novoCliente = new Cliente();
novoCliente.cpf = "999.888.777-66";
novoCliente.nome = "Fulano de Tal";
novoCliente.telefone = "(62)9999-8888";
novoCliente.idade = 34;
novoCliente.altura = 1.72;
novoCliente.peso = 85.3;
Classes e objetos 9
novoCliente.imprimirDados();
System.out.println("IMC: " + novoCliente.calcularIMC());
double dif = novoCliente.calcularPesoDesejado(70.0);
System.out.println("Você está a " + dif + "Kg da su
a meta!");
}
}
Modificadores de acesso
O controle de acesso a atributos e métodos é obtido com o uso de três modi-
ficadores de acesso: public, private e protected. Se nenhum modificador
de acesso for usado, será presumido o uso da configuração de acesso padrão.
10 Classes e objetos
Exemplo
Vamos implementar a classe DeDentro, que tem atributos declarados como
public, private, protected e sem modificador (ou seja, acesso padrão).
Essa classe está inserida em um pacote chamado meupacote. O arquivo
dessa classe (DeDentro.java) deve estar inserido dentro de uma subpasta
com o nome meupacote, para que o código funcione corretamente. Dentro
desse pacote (subpasta), criaremos uma outra classe, denominada DoPacote,
que tentará acessar os atributos da classe DeDentro. Também vamos criar
uma terceira classe chamada de DeFora, que ficará de fora do pacote meupa-
cote (ou seja, dentro do pacote padrão de Java). Os arquivos estão organizados
como mostra a figura a seguir.
Classes e objetos 11
package meupacote;
public class DeDentro {
public int A;
private double B;
protected char C;
String D; //Acesso padrão
public void atribuirValores() {
A = 1;
B = 2.0;
C = '3';
D = "4.0";
}
public void imprimirAtributos() {
System.out.println("A: " + A);
System.out.println("B: " + B);
System.out.println("C: " + C);
System.out.println("D: " + D);
}
}
package meupacote;
public class DoPacote {
public static void main(String[] args) {
DeDentro objeto = new DeDentro();
objeto.A = 10; //OK: o atributo A foi declarado como public
//objeto.B = 7.0; //ERRO: o atributo B foi declarado como private
objeto.C = 'R'; //OK: o atributo C foi declarado como protected
objeto.D = "Teste de acesso"; //OK: o atributo D tem acesso padrão
objeto.atribuirValores();
objeto.imprimirAtributos();
}
}
import meupacote.DeDentro;
public class DeFora {
public static void main(String[] args) {
DeDentro objeto = new DeDentro();
objeto.A = 10; //OK: o atributo A foi declarado como public
//objeto.B = 7.0; //ERRO: o atributo B foi declarado como private
Classes e objetos 13
//objeto.C = 'R'; //ERRO: o atributo C foi declarado como protected
//objeto.D = "Teste de acesso"; //ERRO: o atributo D tem acesso padrão
objeto.atribuirValores();
objeto.imprimirAtributos();
}
}
Referências
DEITEL, P.; DEITEL, H. Java: como programar. 8. ed. São Paulo: Prentice-Hall, 2010.
SCHILDT, H. Java para iniciantes: crie, compile e execute programas Java rapidamente.
6. ed. Porto Alegre: Bookman, 2015.
THE JAVA tutorials. Oracle, c2021. Disponível em: https://docs.oracle.com/javase/
tutorial/essential/. Acesso em: 18 ago. 2021.