Modelagem de um sistema solar em Java , além de ser divertido , é um bom exercício para ilustrar e praticar o pensamento em termos de alguns conceitos básicos em Design Orientado a Objeto ( OOD) , especialmente herança e polimorfismo . Você pode aprender conceitos OOD com um modelo de sistema solar build- your-own simples. Coisas que você precisa
computador
Desenvolvimento Java Software Development Kit (SDK)
editor de texto ou Java Ambiente de Desenvolvimento Integrado (IDE)
Mostrar Mais instruções
1 < br > 2
Criar GravityObject classe abstrata . Você vai querer criar o seu GravityObject como uma classe abstrata. Declarando uma classe para ser resumo em Java indica ao compilador que queremos esta classe para servir como um modelo para ser usado por outras classes , mas a classe não devem ser criados em si . Isso faz sentido para o exemplo de sistema solar : não existe tal coisa como um " GravityObject " , no entanto, existem coisas como planetas e estrelas , que são objetos que têm e são afetados pela gravidade. Você só escrever a programação para ele uma vez. Em Design Orientado a Objeto , esta característica é chamado herança
Digite isso no seu arquivo GravityObject :
public class abstrato GravityObject {double xPosition ; dupla yPosition ; dupla degreeInOrbit ; dupla distanceFromParent ;
.
GravityObject () { this.distance = 0; }
GravityObject (double distância ) { this.distance = distância ;}}
Este é um exemplo simples , assim você vai use apenas as posições X e y do objeto , juntamente com a distância de seu pai e uma variável de grau . Você pode mais tarde criar uma outra classe abstrata, ou 3DGravityObject RelativisticGravityObject , e tê-lo herdar este objeto. Isso permitirá que você adicione os detalhes para as coisas que mudam.
3
Criar a classe abstrata OrbitalSystem . Essa classe também irá ser abstrato , mas será mais sofisticado do que a classe GravityObject
java.util.ArrayList importação; .
Public abstract class OrbitalSystem estende GravityObject { ArrayList crianças privadas = new ArrayList ( ) //objetos dentro do sistema. Eles orbitam o pai
add public void ( GravityObject criança ) { children.add (criança) ;} .
Carrapato public void () {for (int x = 0; x < children.size ( ) ; x + + ) { corrente GravityObject = children.get ( x ) ; current.degree + = 1current.xPosition = this.xPosition + matemática.Cos ( degree/180 Math.PI * ) * current.distance ; actual . yPosition = this.yPosition - Math.sin ( degree/180 * Math.PI ) * current.distance ;} (ver referências 2)
}}
a classe estende a classe GravityObject . O ArrayList contém todos GravityObjects , e declarou sua variável privada de modo que você pode forçar outras classes para usar a função add , garantindo que apenas GravityObjects pode ser adicionado à matriz . Isso ilustra dois outros conceitos importantes OOD além de herança. A primeira é a ocultação de dados : por meio de selagem -lo , você garantiu que outras partes do programa não pode acessá-lo e colocar informações inválidas para ele. O segundo é o polimorfismo, o que nos permite fazer referência a um objeto usando não só os seus próprios nomes , mas os nomes de qualquer um de seus ancestrais . Isto permite uma grande flexibilidade na escrita de código .
4
Escrever aulas planeta e da estrela. Como a maior parte do trabalho já foi feito nas aulas OrbitalSystem e GravityObject abstratas, as classes do planeta e da estrela será simples
public class Estrela estende OrbitalSystem {}; .
E
public class Planeta estende GravityObject {};
5
Escrever classe principal. Sua principal função deve ter a seguinte aparência :
public static int main ( String [] args ) { s = new Estrela Estrela () //Cria um novo star.s.add ( novo Planeta (20) ) //Adicionar um planeta do sistema orbital da estrela que orbita a uma distância de 20 units.s.add ( novo planeta (66) ) //Adicionar um outro planeta para o sistema orbital da estrela que orbita a uma distância de 66 unidades .
while ( true) { s.tick ();} .
}
Isto irá criar uma estrela e dois planetas em órbita, e vai colocá-las em movimento