Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Vytvorte GravityObject abstraktné triedu . Budete chcieť vytvoriť GravityObject ako abstraktné triedy . Deklarácia triedy byť abstrakt v jazyku Java naznačuje kompilátora , že chceme táto trieda bude slúžiť ako model , ktorý bude používaný iných tried , ale nemali by byť vytvorená trieda sama . To dáva zmysel pre príklad slnečnej sústavy : nie je tam žiadna taká vec ako " GravityObject " , ale tam sú veci , ako sú planéty a hviezdy , ktoré sú predmety , ktoré majú , a sú ovplyvnené gravitáciou . Stačí iba napísať programovanie pre neho raz . V objektovo orientovaného dizajnu , táto vlastnosť sa nazýva dedičnosť
Zadajte do vášho GravityObject súboru :
public abstract class GravityObject { double xPosition , double yPosition , double degreeInOrbit , double distanceFromParent ;
.
GravityObject ( ) { this.distance = 0 ; }
GravityObject ( double vzdialenosť ) { this.distance = vzdialenosť ; } }
Toto je jednoduchý príklad , takže budete Používajte iba xay polohy objektu , spolu so vzdialenosťou od jej materskej spoločnosti a štúdiá premenné . Dalo by sa neskôr vytvoriť ďalšie abstraktné triedu , 3DGravityObject alebo RelativisticGravityObject , a mať to dedí z tohto objektu . To vám umožní pridať podrobnosti o veci , ktoré sa menia .
3
Vytvorte OrbitalSystem abstraktné triedu . Táto trieda bude tiež abstraktné , ale bude zložitejšie , než je trieda GravityObject
import java.util.ArrayList ; .
Public abstract class OrbitalSystem rozširuje GravityObject { private ArrayList deti = new ArrayList ( ) ; //Objekty v systéme . Budú obiehať rodičia klipart
public void add ( GravityObject dieťa ) { children.add ( dieťa ) ; } .
Public void tick ( ) { for ( int x = 0 ; x < children.size ( ) ; x + + ) { GravityObject prúd = children.get ( x ) ; current.degree + = 1current.xPosition = this.xPosition + Math.cos ( degree/180 * Math.PI ) * current.distance ; prúd . yPosition = this.yPosition - Math.sin ( degree/180 * Math.PI ) * current.distance ; } ( pozri odkazy 2 )
} }
trieda rozširuje triedu GravityObject . ArrayList obsahuje všetky GravityObjects , a vyhlásila , že je variabilný ako súkromný , takže môžete vynútiť iných tried použiť funkciu add , zabezpečiť , že iba GravityObjects môžu byť pridané do poľa . To ilustruje dve ďalšie dôležité OOD koncepty okrem dedičnosti . Prvý z nich je dát skrýva : utesnením to preč , ste zabezpečené, že ostatné časti programu nemožno získať prístup , a dať neplatné informácie do neho . Druhým je polymorfizmus , čo nám umožňuje odkazovať na objekt pomocou nielen vlastné mená , ale mená niektorý z jeho predkov . To umožňuje veľkú flexibilitu pri písaní kódu .
4
Napíšte planéta a hviezda triedy . Pretože väčšina prác bola vykonaná v abstraktných OrbitalSystem a GravityObject tried , budú kurzy Planet a Star byť jednoduchý
public class hviezda rozširuje OrbitalSystem { } ; .
A
public class Planet rozširuje GravityObject { } ;
5
Napíšte hlavnú triedu . Váš hlavný funkcia by mala vyzerať takto :
public static int main ( String [ ] args ) { spoločnosti Star s = new hviezda ( ) ; //Vytvorenie nového star.s.add ( nový Planet ( 20 ) ) //Pridať planétu na obežnej systému hviezdy , ktorá obieha vo vzdialenosti 20 units.s.add ( nový Planet ( 66 ) ) ; //Pridať ďalšiu planétu na obežnej systému hviezdy , ktorá obieha vo vzdialenosti 66 jednotiek .
while ( true ) { s.tick ( ) ; } .
}
Tým sa vytvorí hviezdu a dve obiehajúce planéty , a nastaví im v pohybe