Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Object Oriented Programming

Îåêßíçóå áðü ôï ìÝëïò dpal. Τελευταία δημοσίευση από το μέλος Aris στις 01-04-2005, 21:06. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-02-2005, 11:05 1184

    Object Oriented Programming

    Δουλεύοντας με stuctured programming (VB6) και προσπαθώντας να μάθω και να εφαρμόσω (αν μάθω...) OO Programming δεν μπορώ να βρώ κάποιο βιβλίο που να καλύπτει το θέμα διεξοδικά.

    Δεν μιλάω φυσικά για το τι είναι Inheritance, Polymorphism, κ.τ.λ. Από αυτά μας έχει φουσκώσει η μαμά MS και ο κάθε τυχαίος ή μη που θέλει κάτι να γράψει στο site ή στο Blog του. Είμαι πεπεισμένος ότι μισοί από αυτούς δεν γνωρίζουν το ζήτημα (ημιμαθείς είναι η σωστή λέξη) και απλώς μπλά-μπλα-δίζουν πάνω σε C# και VB.Net. Μιλάω για το πώς ξεκινάς από το Design, τι πρέπει να προσέξεις στο Implementation, τι προσφέρει, τι μειονεκτήματα έχει, πότε δεν πρέπει να χρησιμοποιείται κ.τ.λ....

    IdeaΤο καλύτερο που βρήκα μέχρι τώρα σχετικά με OOP είναι το πρώτο κεφάλαιο (δεν έχω διαβάσει παρακάτω ακόμα...) από το "Holub on Patterns: Learning Design Patterns by Looking at Code" by Allen Holub (ISBN: 159059388X) όπου αναλύει πολλά μη προφανή (σε εμένα τουλάχιστον) στα οποία όμως ανιχνεύω αλήθεια και αποτελεσματικότητα.

    Σχετικά με τα όποια site με patterns  (ακόμα και αυτό της MS που ανέφερε ο gcapnias) τα βλέπω ώς απλά Memo's άλλα σε καμιά περίπτωση ώς βοηθητικά για να μάθει κάποιος. Να δούμε αν θα ωριμάσουν με τον καιρό...

    Σε ότι δε αφορά τους Developers... ο καθένας έχει την δική του γνώμη για το τι είναι OOP και πώς γίνεται σωστά [<:o)] 

    π.χ. Οι πιο πολλοί νομίζουν ότι εάν είναι ο όλος ο κώδικας σε Classes και χρησιμοποιούμε τα get/set για να δούμε τα δεδομένα τους τότε είμαστε OO Gourous...

    Αλλά μάλλον όχι. Κατά Allen Holub δεν είναι εκεί η ουσία άλλα αντίθετα στο ρητό:
    "Never ask an object for information that you need to do something; rather ask the object that has the information to do the work for you" (aka minimize the use of get/set).

    Κρίνοντας από την ποιότητα στα posts σε άλλα θέματα (αν δεν παινέψεις το σπίτι....) περιμένω τις υποδείξεις άλλα και τις διορθώσεις σας!


    Δημήτρης Παλαιοκώστας
  •  15-02-2005, 11:44 1185 σε απάντηση της 1184

    Re: Object Oriented Programming

    Ειχα ετοιμάσει ένα μεγάλο - μεγάλο μήνυμα σαν απαντηση αλλα ας όψεται η σύνδεση...το έφαγε η μαρμάγκα (επεσε η σύνδεση στιγμιαία για 2 δευτερόλεπτα, την ώρα που πατησα το submit και από εδώ πάνε και οι άλλοι)...Smile

    Ρίξε πάντως μια ματιά στο Professional Design Patterns in VB.Net: Building Adaptable Applications. Περιέχει μια σειρά επιλεγμένων GoF design patterns καθώς και μια υλοποίηση του MVC με κώδικα σε VB.NET.

    Γενικά για το OOP/ΟΟD παντως, προσωπική μου άποψη είναι οτι δεν αποτελεί πανάκεια. Δυστυχώς μου έφαγε η μαρμάγκα το post των 6 παραγράφων που εξηγούσα το ...γιατί, θα επιχειρήσω αργότερα να το τεκμηριώσω.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  15-02-2005, 12:09 1186 σε απάντηση της 1184

    Re: Object Oriented Programming

     dpal wrote:
    Δουλεύοντας με stuctured programming (VB6) και προσπαθώντας να μάθω και να εφαρμόσω (αν μάθω...) OO Programming δεν μπορώ να βρω κάποιο βιβλίο που να καλύπτει το θέμα διεξοδικά.

    Η αλήθεια εδώ είναι ότι δεν υπάρχουν και πολλά resources πάνω στο θέμα. Είναι γενικά ένα λεπτό θέμα όσο έχει να κάνει με τους VB developers. Δεν έχουμε από καμιά μεριά τα "best of" ούτε "best practices". Και όσα βιβλία έχουν να κάνουν με το πρόβλημα έχουν εμφανιστεί τον τελευταίο καιρό.

     dpal wrote:
    Δεν μιλάω φυσικά για το τι είναι Inheritance, Polymorphism, κ.τ.λ. Από αυτά μας έχει φουσκώσει η μαμά MS και ο κάθε τυχαίος ή μη που θέλει κάτι να γράψει στο site ή στο Blog του. Είμαι πεπεισμένος ότι μισοί από αυτούς δεν γνωρίζουν το ζήτημα (ημιμαθείς είναι η σωστή λέξη) και απλώς μπλά-μπλα-δίζουν πάνω σε C# και VB.Net. Μιλάω για το πώς ξεκινάς από το Design, τι πρέπει να προσέξεις στο Implementation, τι προσφέρει, τι μειονεκτήματα έχει, πότε δεν πρέπει να χρησιμοποιείται κ.τ.λ....

    Ναι, σε αυτό μαζί σου. Όταν μαθαίνεις VB, μαθαίνεις όλα εκείνα τα τεχνικά πράγματα πως να κάνεις κλάσεις, να τους δίνεις ιδιότητες, να κάνεις public functions/sunroutines και να γίνονται οι μέθοδοι του αντικειμένου και να του προσθέτεις events που ειδοποιούν όλα τα άλλα κομμάτια κώδικα που τρέχουν μαζί με το δικό σου. Άντε στο πιο μεγάλο level εκπαίδευσης VB από την Microsoft μαθαίνεις πως συμπεριφέρεται η DNA πλατφόρμα, τα Component Services, τα Distributed και μη Transaction, ο SQL Server και αυτό ήταν.

    Όταν μαθαίνεις .ΝΕΤ προγραμματισμό, η Microsoft δεν έχει αλλάξει καθόλου τον τρόπο που παραδίδει την γνώση. Πάλι μιλάει για της γλώσσες και την αρχιτεκτονική του σε τεχνικό επίπεδο.

    Είναι σαν να έχουμε ένα σιδερά και του μιλάμε για καινούργιες τεχνικές πως να φτιάξει κάτι, πως να χρησιμοποιήσει το αμόνι του, κτλ... Κανένας δεν του λέει πως να είναι σιδεράς όμως! Κάτι αντίστοιχο συμβαίνει και με όλη την εκπαίδευση της Microsoft, υπολογίζουν ότι ο προγραμματιστής τα ξέρει όλα αυτά.

    Όλοι αυτοί οι προγραμματιστές του .NET, δεν ήταν όλοι ή οι περισσότεροι προγραμματιστές VB και δεν φτιάχτηκε το .NET Framework για τους προγραμματιστές VB! Όλοι αυτοί οι προγραμματιστές που τόσο καιρό τρωγόντουσαν με δύσκολες γλώσσες προγραμματισμού βλ C++ όπως και νεότερες του είδους βλ Java, από την στιγμή που είδαν το .NET έκαναν αυτό που δεν μπορούσαν να κάνουν τόσα χρόνια: Έχουν εκτοξεύσει στον ουρανό την παραγωγικότητα τους και οι VB προγραμματιστές τους κοιτάμε από την γη. Δεν είναι δυνατόν να κρατήσουμε τους ίδιους ρυθμούς με αυτούς και ποτέ δεν το κάναμε.

    Αυτά που ζητάς, είναι η εμπειρία που μαζεύεται πάνω στην γλώσσα από την χρήση της. Η VB είναι σε αυτή την μορφή που είναι πάνω κάτω η VB6 είναι από την VB5 SP2, όταν άρχισαν τα components της να είναι apartment threading. Μιλάμε περίπου δέκα χρόνια τώρα, άντε εννιά. Λογικό είναι να έχουμε "best practices" και "best of" γενικότερα. Δεν συμβαίνει αντίστοιχα το ίδιο και το .NET. Είναι πολύ μικρό χρόνο που υπάρχει και "συνεχώς αλλάζει"! Αν δεν σταθεροποιηθεί δεν νομίζω ότι θα ακολουθήσουν πολλοί πιστοί από την VB6...

     dpal wrote:
    Το καλύτερο που βρήκα μέχρι τώρα σχετικά με OOP είναι το πρώτο κεφάλαιο (δεν έχω διαβάσει παρακάτω ακόμα...) από το "Holub on Patterns: Learning Design Patterns by Looking at Code" by Allen Holub (ISBN: 159059388X) όπου αναλύει πολλά μη προφανή (σε εμένα τουλάχιστον) στα οποία όμως ανιχνεύω αλήθεια και αποτελεσματικότητα.

    Δυστυχώς δεν έχω κάτι έτοιμο να προτείνω επάνω σε αυτό, εκτός από ένα βιβλίο που είχε εμφανιστεί μαζί με το .NET Framework, ειδικά για ΟΟ και VB προγραμματιστές, αλλά έχει εξαφανιστεί πάνω από την βιβλιοθήκη μου εδώ και κάμποσο καιρό και πρέπει να το αναζητήσω... Smile

     dpal wrote:
    Σχετικά με τα όποια site με patterns  (ακόμα και αυτό της MS που ανέφερε ο gcapnias) τα βλέπω ως απλά Memo's άλλα σε καμιά περίπτωση ως βοηθητικά για να μάθει κάποιος. Να δούμε αν θα ωριμάσουν με τον καιρό...

    Μάλλον το αντίθετο... Έχε υπόψη σου ότι αυτά είναι πιο πολύ Frameworks και έχουν να πουν για λύσεις σε Enterprise επίπεδο. Αλίμονο αν θέλεις να κάνεις μια απλή εφαρμογή που διαχειρίζεται δεδομένα, και πρέπει να βάλεις μέσα ένα module που είναι από μόνο του σαν εκτελέσιμη μορφή περίπου 20MB!

    Αυτά τα Frameworks είναι πολύ ώριμα για τους VB developers. Προέρχονται από προγραμματιστές που έχουν μεγάλη πείρα στον χώρο του OO και του Enterprise computing. Δεν είναι πραγματικότητα για ένα περιβάλλον ενός VB developer! Δεν ήταν φτιαγμένος για αυτό, όχι, ότι δεν μπορούσε να φτάσει. Αυτό το ότι μπορούσε να φτάσει, τον έκανε αγαπητό.

     dpal wrote:
    Σε ότι δε αφορά τους Developers... ο καθένας έχει την δική του γνώμη για το τι είναι OOP και πώς γίνεται σωστά [<:o)]

    π.χ. Οι πιο πολλοί νομίζουν ότι εάν είναι ο όλος ο κώδικας σε Classes και χρησιμοποιούμε τα get/set για να δούμε τα δεδομένα τους τότε είμαστε OO Gourous...

    Ως γνωστό "best practice" είναι: ότι είναι get/set να το κάνεις public variable και ότι είναι μόνο get ή set να το κάνεις property. Smile Αυτό από τα "παλιά χρόνια" των VB προγραμματιστών!

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  15-02-2005, 12:11 1187 σε απάντηση της 1185

    Re: Object Oriented Programming

     cap wrote:
    Ειχα ετοιμάσει ένα μεγάλο - μεγάλο μήνυμα σαν απαντηση αλλα ας όψεται η σύνδεση...το έφαγε η μαρμάγκα (επεσε η σύνδεση στιγμιαία για 2 δευτερόλεπτα, την ώρα που πατησα το submit και από εδώ πάνε και οι άλλοι)...Smile


    Καιρός να ενισχύσεις τον κρατικό μας φορέα τηλεπικοινωνιών, και να βάλεις μια σύνδεση ADSL... Big Smile

    George J.
    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  15-02-2005, 12:18 1188 σε απάντηση της 1187

    Re: Object Oriented Programming

    Χμ, και ποιός σου είπε οτι στις ADSL συνδέσεις δεν πέφτει το πράγμα; Smile
    Και στη δουλειά και σπίτι ADSL έχω, αλλά δυστυχώς η βροχή κάνει πολλά κακά...Smile

    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  15-02-2005, 12:33 1189 σε απάντηση της 1185

    Re: Object Oriented Programming

    Βιβλία για OOP υπάρχουν πολλά. Για VB όμως ... κανένα?!

    Εξήγηση: Το OOP χωρίς inheritance είναι σαν ψαρόσουπα χωρίς ψάρι. Συνεπώς, όλα τα καλά βιβλία έχουν βγει για C++, Java, Smalltalk (απ' όπου και ξεκίνησε). Πολύ δύσκολα θα βγει τώρα ένα καλό βιβλίο για OOP το οποίο να αναφέρεται σε VB.NET ή C#, απλά και μόνο γιατί ο χώρος έχει κορεσθεί. (Ίσως, γιατί η MS έχει προσλάβει όλους σχεδόν τους παλιούς μεγάλους συγγραφείς οπότε δεν ξέρεις τί μπορεί να βγει στο μέλλον).

    Όσο για το πως να κάνεις τη σχεδίαση ή την ανάλυση, υπάρχουν τόσα βιβλία όσα και μεθοδολογίες * 20 (κατά μέσο όρο). Το πρόβλημα είναι ότι τα βιβλία παρουσιάζουν ένα τρόπο σαν τυφλοσούρτι αλλά στην πραγματικότητα κανείς ποτέ δεν δουλεύει με αυτό τον τρόπο. Τελικά, παίρνεις ιδέες απ' όλους, τις συνδιάζεις και όταν έρθει η ώρα ασυνείδητα τις εφαρμόζεις όπως βολεύει.

    Ένα πολύ καλό βιβλίο είναι το Agile Software Development: Principles, Patterns and Practices, του Robert Martin (ISBN: 0-13-597444-5). Παρουσιάζει τις βασικές αρχές που πρέπει να ακολουθήσεις (π.χ. Loose Coupling), τα Patterns που μπορείς να χρησιμοποιήσεις για να τις εφαρμόσεις καθώς και case studies όπου δείχνει βήμα-βήμα πως προχώρησε η σχεδίαση, τις αλλαγές που έγιναν στο δρόμο. Σε βάζει κατευθείαν στο ζουμί χωρίς φλυαρίες και θεωρίες (θυμάσαι το Yourdon?).
      Και ο τρόπος δουλειάς που περιγράφει ταιριάζει στο ελληνικό περιβάλλον εργασίας (got it? Wink).

    Γενικώς, τα βιβλία για Patterns είναι μια καλή και γρήγορη παρουσίαση καλών σχεδιάσεων. Οπωσδήποτε θα πρέπει να πάρεις το GoF: Design patterns : elements of reusable OO Software, τουλάχιστον επειδή σε αυτό αναφέρονται όλα τα άλλα βιβλία.

    Και αναγκαστικά θα πρέπει να μάθεις C++ ή Java για να μπορείς να διαβάζεις τα παραδείγματα Smile.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-02-2005, 13:07 1190 σε απάντηση της 1189

    Re: Object Oriented Programming

     pkanavos wrote:
    Και αναγκαστικά θα πρέπει να μάθεις C++ ή Java για να μπορείς να διαβάζεις τα παραδείγματα Smile.


    Δυστυχώς αυτή είναι η αλήθεια. Μην ξεχνάμε και την ECMAScript 262 ή ανάλογα με τον κατασκευαστή JScript/Javascript/ActionScript/(ΟΤΙ)Script. Δεν είναι ότι ακριβώς οι προαναφερόμενες αλλά έχει και αυτή τη μαγεία της...

    George J.

    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  15-02-2005, 13:41 1191 σε απάντηση της 1184

    Re: Object Oriented Programming

    Παιδιά δεν ψάχνω μαγικό ραβδί για να μεταμορφωθώ από τη μια μέρα στην άλλη. Πιστεύω ότι από VB6 έχω κάνει αρκετά πράγματα (τουλάχιστον αυτά που λεει ο gcapnias) και έχω και έχω γράψει κώδικα που δεν ντρέπομαι να δείξω (τουλάχιστον μέχρι να μάθω κάτι νέο και καλύτερο...) σε ότι αφορά readability & maintainability.

    Αυτό που ψάχνω είναι να γλιτώσω το χρόνο που μου παίρνει να διαβάζω άσχετα πράγματα. Η εμπειρία ήταν και θα είναι είναι αναντικατάστατη. Σημαντικότερη όμως παραμένει η διαδικασία της μάθησης (διορθώστε με αν κάνω λάθος) όπου και προσπαθώ να είμαι πιο αποτελεσματικός σε σχέση με το χρόνο που θα δαπανήσω. Προτιμώ η εμπειρία να έρθει δεύτερη να κλείσει τα όποια κενά άφησε η μάθηση.

    Αυτή τη στιγμή έχω ένα project σε C# και προσπαθώ να μην γίνω ένας ακόμα VB6 developer που δεν πήρε χαμπάρι ότι άλλαξε γλώσσα. (πόσους τέτοιους ξέρετε?)

    Σε ότι αφορά τα παραδείγματα και την γλώσσα που απαιτούν, νομίζω ότι με την  C# είμαι σε θέση να καταλάβω (έτσι νιώθω τουλάχιστον).

    Σχετικά με την Java και πολύ περισσότερο την C++ …θεωρώ ότι ήταν λάθος καριέρας να μην ξεκινήσω από μια από αυτές γιατί ίσως αυτή η μια θα ήταν αρκετή...

    Από βιβλία τελικά μάλλον θα αγοράσω – δανειστώ το «Analysis Patterns : Reusable Object Models» (απο gcapnia από άλλο post) και θα συνεχίσω το «Holub on Patterns» άλλα και φυσικά όποιο άλλο βρω από αυτά που προτείνονται εδώ.

    P.S. Προσωπικά δεν χρησιμοποιώ Public Variables (ούτε στην VB6) πόσο μάλλον τώρα...(εκτός αν είναι Quick & Dirty)


    Δημήτρης Παλαιοκώστας
  •  17-02-2005, 16:50 1227 σε απάντηση της 1184

    Re: Object Oriented Programming

     dpal wrote:
    Κατά Allen Holub δεν είναι εκεί η ουσία άλλα αντίθετα στο ρητό:
    "Never ask an object for information that you need to do something; rather ask the object that has the information to do the work for you" (aka minimize the use of get/set).
    Τώρα μάλλον θα ανοίξω ιστορίες εδώ, αλλά κανείς δεν σχολίασε αυτό το μέρος του μηνύματος, που κατά την ταπεινή μου άποψη περιέχει πολύ ζουμί. 

    Δυστυχώς, λίγοι ασχολούνται με το θέμα encapsulation (σε αυτό αναφέρεται ο Holub), ενώ είναι ένα από τα σημαντικότερα θέματα / προβλήματα σε επίπεδο design εφαρμογών.  Με λίγα λόγια (διότι μόλις γύρισα, και γίνεται ένας πανικός εδώ!), τείνω να είμαι υπέρ του encapsulation περισσότερο από του inheritance, κυρίως για λόγους decoupling (αυτό και αν είναι μεγάλο θέμα προς συζήτηση).

    In any case, αυτό είναι ένα από τα μεγαλύτερα λάθη που βλέπω σε "object oriented" λύσεις:  πολλές classes με get/set οι οποίες ουσιαστικά χρησιμοποιούνται ως structures και τίποτε άλλο (άντε, έχουν και 2-3 methods, απλά και μόνο επειδή μπορούν!).  Δε λέω, υπάρχουν περιπτώσεις που είναι όντως σπαζοκεφαλιά το πως να φτιάξεις τα objects σου ώστε να έλαχιστοποιήσεις την χρήση των get/set μεταξύ τους, αλλά με λίγη σκέψη και καλή σχεδίαση, μπορούν να βγουν όμορφα αποτελέσματα.

    Έχει ένα καλό κομμάτι στο Design Patterns (GoF), κάπου στην αρχή που μιλάει για αυτό το θέμα (ότι δηλαδή το inheritance "σπάει" το encapsulation).  Sorry για το vague reference, αλλά τα βιβλία μου είναι σε κούτες!


    Patrick
  •  17-02-2005, 18:50 1230 σε απάντηση της 1227

    Re: Object Oriented Programming

    Surprise

    Καλά, εσύ δεν είσαι σε μήνα του μέλιτος? Δεν πρόλαβες να γυρίσεις και τόριξες πάλι στα forums? Τί πράγματα είναι αυτά?

    Συγκλονίζομαι!
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  01-04-2005, 21:06 1536 σε απάντηση της 1184

    Re: Object Oriented Programming

    Μιά και ο λόγος για patterns και βιβλία, μην ξεχνάτε και το Patterns of Enterprise Application Architecture (ISBN: 0-321-1274-20) του Martin Fowler (http://www.martinfowler.com)
    Aris
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems