Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα,

 

Θα ήθελα να με παραπέμψει κάποιος σε κάποιο λινκ σχετικά με υλοποίηση κλάσεων σε κώδικα.

Συγκεκριμένα,με ενδιαφέρει με ενδιαφέρει να δω,πώς γίνεται όταν μία κλάση συσχετίζεται με τον εαυτό της.

Παράδειγμα,έχουμε κλάση Ξενοδοχείο Έχει Δωμάτια(κλάση),Εταιρία Έχει Εργαζομένους κτλ.

Όταν όμως πρόκειται για Πατέρα έχει Πατέρα;

Δημοσ.

Με τον ίδιο τρόπου που δημιουργείς ένα πεδίο σε μια class πχ

> private int a;

 

μπορείς να δημιουργείς πεδίο τύπου τις ίδιας τις class

 

πχ

 

>
class Paradeigma{
   public Paradeigma myPar;
}

 

κάτι τέτοιο όμως οδηγεί σε άπειρες αναφορές.

 

πχ όταν υλοποιήσεις μια κλάση

 

> Paradeigmaa = new Paradeigma(); 

 

έχεις άπειρες προσπελάσεις

 

> a.myPar.myPar.myPar.myPar... 

 

οποτε πρέπει να έχεις κάνει κάποιο καλο σχεδιασμό με το τι αντιπροσωπεύει το null και πως να το χειρίζεσαι.

 

Με βάση αυτό που ρωτάς θα σε παρέπεμπα να διαβάσεις λίγο σχετικά με τα objects σε java.

Έπειτα γενικότερα σε σχέση με αντικειμενοστραφή σχεδίαση.

Δημοσ.

Σε ευχαριστώ για τη βοήθεια κατ΄αρχήν.

 

Αυτό που θα με ενδιέφερε για παράδειγμα είναι αν δημιουργήσω αντικείμενο Α τύπου father και μετά θέλω να δηλώσω ότι ένα άλλο αντικείμενο Β επίσης τύπου father,πώς συνδέονται μεταξύ τους από τη στιγμή που το Β είναι ο πατέρας του Α;

Δημοσ. (επεξεργασμένο)

Μια πολύ πρόχειρη απάντηση σε αυτό που ζητάς είναι η εξής:

>
class Father{
private Father myFather;
// ... //
public getFather(){ return this.myFather; }
public setFather(Father father){ this.myFather = father; }
// ... //
}

>
public static void main(String[] args) {
Father a = new Father();
Father b = new Father();
a.setFather( b );
}

 

Παρολαυτά ο συγκεκριμένος σχεδιασμός δε μου φαίνεται και ιδιαιτερα καλός.

 

 

 

Μια, κατ εμέ, λίγο καλύτερη σκέψη είναι να έχεις τα αντικείμενα ανεξάρτητα και να χρησιμοποιήσεις κάποια δομή, ενδεχομένως δέντρου, για να εκφράσεις την συγγένεια και την σύνδεση.

 

Εξαρτάται βεβαια πάντα, τι θες να κανεις.

Επεξ/σία από moukoublen
Δημοσ.

Γιατί δεν σου φαίνεται καλή αυτή η σχεδίαση; Όταν θέλεις να υλοποιήσεις μια συνδεδεμένη δομή πώς αλλιώς μπορείς να το κάνεις; Δηλαδή αν γράφεις

 

>
public class ListNode
{
private ListNode next;
private int content;
}

 

τι διαφορά έχει από αυτό που προτείνεις;

Δημοσ.

Δεν (νομίζω οτι) είναι κάλο μέσα στην κλάση (που αντιπροσωπεύει μια λειτουργική οντότητα) να μπλέκεται ο κώδικας και η λειτουργικότητα της δομής του δέντρου.

 

Δηλαδή αφού φτιάξεις την κλάση σου και την ολοκληρώσεις, χρησιμοποιείς μετά είτε κάποια έτοιμη βιβλιοθήκη δέντρου είτε φτιάχνεις την δομή εσύ από την αρχή.

 

Αυτό που θέλω να πώ είναι το εξής.

>
public class ListNode
{
       private ListNode next;
       private Father content;
}

 

Δεν έχει μεγάλη διαφορά αυτό που ευνοώ. Αλλά νομίζω σημαντική.

Δημοσ.

Ναι κι εμένα μου φαίνεται πιο σωστό το να χρησιμοποιήσεις κάποια δομή για κάτι τέτοιο και να μη το μπλέξεις εντάσσοντας κώδικα που δηλώνει την συγγένεια και τη σχέση. Γενικότερα όσο πιο ξεκάθαροι είναι οι ρόλοι τόσο το καλύτερο. Γι'αυτό υπάρχουν και οι βιβλιοθήκες με τις δομές για να της χρησιμοποιούμε :P

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...