Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
margarita
Δημοσιεύσεις: 9
Εγγραφή: 16 Μάιος 2006 18:17

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από margarita » 19 Μάιος 2010 17:11

Εδώ και κάποια χρόνια προγραμματίζω σε PLSQL και ήρθε η ώρα να μεταβώ σε Java. Διάβασα 2 βιβλία, Thinking in Java και Head First Java.
Έκανα τα παραδειγματάκια αλλά δεν μπορώ να ξεκολλησω το μυαλό μου...
Θέλω να ξεκινήσω και να φτιάξω μια απλή(θεωρώ) java web εφαρμογή.
π.χ Έστω ότι έχω έναν πίνακα με Πελάτες.
Να πατάω ένα κουμπάκι να μου τους δείχνει ανα 10, να πατάω κουμπακι add και να προσθέτω έναν, να πατάω άλλο κουμπάκι και να κάνω edit τον επιλεγμένο, να πατάω ενα άλλο κουμπάκι και να κάνω delete.
Να αρχίσω λέγοντας ότι μου φαίνεται βουνό! :o
Έχω κατεβάσει την Java, weblogic, eclipse, Oracle XE.
Είδα και έπαθα να κάνω τον weblogic server να επικοινωνήσει με βάση. Κάτι πρέπει να κάνω λάθος στο google search. Δεν εξηγείτε αλλίως το γεγονός ότι δεν βρήκα ενα ΑΠΛΟ tutorial που να λέει πως επικοινωνούνε αυτα τα 2.
Έφτιαξα ενα JSP, που συνδέεται με την βάση μέσω JDBC και εμφανίζει σε ενα πινακακι τους πελάτες :kaloe: . Αυτά...
Το σκεπτικό μου είναι ότι πρέπει αυτό αλλά και τα υπόλοιπα που θέλω να υλοιποιήσω, πρέπει να είναι σε ξεχωριστές java classes, τις οποίες θα καλεί το jsp και να μην έχω χύμα java μέσα στο jsp.
Και εδώ είναι που κολλάω.
Δεν μπορώ να σκεφτώ την δομή του προγραμματός μου.
Εννοώ ότι δεν μπορώ να σκεφτώ τι classes πρέπει να φτιάξω.
Σκέφτομαι με procedures. Σκέφτομαι PLSQL.
Ότι δηλαδη πρέπει να κάνω μια μέθοδο που κάνει insert, μια που κάνει update, μια που κάνει delete και μία που κάνει select. Άντε και μια μέθοδο που κάνει connect στην database. Νομίζω ότι η σκέψη μου δεν είναι OO αλλα procedural.
Τι classes πρέπει να φτιάξω και γιατί;
Και πες ότι τις φτιάχνω. Πώς όλα αυτά τα αρχεια τα βάζω στον project folder;Πως θα πρέπει να κάνω configure το WEB-INF και όλα αυτά τα καινούρια για εμένα πράγματα;
Τι μου προτείνετε να κάνω;Τι άλλο να διαβάσω(Μην μου προτίνεται 10 βιβλία, κουράστικα...Είναι και τεράστια!!! άντε 1 ακόμα να το διαβάσω :reading: ...); Εσείς πως θα το κάνατε;

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από nbc » 19 Μάιος 2010 18:19

Μια χαρά τη βλέπω τη σκέψη σου :). Και αφού έφτασες στο σημείο να έχεις output είσαι σε καλό δρόμο.

Το web programming έχει μία σημαντικότατη διαφορά με το desktop στο οποίο είσαι συνηθισμένη, γι αυτό ίσως και μπερδεύεσαι. Δεν έχει να κάνει τόσο με τη procedural vs OO πρακτική. Έχει να κάνει με το γεγονός πως το web είναι stateless.

Στο desktop, η εφαρμογή είναι στη μνήμη από τη στιγμή που θα εκτελεστεί μέχρι τη στιγμή που θα κλείσει. Έχει, δε, την πολυτέλεια του άπλετου address space, των άφθονων resources και του χρόνου που απαιτείται για να κάνει initialization, να φορτώσει ότι βιβλιοθήκες χρειάζεται, κλπ.

Στο web τα πάντα είναι στενάχωρα. Η εφαρμογή φορτώνεται στιγμιαία, σε κάθε αίτηση σελίδας και κλείνει με την παράδοσή της. Στην επόμενη, πάλι απ' την αρχή. Αυτό απαιτεί τους απόλυτα μικρότερους χρόνους εκκίνησης και εκτέλεσης. Που σημαίνει, lazy loading των πάντων και συντηρητική χρήση των resources.

Αυτό μας υποχρεώνει ενίοτε να συμβιβαζόμαστε. Επιπροσθέτως, όπως έχεις ήδη διαπιστώσει, μια εφαρμογή web δεν μπορεί να είναι αμιγώς imperative, declarative ή functional. Πέραν του κώδικα, έχει και templates, και html και css και javascript, και όλα τα καλά.

Anyway, το πλέον χρησιμοποιούμενο design pattern ως αρχιτεκτονική της εφαρμογής, είναι το MVC (Model, View, Controller). Δεν είναι πανάκεια, ούτε 100% εφαρμόσιμο, αλλά είναι μια καλή αρχή.

- Το model είναι τα δεδομένα σου: Δηλαδή μια class για ότι έχει να κάνει με τη βάση σου και ξεχωριστά classes για καθένα από τους πινακές σου. Η class της βάσης, φυσικά και θα έχει CRUD μεθόδους. Επειδή κάνεις το ίδιο και με PLSQL δε σημαίνει πως δεν είναι OOP!

- Το view είναι η σελίδα σου: ότι έχει να κάνει με template processing και output.

- Ο controller είναι ο συνδετικός κρίκος: Αυτός που θα κάνει parse το url θα φορτώσει ότι χρειάζεται, και θα δώσει τις εντολές.

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από agrippas » 20 Μάιος 2010 01:11

Είσαι σε λάθος δρόμο.

Πρώτα πρέπει να κατανοήσεις ότι το Object Oriented Programming είναι ο μεγαλύτερος μύθος, απάτη, μούφα, ψέμα και όλα τα άλλα συνώνυμα μαζί, για τον εξής απλούστατο λόγο: Ό,τι είναι η συνάρτηση στα procedures είναι και η μέθοδος στα objects. Ό,τι είναι η παράμετρος της συνάρτησης στο ένα, είναι η ιδιότητα στο άλλο. Ό,τι είναι το αντικείμενο στο ένα, είναι το αρχείο στο άλλο. Επομένως, για να γίνεται "re-use" και καλά του κώδικα όλοι τώρα τρέχουν και γράφουν αντικείμενα και δεν καταλαβαίνουν ότι απλούστατα θα μπορούσαν να κάνουν re-use μια sub ή μια function!!!

Εν πάση περιπτώσει, δεύτερο που πρέπει να κατανοήσεις είναι ότι η Java είναι ο μαϊδανός του προγραμματισμού. Πάει με όλα αλλά μόνη της δε λέει τίποτα. Φίλε αν δε σε πιέζει εξωτερικός μπαμπούλας (σχολή, καθηγητής, κάρμα), άσε τη java και κάτσε και μάθε C++ τάχιστα.

(Εδώ είναι που αρχίζουν οι υποστηρικτές του OOP και της Java με τις διαμαρτυρίες και και αρχίζει το flame οπότε πάω να εξαφανιστώ εγκαίρως.)

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από nbc » 20 Μάιος 2010 09:58

Αν μου επιτρέπεις aggripa, αφού το OOP είναι μούφα, γιατί προτείνεις C++? Και πως η C++ θα τη βοηθήσει στο web programming?

Όσο για τις ομοιότητες, κλπ, υπεραπλουστεύεις. Πέραν του γεγονότος ότι η παράμετρος συνάρτησης στο ένα δεν είναι ιδιότητα του άλλου (?), με τα subs και functions δεν έχεις encapsulation, inheritance, interfaces, access control, contract programming και χίλια δυο καλούδια που κάνουν την ανάπτυξη και συντήρηση μεγάλων projects ευκολότερη. Δεν έχεις design patterns! Έχεις ένα τεράστιο global namespace όπου χάνει το παιδί τη μάνα....

Να σημειωθεί πως ούτε εγώ συμπαθώ τη java, λατρεύω τη C++, αλλά έχω μάθει ότι κάθε εργαλείο και τεχνική έχουν τη χρήση τους και δεν αφορίζω τίποτα.

Το ΟΟP δεν είναι αποκλειστικότητα της java. Λίγο ως πολύ, όλες οι παραδοσιακές "procedural" (δεν είναι ακριβής ο όρος) γλώσσες το γύρισαν σε OOP (Clarion, Cobol, Pascal, Basic, Fortran, C, PHP, κλπ). Για άλλους είναι trend, και γι άλλους necessity.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από Rapid-eraser » 20 Μάιος 2010 11:10

nbc ++
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

margarita
Δημοσιεύσεις: 9
Εγγραφή: 16 Μάιος 2006 18:17

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από margarita » 20 Μάιος 2010 12:40

Ευχαριστώ παιδιά για τις συμβουλές σας.
Ξεκίνησα να εφαρμόζω την μέθοδο του nbc και χώρισα τον κώδικά μου σε classes, jsps κλπ.
Αυτό που έχω στο πίσω μέρος του μυαλού μου είναι ότι έχω την έννοια ότι ο κώδικας που γράφω δεν είναι και ο καλύτερος.
Βέβαια έχω ακούσει και την γνώμη "αρκεί να παίζει και ας είναι όπως να ναι...", αλλά δεν είμαι αυτής της άποψης.
Αν έγραφα PLSQL θα φρόντιζα να χρησιμοποιώ cursors ή να αποφέυγω τα full table scans ή ή ή, εδώ τώρα δυστυχώς δεν έχω την γνώση να κρίνω τον κωδικά μου και φοβάμαι την στιγμή που ο τάδε/δείνα συνάδερφος μου θα δει τι έχω φτιάξει και πιθανότατα θα το ξηλώσει, στην χειρότερη θα γελάσει..
Όπως και να χει θα το κάνω να παίξει, και θα μάθω ως συνήθως από τα λάθη μου.
Έχετε δίκιο όμως, πολλές τεχνολογίες ρε παιδί μου πρέπει να μάθεις για να φτιάξεις κάτι τόσο απλό, html, css, java, javascript, jsp, servlets bla bla bla και όσο ακούω ότι το επόμενο πράγμα που πρέπει να μάθω είναι spring και jmeter :crash: αναρωτιέμαι, θα σταματήσει ποτέ;Η τουλάχιστον θα γίνει πιο εύκολο;;Μα να μου πάρει 2 μέρες να φτιάξω ένα jsp;Κουράστικα απο τώρα :doh: :doh:

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από cherouvim » 20 Μάιος 2010 14:19

agrippas έγραψε:το Object Oriented Programming είναι ο μεγαλύτερος μύθος, απάτη, μούφα, ψέμα και όλα τα άλλα συνώνυμα μαζί, για τον εξής απλούστατο λόγο: Ό,τι είναι η συνάρτηση στα procedures είναι και η μέθοδος στα objects. Ό,τι είναι η παράμετρος της συνάρτησης στο ένα, είναι η ιδιότητα στο άλλο. Ό,τι είναι το αντικείμενο στο ένα, είναι το αρχείο στο άλλο. Επομένως, για να γίνεται "re-use" και καλά του κώδικα όλοι τώρα τρέχουν και γράφουν αντικείμενα και δεν καταλαβαίνουν ότι απλούστατα θα μπορούσαν να κάνουν re-use μια sub ή μια function!!!
Εικόνα

epic! :pint:

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από korgr » 20 Μάιος 2010 14:25

Κατσε γιατι θα τρελαθουμε δηλαδη
Υποστηριζετε πως ο OOP προγραμματισμος (ασχετως πλεονεκτηματων) ειναι μονοδρομος για μια web εφαρμογη?

Γιατι διαφωνω καθετα!
και +1 στον agrippas

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από cherouvim » 20 Μάιος 2010 14:26

Μαργαρίτα έχεις πιάσει εκσκαφείς (oracle, weblogic) για να φυτέψεις μία γλάστρα.

Κατέβασε το full netbeans που έχει μέσα του tomcat και κάνε new webapp. Η δομή της εφαρμογής είναι έτοιμη και την κάνεις deploy με ένα κουμπί. Έτσι εσύ θα επικεντρωθείς στο στόχο σου (το να μάθεις Java και webapp programming). Αν είσαι εξοικειωμένη με την oracle ΟΚ, αλλά για αρχή μία MySQL είναι καλύτερη.

Ο tomcat θα είναι και πιο σχετικός στο μέλλον αν ασχοληθείς με spring. Αλλά για αυτό μάλλον θέλεις αρκετή δουλειά ακόμα. Εκτός αν σου δοθεί πολύ συγκεκριμένη δουλειά να κάνεις οπότε το πας τυφλοσούρτη.

@korgr: ποιος το είπε αυτό;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από korgr » 20 Μάιος 2010 14:45

cherouvim έγραψε:
@korgr: ποιος το είπε αυτό;
στην τοποθετηση του nbc με την οποια συμφωνησε και ο rapid αναφερθηκα...
Εκτος αν δεν καταλαβα καλα το νοημα οποτε sorry :)

margarita
Δημοσιεύσεις: 9
Εγγραφή: 16 Μάιος 2006 18:17

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από margarita » 20 Μάιος 2010 14:48

cherouvim μου έδωσαν εσκαφείς, με την προοπτική ότι θα φυτεύω δέντρα. Μου έχουν δώσει περιθώριο στην δουλειά μου 2 μήνες να μάθω java. Αυτά τα εργαλεία χρησιμοποιούν, αυτά πρέπει να μάθω.
Απλά εγώ τώρα μόνο γλάστρες μπορώ να φυτέψω

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από cherouvim » 20 Μάιος 2010 15:13

Αν όντως διάβασες τα 2 βιβλία που λες τότε πρέπει να ξέρεις τι παίζει πάνω κάτω. Αυτό που σου λείπει είναι το web κομμάτι οπότε μία πρώτη εικόνα θα μπορούσες να έχεις από τα http://java.sun.com/developer/releases/petstore/ και http://code.google.com/p/spring-petstore/ Υπόψιν οτι και οι 2 εφαρμογές θα περιέχουν σίγουρα κάποια συστατικά τα οποία δεν θα χρειαστείς (πχ JSF ή acegi) οπότε έχε το νου σου να μην παρεκκλίνεις της πορείας σου.

Ζήτα να δεις κώδικα από το πρόγραμμα πάνω στο οποίο θα δουλέψεις. Είναι σίγουρο οτι δεν θα σε βάλουν να φτιάξεις κάτι εκ του μηδενός μόνη σου αλλά θα δουλέψεις πάνω σε υφιστάμενη υποδομή. Ιδανικά πρέπει να έχεις διαθέσιμο, για εκμάθηση και πειράματα, όλο το σύστημα πάνω στο οποίο θα δουλέψεις. Μίλα και με αυτούς με τους οποίους θα δουλέψεις πάνω στο πρόγραμμα για να έχεις σαφέστερη εικόνα του τι πρόκειται να κάνεις γιατί το "μου είπανε σε 2 μήνες να μάθω Java" είναι εντελώς αόριστο.

Τέλος ζήτα βοήθεια και στο http://groups.google.com/group/jhug/

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από agrippas » 22 Μάιος 2010 09:19

Why OO Sucks: http://www.sics.se/~joe/bluetail/vol1/v1_oo.html

Εκεί ήμουνα κι εγώ για χρόνια και τα ξέρω τα καλούδια του και τα encapsulations που κάνει τρομάρα του.

Btw τώρα στην Αγγλία οι προγραμματιστές τζάβα είναι στην απόξω και τους πλασάρουν τα πρακτορεία ευρέσεως εργασίας με επιθετικό σπαμ. Στην εταιρεία που δούλευα, μέρα παρά μέρα μας έπαιρναν τηλέφωνο μην και θέλουμε προγραμματιστή τζάβα.

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

Πηγή: Είμαι στη βιομηχανία 10 χρόνια. Σπούδαζα Java 4 χρόνια στο Πανεπιστήμιο και δούλευα και δουλεύω ακόμα αντικειμενοστραφή PHP και Javascript (αναγκαστικά γιατί τα frameworks είναι τα πιο πολλά έτσι). Έρχεται καιρός που γράφω λύσεις με subs σε Perl και σε Bash και πραγματικά ξεκουράζεται το μυαλό μου και όταν τις γράφω και όταν τις τεστάρω και όταν τις κάνω απντέιτ.

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από agrippas » 22 Μάιος 2010 19:58

Τη C++ την πρότεινα στην περίπτωση που θέλει οπωσδήποτε να ασχοληθεί με αντικείμενα. Σόρι αν δεν ήταν ξεκάθαρο στο μήνυμά μου.

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Μετάβαση απο Procedural γλώσσα σε Object Oriented.

Δημοσίευση από soteres2002 » 23 Μάιος 2010 01:57

nbc += 3;
agripas -= 2;

aggripas.Vanish();

:)

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες