Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin...

Post on 22-Apr-2015

109 views 2 download

Transcript of Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin...

Implementação Orientada a Objetos – Aula 03

Atributos e Encapsulamento

Prof. Danielle Martin

Universidade de Mogi das Cruzes

Caracteristicas 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

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 classe

Para 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

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