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

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

Δημοσ.

Καλησπέρα και χρόνια πολλά σε όλους. Η ερώτηση μου είναι η εξής: Έχουμε δυο κλάσεις Β και Γ οι οποίες κληρονομούν από την Α. Θέλω σε μια άλλη κλάση να έχω μια συλλογή από τις κλάσεις Β και Γ. Είναι καλύτερη τακτική να δημιοργήσω ξεχωριστή συλλογή για τα αντικείμενα της κλάσης Β και ξεχωριστή για την Γ ή να φτιάξω μια συλλογή από αντικείμενα της Α που θα περιλαμβάνει αντικείμενα της Β και Γ? Στην δεύτερη περίπτωση πως μπορώ εγώ να ξεχωρίσω ποιο αντικείμενο είναι της κλάσης Β και ποιο της Γ? 

Δημοσ.

Εξαρτάται από πολλά πράγματα. Και τα 2 μπορούν να δουλέψουν, οπότε το τι είναι καλύτερη τακτική εξαρτάται από το σκοπό σου.

 

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

Δημοσ.

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

 

Στο τελευταίο σκέλος της ερώτησής σου...μια quick and dirty απάντηση είναι ότι μπορείς να ξεχωρίσεις τη κλάση με το instanceof. Δηλαδή:

List<A> entities = fillList();

for (A a: entities) {
    if (a instanceof B ) {
     //....
    } else if (a instanceof C) {
     //...
    }
}

Θα διαπιστώσεις ότι και απο αυτόν το τρόπο θα προκύψουν προβλήματα/μειονεκτήματα. Εν ολίγοις αν δεν πεις ακριβώς τι θέλεις να κάνεις είναι δύσκολο να δώσουμε την σωστότερη απάντηση.

Δημοσ.

Η κύρια λειτουργία που θέλω να κάνω με αυτήν την συλλογή είναι να επιλέγω ΤΥΧΑΙΑ κάποιο αντικείμενο ( Η κλάση όμως παίζει ρόλο δηλαδή εγώ διαλέγω αν είναι Β ή Γ). Οπότε υποθέτω οτι η πρώτη προσέγγιση είναι καλύτερη έτσι? Θα πηγαίνω κατευθείαν στην συλλογή αντικειμένων πο υμε ενδιαφέρουν και θα κάνω random pick εκεί.

Δημοσ.

Στην δεύτερη περίπτωση πως μπορώ εγώ να ξεχωρίσω ποιο αντικείμενο είναι της κλάσης Β και ποιο της Γ? 

 

γιατι εχει σημασια αυτο?

Δημοσ.

Η κύρια λειτουργία που θέλω να κάνω με αυτήν την συλλογή είναι να επιλέγω ΤΥΧΑΙΑ κάποιο αντικείμενο ( Η κλάση όμως παίζει ρόλο δηλαδή εγώ διαλέγω αν είναι Β ή Γ). Οπότε υποθέτω οτι η πρώτη προσέγγιση είναι καλύτερη έτσι? Θα πηγαίνω κατευθείαν στην συλλογή αντικειμένων πο υμε ενδιαφέρουν και θα κάνω random pick εκεί.

 

Το θέμα είναι τι θέλεις τελικά να κάνεις με τα αντικείμενα

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

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

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

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

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

Σύνδεση

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

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