Você está na página 1de 23

Classes e objetos

Profª. Amália Vasconcelos


Q amalia@cefetmg.br

Disciplina: Programação de Computadores II

Graduação em Engenharia de Materiais


Centro Federal de Educação Tecnológica de Minas Gerais

Belo Horizonte, 2º semestre de 2021

Aula 3 - Classes e objetos 1/ 23


Sumário

1 Introdução
2 Nı́veis de acesso
3 Sintaxe de classe, objeto, atributo e método
4 Tipos de métodos

Aula 3 - Classes e objetos 2/ 23


Introdução

Objeto: é uma coisa (fatura, bola, documento). Um objeto é uma


instância de uma classe;

Atributo: informação de estado para o qual cada objeto de uma classe


tem seu próprio valor. Armazena o estado de um objeto (atributo de
instância) ou o estado de uma classe (atributo de classe);

Método: procedimento que determina como o objeto se comporta.


Utilizando métodos é possı́vel manipular os dados contidos no objeto;
Mensagem: chamada de um método, forma com que os objetos se
relacionam entre si. Possui os seguintes componentes:
receptor: objeto que irá receber a mensagem.
método: método do receptor que será utilizado.
argumentos: informação adicional para a execução do método.

Aula 3 - Classes e objetos 3/ 23


Introdução

Classe: agrupamento de objetos. É similar a um TAD no sentido em


que ela define uma estrutura interna e um conjunto de operações que
todos os objetos que são instâncias daquela classe irão possuir;

Pacote: em Java, classes são organizadas em pacotes. Utilizando a


palavra reservada package, definimos a qual pacote elas pertencem;
A palavra reservada import é utilizada para importar recursos de um
pacote;

É muito importante manter a ordem package → import → class dentro


do código.

Aula 3 - Classes e objetos 4/ 23


Nı́veis de acesso

Os nı́veis de acesso tı́pico em linguagens OO são:


public: classe, atributos ou métodos visı́veis em qualquer parte,
acesso irrestrito (público);

private: classe, atributos ou métodos visı́veis somente para quem os


declarou, acesso totalmente restrito (privado);

protected: classe, atributos ou métodos visı́veis para quem o declarou


e para módulos derivados deste (protegido).

Visibilidade public protected default private


Própria classe Ë Ë Ë Ë
Mesmo pacote Ë Ë Ë é
Classe filha em pacote diferente Ë Ë é é
Classe em pacote diferente Ë é é é

Aula 3 - Classes e objetos 5/ 23


Classe

A sintaxe para criar uma classe é:

[nı́velAcesso] class NomeDaClasse {


//Atributos e métodos
}

Exemplo:

public class Conta {


private String nome; // variável de instância
private double saldo; // variável de instância
.
.
. // demais variáveis e métodos
} // fim da classe Conta

Os métodos de uma classe sempre têm acesso a todos os seus ele-


mentos, independentemente da visibilidade.

Aula 3 - Classes e objetos 6/ 23


Objeto

Criação de objetos:

NomeClasse nomeObjeto = new NomeClasse();


/*
1) O operador new é responsável por criar um objeto
2) NomeClasse() é o construtor da classe NomeClasse
3) nomeObjeto é uma variável do tipo NomeClasse
*/

O comando new, também conhecido como operador de criação, cria


um novo objeto, alocando memória para o objeto e inicializando essa
memória para valores default;

Uma vez construı́do, o objeto deve ser atribuı́do a uma variável, para
que possa ser utilizado e referenciado no futuro.

Aula 3 - Classes e objetos 7/ 23


Objeto

Exemplos:

public static void main(String[] args) {


// Cria um objeto Conta
Conta minhaConta;
}
minhaConta = null?

public static void main(String[] args) {


// Cria um objeto Conta e o atribui à minhaConta
Conta minhaConta = new Conta();
} Responsável por criar
Atribui à variável minhaConta um objeto do tipo
a referência criada Conta em memória
para o novo objeto

Aula 3 - Classes e objetos 8/ 23


Atributo
A sintaxe de declaração de um atributo é:

[nı́velAcesso] tipoAtributo nomeAtributo;

Exemplos:

public class Aluno {


public String nome; //nome: público
private String cpf; //cpf: privado
protected short idade; //idade: protegido
char sexo; //sexo: default
} // fim da classe Aluno

Por padrão, os atributos de uma classe não devem ter acesso público.
Alteração indevida;
Acoplamento;
Encapsulamento das regras do negócio.
Aula 3 - Classes e objetos 9/ 23
Método

A assinatura de um método é criada da seguinte forma:

[nı́velAcesso] [palavras-Chave] tipoRetorno nomeMétodo ([Lista de


Parâmetros]) {
//Corpo do Método
}

Todo método deve ser declarado dentro de uma classe;


Por padrão, um método deve ter acesso público;
Os métodos podem ser construtores, destrutores, modificadores,
acessores além de outros métodos.

Aula 3 - Classes e objetos 10/ 23


Método
Exemplos:
// método para depositar quantia se for válida
public void depositar(double quantia) {
if (quantia > 0.0) // se a quantia for válida
saldo = saldo + quantia; // adiciona ao saldo
}

// método para sacar valor se tiver saldo


public void sacar(double valor) {
if(saldo >= valor){ // se tiver saldo
saldo -= valor; // faz o saque
saques++; // contador de saques
System.out.println("Valor sacado: " + valor + "\n");
System.out.println("Saldo atual: " + saldo + "\n");
} else {
System.out.println("Saldo insuficiente \n");
}
}
Aula 3 - Classes e objetos 11/ 23
Métodos construtores

Os métodos construtores são métodos especiais responsáveis pela


implementação de ações necessárias para criar um objeto;

Nunca têm retorno e, em geral, são públicos;

O Java requer uma chamada de construtor para todo objeto que é


criado. O construtor deve ter o mesmo nome que a classe;

Quando um objeto de uma classe é criado, suas variáveis de instância


são inicializadas por padrão;

O compilador fornece um construtor padrão sem parâmetros em qual-


quer classe que não inclui explicitamente um construtor. Mas, se você
declarar qualquer construtor para uma classe, o compilador Java não
criará um construtor padrão para essa classe.

Aula 3 - Classes e objetos 12/ 23


Métodos construtores

Exemplo:
Data
-dia: int
-mes: int
Data dataUm = new Data(); -ano: int
+dataValida(): boolean
+anoBissexto(): boolean
A palavra-chave new solicita memória do sistema para armazenar
o objeto dataUm e então chama o construtor da classe Data para
inicializar o objeto.

Aula 3 - Classes e objetos 13/ 23


Métodos construtores
O construtor padrão pode ser inseguro ou inapropriado;

Implementa-se um construtor para ter certeza de que a regra definida


para a classe é seguida:

public class Data {


private int dia;
private int mes;
private int ano;

public Data() {
this.dia = 18;
this.mes = 02;
this.ano = 2021;
}
}// fim class Data

Aula 3 - Classes e objetos 14/ 23


Métodos construtores

Uma classe pode ter vários construtores, variando-se a quantidade ou


tipos de parâmetros:

public Data() {
this.dia = 18;
this.mes = 02;
this.ano = 2021;
}

public Data (int d, int m, int a) {


this.dia = d;
this.mes = m;
this.ano = a;
}

Aula 3 - Classes e objetos 15/ 23


Métodos construtores

Cuidado: se você criar um construtor para a classe, o compilador


não irá criar um construtor padrão.

public Data (int d, int m, int a) {


this.dia = d;
this.mes = m;
this.ano = a;
}
.
.
.
public static void main(String[] args) {
Data dataNascimento = new Data(); Erro!
} Required: int,int,int

Aula 3 - Classes e objetos 16/ 23


Métodos construtores
A existência de múltiplos construtores pode levar a inconsistências ou
a código duplicado. Um artifı́cio comum é criar um método privado
que é usado por todos os construtores:

private void Init(int d, int m, int a) {


this.dia = d;
this.mes = m;
this.ano = a;
}
public Data() {
Init(18, 02, 2021);
}
public Data(int d, int m, int a) {
Init(d, m, a);
}

Uma mudança na regra de inicialização tem impacto apenas no método


Init.
Aula 3 - Classes e objetos 17/ 23
Métodos destrutores

Métodos especiais invocados quando um objeto é finalizado;


Assinatura:

protected void finalize(){


// Corpo do método
}

Objetivo principal: liberação de recursos usados pelo objeto;

Algumas linguagens OO possuem um ”coletor de lixo” (garbage col-


lector ) que chama o método finalize;

A JVM executa coleta de lixo automática para recuperar a memória


ocupada por objetos que não são mais usados;

Aula 3 - Classes e objetos 18/ 23


Métodos destrutores

Quando não há mais referências a um objeto, o objeto é marcado


para coleta de lixo. A coleta pode ser esporádica ou até mesmo não
acontecer durante a execução de um programa;

Assim, vazamentos de memória que são comuns em outras linguagens


como C e C++ são menos prováveis em Java;

Vazamentos de recursos além de vazamentos de memória também


podem ocorrer. Por exemplo, um aplicativo pode abrir um arquivo
no disco para modificar seu conteúdo. Se o aplicativo não fechar o
arquivo, ele deve terminar antes que qualquer outro aplicativo possa
usar o arquivo;

É possı́vel sugerir a execução do coletor de lixo chamando o método


System.gc().

Aula 3 - Classes e objetos 19/ 23


Métodos modificadores

Comumente chamados métodos set, são aqueles que geralmente mu-


dam o estado de um objeto, i.e., modificam os valores das variáveis
de instância;

Se os atributos devem ser privados, como atribuir valor a eles?


Métodos set: servem para atribuir um valor a um atributo privado;

Normalmente métodos set têm um tipo de retorno void e usam o tra-


tamento de exceção para indicar tentativas de atribuir dados inválidos.
Exemplo:

// método para definir o nome no objeto


public void setNome(String nome) {
this.nome = nome; // armazena o nome
}

Aula 3 - Classes e objetos 20/ 23


Métodos acessores

Comumente chamados métodos get ou métodos de consulta, são


aqueles que permitem a recuperação dos dados de um objeto;

Se os atributos devem ser privados, como ler seus valores?


Métodos get: servem para acessar o valor de um atributo privado;

Podem controlar o formato dos dados que ele retorna e, assim, proteger
o código.
Exemplo:

// método para recuperar o nome do objeto


public String getNome() {
return nome; // retorna valor do nome para o chamador
}

Aula 3 - Classes e objetos 21/ 23


Aula 3 - Classes e objetos 22/ 23
Referências

DEITEL, H. M.; DEITEL, P. J. Java: como programar. 10. ed.


São Paulo, SP: Pearson Education do Brasil, 2017. xxxiv, 934 p.
(para mais informações leia os capı́tulos 2, 3, 6 e 8).

Aula 3 - Classes e objetos 23/ 23

Você também pode gostar