Crie um novo projeto e desenvolva a classe Pessoa, conforme diagrama de classes a seguir.
- Observe que ha um construtor com um argumento: o ano de nascimento.
- Atraves do encapsulamento, garanta a consistencia do estado dos objetos.
Instancie os dois objetos mostrados no diagrama de objetos abaixo.
Porque a classe Pessoa não define um método setAnoNascimento?
Modifique a classe Pessoa conforme diagrama de classes a seguir.
- O método casar() seta o conjuge da pessoa.
- O método ehCasado() returna true se a pessoa tiver um conjuge (ou seja, se conjuge != null).
- O método getNomeConjuge() deve retornar o nome do conjuge.
Em seguida, realize as seguintes operações:
- Crie os objetos maria e jose do exercício anterior.
- Case o objeto maria com o objeto jose.
- Execute o método ehCasado() nos dois objetos. O resultado é consistente?
- Execute o método getNomeConjuge() do objeto jose. O resultado é consistente?
- Execute o método getNomeConjuge() do objeto maria. O resultado é consistente?
- Qual erro ocorreu? Por que ocorreu este erro?
- Modifique a classe Pessoa para garantir a consistencia de estado:
- Uma pessoa só pode casar com outra pessoa que não é casada.
- A relação de conjuge deve ser consistente nas duas pessoas.
Deseja-se representar os estudantes da turma por meio de objetos. Além do nome e do número de matrícula do estudante, o objeto deve armazenar também a quantidade de créditos já cursados. O objeto deve encapsular os dados do estudante, atentando para os seguintes detalhes:
a. Após criado o objeto, não é possível alterar o número de matrícula do estudante, apenas seu nome.
b. Deve haver um método para adicionar créditos, que incrementa a quantidade de créditos já cursados pelo estudante. Não deve haver método para setar diretamente a quantidade de créditos.
c. Deve haver um método para calcular e retornar o login do aluno, que é formado pelos três primeiros caracteres do nome do aluno + os três últimos dígitos da matrícula.
Exemplo: Nome: Angelina; Matrícula: 556644; Login = Ang644.
d. Deve haver um método para retornar uma String com a representação textual do aluno. Formato: Nome: ___, Matrícula: ___, Login: ___, Créditos: ___.
Exemplo: Nome: Angelina, Matrícula: 556644, Login: Ang644, Créditos: 36.
Roteiro para resolver o exercício:
-
Elabore um diagrama de classes.
-
Elabore um diagrama de objetos, contendo os objetos est1 e est2 a seguir:
- est1: Angelina, matrícula 556644, cursou 35 créditos.
- est2: Beth, matrícula 579035, cursou 80 créditos.
-
Desenvolva um projeto com a implementação. Instancie os dois objetos acima para testar os métodos.
-
Crie uma classe com um método main e implemente a criação dos objetos est1 e est2 modelados no seu diagrama de objetos. Ative os métodos necessários para que o estado desses objetos seja igual ao do diagrama de objetos. Após criados e inicializados, implemente as seguintes manipulações dos objetos nesta ordem. Atenção: os objetos devem permanecer consistentes ao longo das manipulações.
est1:
- Retornar e imprimir o login.
- Retornar e imprimir a representação textual.
- Adicionar 4 créditos.
- Retornar e imprimir a representação textual.
- Alterar o nome para Angelina Siqueira.
- Retornar e imprimir o login.
- Retornar e imprimir a representação textual.
est2:
- Retornar e imprimir a representação textual.
- Adicionar -8 créditos (atenção: valor negativo para testar).
- Retornar e imprimir a representação textual.
- Alterar o nome para Elizabeth.
- Retornar e imprimir o login.