Prévia do material em texto
Linguagem de
Programação
Fabiano Gonçalves
dos Santos
Aula 6
Conteúdo
• Apresentar os conceitos de Encapsulamento e
Associações de Classes
• Criar e manipular classes com seus atributos
Encapsulados e que se relacionem através de
Associações
2
• Mecanismo utilizado na Programação Orientada à
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.
Encapsulamento
3
• 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
• Permite apenas acesso através de métodos
públicos
Encapsulamento
4
• Modificadores de Acesso: public, protected,
private e sem modificador (default)
• Modificadores de Não Acesso: final e abstract
– public – Atributos e métodos são acessíveis em
todos os métodos de todas as classes. Este é o
nível menos rígido de encapsulamento, que
dizemos que o encapsulamento foi rompido.
– private - Atributos e métodos são acessíveis
somente nos métodos da própria classe.
Este é o nível mais rígido de encapsulamento.
Modificadores de visibilidade
5
– protected - Atributos e métodos são acessíveis
no pacote, nos métodos da própria classe e suas
subclasses.
– Sem Modificador – A visibilidade nas classes do
mesmo pacote e a própria classe.
Modificadores de visibilidade
6
Visibilidades
7
• abstract – Um método abstrato não implementa
nenhuma funcionalidade, somente assina o método
e faz com que a primeira subclasse concreta seja
obrigada a implementar. Uma classe que possui um
método abstrato deve ser obrigatoriamente abstrata,
como vimos na aula passada.
• final – Pode ser aplicado em classes, métodos e
atributos. Indica que esta é a última atribuição ou
definição da estrutura. Não será permitida uma nova
re-escrita. Para uma classe, não há herança em
classes final. Um método não pode ser sobrescrito.
E um atributo é considerado uma constante.
Outros modificadores
8
• static – Um método ou atributo estático define
que este pode ser executado sem que exista
uma instância da classe – o objeto.
Outros modificadores
9
Exemplo sem encapsulamento
10
Exemplo sem encapsulamento
11
• É 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>.
Getters e Setters
12
Exemplo
13
• É 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.
Associações de classes
14
– 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.
Associações de classes
15
Exemplo
16
Exemplo
17
• 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);
Composição
18
Exemplo de composição
19
• Podemos ter as seguintes multiplicidades de
associações:
– 1 para 1
– 1 para *
– * para *
• Onde * equivale a muitos.
Multiplicidade de associações
20
Exemplo de composição
21
Exemplos de associações
22
Linguagem de
Programação
Fabiano Gonçalves
dos Santos
Atividade 6
• A partir da classe Automovel.java apresentada abaixo,
encapsule seus métodos e crie mecanismos públicos
para acessar estas características.
– Crie mais um atributo na classe do tipo boolean –
estadoMotor
– Crie métodos ligarMotor() e desligarMotor(),
atualizando o valor de estadoMotor.
– Crie uma classe de teste para instanciar Automóvel
Automovel.java
public class Automovel {
String modelo, cor;
int ano;
}
Exercício
24
25
26
27