Laboratório I
Mateus Raeder
Associação entre classes
 Um objeto é a representação de uma entidade do mundo real
 Instanciar é criar um novo objeto
 Por exemplo, Floribela é uma instância da classe Pessoa
 No BlueJ, como criamos uma instância de uma classe?
clicando com o direito na classe e escolhendo new...
 O que aparece no BlueJ na classe Dado(int nlados)?
new Dado(int nlados)
 Estamos dizendo para o Java: crie um novo objeto da classe Dado
Logo, um novo objeto é criado com a palavra reservada new
Mateus Raeder – fevereiro de 2009
Associação entre classes
 Objetos diferentes podem se conhecer, podem conversar
uns com os outros
 Mas como objetos podem conversar?
 Imagine 2 pessoas. Para elas conversarem, eles devem
se conhecer antes. Logo, para dois objetos conversarem,
eles devem se conhecer
 Vamos imaginar, então, que a Floribela quer jogar o dado
 Dois objetos diferentes, de duas classes diferentes
 A classe Dado possui um método que chama-se
jogaDado()
Mateus Raeder – fevereiro de 2009
Associação entre classes
 Mas como a Floribela pode acessar este método?
 Somente quando ela conhecer o objeto dado, ou seja,
quando ela tiver uma instância da classe Dado
 Assim, vamos poder dizer que uma pessoa tem um dado
Mateus Raeder – fevereiro de 2009
Associação entre classes
 Mais do que isso, uma Pessoa (classe) tem um atributo do tipo
Dado (classe), e este atributo (um objeto) deve ser declarado e
inicializado
 Logo, na classe Pessoa teremos:
public class Pessoa
{
private String nome;
...
private Dado meuDado;
...
}
Mateus Raeder – fevereiro de 2009
Declaração de
uma instância da
classe Dado,
associando a
classe Dado à
classe Pessoa
Associação entre classes
 Para que este atributo se torne utilizável, devemos inicializá-lo,
informando ao Java que trata-se de um novo objeto
 Assim, devemos utilizar o new, conforme dito anteriormente
 No construtor de Pessoa, teremos então:
public Pessoa()
{
...
meuDado = new Dado(6);
...
}
Construtor da classe
Dado pede o
número de lados!!
Mateus Raeder – fevereiro de 2009
Inicialização
do objeto
Associação entre classes
 Como o atributo meuDado já foi inicializado, e trata-se de um
objeto da classe Dado, ele possui todos os atributos e métodos
desta classe
 A pessoa então, pode acessar todos estes métodos e atributos de
um objeto dado. A pessoa tem um dado e pode jogá-lo.
 Como este acesso é realizado?
Através do operador . (ponto)
public Pessoa()
{
meuDado = new Dado(6);
meuDado.jogaDado();
}
Mateus Raeder – fevereiro de 2009
Significa que quero
acessar (executar) o
método chamado
jogaDado() do objeto
meuDado
Associação entre classes
 Uma pessoa não precisa ter necessariamente 1 dado
public class Pessoa
{
private Dado meuDado1;
private Dado meuDado2;
private Dado meuDado3;
...
public Pessoa(...)
{
meuDado1 = new Dado(6); //cria um dado de 6 lados
meuDado2 = new Dado(13); //cria um dado de 13 lados
meuDado3 = new Dado(6); //cria outro dado de 6 lados
...
}
}
Mateus Raeder – fevereiro de 2009
Associação entre classes
 A pessoa então, pode jogar os dados de acordo com sua vontade
public Pessoa(...)
{
meudado1 = new Dado(6); //cria um dado de 6 lados
meudado2 = new Dado(13); //cria um dado de 13 lados
meudado3 = new Dado(6); //cria outro dado de 6 lados
...
}
public void jogarDados()
{
meuDado1.jogaDado();
meuDado2.jogaDado();
meuDado3.jogaDado();
}
Mateus Raeder – fevereiro de 2009
Associação entre classes
 O diagrama UML ilustra o relacionamento entre as classes da
seguinte maneira:
Pessoa
Dado
atributos
atributos
métodos
métodos
O objeto da classe Pessoa conhece o objeto da classe Dado,
mas o contrário não é verdade
Mateus Raeder – fevereiro de 2009
Associação dentre classes
 Uma associação é um relacionamento estrutural entre duas
classes, significando que os objetos de uma classe estão ligados
aos objetos de outra
 O objeto pessoa está ligado ao objeto dado
Dado
Pessoa
nome
Floribela
sexo
F
meuDado
Mateus Raeder – fevereiro de 2009
lados
6
Associação entre classes
 Exercícios:
 1 – crie a classe Endereco
 Esta classe possui o nome da rua, um número na rua, uma cidade,
um estado, um CEP e um bairro
 Quando um endereço é criado, deve ser informado o nome da rua,
o número na rua e a cidade
 Crie os métodos de acesso da classe (getters e setters)
 2 - Crie a classe Data
 Esta classe possui um dia, um mês e um ano
 Ao criar uma data, todos os atributos devem ser informados (dia,
mês e ano)
 Crie os métodos de acesso da classe (getters e setters)
Mateus Raeder – fevereiro de 2009
Associação entre classes
 3 – Crie a classe Dado, conforme já definida em aula nos slides
anteriores
 4 – Crie a classe Pessoa
 Esta classe possui um nome, um sexo, uma data de
nascimento (do tipo Data), um endereço (do tipo Endereco) e
dois dados (um de 6 e um de 3 lados)
 Pense no método construtor da classe Pessoa, e analise os
parâmetros de entrada deste método
 Crie os métodos de acesso da classe (getters e setters).
Pense nos tipos de retorno dos métodos get e nos
parâmetros de entrada dos métodos set
Mateus Raeder – fevereiro de 2009
Download

Associação entre classes