Guião AULAS - POO - Java
Guião AULAS - POO - Java
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.
1 de 29
Programação em Java
(Revisões)
Tipos de dados
2 de 29
Programação 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.
3 de 29
Programação em Java
um objecto:
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.
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.
Classe
é uma estrutura de dados (de tipo referência definida pelo programador ou não)
constituído por:
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
Nome
Idade
Género
A Classe “Pessoa” é uma especificação para a criação e utilização para os tipos de objectos:
Pessoa1, Pessoa2,……, PessoaN…etc.
Classe “Pessoa”
Atributos -> Nome Idade Genero
Objecto “Pessoa1” Soraia 25 F
Objecto “Pessoa2” José 45 M
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
class nomeDaClasse
{
Implementação da Classe
}
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:
8 de 29
Programação em Java
Classes abstractas
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
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 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”.
//INSTANCIA A CLASSE
Conta conta = new Conta();
//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
Primitivo os seus nomes escreve-se com letra minúscula (int, double, float,…, etc);
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();
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.
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.
Explicação da sintaxe,
14 de 29
Programação em Java
Uma classe tem sempre um construtor, se ele não aparece, é considerado implícito ou
invisível.
//Construtores
public Pessoa(String nome, int idade, char genero) {//Construtor com 2 par.
this.nome = nome;
this.idade = idade;
this.genero = genero;
}
15 de 29
Programação em Java
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
Neste tipo de métodos, também não é devolvido qualquer valor, no entanto recebe um
ou mais valores de entrada para ser processado.
16 de 29
Programação em Java
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.
return soma;
}
Neste tipo de métodos é devolvido valor, e recebe um ou mais valores de entrada para
ser processado.
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
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";
}
// 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
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).
20 de 29
Programação em Java
Vantagens do Encapsulamento
21 de 29
Programação em Java
ATIVIDADE 2 – EXEMPLO!
System.out.println(relogio.toString());
}
public Tempo(){
hora=0;
minuto=0;
segundo=0;
}
22 de 29
Programação em Java
23 de 29
Programação em Java
ATIVIDADE 3 – EXEMPLO!
Crie uma classe Editora que teste as 2 classes anteriores, indicando o nome da BANDA/ARTISTA, e
informações sobre um álbum.
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
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.
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
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:
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.
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