Laboratório I
Mateus Raeder
Mateus Raeder – março de 2010
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?
O que aparece no BlueJ na classe Dado(int nlados)?
Estamos dizendo para o Java: crie um novo objeto da classe Dado
clicando com o direito na classe e escolhendo new...
new Dado(int nlados)
Logo, um novo objeto é criado com a palavra reservada new
Mateus Raeder – março de 2010
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 – março de 2010
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 – março de 2010
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; ...}
Declaração de uma instância da
classe Dado, associando a classe Dado à classe Pessoa
Mateus Raeder – março de 2010
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!!
Inicialização do objeto
Mateus Raeder – março de 2010
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();}
Significa que quero acessar (executar) o
método chamado jogaDado() do objeto
meuDado
Mateus Raeder – março de 2010
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 – março de 2010
Associação entre classes
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();}
A pessoa então, pode jogar os dados de acordo com sua vontade
Mateus Raeder – março de 2010
Associação entre classes
O diagrama UML ilustra o relacionamento entre as classes da seguinte maneira:
Pessoa
atributos
métodos
Dado
atributos
métodos
O objeto da classe Pessoa conhece o objeto da classe Dado, mas o contrário não é verdade
Mateus Raeder – março de 2010
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
nome
sexo
meuDado
Pessoa
Floribela
F lados
Dado
6
Mateus Raeder – março de 2010
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 – março de 2010
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