Crie uma classe que represente um ponto com duas dimensões. Cada ponto pode ser criado com valores inteiros ou reais. Os atributos devem ser privados, devem existir getters e setters para acessá-los. Os valores iniciais do ponto devem ser inseridos no momento em que um objeto é criado.

Passo 1

Vamos lá pessoal. Essa questão está pedindo pra gente criar uma classe para representar um ponto, mas com alguns detalhes:

O exercício pede que a classe aceite que os valores sejam inteiros ou reais. Uma forma de fazer isso é desenvolvendo uma classe template. Vamos usar um tipo genérico para desenvolver um código, e esse tipo genérico vai se adaptar conforme a necessidade.

Os atributos devem ser privados, então vamos desenvolver métodos gettes e setters. O detalhe é que esses métodos devem ser projetados usando o tipo genérico. Assim, eles poderão se adaptar a qualquer tipo de dado usado na classe.

Para inserir os valores no momento da criação vamos precisar de um método construtor. O detalhe é que esse método também deve usar o tipo genérico. E dessa forma o construtor vai trabalhar com os tipos adequados.

Mas antes de começar tudo isso, vamos escrever o cabeçalho:

Passo 2

Agora é hora de desenvolver o template da classe. Pra desenvolver um template sempre começamos com a sintaxe:

t e m p l a t e < t y p e n a m e   n o m e T i p o > c l a s s   n o m e C l a s s e

No nosso código vamos chamar o tipo genérico simplesmente de M e u T i p o e chamaremos o template de classe de P O N T O :

Usando esse tipo genérico vamos declarar duas variáveis x e y no contexto privado. Usando o nosso T i p o os atributos vão conseguir se adaptar para números reais ou inteiros.

Em seguida vamos desenvolver o construtor da classe. Lembre-se, o construtor é uma função sem tipo que tem o mesmo nome que a classe. Os parâmetros do nosso construtor são os valores das componentes do ponto que são do tipo genérico M e u T i p o . No corpo do construtor vamos apenas assimilar os valores inseridos dentro dos atributos privados.

O passo seguinte e desenvolver os métodos getters, pra que a gente consiga acessar os valores privados da classe. Novamente, devemos lembrar que os atributos x e y são do tipo genérico M e u T i p o , e para um método retornar o valor desses atributos, esse método deve retornar o tipo genérico também! Ou seja, os métodos g e t X (   ) e g e t Y (   ) devem ser do tipo genérico M e u T i p o :

E pra finalizar vamos desenvolver os métodos setters. Como de praxe, os setters são do tipo v o i d , afinal eles não precisam retornar nenhum valor, eles só precisam receber um parâmetro e alterar o valor de uma variável privada. O diferencial é que os parâmetros devem ser do tipo genérico M e u T i p o , pois assim os parâmetros vão combinar com as variáveis x e y que queremos alterar.

E com os dois métodos setter concluídos, o template está finalizado!

Passo 3

Show! Vamos por esse template pra trabalhar agora

Pra criar objetos partindo de um template é quase igual a criar um objeto de uma classe, porém usamos as chaves < > para determinar o tipo de dados que vai substituir o tipo genérico:

N o m e T e m p l a t e < t i p o > n o m e o b j e t o (   p a r a m e t r o s _ d o _ c o n s t r u t o r   )

Usando essa lógica, no nosso código vamos criar dois pontos com valores aleatórios:

E vamos usar os métodos getters para conferir se deu tudo certo!

E é isso, galerinha! A questão está pronta!

Resposta

Exercícios Resolvidos de Templates

Ver Teoria