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

17
Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes

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

Page 1: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

Implementação Orientada a Objetos – Aula 03

Atributos e Encapsulamento

Prof. Danielle Martin

Universidade de Mogi das Cruzes

Page 2: 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

Page 3: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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

Page 4: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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.

Page 5: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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;

}}

Page 6: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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;

}

Page 7: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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;

}}

Page 8: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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();

Page 9: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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();

Page 10: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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

Page 11: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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

Page 12: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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.

Page 13: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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).

Page 14: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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

Page 15: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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

Page 16: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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().

Page 17: Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin Universidade de Mogi das Cruzes.

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