Modellieren einer Solaranlage in Java, abgesehen davon, dass Spaß, ist eine gute Übung, um zu veranschaulichen, und üben das Denken in Bezug auf einige grundlegende Konzepte in Object Oriented Design ( OOD ), insbesondere Vererbung und Polymorphismus . Sie können OOD Konzepte mit einem einfachen Aufbau -your-own Sonnensystem Modell zu lernen . Things You
Computer Java Software Development Kit (SDK) Kunst-Text -Editor oder Java Integrated Development Environment (IDE)
brauchen anzeigen Weitere Anweisungen
1
2
erstellen GravityObject abstrakte Klasse . Sie wollen Ihre GravityObject als abstrakte Klasse erstellen. Die Deklaration einer Klasse zu sein, in Java abstrakt zeigt dem Compiler mit, dass wir diese Klasse als Modell von anderen Klassen verwendet werden dienen wollen, aber die Klasse nicht selbst erstellt werden. Dies macht Sinn, für die Solaranlage beispielsweise : Es gibt keine solche Sache wie eine " GravityObject " , aber es gibt Dinge, wie Planeten und Sterne , die Objekte, die haben und von der Schwerkraft beeinflusst sind . Sie schreiben nur die Programmierung für sie einmal. In objektorientierten Design , wird diese Eigenschaft als Vererbung
Art diese in Ihre GravityObject Datei :
public abstract class GravityObject {double xPosition , Doppel yPosition , Doppel degreeInOrbit , Doppel distanceFromParent ;
.
GravityObject () { this.distance = 0; }
GravityObject (doppelte Entfernung ) { this.distance = Abstand ;}}
Dies ist ein einfaches Beispiel ist , so dass Sie nur die x -und y- Positionen des Objektes zusammen mit der Entfernung von der übergeordneten und einem Grad einstellbar . Sie könnten später einen weiteren abstrakte Klasse , 3DGravityObject oder RelativisticGravityObject , und haben es von diesem Objekt erben. Dies ermöglicht es Ihnen , um die Details für Dinge, die ändern .
3
die OrbitalSystem abstrakten Klasse erstellen hinzuzufügen. Diese Klasse wird auch abstrakt sein , wird aber komplizierter sein als die GravityObject Klasse
Import java.util.ArrayList ; .
Public abstract class OrbitalSystem erstreckt GravityObject {private ArrayList Kinder = new ArrayList ( ); //Objekte innerhalb des Systems. Sie werden umkreisen die übergeordneten
public void add ( GravityObject Kind) { children.add ( Kind );} .
Public void tick () { for (int x = 0; x < children.size (); x + +) { GravityObject current = children.get (x); current.degree + = 1current.xPosition = this.xPosition + Math.cos ( degree/180 * Math.PI ) * current.distance ; aktuellen . yPosition = this.yPosition - Math.sin ( degree/180 * Math.PI ) * current.distance ;} (siehe Referenzen 2)
}}
Die Klasse erweitert die Klasse GravityObject . Die ArrayList hält alle GravityObjects und erklärte seine variable privaten , so dass Sie zu zwingen können andere Klassen , um das Add -Funktion verwenden , um sicherzustellen, dass nur GravityObjects zum Array hinzugefügt werden können. Dies zeigt, zwei weitere wichtige Begriffe OOD neben Vererbung. Die erste ist, Daten Versteck : durch Abdichten es weg , du hast dafür gesorgt, dass andere Teile des Programms können nicht darauf zugreifen und legte ungültige Informationen hinein. Das zweite ist, Polymorphismus , die uns zu einem Objekt mit nicht nur seine eigenen Namen beziehen können , aber die Namen von einem seiner Vorfahren. Dies ermöglicht eine große Flexibilität in das Schreiben von Code .
4
schreiben Planeten und Sterne -Klassen. Da der Großteil der Arbeit in der abstrakten OrbitalSystem und GravityObject Klassen getan worden , wird der Planet und Stern Klassen einfach
public class Stern erstreckt OrbitalSystem {}; .
Und Bilder < p> public class Planet erstreckt GravityObject {};
5
schreiben Hauptklasse . Ihre Hauptfunktion sollte wie folgt aussehen:
public static int main ( String [] args) { Stern s = new Star ( ); //Neues star.s.add ( neue Planet (20) ); //in einen Planeten des Sterns Orbital , das in einer Entfernung von 20 units.s.add ( neue Planet (66) ) umkreist ; //in einen anderen Planeten des Sterns Orbital , das in einem Abstand von 66 Einheiten umkreist .
while ( true) { s.tick ();} }
Dies wird einen Stern umkreisenden Planeten und zwei zu schaffen , und wird sie in Bewegung zu setzen < . br>