Δημιουργία GravityObject αφηρημένη κατηγορία . Θα θελήσετε να δημιουργήσετε GravityObject σας ως μια αφηρημένη τάξη . Δηλώνοντας μια τάξη για να είναι αφηρημένη σε Java υποδεικνύει στον compiler που θέλουμε αυτή η κατηγορία να χρησιμεύσει ως πρότυπο για να χρησιμοποιηθούν από άλλες κλάσεις , αλλά η κλάση δεν θα πρέπει να δημιουργήσει η ίδια . Αυτό έχει νόημα για το ηλιακό σύστημα παράδειγμα : δεν υπάρχει τέτοιο πράγμα όπως μια « GravityObject » , ωστόσο υπάρχουν πράγματα , όπως οι πλανήτες και τα αστέρια , τα οποία είναι αντικείμενα τα οποία έχουν και επηρεάζεται από τη βαρύτητα . Μπορείτε να γράψετε μόνο τον προγραμματισμό για αυτό μία φορά . Σε Αντικειμενοστραφής Σχεδιασμός , αυτό το χαρακτηριστικό ονομάζεται Κληρονομικότητα
Πληκτρολογήστε αυτό στο αρχείο GravityObject σας :
public abstract class GravityObject { διπλό XPOSITION ? Διπλή yPosition ? Διπλή degreeInOrbit ? Διπλή distanceFromParent ?
.
GravityObject ( ) { this.distance = 0 ? }
GravityObject ( διπλάσια απόσταση ) { this.distance = απόσταση ? } }
Αυτό είναι ένα απλό παράδειγμα , έτσι θα χρησιμοποιήσετε μόνο το x και y θέσεις του αντικειμένου , μαζί με την απόσταση από τη μητρική της και ένα μεταβλητό βαθμό. Θα μπορούσε αργότερα να δημιουργήσετε μια άλλη αφηρημένη κατηγορία , 3DGravityObject ή RelativisticGravityObject , και έχουν κληρονομήσει από αυτό το αντικείμενο . Αυτό θα σας επιτρέψει να προσθέσετε τις λεπτομέρειες για πράγματα που αλλάζουν .
Εικόνων 3
Δημιουργήστε το OrbitalSystem αφηρημένη κατηγορία . Η κατηγορία αυτή θα πρέπει επίσης να είναι αφηρημένη , αλλά θα είναι πιο εξελιγμένα από την κατηγορία GravityObject
java.util.ArrayList εισαγωγής ? .
Δημόσια αφηρημένη κατηγορία OrbitalSystem επεκτείνει GravityObject { ιδιωτική παιδιά ArrayList = νέα ArrayList ( ) ? //Αντικείμενα εντός του συστήματος . Θα τροχιά γύρω από τη μητρική
add public void ( GravityObject παιδί ) { children.add ( παιδί) ? } .
Public void tick ( ) { για ( int x = 0 ? X } } Η κλάση επεκτείνει την κλάση GravityObject . Η ArrayList κατέχει όλα τα GravityObjects , και δήλωσε μεταβλητή ιδιωτική του , έτσι ώστε να μπορεί να αναγκάσει άλλες τάξεις να χρησιμοποιήσετε τη λειτουργία πρόσθετο , εξασφαλίζοντας ότι μόνο GravityObjects μπορούν να προστεθούν στον πίνακα . Αυτό απεικονίζει δύο άλλες σημαντικές έννοιες OOD εκτός κληρονομιά . Το πρώτο είναι η κρυψώνα δεδομένα: με τη σφράγιση μακριά, έχετε εξασφαλίσει ότι τα άλλα μέρη του προγράμματος δεν μπορούν να έχουν πρόσβαση και να θέσει έγκυρες πληροφορίες σε αυτό . Το δεύτερο είναι πολυμορφισμός , η οποία μας επιτρέπει να αναφερθώ σε ένα αντικείμενο χρησιμοποιώντας όχι μόνο τα δικά σας ονόματα , αλλά τα ονόματα οποιουδήποτε από τους προγόνους του . Αυτό επιτρέπει μεγάλη ευελιξία στην σύνταξη κώδικα. Γράψτε τον πλανήτη και το αστέρι κατηγορίες . Δεδομένου ότι το μεγαλύτερο μέρος του έργου έχει γίνει με την αφηρημένη OrbitalSystem και GravityObject τάξεις , οι τάξεις Planet και Star θα είναι απλή δημόσια τάξη Αστέρια επεκτείνει OrbitalSystem { } ? . Και δημόσια τάξη Planet επεκτείνει GravityObject { } ? Γράψτε κύρια κατηγορία . Η κύρια λειτουργία σας θα πρέπει να μοιάζει με το παρακάτω : δημόσια στατική int main ( String [ ] args ) { Αστέρων s = νέα Star ( ) ? //Δημιουργήστε ένα νέο star.s.add ( νέο Planet ( 20 ) ) ? //Προσθέστε έναν πλανήτη στο τροχιακό σύστημα του άστρου που βρίσκεται σε τροχιά γύρω σε απόσταση 20 units.s.add ( νέο Planet ( 66 ) ) ? //Προσθέστε άλλο πλανήτη στο τροχιακό σύστημα του άστρου που βρίσκεται σε τροχιά γύρω σε απόσταση 66 μονάδες . ενώ η (πραγματική ) { s.tick ( ) ? } . } Αυτό θα δημιουργήσει ένα αστέρι και δύο πλανήτες , και θα τους θέσει σε κίνηση
Η 4
5
Η
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα