Exercícios Resolvidos de Templates

Ver Teoria

Enunciado

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