Πλεονεκτήματα του OOP;

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
Άβαταρ μέλους
thdim
Δημοσιεύσεις: 75
Εγγραφή: 10 Σεπ 2004 17:20
Τοποθεσία: Έχω ξεχάσει...

Πλεονεκτήματα του OOP;

Δημοσίευση από thdim » 04 Φεβ 2007 22:49

Γεια σας παιδιά!

Χρησιμοποιώ την php τα τελευταία 3 χρόνια. Το τελευταίο διάστημα προσπαθώ να κατανοήσω πιο advanced θέματα όπως το OOP, την PEAR κ.λ.π. αλλά ειλικρινά δεν μπορώ να καταλάβω κάποια πράγματα.

Ξεκίνησα από τα βασικά και τι πιο βασικό από την σύνδεση σε βάση δεδομένων. Παλιά λοιπών (στων γραμμικό προγραμματισμό) χρησιμοποιούσα κάτι σαν και αυτό:

Κώδικας: Επιλογή όλων

function db_connect () {
 $dbh=mysql_connect ("localhost", "", "")
  or die ('I cannot connect to the database because: ' . mysql_error());
 mysql_select_db ("mydocs");

 return $dbh;
}
Το είχα σε ένα standard αρχείο και το έπαιρνα φυσικά πάντα μαζί μου, μετά ξέρετε τα κλασικά...

Κώδικας: Επιλογή όλων

require_once ("functions.php");
db_connect ();
 
$query = "SELECT * FROM ``";
$res = mysql_query($query);
 
if ($res) {
 while ($result=mysql_fetch_array($res)) {
 κλπ κλπ κλπ  
 }
}
Μετά από κανά δύο μέρες που βλέπω tutorials κλπ, βρήκα πώς να πετυχαίνω το ίδιο πράγμα με την χρήση PEAR

Κώδικας: Επιλογή όλων

require_once 'DB.php'; 

require_once 'db_config.php';

$dsn = $DB_dbType . "://" 
        . $DB_user . ":" 
        . $DB_pass . "@" 
        . $DB_host . "/" 
        . $DB_dbName;

$db = DB::connect($dsn, TRUE);

if (DB::isError($db)) {  
    die($db->getMessage());     
}
Και μέσα στο πρόγραμμα αυτό ...

Κώδικας: Επιλογή όλων

$sql = "SELECT name FROM ‘’";
 $res = $db->query($sql);
 
 if (DB::isError($res)) {
    die($res->getMessage());
 }

 echo "<select name='selected_caterory'>";
  
 while &#40;$row = $res->fetchRow&#40;DB_FETCHMODE_OBJECT&#41;&#41; &#123;
     if &#40;DB&#58;&#58;isError&#40;$row&#41;&#41; &#123;
         die&#40;$row->getMessage&#40;&#41;&#41;;  // fetchRow can return an error object
                                  // like most PEAR&#58;&#58;DB methods.
     &#125;
    
    echo "<option value='$row->name' class='form'>".str_replace&#40;"_"," ", $row->name&#41;."</option>";
 &#125;
 
 echo "</select>";
 
 $res->free&#40;&#41;;
Και ερωτώ, τι έχω κερδίσει ρε παιδία; Πέρα από ίσως λίγο καλύτερη αναγνώριση σφαλμάτων;

Εγώ βλέπω να έχω γράψει της ίδιες (μπορεί και περισσότερες) γραμμές κώδικα για να πετύχω το ίδιο αποτέλεσμα!

Επειδή νιώθω ότι κάτι μου λείπει μήπως κάποιος πιο εξοικειωμένος μπορεί να μου προτείνει ή να μου εξηγήσει κάτι;

Υ.Γ. Χαιρετίσματα από το κρύο Amsterdam, όποιος βρεθεί κατά δω για οποιονδήποτε λόγο ας στείλει π.μ. :)

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

Πλεονεκτήματα του OOP;

Δημοσίευση από Rapid-eraser » 05 Φεβ 2007 01:21

Koita to sigkekrimevo paradigma dev avadikviei to OO.

Gevika ama dev exeis diabasei avtikimevostrafi programatismo isos kapoia pragmata sou fevovte ligo kivezika ka8os n logiki tous eivai poli geviki alla n xrisi tous poli sigkekrimevi.

Stnv php 8a sivavtiseis arketo OO ekei pou exeis kodika pou epavalambavete n kodika pou xriazete alepalilo 'runtime configuration' (adokimos oros)

Paradigma mia library pou ftiaxvei pites ... mia library pou stelvei email.
dio poli gvosta OO paketa eivai to phpmailer kai to jpgraph .

Av prospa8ouses va ta ilopiiseis me procedural kodika dld functions pou kalouv funtions tote 8a eixes poli megalo problima.

Gevikotera episis me to avtikeimevostrafi programatismo mpevouv mesa arketa programatistika 8emata pou exouv va kavouv se pio poli 8eoritiko epipedo.
Px: design patterns , polimerismos , klirovomikotita , magic function . Ti leei o poiitis e?

Opos sta ma8imatika iparxouv kapoia 8emeliodi 8eorimata etsi kai stov OO programatismo iparxouv kapoies 8emeliodeis texvikes av 8es.

Grafovtas OO stnv php mporeis va ilopiiseis kapoia apo afta ta patterns kai va kaveis tnv zoi sou pio efkoli se arketes periptoseis opou o aplos ka8imerivos dromos dev bon8aei...

Twra o logos pou dev exeis xrisimopiisi ta 3 xrovia OO arketa eivai profavos giati asxolise me projects pou dev apetousav kapoia poli siv8eti morfi.

Prosopika ta avtikeimeva mou fevovte xrisima otav stivo kapoia diki mou library stnv php giati sivi8os otav 8es va kaveis eva conect stnv mysql dev se evdiaferei toso poli to OO...

Ti 8a givei omos av ftiakseis eva project pou xriazete layer abstraction ??? Opa kai alli magiki leksi... kai gia va se mperdepso akoma perisotero ti 8a givei av xriazese database abastraction ???
E? oeo pou eivai n giala :P

Skepsou to eksis sevario. Ftiaxveis eva programa to opoio aveksartita ti database exeis doulebei !!!
E? givete afto ??? O vai givete eftixos iparxouv arketa paketa pou kavouv afti tnv douleia,
ta perisotera apo ta opoia 8a ta deis stnv 5.x tis php.

Afto simbevei kirios giati to oo modelo proste8ike poli arga kai malov bgiastika stnv 4.x kai etsi arketoi developer dev eixav tnv divatotita va avaptiksouv pragmata ekei. Ektos aftou logo tou tsapatsoulikou tropou pou mpike osoi doulebav OO kai 8elave va ilopiisouv pragmata stnv php 4.x malov ta brikav mpastouvia dioti ta pragmata dev doulebav opos ta perimevav.

Afta ta oliga.
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

Άβαταρ μέλους
thdim
Δημοσιεύσεις: 75
Εγγραφή: 10 Σεπ 2004 17:20
Τοποθεσία: Έχω ξεχάσει...

Πλεονεκτήματα του OOP;

Δημοσίευση από thdim » 05 Φεβ 2007 03:33

Νοιώθω ότι με ρίχνεις λίγο :)

Έχω διαβάσει πάρα πολλή καλά τους όρους του OOP προγραμματισμού, απλά δεν είχε τύχει να τους χρησιμοποιήσω στην πράξη και αυτή την στιγμή απλά αντιμετωπίζω το πρόβλημα που έχει οποιοσδήποτε στην εφαρμογή της θεωρίας σε κάτι χειροπιαστό γιαυτό και ξεκίνησα από την database.

Αν μπορείς να μου προτείνεις κάποιο καλύτερο παράδειγμα θα ήμουν ευγνώμων να το ακούσω!

Άβαταρ μέλους
harris84firefox
Δημοσιεύσεις: 8
Εγγραφή: 21 Νοέμ 2005 04:22
Τοποθεσία: Διδυμότειχο - Ξάνθη

Πλεονεκτήματα του OOP;

Δημοσίευση από harris84firefox » 11 Φεβ 2007 07:10

Ρίξε μία ματιά εδώ στην 14η απάντηση:

What's so good about OOP?

Αν και αναφέρεται στην php4 είναι μια καλή απάντηση στο τι μας χρησιμεύει ο αντικειμενοστραφής προγραμματισμός.
Η ζωή είναι ένας μακρύς δρόμος,
αν είσαι μάγκας πέρνατον με σούζα.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Πλεονεκτήματα του OOP;

Δημοσίευση από panosru » 11 Φεβ 2007 13:13

To OOP programing file thdim exei pola ofeloi, poly apla to OOP mporei na:
  • epanaxrhshmopoithei poio eykola
  • ensomatothei poio eykola
  • beltiothei
  • ginei extend poio eykola
O diadikastikos (Procedural) kodikas einai poio dyskolo na ensomatothei kapou argotera, kai poio dyskola na anagnostei (an exeis na kaneis me arketes parametrous oi opoioi kalyptoun mono to sigkekrimeno project sto opoio exeis xrhshmopoihsei ton kodika ayto kai den prosarmozete se allo project me ena aplo copy paste)

Episeis otan douleyeis me team den mporeis na grafeis procedural kodika... an thes na kaneis thn zoh tou synadelfou poio eykolh grafeis OOP kai tou bgazeis ena API pano sto opoio douleyei aytos os apotelesma an thes na diorthoseis kati esy ston OOP kodika sou na mhn xreiastei na anakateftoun oloi osoi exoun xrhshmopoihsei to API sou en antithesh me to procedural code an thes na diorthoseis kati prepei na enymeroseis kai to ypoloipo team na diorthosoun kai aytoi ton kodika sou kai an kapoios exei kanei kati extend pano ston kodika sou kai me thn diorthosh pou ekanes den leitourgei ayto pou exei kanei o allos prepei na brei allh methodo kai ena soro alla xronobora pragmata, kai o xronos einai xrhma.

Se ena artho pou diabaza mou arese poly mia frash enos pou leei
I see OOP php as being similar to the way that using XHTML and CSS allows separation of structure and look from content; except OOP PHP separates functionality from implementation.
Episeis mias kai anafereis to gegonos oti exeis diabasei poly kala to OOP programming sou synisto na to ksanadiabaseis (den sto leo gia na se prosbalo, genika to leo gia olous) giati to OOP ths PHP 5.x den exei sxesh me ayto ths 4.x to opoio einai week OOP

Episeis sou paratheto mia eikona edo me kapoia endiktika xarakthristika




Telos, o Rapid eipe se kapoio shmio tou post tou
Rapid-eraser έγραψε:(..) ti 8a givei av xriazese database abastraction ???
E? oeo pou eivai n giala

Skepsou to eksis sevario. Ftiaxveis eva programa to opoio aveksartita ti database exeis doulebei !!!
E? givete afto ??? O vai givete eftixos iparxouv arketa paketa pou kavouv afti tnv douleia,
ta perisotera apo ta opoia 8a ta deis stnv 5.x tis php. (..)
Kati tetoio mporeis na to to ftiakseis kai custom dimiourgontas dikh sou class me thn opoia mporeis na exeis database abstraction, kai mhn mou peis oti mporeis na to kaneis me procedural code :P den tha sou po oxi, nai mporeis, an thes kathe fora na doulepseis me database na grafeis ena soro switch / if / elseif / else gia na kaneis to katalhle elenxo kai na pareis to epithymito apotelesma tote sorry alla its your problem :P

Pantos apo thn PHP 5.1 kai ystera yparxei to PDO gi' aytes tis douleies, bgainei apo ta arxika PHP Data Objects, prosopika ego pleon douleyo mono me PDO (otan afora dika mou projects giati esthsa tower me php5 kai goustaro xaxa) giati mou kanei thn zoh poly poly poio eykolh, opos episeis kai kati objects opos DOMDucument SimpleXML kai kati functions pou sou kanoun thn zoh eykoloterh, sto thema mas tora, parakato sou exo kapoia links me kapoia artha, kapoia ap' ayta milane gia PDO an thes des ta den nomizo na mhn se deleasoun.


Kai an endiaferese perisotero mporeis na diabaseis kai ta parakato arthra
  1. http://www.oracle.com/technology/pub/co ... _php2.html
  2. PDO
    1. http://gr.php.net/pdo
    2. http://www.oracle.com/technology/pub/ar ... acle5.html
  3. http://www.oracle.com/technology/pub/ar ... l_asp.html
  4. http://www.developer.com/lang/php/article.php/3302171
  5. php|archtect (an endiaferese akoma perisotero apo edo diabaseta ola)

Άβαταρ μέλους
thdim
Δημοσιεύσεις: 75
Εγγραφή: 10 Σεπ 2004 17:20
Τοποθεσία: Έχω ξεχάσει...

Πλεονεκτήματα του OOP;

Δημοσίευση από thdim » 13 Φεβ 2007 21:29

Λοιπών όσο διαβάζω περισσότερο τόσο καταλαβαίνω καλύτερα το consept...

Βασικά με βοήθησε πάρα πολλή σε αυτό το Zend Framework το οποίο άρχισα να σκαλίζω και να καταλαβαίνω. Με αυτών των τρόπο κατάλαβα στην πράξη τα πλεονεκτήματα του OOP.

Δεν άνοιξα αυτό το θέμα για να πω ότι ο OOP δεν είναι καλός και είναι χάσιμο χρόνου κλπ. Ανοιξα αυτό το θέμα για να δώσω αφορμή για συζήτηση και είμαι σίγουρος ότι όποιος είναι self-educated θα έχει περάσει από το στάδιο που πέρασα, να λέει "ωραία όλη αυτή η θεωρία... αλλά στην πράξη τι κάνουμε;"

Προτείνω όποιος έχει την ίδια απορία να ρίξει μια ματιά στο Zend Framework είναι πολλή καθαρογραμμένο και σε βοηθάει να κατανοήσεις πολλούς όρους.

Επι της ευκαιρίας θα ήθελα την άποψη σας και για το Zend Framework; αν είναι εύκολο!

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

Πλεονεκτήματα του OOP;

Δημοσίευση από Rapid-eraser » 13 Φεβ 2007 21:36

thdim sou protivo va pareis to biblio
php|architect: Guide to PHP Design Patterns

To sigkekrimevo biblio avaliei texvikes kato apo tov geviko oro Design patterns pou ousiastika ekei briskete to olo voima tou OOP.

Praktikos ekei 8a breis ilopiiseis apo sxedov oli tnv 8eoria pou iparxei n opoia 8a sou dosei pola buzz words gia va psakseis kai va psaxteis.

To OOP prepei va to blepeis sav ergaleio kai oxi apla sav eva evalaktiko tropo grafis ( ase pou kapies fores eivai avagkeo va akolou8iseis afti tnv poria )
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

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Πλεονεκτήματα του OOP;

Δημοσίευση από panosru » 13 Φεβ 2007 21:44

Nai ontos einai poly kalo book, episeis, personaly, nai aksioshmioth einai h douleia ton programmatiston ths ZEND gia to Zend Framework kai enohte pos to exoume dei kai to exoume melethsei.. alla oxi gia na to xrhshmopoihsoume alla gia na paroume idees gia ta dika mas framework ;) Giati prosopika pali pisteyo pos ta frameworks san enoia einai.. pos na sto po oxi toso suitable se olous, an exeis tis gnoseis kalytera na ftiakseis dikosou kai na douleyeis pano s' ayto.

Kai mia symboulh, mhn porotheis me to OOP kai ta gyriseis ola se OOP merika pramata den exoun nohma na einai se OOP giati to OOP einai allh ideologia, prepei na fortoseis oloklhro antikeimeno... an einai na fortoneis oloklhro antikeimeno gia na kaneis kati aplo kalytera na exeis ena folderaki me functions dikes sou kai na trabas opote xreiazese kapoia... to OOP kai h idea tou Framework erxete na kalypsei poio complex zhthmata kai opos proanaferame kai go kai o rapid kyrios einai otan thes na xoriseis kati se layers kai na exeis kati koino gia diafores platformes ;) (an einai n' allakseis diladi kati na mhn xreiastei na skalizeis ola t' arxeia sou kai na kaneis replaces...) :D

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Πλεονεκτήματα του OOP;

Δημοσίευση από skeftomilos » 14 Φεβ 2007 00:37

Μια καλή ένδειξη ότι έχεις φτιάξει μια χρήσιμη κλάση αντικειμένων είναι ότι μπόρεσες να της δώσεις ένα εύλογο όνομα χωρίς πολύ προσπάθεια. Αν το καλύτερο που κατάφερες να σκεφτείς είναι Class1 ή MyNewClass τότε υπάρχει πρόβλημα. Αν πάλι είναι TheThing, DoIt ή BeginAll, μάλλον κάτι σάπιο υπάρχει στο βασίλειο της Δανικής Μερκίας. Αν το όνομα της κλάσης σου κατέληξε να είναι SubCategoryBuilderBaseClass ή TotalUIManagerAndDatabaseAdministrator, κάποιος έχει άμεση ανάγκη για αποτοξίνωση.

Περιέργως τα αντικείμενα του πραγματικού κόσμου που μπορούν με τη μεγαλύτερη ευκολία και φυσικότητα να μοντελοποιηθούν ως προγραμματιστικά αντικείμενα, είναι συνήθως οι μη υλικές οντότητες που γεννά η επιστήμη της πληροφορικής. Είναι ευκολότερο να φτιαχτούν κλάσεις που να αναπαριστούν αρχεία, προγράμματα ή bugs, παρά γεωργικά μηχανήματα, νομικά πρόσωπα ή αμοιβαία κεφάλαια. Νομίζω μάλιστα πως η καλύτερη δυνατή εφαρμογή του OOP μοντέλου είναι η αναπαράσταση του OOP μοντέλου. Δηλαδή αυτό το ωραίο:

Κώδικας: Επιλογή όλων

public class Class &#123;
  public IList Properties;
  public IList Methods;
  public IList Events;
  public bool IsPublic;
  //κ.λπ.
&#125;
- If something is worth doing once, it's worth building a tool to do it.
- Your problem is another's solution; Your solution will be his problem.
- Programming is like sex. One mistake and you are supporting it for the rest of your life.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

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

Πλεονεκτήματα του OOP;

Δημοσίευση από Rapid-eraser » 14 Φεβ 2007 01:32

lol :)

skeftomilos++
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

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Πλεονεκτήματα του OOP;

Δημοσίευση από panosru » 14 Φεβ 2007 09:24

skeftomilos έγραψε: - Programming is like sex. One mistake and you are supporting it for the rest of your life.
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Koryfaio!!! :lol: :lol: :lol:

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Πλεονεκτήματα του OOP;

Δημοσίευση από cpulse » 14 Φεβ 2007 18:29

Έχω κάπου νόμους του merphy και έχει πολλά τέτοια..
άμα το βρώ θα το βγάλω..

Άβαταρ μέλους
thdim
Δημοσιεύσεις: 75
Εγγραφή: 10 Σεπ 2004 17:20
Τοποθεσία: Έχω ξεχάσει...

Πλεονεκτήματα του OOP;

Δημοσίευση από thdim » 15 Φεβ 2007 19:10

thdim sou protivo va pareis to biblio
php|architect: Guide to PHP Design Patterns
Ναι το έχω παραγγείλει αυτό το βιβλίο, περιμένω να μου έρθει.

Πάντως το OOP μου δίνει την αίσθηση ότι έχει μια λεπτή γραμμή που πρέπει να περάσεις (στην κατανόησή του) και μετά μπορείς να κάνεις πολλή εύκολα όμορφα πράγματα.

lets see...

Ευχαριστώ για της απαντήσεις!

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

Πλεονεκτήματα του OOP;

Δημοσίευση από cherouvim » 15 Φεβ 2007 21:18

Με OOP υλοποιείς μεγάλα συστήματα. Όσο για γραμμή, υπάρχουν πολλές γραμμές. Αν το θέλεις και σε 10 χρόνια γραμμές θα περνάς :)

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Πλεονεκτήματα του OOP;

Δημοσίευση από panosru » 15 Φεβ 2007 22:51

cherouvim έγραψε:Με OOP υλοποιείς μεγάλα συστήματα. Όσο για γραμμή, υπάρχουν πολλές γραμμές. Αν το θέλεις και σε 10 χρόνια γραμμές θα περνάς :)
Akribos symfono apolyta me ton cherouvim! kathe fora tha matheneis orisotera giati outos h allos den menoun stasima ayta, apo mona tous ekselisontai opote se othoun kai sena na ekselixtheis mazi tous paralhla. Episeis to OOP prosarmozete ston kathe programmatisth, asxetos an oi entoles einai idies, to OOP den einai apla programmatismos einai tropos skepseos einai mia logikh, h logikh aytou pou grafei OOP kai h logikh diaferei ana atomo opote se kathe atomo to OOP exei mia monadikothta. Arkei mono na to thes...

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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