Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Recomandare aparat de vidat alime...

Izolatie exterioara casa parter P...

Cuvinte si expresii neclare

Mod de lucru Purmo Tempco Digital...
 Samsung S90C vs LG C3

Problema sunet RCS

Amortizor sertare bucatarie

Codrea Pallady
 Blocurile goale! Orase in car...

Motorul pe benzina 1.0 SCe65

Mostenire In 1986

Lentile sferica pentru astigmatism
 Problema inlocuire usa spate A6 C...

Ce gen de muzica este?

Drepturile copiilor, in numele &#...

Mocheta peste parchet cu incalzir...
 

concepte si design OOP

- - - - -
  • Please log in to reply
198 replies to this topic

#163
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,825
  • Înscris: 05.12.2013
Deja sunt tot mai incurcat.
Mai intai vreau sa imi explice cineva cum gandim in POO, cand folosim poo si la ce folosim poo.

Va rog eu, scoateti-ma la suprafata :)

#164
puya4ever

puya4ever

    Active Member

  • Grup: Members
  • Posts: 1,987
  • Înscris: 21.12.2006

View PostRuben56, on 23 iulie 2014 - 11:56, said:

Deja sunt tot mai incurcat.
Mai intai vreau sa imi explice cineva cum gandim in POO, cand folosim poo si la ce folosim poo.

Va rog eu, scoateti-ma la suprafata Posted Image

OOP ar trebui sa folosesti peste tot intr-o aplicatie. Everything is an object.

Pentru OOP nu vei gasi definitii, il vei invata pe parcurs ce scrii cod. Eu iti
sugerez sa citesti o carte de designs patterns unde iti arata exemple practice
la probleme practice si vei vedea unde si cum se foloseste OOP-ul.

Apoi, in PHP am folosit un framework destul de ok care doar din documentatie
te impinge sa iti organizezi codul intr-o structura MVC, vei folosi
dependency injection pattern, service layer pattern, etc. Ti-l recomand, se
numeste Laravel.

View PostPac_Man, on 23 iulie 2014 - 10:25, said:

Sa fiu sincer, php nu este cel mai bun limbaj sa inveti programare in general si OOP in mod special...
De ce nu e cel mai bun limbaj pentru OOP in mod special? Un singur
argument da-mi :)

#165
niposs

niposs

    Active Member

  • Grup: Members
  • Posts: 1,333
  • Înscris: 06.05.2009
@puya4ever Poate ai putea sa spui si numele unei astfel de carti, daca se poate!

#166
puya4ever

puya4ever

    Active Member

  • Grup: Members
  • Posts: 1,987
  • Înscris: 21.12.2006

View Postniposs, on 23 iulie 2014 - 13:07, said:

@puya4ever Poate ai putea sa spui si numele unei astfel de carti, daca se poate!
In principiu oricare. Uite aici o lista:
http://www.fromdev.c...s-you-must.html

#167
just0rz

just0rz

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 14.01.2014
Ok, hai sa o luam cu inceputul.

In primul rand uita de design patterns la nivelul la care esti nu te vor ajuta cu nimic. Design patterns exista pentru cu totul altceva si in nici un caz pentru a te invata OOP. Pentru a le intelege trebuie deja sa stii si sa intelegi conceputul de OOP.

Bottom line: Ia o carte citeste si invata. Unde nu iti este clar vino, explica-ne ce nu intelegi si te vom ajuta.

Spor!

#168
DominatoR

DominatoR

    Member

  • Grup: Members
  • Posts: 374
  • Înscris: 24.09.2006
Invata teoria OOP si apoi incepe cu un framework de PHP, care te obliga sa gandesti OOP.

#169
niposs

niposs

    Active Member

  • Grup: Members
  • Posts: 1,333
  • Înscris: 06.05.2009

View PostDominatoR, on 23 iulie 2014 - 13:52, said:

Invata teoria OOP si apoi incepe cu un framework de PHP, care te obliga sa gandesti OOP.

Sa vezi de cand caut eu sa invat aceasta teorie si numai balarii gasesc. Nimic nu m-a convins cum stau lucrurile.

#170
Pac_Man

Pac_Man

    Senior Member

  • Grup: Senior Members
  • Posts: 2,258
  • Înscris: 10.12.2001
Nu este cel mai bun limbaj pentru a invata OOP sau programare la modul general. In rest e un limbaj foarte bun pentru web, doar ca a avut o evolutie tumultoasa si nu e bun pt cineva care vrea sa invete programare pe bune.

De ce? Pentru ca e plin de inconsistente cu "jdemii" de moduri de a obtine acelasi lucru ba object-oriented, ba procedural cu decizii de design dubioase luate de-a lungul timpului.

Netul e plin de documentatie fie "outdated" fie direct proasta. Ce sa inteaga un incepator din asta? Mai combini si cu elementele arhitecturale ale web-ului si obtii o varza totala.


View Postpuya4ever, on 23 iulie 2014 - 13:03, said:

De ce nu e cel mai bun limbaj pentru OOP in mod special? Un singur
argument da-mi Posted Image


#171
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,825
  • Înscris: 05.12.2013
Stiu conceptele OOP dar nu stiu cum sa le aplic in PHP. Eu vreau un lucru practic.
Vreau sa stiu cand folosim oop... Folosim pentru fiecare chichineata? Mai exact la un register form. E mult mai simplu direct pe pagina sa verifici lungimea unui string decat sa il pasezi, etc.

Unii ziceau ca trebuie ca obiectul sa fie independent. Metodele nu trebuie sa aiba variabile externe. E adevarat?

#172
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
Apai cu "unii ziceau" n-ajungi niciunde. Nu-ti mai pune problemele astea. Majoritatea zic tampenii.
OOP nu "folosesti". E un mod de a structura codul unei aplicatii. E vorba de arhitectura care garanteaza anumite lucruri pe care le doresti intr-o bucata mare de cod.
Tu trebuie sa intelegi care sunt lucrurile alea pe care le doresti: lizibilitate, mentenabilitate, separation of concerns, code boundaries (adica ce de ce depinde, cu ce si cum comunica), etc.
De lucrurile astea nu ai nevoie la nivelul tau. Ca sa le intelegi trebuie sa te lovesti de ele. O sa te lovesti de ele cand ajungi sa scrii aplicatii mai complexe pentru clienti "pe bune".
Deocamdata e OK sa incepi cu ce e aia o clasa si o instanta a unei clase, ce e un obiect, ce e incapsularea, modificatori de vizibilitate, etc. Adica chestiile pe care le inveti la o facultate de profil, sau dintr-o carte buna. Apropo, astea nu sunt chestii ce tin de OOP (exceptand incapsularea), ci, in anumite limbaje, sunt mecanismele prin care scrii cod OOP.

Mai scriu o data: poti scrie cod OOP si fara clase si poti scrie cod cu clase care n-are nimic cu OOP.

Edit
"Unii ziceau ca trebuie ca obiectul sa fie independent. Metodele nu trebuie sa aiba variabile externe. E adevarat?"
Da. E vorba de incapsulare si side effects. Metodele obiectului trebuie sa fie pure (google "pure functions"), adica primesc niste prametrii pe care nu au voie sa-i modifice si returneaza un rezultat. In procesul asta au voie sa faca orice in interiorul obiectului si nimic in afara lui (adica nu au voie sa modifice valorile parametrilor primiti prin referinta si nu au voie sa acceseze variabile globale).
E un principiu de baza despre care inveti in detaliu din orice carte buna.

Edit2
OK, trateaza validarea tot acolo. Maine te apuci de inca un formular in aceeasi aplicatie si ai nevoie de aceeasi validare. Copy-paste la cod si acolo. Pac, duplicate logic and code, a big no-no in OOP.
Lucrurile nu se fac dupa cum ti se pare tie mai usor sau mai frumos, ci dupa niste motive studiate si bine intemeiate. Nu vrei sa ai acelasi cod in doua locuri pentru ca peste un an nu o sa iti mai aduci aminte ca e in doua locuri. O sa-l modifici intr-unul singur si brusc ti-ai introdus un bug.

#173
just0rz

just0rz

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 14.01.2014

View PostRuben56, on 23 iulie 2014 - 14:30, said:

Stiu conceptele OOP dar nu stiu cum sa le aplic in PHP. Eu vreau un lucru practic.
Vreau sa stiu cand folosim oop... Folosim pentru fiecare chichineata? Mai exact la un register form. E mult mai simplu direct pe pagina sa verifici lungimea unui string decat sa il pasezi, etc.

Unii ziceau ca trebuie ca obiectul sa fie independent. Metodele nu trebuie sa aiba variabile externe. E adevarat?
Nu sunt sigur ca intelegi acele concepte atata timp cat nu le poti pune in practica, dar hai sa facem un exercitiu.

Fa o aplicatie (web/desktop), de exemplu agenda telefonica, desigur structurand codul bazandu-te pe conceptele OOP.

Edited by just0rz, 23 July 2014 - 14:46.


#174
Nemesis-

Nemesis-

    Zeitsă

  • Grup: Senior Members
  • Posts: 7,253
  • Înscris: 23.05.2011

Quote

Mai scriu o data: poti scrie cod OOP si fara clase

cum? Posted Image
daca n-ai clase n-ai nici obiecte

#175
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
Si OOP-ul ce treaba are cu obiectele Javascript, Java sau PHP? Definitia unui obiect in OOP nu are nicio treaba cu definitia obiectului ca si construct al limbajelor de programare. OK, exagerez, se suprapun pe alocuri. OOP exista dinainte sa existe clase, obiecte si instante in limbaje. Incapsulare, vizibilitate, etc. sunt chestii ce le poti obtine si fara clase.

"OOP, defined in the purest sense, is implemented by sending messages to objects."
"An object can be considered a "thing" that can perform a set of activities. The set of activities that the object performs defines the object's behavior."
"Terminology invoking "objects" and "oriented" in the modern sense of object-oriented programming made its first appearance at MIT in the late 1950s and early 1960s. In the environment of the artificial intelligence group, as early as 1960, "object" could refer to identified items (LISP atoms) with properties (attributes)"

#176
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,825
  • Înscris: 05.12.2013

View Postjust0rz, on 23 iulie 2014 - 14:46, said:

Nu sunt sigur ca intelegi acele concepte atata timp cat nu le poti pune in practica, dar hai sa facem un exercitiu.

Fa o aplicatie (web/desktop), de exemplu agenda telefonica, desigur structurand codul bazandu-te pe conceptele OOP.
Insfarsit cineva cu ceva practic. O sa incerc sa fac o agenda telefonica. Dar ma exact ce?
Sa poti adauga numere, sa poti sterge si sa vizualizezi numerele salvate. Presupun ca la asta e referi.

Edited by Ruben56, 23 July 2014 - 14:54.


#177
just0rz

just0rz

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 14.01.2014
Fa o agenda telefonica care sa aibe acelasi(simplist) comportament ca cea a telefonului tau.

#178
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,825
  • Înscris: 05.12.2013
Incep sa fac. Inca ceva vreau sa te intreb pe tine sergiu.
Ai zis si tu ca metodele trebuie sa fie cat mai independente si nu au ele voie sa modifice valorile primite.
Dar prin independenta asta nu am voie nici sa pasez valori direct la o metoda? Trebuie sa folosesc metoda accesor, sa le scriu in proprietati si dupa ma folosesc de metode fara variabile externe?

Pentru tema cu telefonul, am sa folosesc mysql pentru stocarea numerelor de telefon.

Te rog frumos sa boldezi in raspunsul tau deoarece e important ce ai zis, urmatoarea fraza:

Quote

Da. E vorba de incapsulare si side effects. Metodele obiectului trebuie sa fie pure (google "pure functions"), adica primesc niste prametrii pe care nu au voie sa-i modifice si returneaza un rezultat. In procesul asta au voie sa faca orice in interiorul obiectului si nimic in afara lui (adica nu au voie sa modifice valorile parametrilor primiti prin referinta si nu au voie sa acceseze variabile globale).
E un principiu de baza despre care inveti in detaliu din orice carte buna.


#179
Nemesis-

Nemesis-

    Zeitsă

  • Grup: Senior Members
  • Posts: 7,253
  • Înscris: 23.05.2011
vezi sa n-o dai in cealalta extrema.
am observat la php trendul a-la-symfony, adica sa creezi 3245345 de interfete si clase fiecare in fisierul propriu, pt orice chestiune minora. am vazut aplicatii banale structurate in 100 de clase doar de dragul "extensibilitatii" desi in viata reala nu s-ar ajunge in veci sa se faca uz de acest asa zis avantaj pt toate clasele alea

#180
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,825
  • Înscris: 05.12.2013
Foarte bine ai zis.
Deja incep sa inteleg mai multe cu ajutorul vostru si doresc sa discutam in continuare.

Deci tot "programul" trebuie gandit ca in viata reala, ce destinatie are si daca ma ajuta aceea clasa sau nu, nu doar sa fac clase de dragul poo, corect?

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate