Tecnología

Inicio

Cómo construir su propio sistema solar en Java

Modelado de un sistema solar en Java, además de ser divertido, es un buen ejercicio para ilustrar la práctica y el pensamiento en términos de algunos conceptos básicos de diseño orientado a objetos (OOD), especialmente la herencia y polimorfismo. Usted puede aprender conceptos OOD con un sencillo modelo de sistema solar de construcción-su-propio.

Instrucciones

1 Crear los archivos de clases. Crear una estructura esquelética para su sistema solar mediante la creación de los archivos de clase básicas. No se preocupe de lo que sucede en ellos en este momento. Basta con crear los archivos Java siga:

GravityObject.java
OrbitalSystem.java
Star.java
Planet.java

Es posible agregar más a esto más adelante si lo desea. Por ejemplo, se podría añadir una clase de la luna, y se podría añadir tipos de planetas y estrellas.

2 Crear clase abstracta GravityObject. Usted desea crear su GravityObject como una clase abstracta. La declaración de una clase para ser abstracta en Java indica al compilador que queremos que esta clase sirva como modelo para ser utilizado por otras clases, pero la clase no se debe crear en sí. Esto tiene sentido para el ejemplo de 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 escribir la programación de una vez. En Diseño Orientado a Objetos, este rasgo se denomina herencia.

Escribe esto en su archivo GravityObject:

clase abstracta pública GravityObject {
xPosition doble;
doble yPosition
IR
doble degreeInOrbit
IR
doble distanceFromParent
IR

GravityObject () {
this.distance = 0
IR
}

GravityObject (distancia doble) {
this.distance = distancia
IR
}
}

Este es un ejemplo sencillo, por lo que sólo vamos a usar las posiciones x e y del objeto, junto con la distancia de su padre y un grado variable. Se podría crear más adelante otra clase abstracta, 3DGravityObject o RelativisticGravityObject, y tienen que herede de este objeto. Esto le permitirá añadir los detalles de las cosas que cambian.

3 Crear la clase abstracta OrbitalSystem. Esta clase también será abstracta, sino que será más sofisticado que la clase GravityObject.

importación java.util.ArrayList
IR

OrbitalSystem clase abstracta pública se extiende GravityObject {
los niños privados de ArrayList = new ArrayList (); // Objetos dentro del sistema. Ellos órbita alrededor de la matriz.

public void add (niño GravityObject) {children.add (niño); }

garrapata public void () {
for (int x = 0; x <children.size (); x ++) {
GravityObject actual = children.get (x)
IR
current.degree + = 1
current.xPosition = this.xPosition + Math.cos (/ 180

Math.PI grado) current.distance
IR
current.yPosition = this.yPosition - Math.sin (grado / 180 Math.PI) current.distance
IR
} (Véanse las referencias 2)

}
}

La clase extiende la clase GravityObject. El ArrayList tiene todos GravityObjects, y declaró su variable privada para que pueda forzar a otras clases para utilizar la función de complemento, asegurando 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 a la basura, se ha asegurado de que otras partes del programa no pueden acceder a él y poner información no válida en ella. El segundo es el polimorfismo, lo que nos permite hacer referencia 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 Escribe clases de planetas y estrellas. Dado que la mayor parte del trabajo se ha hecho en las clases y OrbitalSystem GravityObject abstractas, las clases planeta y la estrella serán simples.

Estrella clase pública se extiende OrbitalSystem {}
IR

y

Planeta clase pública se extiende GravityObject {};

5 Escribe clase principal. Su función principal debe ser similar a la siguiente:

principales argumentos (String []) {int public static
Estrella s = new Star (); // Crear una nueva estrella.
s.add (nuevo planeta (20)); // Añadir un planeta al sistema orbital de la estrella que orbita a una distancia de 20 unidades.
s.add (nuevo planeta (66)); // Añadir otro planeta al sistema orbital de la estrella que orbita a una distancia de 66 unidades.

while (true) {
palo()
IR
}

}

Esto creará una estrella y dos planetas que orbitan, y ponerlas en marcha.