0% acharam este documento útil (0 voto)
7 visualizações29 páginas

Guião AULAS - POO - Java

O documento aborda conceitos fundamentais da Programação Orientada a Objetos (POO) em Java, incluindo definição de objetos, classes, atributos, métodos, encapsulamento, herança e polimorfismo. Ele detalha a estrutura de classes e métodos, além de exemplificar a declaração de classes e construtores. O texto também discute tipos de dados, incluindo tipos primitivos e de referência, e a importância da reutilização de código.

Enviado por

leonardo inverno
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações29 páginas

Guião AULAS - POO - Java

O documento aborda conceitos fundamentais da Programação Orientada a Objetos (POO) em Java, incluindo definição de objetos, classes, atributos, métodos, encapsulamento, herança e polimorfismo. Ele detalha a estrutura de classes e métodos, além de exemplificar a declaração de classes e construtores. O texto também discute tipos de dados, incluindo tipos primitivos e de referência, e a importância da reutilização de código.

Enviado por

leonardo inverno
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 29

Programação em Java

- PROGRAMAÇÃO ORIENTADA A OBJETOS -

Objetivos da aula
● Definição de Objeto
● Tipos de Métodos
● Métodos Construtores
● Encapsulamento
○ Criação dos métodos “getes”, “setes” e toStrings no Eclipse
○ Definição e implementação da Programação Orientada por Objetos
● Garbage Collection
● Herança, sobrescrita, sobreposição e Polimorfismo.

Conceito de Classe, Atributos, Métodos, e Eventos


Conceito de Objecto
Conceito de Encapsulamento
Conceito de Visibilidade de Classes, Métodos e Atributos
Diagramas de Classe.

1 de 29
Programação em Java

(Revisões)

Os tipos dados de referência


 Arrays
 Classes
 Interfaces

Tipos de dados

Um tipo de dados é um conjunto de valores relacionados por um conjunto de operações.

 Há duas espécies de tipos de dados:


 Tipos valor ou atómicos guardam valores atómicos que são valores que não se
podem decompor.
 Tipos primitivos - int, float, double, char, boolean .. int x; double z;
 Tipos enumerado
o enum Dias{ Dom, Seg, Ter, Qua, Qui, Sex, Sab}
o Dias d=Dias.Seg;

 Tipos referência não guardam valores, guardam um endereço de memória no qual


se encontra um objecto.
o Classes
o Arrays
o Interfaces

2 de 29
Programação em Java

Tipos de dados Referência em Java

Objeto
O que é um objecto?

Objecto

são “Coisas” que temos no mundo real e abstraímos no mundo virtual para que seja
possível manipulá-las sem qualquer dificuldade na resolução de problemas.

Os objetos possuem estados e comportamentos que na programação estruturada, são


equivalentes aos dados e subprogramas e, na programação orientada aos objetos (POO), são
equivalentes aos atributos e métodos, como podemos ver na tabela1.

Objetos estados comportamentos


Programação estruturada Dados Subprogramas (funções e
São  procedimentos)
Programação Orientada a Atributos Métodos
objectos são 
Tabela1 – Nome designados na PE e POO.

3 de 29
Programação em Java

Também podemos dizer que,

um objecto:

 é uma instancia de uma classe, ou seja, é uma concretização da estrutura definida


numa classe. Todos os objectos são oriundos de classes, são instâncias de classes.
 é uma estrutura de dados constituída por: Atributos e Métodos.

a) Atributos são variáveis ou campos existentes na classe de origem do objecto que


pode receber e devolver valores;

b) Métodos – são as funções, acções de execução que fazem parte da classe origem do
objecto. As funções são conjunto de instruções que tem como objectivo realizar actividades
que podem devolver valores ou não.

Exemplos de objectos com os respectivos Atributos e Métodos.


Objeto Atributos Métodos
Pessoa Nome. idade, género Falar, correr
Carro Matrícula, cor, cilindrada Acelerar, travar
Cão Nome, raça, género Correr, ladrar
Tabela 2- Exemplos de atributos e métodos

Todos os objectos são provenientes de classes, ou seja, são instâncias das classes.

4 de 29
Programação em Java

Classes
No decorrer das aulas o conceito de classe já abordado diversas vezes, mas chegou o
momento de clarifica-lo.

O QUE É UMA CLASSE?

Classe

 é um tipo de dados definido pelo programador, que é referenciado.

 é uma estrutura de dados (de tipo referência definida pelo programador ou não)
constituído por:

Atributos e métodos (código) que permite a criação e utilização de


objectos (variáveis) com a mesma estrutura.

 É uma especificação para um determinado tipo de objecto.

Uma classe é uma especificação para um determinado tipo de objecto.

Para que um objecto seja de uma determinada classe, terá que obrigatoriamente, de respeitar
a especificação da classe.

5 de 29
Programação em Java

Exemplo de uma classe

Dada uma classe “Pessoa” constituída pelos atributos:

Nome
Idade
Género

Classe “Pessoa” – é a especificação para o tipo de objecto Pessoa1, Pessoa2,…, etc.

A Classe “Pessoa” é uma especificação para a criação e utilização para os tipos de objectos:
Pessoa1, Pessoa2,……, PessoaN…etc.

Exemplo de instâncias/ocorrências da classe “Pessoa”


Classe “Pessoa” Objecto “ Pessoa1” Objecto “ Pessoa2”
Atributo “Nome” Soraia José
Atributo “Idade” 25 45
Atributo “Genero” F M
Tabela 3- Exemplos de 2 instâncias da Classe “Pessoa”

Classe “Pessoa”
Atributos -> Nome Idade Genero
Objecto “Pessoa1” Soraia 25 F
Objecto “Pessoa2” José 45 M

Os objectos : Pessoa1 e Pessoa2 são instâncias da classe Pessoa, porque, respeitam a


especificação desta classe, ou seja, obedecem aos atributos (estados) e métodos(funções -
comportamentos) da classe Pessoa.

Cada objecto, isto é, cada instância da classe “Pessoa” terá um valor diferente para cada
um dos atributos definidos na especificação da classe.

6 de 29
Programação em Java

Em termos práticos, sempre que iniciamos um novo programa em


java, devemos pensar quais os atributos e métodos que a classe irá
conter, em resumo, quais as características de cada objeto.

Como declarar ou definir classes no programa?

Declaração ou Definição de Classes


Sintaxe geral:

class nomeDaClasse
{
Implementação da Classe
}

Na sintaxe acima apresentada, para declarar uma classe é necessário introduzir o


termo class, seguido do identificador da classe. Após identificado, na mesma linha ou, na linha
abaixo, coloca-se uma chaveta de abertura ({) e umas linhas abaixo, após o terminar o código
correspondente da classe, insere-se uma chaveta de fecho (}), que representa o encerrar da
classe.
Habitualmente a identificação da classe é iniciada com maiúscula, para serem
distinguidos dos objetos que começam com minúscula.
Cada classe deve ficar num ficheiro individual, cujo nome deverá obedecer à mais
simples regra de nomenclatura. O nome do ficheiro deverá ser igual ao nome da classe e sua
extensão deve ser obrigatoriamente .java. Actualmente com os novos editores IDE, que

7 de 29
Programação em Java

realizam muitas tarefas pelo programador, não é perceptível, mas quando um ficheiro .java é
compilado, é gerado um outro cujo o nome é igual ao nome da classe, mas extensão .class.
Uma classe (ou objeto) pode ser muito implementado, tornando-se um objeto com
várias características que pode ser facilmente manipulado e incorporado por outros objetos.
Isso é o que chamamos de reutilização de código, que envolve vários aspetos importantes da
orientação a objeto como herança, interface, enumeradores, sobrecarga de métodos, entre
outros.
Na declaração de uma classe, podemos definir determinadas características da
classe.
Palavra-Chave Descrição
public A classe é de acesso público
abstract Não podem ser criados objetos desta classe
final A classe não pode ter subclasses
class <nomeDaClasse> O nome da classe
extends A super classe da classe (a classe pai)
implements <Interfaces> Interfaces implementados pela classe
Tabela 2- Tabela retirada do Manual Java (pág.44)

Classes públicas
Declaração ou Definição de Classes públicas
Sintaxe geral:

public class <nomeDaClasse>


{
Implementação da classe
}

8 de 29
Programação em Java

Classes abstractas

Declaração ou Definição de Classes abstractas


Sintaxe geral:

abstract class <nomeDaClasse>


{
Implementação da classe
}

Estas classes servem de modelo para as classes mais comuns. Ao ser criada, a classe
abstrata, irá permitir que outras classes (subclasses) implementem os métodos criadas na
classe abstrata.

Classes finais

Declaração ou Definição de Classes finais


Sintaxe geral:

final class <nomeDaClasse>


{
Implementação da classe
}

9 de 29
Programação em Java

Métodos
Em construções de grandes softwares, são criadas em classes pequenas partes de
código, que são identificados como métodos. Os métodos são conhecidos
como funções, ações de execuções ou procedimentos, sendo responsáveis por ajudar no
design do sistema (separação por blocos), e na reutilização de software, podendo ser
aproveitados métodos já existentes para a construção de novos sistemas.

Os métodos podem ser vistos como funções ou procedimentos especializados numa


determinada tarefa ou objetivo.

Existem métodos de classe e de objeto (assunto a abordar posteriormente).

Os métodos podem receber dados para processar - parâmetros (int, String, boolean, etc.) - e
podem devolver um resultado de determinado tipo - retorno (int, String, boolean, etc.).

Exemplos:
System.out.println("Olá!"); //com um parâmetro...
System.out.println(); //...ou sem parâmetro
Math.random(); //sem parâmetro
Math.pow(a, b); //obrigatoriamente com dois parâmetros

10 de 29
Programação em Java

Vejamos o exemplo1
Temos uma classe executável com o nome “Conta” onde se declara os atributos e métodos e também a
seguir ao método main, é criado um objecto com o nome “conta” da classe “Conta”.

public class Conta {

private double saldo;

public void setSaldo(double saldo) {


this.saldo = saldo;
}

public Double getSaldo() {


return saldo;
}

public void depositar(double valor){


saldo += valor;
}

public void verificaSaldo(){


System.out.println("Valor do Saldo: "+getSaldo());
}
}

public static void main(String[] args) {

//INSTANCIA A CLASSE
Conta conta = new Conta();

//DEFINE UM VALOR DE SALDO


conta.setSaldo(633.00);

//DEFINE VALOR PARA DEPOSITAR


conta.depositar(555.00);

//CONSULTA VALOR
conta.verificaSaldo();
}

11 de 29
Programação em Java

Vejamos o exemplo2
Temos uma Classe Pessoa onde se declara os atributos dos objectos e os métodos dos objectos
desta classe.

a) Classe Pessoa onde se define ou declara os atributos dos objectos desta classe:
Class Pessoa {
//Atributos
String Nome;
int idade;
char genero;
}

b) Na mesma classe Pessoa, vamos definir quais os métodos dos objectos da classe Pessoa.

Class Pessoa {
//Métodos
Void falar();
System.out.println(“Blá, Blá,…..”);
}

Uma classe como como podemos ver anteriormente é um tipo de dados definido pelo
programador.

O atributo Nome é do tipo String. “String” é uma classe do pacote java.lang que é importado
automaticamente para o programa, como todas as classes deste pacote.

12 de 29
Programação em Java

Quando os atributos são do tipo:

Primitivo os seus nomes escreve-se com letra minúscula (int, double, float,…, etc);

Referência (array/vetor, classe e interface) os nomes destes escreve-se com letra


maiúscula(“String”, “Pessoa”, entre outros).

Tipos de estrutura de métodos

Podemos falar basicamente de 4 tipos de estruturas de métodos em Java:


● Métodos sem retorno e sem parâmetros;
● Métodos sem retorno e com parâmetros;
● Métodos com retorno e sem parâmetros;
● Métodos com retorno e com parâmetros;

Existe contudo ainda um método especial, o método construtor.

Um construtor é uma função, isto é, um bloco de código que é executado sempre que
utilizamos a palavra reservada new. Tem como objectivo criar um objecto (uma instância da
classe).

O construtor é a primeira função que vai ser executada quando um objeto é criado.
Por ex. BolaTenis bola = new BolaTenis();

Nome da Classe Objeto Construtor com nome BolaTenis

Então, é aqui que se vão fazer as inicializações das variáveis de instancia e se vão executar
todos os métodos que é necessário correr quando se cria um objeto.

13 de 29
Programação em Java

Um construtor é o método onde tem as instruções que serão executadas SEMPRE que for
instanciado um objeto desta classe.

Os construtores são os responsáveis por criar o objeto em memória, ou seja, instanciar a


classe que foi definida. Em Java apenas as Interfaces não possuem construtores.

Características de um construtor:
● Não tem retorno.
● Não é obrigatório, uma classe possuir um construtor, mas pode ter mais do que um.
● Tem de ter o mesmo nome da classe.

Sintaxe Geral de um Construtor ou o construtor tem sempre a seguinte assinatura:

[modificador de acesso]+<nome da classe> + <(parâmetros ou sem parâmetros)>


{
//Corpo;
}

Explicação da sintaxe,

[modificadores de acesso] - Os modificadores de acesso de um construtor pode ser: public, private ou


protected e é opcional.

<nome da classe> - o nome do construtor é igual ao nome da classe e é obrigatório.

<(parâmetros ou sem parâmetros)> - pode ter parâmetros ou não.

14 de 29
Programação em Java

Exemplos da declaração de uma classe com construtores

Vejamos o exemplo1 da declaração de uma classe com um construtor:

public class Stack{


public Stack(){
items = new Vector(10);
}
}

(fonte: manual de java, pág. 44)

Uma classe tem sempre um construtor, se ele não aparece, é considerado implícito ou
invisível.

Vejamos o exemplo2 da declaração de uma classe com dois construtores:

public Class Pessoa {

//Construtores

public Pessoa(){/*Construtor implícito ou invisível, sem parâmetros e com corpo


vazio */
}

public Pessoa(String nome, int idade, char genero) {//Construtor com 2 par.
this.nome = nome;
this.idade = idade;
this.genero = genero;
}

(fonte: Curso Prático de Java, pág. 21)

15 de 29
Programação em Java

Métodos sem retorno e sem parâmetros

Este tipo de métodos não devolvem qualquer valor e não recebem qualquer valor para
ser processado. Tipo de retorno
Nome do método
Modificador de uso

public void somar( ){


int x = 5;
int y = 10; Sem parâmetros
int soma = x + y;
System.out.println(“O resultado da soma é: “+soma);
}

Modificador de uso ou de acesso define a acessibilidade da classe ou método

Métodos sem retorno e com parâmetros

Neste tipo de métodos, também não é devolvido qualquer valor, no entanto recebe um
ou mais valores de entrada para ser processado.

Modificador de uso Tipo de retorno Nome do método

public void somar(int x, int y ){ parâmetros


int soma = x + y;
System.out.println(“O resultado da soma é: “+soma);
}

16 de 29
Programação em Java

Métodos com retorno e sem parâmetros

Neste tipo de métodos, é devolvido um valor, mas não recebem valor para ser
processado. O tipo de dados a devolver tem que ser do mesmo tipo de dados do
método.

Modificador de uso Tipo de retorno Nome do método

public int iniciar( ){


sem parâmetros
int soma = somar();

return soma;
}

Métodos com retorno e com parâmetros

Neste tipo de métodos é devolvido valor, e recebe um ou mais valores de entrada para
ser processado.

Modificador de uso Tipo de retorno Nome do método

public String somar(int x, int y ){


int soma = x + y; com parâmetros
return “O resultado da soma é: “+soma; }

17 de 29
Programação em Java

ATIVIDADE 1
1. Realizar um programa que realize um sorteio de números de 1 a 4, de modo a saber
que prémio o concorrente ganhou.
a. Iremos criar uma classe Premio, que no seu construtor que indica os 4 prémios a
atribuir e em que posição são guardados no array. Deve existir um método que
faça gerar aleatoriamente os 4 números, e conforme o número sorteado, assim
será indicada a posição do array, de modo a sabermos qual o prémio atribuído.
b. A classe principal irá apresentar o output final, anunciando o prémio ganho

Resolução da Actividade1

/*1. Criar uma classe Premio


2. Criar um construtor Premio() que indique os 4 prémios a atribuir e em que posição são
guardados no array.
3. Criar um método que faça gerar aleatoriamente os 4 números, e conforme o número
sorteado, assim será indicada a posição do array, de modo a sabermos qual o prémio
atribuído.
4. Criar uma classe principal (método main()) que irá apresentar o output final, anunciando o
prémio ganho.
*/

18 de 29
Programação em Java

package Actividade1;
import java.util.Random;
public class Premio {
//Declaração de atributos e métodos de cada objecto desta classe.
/*Vamos declarar e criar um Array de 4 posições com o nome premios*/
String [ ] premios = new String[4];
Premio() { //Método Construtor - que inicializa o nosso array com valores/prémios

this.premios[0] = "SmartTV";
this.premios[1] = "SmartPhone";
this.premios[2] = "Ferro com Caldeira";
this.premios[3] = "Tablet";
}

//Criar um método que realiza o sorteio aleatório


public String gerarPremio() {
Random valor = new Random();
int posicao = valor.nextInt(4);/*Obrigar a que os números gerados não sejam superiores a 4*/
return premios[posicao]; //Devolve o prémio atribuído
} }

// Classe principal com o nome “AtribuiPremio “ que irá apresentar o output final,
anunciando o prémio ganho.

package Actividade1;
public class AtribuiPremio {
public static void main(String[] args) {
//Vamos criar um objeto sorteio da classe Premio
Premio sorteio = new Premio();
System.out.println("O resultado do sorteio é: "+sorteio.gerarPremio()); }
}

19 de 29
Programação em Java

ENCAPSULAMENTO

O que são e para que servem os métodos set e get?

Não são mais do que qualquer outro método que se utiliza em Java, que permitem
sobretudo recolher informação das variáveis da classe que estão definidas como private, no
entanto, os métodos são definidos como public. Daí surge uma pergunta natural: porquê de
criar métodos para aceder a variáveis, se podemos aceder a elas diretamente? Simples:
questão de segurança.
Os getters e setteres são responsáveis por fornecer meios para aceder ao estado de um
objeto, isto é, meios para obter e modificar os valores dos atributos de um objeto. Este tipo
especial de métodos apenas é criado se for realmente necessário, ou seja, não se dará acesso
aos atributos que não interessam a outros objetos mas, interessam apenas ao próprio objeto.
Getters - método que retorna/obtém o valor do atributo e é, na maioria dos casos,
composto pela palavra get[nome do atributo]. Por exemplo, getIdade(), getSalario(). Quando
o método retorna um valor do tipo boolean, a convenção passa a ser is[nome do atributo].
Settters – método que atribui/modifica o valor de um atributo e é sempre composto pela
palavra set[nome do atributo] e o parâmetro do mesmo tipo do atributo. Por exemplo,
setIdade (int idade), setSalario(double salario).

A esta situação é denominada de ENCAPSULAMENTO, referindo-se à integridade dos tipos


de dados, não permitindo aos programadores acesso a campos de forma inapropriada.

20 de 29
Programação em Java

Vantagens do Encapsulamento

MODULARIDADE – agregando dados (variáveis) e comportamentos (métodos) numa única


entidade – as classes.
PROTEÇÃO DE DADOS – garantindo a sua consistência e segurança.

O encapsulamento consiste na capacidade que o objeto tem de ocultar os seus dados


(propriedades) dos restantes objetos. É a capacidade que a classe tem em impedir que objetos
acedam diretamente as suas propriedades.
Encapsulam-se as propriedades de uma classe para impedir que haja inserção direta de
valores nas propriedades, pois uma boa prática de programação consiste em validar e, se
necessário, formatar os dados antes de atribuí-los a uma variável. A atribuição de valores às
propriedades é efetuada através de métodos adicionais designados por assessores ou
Getter/Setter. Utiliza-se dois métodos por propriedade, um para ler(Get) e outro para escrever
(Set).
O getter, sendo o método que lê a propriedade, não pode ter parâmetros e tem de
devolver um valor, usualmente do mesmo tipo de dado que a propriedade que acede. O setter
sendo o método que escreve na propriedade, tem de ter parâmetro, usualmente do mesmo tipo
de dados do que a propriedade e normalmente não devolve qualquer tipo de valor.
A IDE que nós estamos a utilizar, o Eclipse, permite gerar automaticamente estes
métodos, permitindo poupar muito tempo no seu desenvolvimento.
O método toString é usado quando necessitamos de apresentar informação em
formato de String.

21 de 29
Programação em Java

Gerando os métodos Set, Get e toString no Eclipse

ATIVIDADE 2 – EXEMPLO!

public class setGet {

public static void main(String[] args) {

int hora = 14;


int minuto = 45;
int segundo = 30;
Tempo relogio = new Tempo(hora, minuto,segundo);

System.out.println(relogio.toString());
}

public class Tempo {


private int hora;
private int minuto;
private int segundo;

public Tempo(){
hora=0;
minuto=0;
segundo=0;
}

22 de 29
Programação em Java

public Tempo(int hora, int minuto, int segundo) {


super();
this.hora = hora;
this.minuto = minuto;
this.segundo = segundo;
}
public int getHora() {
return hora;
}
public void setHora(int hora) {
this.hora = hora;
}
public int getMinuto() {
return minuto;
}
public void setMinuto(int minuto) {
this.minuto = minuto;
}
public int getSegundo() {
return segundo;
}

public void setSegundo(int segundo) {


this.segundo = segundo;
}

public String toString() {


return "Tempo [hora=" + hora + ", minuto=" + minuto
+ ", segundo=" + segundo + "]";} }

23 de 29
Programação em Java

ATIVIDADE 3 – EXEMPLO!

1. Considere uma classe de nome ÁLBUM que representa um CD de Audio/Música.


A classe possui os seguintes atributos:
● String Name //Nome do Álbum
● int totalTime //tempo de duração do Album, valor em minutos
● int numTracks //número de faixas músicas gravadas
● int timeAvailable //tempo de gravação disponível, valor em minutos
e os seguintes métodos:
a. getAlbumName (...) //obter o nome do Album
b. getTotalTime(...) //obter o tempo total do Album, valor em minutos
c. getTotalNumTracks (....) //obter o número de músicas gravadas
d. getTimeAvailable (...) // obter tempo disponível no Album
e. construtor por defeito
f. construtor com quatro parâmetros
A classe Artista possui os seguintes atributos
● String name //nome do Artista/Banda
E os métodos
a. getName(...) //permite obter o nome do Artista/Banda
b. Construtor com 3 parâmetros

Crie uma classe Editora que teste as 2 classes anteriores, indicando o nome da BANDA/ARTISTA, e
informações sobre um álbum.

ALBUM primeiroAlbum //criar objeto da classe ALBUM;


ALBUM segundoAlbum //criar objeto da classe ALBUM(facultativo criar 2º objecto).

24 de 29
Programação em Java

ATIVIDADE 4
1. Implemente uma classe FootballPlayer que possui as seguintes variáveis de instância:
a. String nome_ //nome do jogador
b. int numero_ //número de jogador
c. int golosMarcados //número de golos marcados
d. int jogosJogados //numero de jogos efetuados
e os seguintes métodos
a) Construtor por omissão e construtor com 4 parâmetros: nome, numero, nGolos e nJogos
b) Método que devolve o nome do jogador
c) Método que devolve o número do jogador
d) Método que adiciona o número de golos marcados num jogo.
e) Método que devolve o número de golos marcados pelo jogador
f) Método getMediaGolos que devolve o número médio de golos marcados por jogo.
2. Implemente uma classe Equipa, cujo objetivo é testar a classe FootballPlayer, com as
seguintes variáveis de instância:
a. FootballPlayer player 1_//jogador1
b. FootballPlayer player2_ //jogador2
E os seguintes métodos
a) Construtor com dois parâmetros: player1 e player2
b) getGolosTotaisMarcados //obtém o numero de golos marcados pelo player1 e player2
c) adicionarGolosAoP2 //adiciona um determinado número de golos ao player2.

25 de 29
Programação em Java

ATIVIDADE 5

1. Considere uma classe de Lampada, com apenas um atributo de nome estadoLampada,


do tipo booleano.
a. Crie os métodos associados ao atributo, que permitam definir os diferentes
estados da lâmpada. Acender() e Apagar(). Os métodos retornam o valor do
atributo, sendo TRUE quando a lâmpada está acesa e FALSE, quando está,
apagada. Crie ainda um outro método que apresenta o estado da lâmpada de
nome, mostraEstado(), retornando o valor do atributo.
b. Uma classe de Teste, com método main. Instancie um objeto do tipo lâmpada.
c. Crie um pequeno menu, que permita ao utilizador Acender, Apagar e Mostrar o
estado da lâmpada. O programa deverá repetir as opções do Menu, até o
utilizador selecionar 0 para SAIR. Tenha como exemplo o Menu abaixo:
----------------------------Menu Lâmpada--------------------------------
1 – Acende Lâmpada
2 – Desliga Lâmpada
3 – Mostra Estado
0 – SAIR

26 de 29
Programação em Java

Garbage Collection
Em java, Garbage significa, objectos não referenciados. O Garbage Collection é o processo
de recuperar a memória não utilizada. Basicamente, é a destruição de objetos não utilizados.
Em outras linguagens de programação, podemos utilizar a função free() na linguagem C e a
função delete() em C++. Mas no Java, esse processo é feito automaticamente. Em resumo, o
Java permite uma melhor gestão da memória.

Vantagens do Garbage Collection


● Torna a memória mais eficiente ao remover os objetos não referenciados
● É feito automaticamente pelo Garbage Collection, que é uma parte do JVM (Java
Virtual Machine), fazendo com o que o programador não tenha que se preocupar com
isso.
Como é que um objeto pode se tornar não referenciado
● Atribuir uma referência nula ao objeto
● Atribuir referência a outro objeto
● Criando um objeto não identificado

1. Referência NULA
Empregado e1 = new Empregado();
e = null;
2. Atribuir referência a outro objeto
Empregado e1 = new Empregado();
Empregado e2 = new Empregado();
e1=e2;//desta forma o objeto e1 está disponível para o garbage collection

27 de 29
Programação em Java

3. Objeto não identificado


new Empregado();

Existe ainda a possibilidade de utilização de um método, finalize(). Este método for envocado
sempre antes do garbage collection. Este método pode ser utilizado para executar o processo
de limpeza. Este metodo é definido na classe do Objeto, como:

protected void finalize() {}

Atenção que o garbage collection apenas recolhe os objetos que foram criados com o comando
new. Para os objetos que não foram criados dessa forma, utiliza-se o método acima.

Método gc() - Este método é utilizado para chamar o garbage collection. É utilizado na
classe System ou Runtime.

public void gc() { }

ACTIVIDADE 6 - EXEMPLO!
import java.util.*;
class GarbageCollection
{
public static void main(String s[]) throws Exception
{
Runtime rs = Runtime.getRuntime();
System.out.println("Memória Livre na JVM antes doGarbage Collection = "
+rs.freeMemory());
rs.gc();
System.out.println("Memória Livre na JVM depois Garbage Collection ="+rs.freeMemory());
}}

28 de 29
Programação em Java

29 de 29

Você também pode gostar