implementação orientada a objetos – aula 03 atributos e encapsulamento prof. danielle martin/...
Post on 07-Apr-2016
224 Views
Preview:
TRANSCRIPT
Implementação Orientada a Objetos – Aula 03Atributos e Encapsulamento
Prof. Danielle Martin/ Marcia Bissaco
Universidade de Mogi das Cruzes2015-02
Pilares da Orientação a Objetos
A orientação a objetos suporta quatro conceitos chave na criação de classes:
– Abstração– Encapsulamento– Herança– Polimorfismo
Abstração
Diz-se da possibilidade de abstrair entidades do mundo real como parte da solução de software
Ex. – Criação de classes Aluno, Veiculo, Documento
Exemplo
Em uma aplicação de software para um sistema acadêmico, pode-se criar a classe Aluno.
A classe Aluno possui os atributos nome, rgm, nota1, nota2, notaFinal e o método calcularMedia.
Declaração de Classes
Sintaxe:
<modificadores> class <nomeDaClasse> {[<declaracoes_atributos>][<declaracoes_construtores>][<declaracoes_métodos>]
}
Exemplo:
public class Aluno {public int rgm;public void setRgm( int novoRgm ) {rgm = novoRgm;
}}
Declaração de Atributos
Sintaxe:
[<modificadores>] <tipo> <nome> [=<valor_inicial>];
Exemplo:
public class Aluno {private int rgm;private String nome;private double nota1;private double nota2;private double notaFinal;private double notaDeAprovacao = 5.0;
}
Declaração de métodos
Sintaxe:
[<modificadores>] <tipo_retorno> <nome> ([<lista_parametros>]){[<instrucoes>]
}
Exemplo:
public class Calculadora {
public double somar (double x, double y) {
double resultado;resultado = x + y;return resultado;
}}
Criação de objetos
Um objeto é uma instância de uma classePara criar um novo objeto, usa-se a instrução new
Sintaxe para declaração de um objeto do tipo Aluno:
[<nome_da_classe>] <nome_objeto> = new [<nome_da_classe>]([<parametros>]);
Ou:
[<nome_da_classe>] <nome_objeto>;<nome_objeto> = new [<nome_da_classe>]([<parametros>]);
Exemplo:
Aluno objetoAluno = new Aluno()
Ou:Aluno objetoAluno;objetoAluno = new Aluno();
Acessar membros de objetos
Apos a instrução new, todos os métodos e atributos da classe serão membros do objetoAluno
Para acessar os atributos e métodos do objeto, usa-se o “ponto” como separador.
Sintaxe:
<nome_objeto>.<membro>;
Exemplo:
objetoAluno.nota1 = 10; //permitido somente se nota1 for publico
objetoAluno.calcularMedia();
Encapsulamento
Diz-se da possibilidade da classe de agregar toda a informação relevante para seu processamento, escondendo detalhes de implementaçãode classes externas
Ex. – Toda a manipulação de dados de Alunos se encontra na classe
Aluno– Atributos da classe Aluno nao devem ser acessados por classes
externas, a menos que explicitamente permitido
Encapsulamento
Toda a manipulação de dados de Alunos se encontra na classe Aluno
Operações disponíveis para a classe Aluno
Dados (atributos) da classe Aluno
Encapsulamento
Atributos da classe Aluno não devem ser acessados por classes externas, a menos que explicitamente permitido
Uma boa prática para garantir o encapsulamento dos dados é declarar os atributos sempre privados, e os métodos públicos.
Modificadores de acesso/visibilidade
Existem três modificadores de visibilidade de atributos e métodos:
public• O atributo/método declarado como público podera ser acessado por
qualquer objeto externo. O acesso externo neste caso é total.
private• O atributo/método declarado como private somente pode ser acessado pelo
próprio objeto, sem nenhuma visibilidade externa.
protected• O atributo/método declarado como protected pode ser acessado pelo
próprio objeto e/ou por objetos de classes derivadas através de uma herança (Herança será um tópico abordado nas próximas aulas).
Métodos de acesso getters e setters
Se os atributos são privados, como ler/modificar o valor dos mesmos para diferentes objetos?
SOLUÇÃO: criar métodos que encapsulem o acesso aos atributos.
Esses métodos sao chamados GETTERS e SETTERS– Para LER o valor do atributo rgm, criar o método getRgm
– Para ALTERAR o valor do atributo rgm, criar o método setRgm
Métodos de acesso getters e setters
Isso é permitido, mas NÃO recomendado:
Aluno objetoAluno;objetoAluno = new Aluno();
objetoAluno.nome = “João”;objetoAluno.nota1 = 2;objetoAluno.nota2 = 6;
objetoAluno.notaFinal = 10;System.out.println(“Media final ” +
objetoAluno.notaFinal); //irá imprimir 10
Isso é permitido E recomendado:
Aluno objetoAluno;objetoAluno = new Aluno();
objetoAluno.setNome(“João”);objetoAluno.setNota1(2);objetoAluno.setNota2(6);
objetoAluno.calcularMedia();System.out.println(“Media final ” +
objetoAluno.getNotaFinal());//irá imprimir 4
Exemplo: Classe Aluno
Exemplo
public class Aluno {private int rgm;private String nome;private double nota1;private double nota2;private double notaFinal;
public void setRgm(int r) {rgm = r;
}
public void setNome(String n) {nome = n;
}
public void setNota1(double n) {nota1 = n;
}
public void setNota2(double n) {nota2 = n;
}
public int getRgm() {return rgm;
}
public String getNome() {return nome;
}
public double getNota1() {return nota1;
}
public double getNota2() {return nota2;
}
public double getNotaFinal() {return notaFinal;
}
public void calcularMedia() {notaFinal = (nota1 + 2*nota2)/3;
}
}
Não existe o médoto setNotaFinal. O atributo notaFinal apenas poderá ser modificado através do método calcularMedia().
Exercicio: Criar objetos Aluno
1. Criar a classe Aluno conforme o slide anterior (nao esqueça de salvá-la em um arquivo Aluno.java)
2. Criar uma classe executável AplicacaoMedia que instancie um objeto aluno, atribua valores para nome, rgm, nota1 e nota2 e imprima a notaFinal. Nao esqueça de salvá-la em um arquivo chamado AplicacaoMedia.java
public class AplicacaoMedia {
public static void main(String[] args) {
//Digite seu codigo aqui
}}
3. Compile ambas as classes e execute AplicacaoMedia
Classe de aplicação, exemplo 1
public class AplicacaoMedia {
public static void main(String[] args) {
Aluno objetoAluno;
objetoAluno = new Aluno();
objetoAluno.setNome(“João”);
objetoAluno.setNota1(2);
objetoAluno.setNota2(6);
objetoAluno.calcularMedia();
System.out.println(“Media final ” + objetoAluno.getNotaFinal());
}}
Classe de aplicação, exemplo 2
public class AplicacaoMedia {
public static void main(String[] args) {
Aluno objetoAluno;objetoAluno = new Aluno();
objetoAluno.setNome(args[0]);objetoAluno.setNota1(2);objetoAluno.setNota2(6);
objetoAluno.calcularMedia();System.out.println(“Media final ” + objetoAluno.getNotaFinal());
}}
obs.: Em tempo de execução é passado um valor para args. Por exemplo:
java AplacacaoMedia Jose
Classe de aplicação, exemplo 3
import java.util.Scanner;public class AplicacaoMedia2 {
public static void main(String[] args) {
Scanner Teclado = new Scanner (System.in);
Aluno objetoAluno;objetoAluno = new Aluno();
System.out.println("Digite um nome");
objetoAluno.setNome(Teclado.next());
System.out.println("Digite a primeira nota");
objetoAluno.setNota1(Teclado.nextFloat());
System.out.println("Digite a segunda nota");
objetoAluno.setNota2(Teclado.nextFloat());
objetoAluno.calcularMedia();System.out.println("Media final " + objetoAluno.getNotaFinal());
}}
top related