Você está na página 1de 25

Disciplina: Programação II

Curso: Engenharia de Tecnologia e Sistemas de


Informação
2º Ano

Aula 5
Classe e Objectos

Docente: enga. Ivone Cipriano


Programação Orientada a Objectos
A Programação Orientada a Objectos (POO) é
um modelo ou paradigma de programação
diferente da programação Estruturada
caracterizada por:
ØConceito de classe;
Ø Objectos;

ØDivide o codigo em diferentes classes.


Programação Orientada a Objectos
O codigo pode ser organizado da seguinte
forma:
Numa classe declaram-se
os atributos (dados) e os métodos,
Outra classe pode ser usada para receber os
dados;
Na função main fazer a chamada do método
para visualização de dados.
Pilares da POO
üClasses e objectos;
üEncapsulamento- Métodos Get e Set;
üConstrutores;
üHerança;
üPolimorfismo.
Encapsulamento
Mecanismo que coloca atributos e métodos
seguros em relação ao nível de acesso, o
encapsulamento esta intimamente ligado ao
conceito de ocultamento ou segurança de dados
e é implementado através dos seus
modificadores de acesso.
O uso de encapsulamento é feito
implementando por:
public, protected, private e default.
Encapsulamento
Quando declarados os dados no paradigma
estruturado, são publicos, mesmo sem destacar.
Em POO, os dados devem ser declarados em
regra como privados.Ou seja declarar
int idade; === public int idade;
As duas formas de declarar são equivalentes
mesmo que esteja omisso public.
O java entende como publica toda declaração
quando declarada sem nenhum modificador, int
idade é public.
Public
O modificador public permite que o membro
público seja acessado por qualquer classe, é o
mais aberto, exigindo maior responsabilidade
do programador no seu uso.
Ex: public int idade;
Quando está omisso na declaração qualquer dos
três tipos, Java assume a variável declarada
como publica.
Private
O modificador de acesso private determina que
o membro privado só pode ser acessado por
métodos dentro da própria classe, é o mais
restrito e deve ser empregue sempre que
possível.
Ex: private int idade;
private int idade; diferente int idade;
Protected
Somente os atributos e métodos podem ser
declarados como protected.
Um membro protegido de uma classe está
disponível a todas as classes do mesmo pacote.
Ex: protected int idade;
A tabela abaixo relaciona a visibilidade dos
atributos com os modificadores de acesso
public, private, protected e default.
Modificadores de Acesso

private default protected public


mesma classe sim sim sim sim
mesmo pacote não sim sim sim
pacotes
diferentes não não sim sim
(subclasses)
pacotes
diferentes (sem não não não sim
subclasses)
Métodos de Acesso
Os atributos declarados private de uma classe
somente podem ser manipulados pelos
métodos dessa classe. Em geral, esses atributos
são utilizados internamente pelas classes em
que foram criados. Porém, existem situações em
que é necessário que objetos de outras classes
também manipulem esses atributos privados.
Assim, existem formas de aceder os dados de
classes diferentes, usando métodos de acesso.
Os atributos são privados, mas os métodos de
acesso são públicos.
Métodos de Acesso
As classes fornecem métodos públicos para
modificar ou receber valores de variáveis, o
padrão para visualizar e receber valores das
variáveis em Java
Os métodos de acesso são get e set.
üsetnomeatributo()
ügetnomeatributo()
Para introduzir e receber os valores dos
atributos, respectivamente.
Método Get
Para aceder alguns atributos da classe utiliza-se
o método get. Esse método sempre retornará
um valor, seja ele String, int ,double etc.
Sintaxe do get:
Tipo de atributo getnomedoatributo
O get sempre retorna ao atributo.
public int getidade() {
return idade; }
Método Set
Para alterar ou modificar os valores de um
atributo da classe, utiliza-se o método set. Esse
método não terá um retorno, pois o atributo
será somente modificado, criando um método
de tipo VOID, sem retorno. Porém ele deve
receber algum argumento para que possa
ocorrer a devida alteração.
Método Set
Sintaxe do set:
Public void setNomedoAtributo(tipo de atributo
nome do atributo)
O set nao tem retorno.

public void setidade(int idade) {


this.idade = idade; }
Construtor
Um construtor é responsável por criar um objeto ou
instanciar a classe que foi definida. Cada classe deve ter
pelo menos um construtor, é um tipo especial de
método utilizado apenas na criação e inicialização de
objectos da classe, e distinguem-se dos restantes
métodos por terem o mesmo nome da classe e por
não terem valor de retorno. Os construtores não são
chamados como os outros métodos, apenas a instrução
de criação de objectos da classe os pode chamar.
Construtor
São usados para inicializar os atributos de uma
classe, se nenhum construtor for definido ou
criado, o compilador cria um construtor default
que não recebe nenhum argumento ou
parametro.
Boas práticas dizem que deve-se criar um
construtor para assegurar que cada objecto seja
inicializado.
Construtor
Caracteriscas de construtor:
Ø Possui o mesmo nome que a classe;
public Aluno () { }
Ø Poder ser um construtor vazio ou com parametros;
public Aluno (String nome, String apelido, String
morada) { } // construtor com parametros
public Aluno () { } // construtor vazio
Ø Deve-se referenciar as variáveis do construtor.
public Aluno (String nome, int nrest) {
this.nome=nome; this.idade=idade;}
Uma classe pode ter mais do que 1 construtor, desde
que os parâmetros sejam diferentes.
Passos
Sequencia para estruturar código com POO:
1. Declarar os atributos;
2. Implementar os métodos set e get para os atributos;
3. Criar os construtores com ou sem parâmetros;
4. Definir outros métodos (se houver);
N.B estes passos são apresentados sempre antes ou
fora da função main (principal).
As classe devem estar no mesmo pacote.
Exemplo
public class Aluno { //classe com nome Aluno
private int nrest; // declaracao dos atributos
private String nome, apelido, morada;
// como os atributos sao privados os metodos get e set devem ser empregues
para que estes atributos possam ser usados
public String getnome() { return nome; } // metodo get sempre tem um
retorno
public String getmorada() { return morada; } // regra geral retorna ao
proprio atributo
public String getapelido() { return apelido; }
public int getInrest() { return nrest; }
public void setnome(String nome) {this.nome=nome; }
public void setmorada(int morada) {this.morada=morada; }
public void setnrestdade(int idade) {this. nrestdade=nrestdade; }
public void setapelido(int apelido) { this.aelido=apelido; }
Exemplo
public Aluno (String nome, String apelido, String morada) {
this.nome=nome; this.apelido=apelido; this.morada=morada; } // criação
do construtor que sempre tem o nome da classe, este construtor tem como
parâmetros nome apelido e morada

public Aluno (String nome, int nrest) {


this.nome=nome; this.idade=idade;} // criação de outro construtor com
parâmetros nome e nrest
//Fica ao critério do programador escolher os parâmetros dos construtores,
mas estes devem fazer sentido
//Uma classe pode ter mais que um construtor
// abaixo foi criado um método para visualizar os dados de pessoa

public void mostraDados(){


System.out.println("Dados da classe, "+"----- "+ getnome()+" "+
getapelido()+" "+ getmorada()); }
Exemplo
// criacao de outra classe que contem a funcao main para receber e mostrar os dados
import java.util.Scanner;
public class ReceberDados {
public static void main (String []args ) {
Scanner x = new Scanner(System.in);
// é necessário declarar e criar variáveis para receber valores dos atributos
declarados na classe Aluno, pois os atributos definidos nas classes não podem ser
usados directamente
System.out.println ("introduza o nome");
String n=x.next(); // variavel que vai guardar o atributo nome
System.out.println ("introduza o apelido");
String a=x.next(); // variavel que vai guarder atributo apelido
System.out.println ("introduza a morada");
String m=x.next();
System.out.println ("introduza o nr de estudante");
int i= x.nextint());
Exemplo
Aluno c1= new Aluno(n, a, m); //cria objecto c1 com parametros do primeiro
constructor

Aluno c2= new Aluno(n,i); // cria objecto c2 com parametros do outro constructor

c1.mostraDados();

// depois de receber os dados por teclado, a visualizacao pode ser feita pela chamada
do metodo mostraDados() criado na classe Aluno
c1.mostraDados();

}}
Exercicios
1. Faca um programa que cria uma classe Pessoa com
atributos nome e idade.
a. Os atributos sao privados.
b. Crie mecanismos de acesso.
c. Crie 2 construtores com parametros.
d. Crie um metodo para mostrar os dados.
e. A classe que contem o metodo main, deve receber
os dados e visualizer pela chamada do metodo da
alinea d.
FIM

Você também pode gostar