Estações
public enum Estação {
PRIMAVERA, VERÃO, OUTONO, INVERNO
}
Planetas: 1ª versão
public enum Planeta {
MERCÚRIO (3.303e+23, 2.4397e6),
VÉNUS (4.869e+24, 6.0518e6),
TERRA (5.976e+24, 6.37814e6),
MARTE (6.421e+23, 3.3972e6),
JÚPITER (1.9e+27, 7.1492e7),
SATURNO (5.688e+26, 6.0268e7),
URANO (8.686e+25, 2.5559e7),
NEPTUNO (1.024e+26, 2.4746e7),
PLUTÃO (1.27e+22, 1.137e6);
// constante de gravitação universal
public static final double G = 6.67300E-11; // m³/kg/s²
private double _massa; // kg
private double _raio; // m
public double massa() { return _massa; }
public double raio() { return _raio; }
Planeta(double massa, double raio) { _massa = massa; _raio = raio; }
// gravidade à superfície
public double gravidade() { return G * _massa / (_raio * _raio); }
// peso (N) de outra massa (kg) à superfície
public double peso(double massa) { return massa * gravidade(); }
}
Experiência 1
Programa de Teste
public class Teste1 {
public static void main(String[] args) {
System.out.println("** " + Estação.PRIMAVERA.getClass().getCanonicalName());
for (Estação e : Estação.values()) {
System.out.println(e);
}
System.out.println("** " + Planeta.MERCÚRIO.getClass().getCanonicalName());
for (Planeta p : Planeta.values()) {
System.out.println(p);
}
// Planeta x = new Planeta(2.5e22, 2e6); // erro: tipo não pode ser instanciado
}
}
Resultados
$ java Teste1
** Estação
PRIMAVERA
VERÃO
OUTONO
INVERNO
** Planeta
MERCÚRIO
VÉNUS
TERRA
MARTE
JÚPITER
SATURNO
URANO
NEPTUNO
PLUTÃO
Experiência 2
Programa de Teste
public class Teste2 {
public static void main(String[] args) {
double pesoNaTerra = Double.parseDouble(args[0]);
double massa = pesoNaTerra / Planeta.TERRA.gravidade();
for (Planeta p : Planeta.values()) {
System.out.printf("Peso em %s é %f%n", p, p.peso(massa));
}
}
}
Resultados
$ java Teste2 81
Peso em MERCÚRIO é 30.598367
Peso em VÉNUS é 73.304927
Peso em TERRA é 81.000000
Peso em MARTE é 30.677712
Peso em JÚPITER é 204.975160
Peso em SATURNO é 86.347259
Peso em URANO é 73.315303
Peso em NEPTUNO é 92.204574
Peso em PLUTÃO é 5.416831