Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Linguagem de Programação Aula 06 ENCAPSULAMENTO E ASSOCIAÇÕES DE CLASSES Nesta aula, você irá: 1. Apresentar os conceitos de encapsulamento e associações de classes; 2. Criar e manipular classes e objetos, com seus atributos encapsulados, e que se relacionem através de associações; 3. Utilizar interfaces gráficas interagindo com objetos e classes previamente definidos; 4. Explorar o conceito de encapsulamento e associações de classes, em exemplos e exercícios; Encapsulamento Mecanismo utilizado na Programação Orientada a Objetos, que visa obter segurança, modularidade e autonomia para os objetos; Conseguido, através da definição de visibilidade privada dos atributos, ganhando-se, assim, autonomia, para definir o que o mundo externo a classe poderá visualizar e acessar, normalmente através de métodos públicos. Conclusão: Sempre defina os atributos de uma classe como privados, a não ser que tenha uma boa justificativa para isso. O Encapsulamento protege os atributos de acesso direto e permite apenas acesso através de métodos públicos Modificadores de Visibilidade Um modificador de acesso determina como será a visibilidade de uma classe, método ou atributo a partir de outras classes. Modificadores de Acesso Exemplos: Sem encapsulamento class NaoEncapsulado { //implicitamentamente há modificador de acesso, mas não é o mais restritivo int semProteção; } public class TesteNaoEncapsulado { public static void main(String[] args) { NãoEncapsulado ne = new NãoEncapsulado(); //ne é uma instância de NãoEncapsulado ne.semProtecao = 10; //acesso direto ao atributo System.out.println("Valor sem proteção: " + ne.semProteção); //acesso direto aos atributos } } Com encapsulamento class Encapsulado { //private é um modificador de acesso de restrição máxima private int comProteção; public void setComProteção(int comProteção) { this.comProteção= comProteção; } public int getComProteção () { return this.comProteção; } } public class TesteEncapsulado { public static void main(String[] args) { Encapsulado e = new Encapsulado(); // O Objeto "e" é uma instância de Encapsulado e.comProteção = 10; //deve-se acessar o atributos de forma indireta, encapsulada e.setComProteção (10); System.out.println("Valor com proteção: " + e.getComProteção ()); } } Métodos Get’s e Set’s Como vimos, é preciso criar um mecanismo para acessar os campos private de uma classe. Para isso, é comum fornecer métodos públicos para acessar as informações encapsuladas. Estes métodos são chamados de set e get. O método set atribui valores ao atributo, enquanto que o método get obtém seus valores. A composição do nome destes métodos é sempre com o nome set + <nome atributo> ou get + <nome atributo>. Abaixo vemos um exemplo de atributo que não permite alteração, logo seus atributos são privados e só foi disponibilizado os métodos get’s. Exercício 1- A partir da classe Automovel.java apresentada abaixo, encapsule seus métodos e crie mecanismos públicos para acessar estas características. 2- Crie mais um atributo na classe do tipo boolean – estadoMotor 3- Crie métodos ligarMotor() e desligarMotor(), atualizando o valor de estadoMotor. Automóvel.java public class Automóvel { String modelo, cor; int ano; } Associação de Classes É um vínculo que permite que objetos de uma ou mais classes se relacionem. Através destes vínculos, é possível que um objeto troque mensagens ou chame os métodos de outros objetos. Na UML, quando estamos modelando o diagrama de classes, temos a Associação, a Composição e a Agregação, como tipos de Associações. As Associações têm acoplamento fraco. As Composições têm acoplamento forte. A Agregação faz parte de. Na implementação, não há diferença entre as abordagens, o que as distingue são os controles adicionados pelo desenvolvedor. Unified Modeling Language – Linguagem de modelagem unificada. Saiba mais – leia o documento 1 em pdf. Composição Tipo de associação onde uma nova classe usa classes existentes como atributos; Relacionamento “tem um”. Ex.: uma conta tem um dono (cliente), um cliente tem um nome (string); class Aleatorio { int numero; Aleatorio(int max) { numero = new Random().nextInt(max); } } public class NumeroAleatorio { private String nome; private Aleatorio valor; NumeroAleatorio(String nome, int valor) { this.nome = nome; this.valor = new Aleatorio(valor); } public static void main(String[] args) { NumeroAleatorio n; n = new NumeroAleatorio("Número secreto", 50); } } Podemos ter as seguintes multiplicidades de associações: 1 para 1 1 para * * para * Onde * equivale a muitos. Exercício de fixação Faça um programa em Java, para adivinhar um número entre 1 e 100. O programa deverá sortear um número aleatório entre 1 e 100 e armazenar em na classe Jogo. Construa uma classe Jogar que instancia o objeto jogo do tipo Jogo. Este objeto jogar fará a interface entre o usuário e o objeto jogo. Toda vez que o jogador envia um número para ser avaliado, o jogo avalia se: A- o jogador acertou – é enviada uma mensagem de congratulações e é informado o número de tentativas gastas. B- o número informado é maior que o sorteado – o sistema envia mensagem para o usuário que o número é maior, incrementa o número de tentativas e solicita um novo número. C- o número informado é menor que o sorteado – o sistema envia mensagem para o usuário que o número é menor, incrementa o número de tentativas e solicita um novo número. O jogo termina quando o jogador acerta. Neste momento o sistema irá perguntar se deseja jogar novamente. Para saber mais sobre os tópicos estudados nesta aula, pesquise na internet sites, vídeos e artigos relacionados ao conteúdo visto. Se ainda tiver alguma dúvida, fale com seu professor online utilizando os recursos disponíveis no ambiente de aprendizagem. Para esta aula, sugiro as seguintes tarefas: Leitura do capítulo 3: Programação orientada a objetos: herança, do livro- Java Como Programar 8ª edição. Resolução dos exercícios de 3.5 até 3.17, do capítulo 3, do livro- Java Como Programar. Nesta aula, você: Identificou o conceito de encapsulamento em orientação a objetos; Criou e manipulou classes e objetos com atributos encapsulados; Associou classes e manipulou objetos associados; Exercitou exemplos; Desenvolveu e executou pequenos programas com orientação a objetos. Tema: Interfaces Apresentar o pacote de Interfaces Swing. Criar e manipular pequenos programas com a biblioteca. Criar e manipular classes e objetos que se relacionem com as Interfaces. Respostas: 2 – 3