Dúvida sore CLASSES

8 respostas Resolvido
L

Bom dia,

Estou com uma dúvida sobre Classes! Caso eu queira fazer um código para converter medidas,
EX.:
Milimetro em Metro
Metro em Milimetro
Metro em KM etc…

Terei que criar uma Classe MilimetroEmMetro e depois criar Classes filhas?

8 Respostas

darlan_machado

Vamos lá, resumidamente, a ideia de uma classe é representar um conjunto de elementos de mesma natureza, que são capazes de fazer coisas semelhantes (ou as mesmas coisas).
Pense na classe Caneta, toda caneta é igual? Toda caneta faz a mesma coisa? Toda caneta é capaz de escrever em toda superfície?
Então, meu entendimento é que você deve criar uma classe Conversor e cada método fará a conversão de uma coisa em outra.

L

@darlan_machado.

Entendi, da forma que eu estava pensando o código ficaria grande e desnecessário.

darlan_machado

Veja, existem abordagens e padrões que, sim, se encaixariam no que você imaginou.
Aliás, o código não ficaria tão maior, você teria, sim, classes extremamente especialistas. A questão é, por que ter uma classe

public class ConversorDeMetrosEmMilimetros {
    public static double metrosParaMilimetros(double metros) {
        return metros * 1000;
    }
}

Se você pode ter uma classe onde reúne todos os conversores?
Agora, pense, você pode querer separar, conversão de medidas métricas de medidas de volumetria, de medidas de capacitância. Aí é contigo.

L

Certo, Uma outra coisa que eu me perco as vezes, neste caso eu teria que ter um atributo metros?

darlan_machado

Não necessariamente.
Veja, você pode ter, apenas, os métodos mesmo.

public class Conversor {
    public double metrosParaCentimetros(double metros) {
         return metros * 100;
    }

    public double litrosParaMl(double litros) {
        return litros * 1000;
    }
}

Entendeu?
Uma classe nem sempre terá atributos, nem sempre terá métodos, nem sempre terá nome…

L

Cara, você é fera! Agora entendi, eu pensava que sempre teria que ter atributos em uma classe.

staroski

Há algum tempo eu criei uma classe com funcionalidade parecida.
A unica diferença é que a minha classe converte temperaturas.
Mas a ideia é a mesma. :slight_smile:

Fonte:

Exemplo de uso:

Unit.Celsius celsius = Unit.celsius(25);
Unit.Farenheit farenheit = celsius.toFarenheit();
Unit.Kelvin kelvin = celsius.toKelvin();
System.out.printf("%s C = %s F%n", celsius, farenheit);
System.out.printf("%s C = %s K%n", celsius, kelvin);

farenheit = Unit.farenheit(77);
celsius = farenheit.toCelsius();
kelvin = farenheit.toKelvin();
System.out.printf("%s F = %s C%n", farenheit, celsius);
System.out.printf("%s F = %s K%n", farenheit, kelvin);

kelvin = Unit.kelvin(298.15);
farenheit = kelvin.toFarenheit();
celsius = kelvin.toCelsius();
System.out.printf("%s K = %s F%n", kelvin, farenheit);
System.out.printf("%s K = %s C%n", kelvin, celsius);
L
Solucao aceita

@staroski realmente é bem parecido com o que pensei em fazer, muito obrigado pela ajuda.

Criado 12 de julho de 2018
Ultima resposta 13 de jul. de 2018
Respostas 8
Participantes 3