Modelado de un sistema solar en Java, además de ser divertido , es un buen ejercicio para ilustrar y practicar pensar en términos de algunos conceptos básicos en el diseño orientado a objetos ( OOD ), especialmente de herencia y polimorfismo. Usted puede aprender conceptos OOD con un modelo del sistema solar construir -su-propio simple. Cosas que necesitará de computadora
Java Software Development Kit ( SDK ) editor de Texto Fotos, Java o Entorno de desarrollo integrado ( IDE )
Ver Más instrucciones
1 < br > 2
Crear GravityObject clase abstracta . Usted desea crear su GravityObject como una clase abstracta . Declaración de una clase para ser abstracta en Java indica al compilador que queremos esta clase para servir como un modelo para ser utilizado por otras clases , pero la clase no se debe crear en sí . Esto tiene sentido para el ejemplo del sistema solar : no hay tal cosa como un " GravityObject " , sin embargo, hay cosas como los planetas y las estrellas , que son objetos que tienen y son afectados por la gravedad. Sólo escribe la programación de una vez. En Diseño Orientado a Objetos , esta característica se denomina herencia
Tipo esto en su archivo GravityObject :
public abstract class GravityObject {double Xposition ; doble yPosition ; doble degreeInOrbit ; doble distanceFromParent ;
.
GravityObject () { this.distance = 0 ;}
GravityObject ( doble distancia ) { this.distance = distancia ;} }
Este es un ejemplo simple, por lo que sólo utilice las posiciones x e y del objeto , junto con la distancia a partir de su padre y un grado variable . Más tarde, puede crear otra clase abstracta , 3DGravityObject o RelativisticGravityObject , y tienen que heredar de este objeto. Esto le permitirá agregar los detalles de las cosas que cambian .
3
Crear la clase abstracta OrbitalSystem . Esta clase también será abstracto, sino que será más sofisticada que la clase GravityObject
importación java.util.ArrayList ; .
Pública OrbitalSystem clase abstracta se extiende GravityObject { niños privados ArrayList = new ArrayList ( ) ; //objetos dentro del sistema. Ellos orbitar los padres
public void add ( GravityObject hijo) { children.add ( hijo) ;} .
Pública garrapatas void ( ) {for (int x = 0 ; x < children.size ( ) x + + ) { GravityObject actual = children.get ( x); current.degree + = 1current.xPosition = this.xPosition + Math.cos ( degree/180 Math.PI * ) * current.distance ; corriente . yPosition = this.yPosition - Math.sin ( degree/180 Math.PI * ) * current.distance ;} ( ver referencias 2 )
} }
la clase extiende la clase GravityObject . El ArrayList contiene todos GravityObjects , y declaró su variable privada para que pueda obligar a otras clases para utilizar la función de complemento , lo que garantiza que sólo GravityObjects se pueden agregar a la matriz. Esto ilustra otros dos conceptos OOD importantes, además de la herencia. La primera es la ocultación de datos : mediante el sellado de la basura, se ha asegurado de que otras partes del programa no pueden acceder a ella y poner la información no válida en ella. El segundo es el polimorfismo, lo que nos permite referirnos a un objeto utilizando no sólo sus propios nombres , pero los nombres de cualquiera de sus ascendientes . Esto permite una gran flexibilidad en la escritura de código .
4
planeta escritura y clases de estrellas. Dado que la mayor parte del trabajo se ha hecho en el OrbitalSystem abstracta y clases GravityObject , el planeta y las clases de estrellas serán simples
Estrella clase pública se extiende OrbitalSystem {}; .
E imágenes < p > Planet clase pública se extiende GravityObject {};
5
Escribir clase principal . Su función principal debe ser similar al siguiente :
int main ( String [] args ) { public static estrella s = new Star ( ) ; //Crear un nuevo star.s.add ( nuevo planeta ( 20 ) ) //Añadir un planeta en el sistema orbital de la estrella que orbita a una distancia de 20 units.s.add ( nuevo planeta ( 66 ) ) //Agregar otro planeta en el sistema orbital de la estrella que orbita a una distancia de 66 unidades .
while ( true) { s.tick () ;} }
Esto creará una estrella y dos planetas en órbita , y ponerlos en movimiento < . br>