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:
No nosso código vamos chamar o tipo genérico simplesmente de e chamaremos o template de classe de :
Usando esse tipo genérico vamos declarar duas variáveis e no contexto privado. Usando o nosso 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 . 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 e são do tipo genérico , 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 e devem ser do tipo genérico :
E pra finalizar vamos desenvolver os métodos setters. Como de praxe, os setters são do tipo , 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 , pois assim os parâmetros vão combinar com as variáveis e 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:
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!