Download - Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes Um objeto é a representação de uma entidade do mundo real

Transcript
Page 1: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Laboratório I

Mateus Raeder

Page 2: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Mateus Raeder – fevereiro de 2009

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

Page 3: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

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

Page 4: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

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

Page 5: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

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; ...}

Declaração de uma instância da

classe Dado, associando a classe Dado à classe Pessoa

Page 6: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Mateus Raeder – fevereiro de 2009

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

Page 7: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Mateus Raeder – fevereiro de 2009

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

Page 8: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Mateus Raeder – fevereiro de 2009

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

Page 9: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Mateus Raeder – fevereiro de 2009

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

Page 10: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Mateus Raeder – fevereiro de 2009

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

Page 11: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

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

nome

sexo

meuDado

Pessoa

Floribela

F lados

Dado

6

Page 12: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

Mateus Raeder – fevereiro de 2009

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)

Page 13: Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real

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