Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
O smecherie pe care nu o inteleg

Balcon parter fara acte

unde gasesc un speed bag in bucur...

Programe TV cu altfel de sporturi
 Laptop "bun la toate" max...

navigatie noua vw tiguan

ctfmon.exe - System Error (in Saf...

Ați prins vremurile cand 120 Volț...
 Whatsapp nu afișeaza numele ...

Medii admitere Politehnica Bucure...

Se extinde Baza de la Kogalniceanu

Politist mutilat de caine in curt...
 Trotineta- cat rezista?

Windows 11 si inregistrare de pe ...

Cont Facebook spart

Accesare Plex prin webstation
 

OOP: obiect care face mai multe lucruri

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

#1
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,817
  • Înscris: 05.12.2013
In ultimul timp am tot invatat OOP(nu sunt avansat in asa ceva, inca invat) si am facut diferite aplicatii... am capatat ceva experienta la cum es foloseste si cum trebuie sa gandesc, etc. dar am o intrebare.

Sunt eu la inceput sau si la voi cateodata intr-un site care vreti sa il facetii orientat pe obiect nu va iese chiar totul "orientat pe obiect".

Eu stiu.... ati vrut un obiect care sa faca x dar din anumite motive z mai face si y. Stiu ca asa ceva nu are voie sa se intample dar cum am zis.. "din anumite motive z".

// Daca am postat unde nu trebuie rog un drag moderator sa mute topicul exact la locul lui. Am postat aici deoarece e treaba de OOP. Posted Image

Edited by Ruben56, 30 August 2014 - 21:37.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Intr-un proiect curat implementat in OOP, totul e in cate un obiect, in afara de index.php care seteaza mediul (bootstrapping).

Da, un obiect se ocupa doar cu el insusi, o metoda face doar un singur lucru, etc: single responsability principle (SRP).

Posteaza cod concret daca vrei sfaturi concrete.

http://butunclebob.c...PrinciplesOfOod

#3
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,817
  • Înscris: 05.12.2013
Am vrut pentru un site de-al meu sa fac o aplicatie care sa afiseze anumite lucruri si daca apesi pe butonul detalii sa te redirectioneze pe detali.php?id=x si sa creez un obiect detalii care sa preia detalii din baza de date unde id-ul e x.
Dar am constat ca daca adaug doar o metoda sau 2 in clasa afisare am ajuns la acelasi lucru fara sa mai scriu o clasa intreaga cu aceleasi proprietati duap sa initializez un obiect, etc.. Doar adaugam o metoda acolo si am rezolvat treaba (obiectul exista deja, etc)

Stiu ca nu e corect ce am facut dar intelegeti voi ce vreau sa fac eu defapt.

#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Posteaza cod concret daca vrei sfaturi concrete.

Altfel ne pierdem vremea degeaba.

Pune-l pe github daca e mai mult de 500 de LOCs.

#5
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,817
  • Înscris: 05.12.2013
Nu sunt la PC :(

Pe scurt: Este acceptat ca un obiect sa faca mai multe lucruri ?

In teorie nu dar in practica ?

#6
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Suni de ca si cum nu ai sti cum sa construiesti o aplicatie OOP, nu referitor la structura claselor in sine, ci la modus operandi.

O cale usoara pentru inceput este asa:

Inainte de a scrie cod, scrii un text in care descrii ce trebuie sa faca.

CE, nu cum.

Apoi extragi din acel text substantivele importante, actorii, si pentru fiecare actor ai cate o clasa.

Apoi extragi din acel text verbele, actiunile importante, si daca sunt multe (peste 20-30), poti alege o strategie de dezvoltare test-driven.

In acel text descrii logistica aplicatiei, domeniul aplicatiei, nu elemente grafice, nu click-uri, ci ceea ce face aplicatia ta unica.

#7
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,817
  • Înscris: 05.12.2013
Sunt convins de ceva. Daca as da la 2 programatori sa faca in oo acelasi lucru s-ar certa intre ei :))

Gluma gluma dar sa revin
Deci daca am clasa si obiectul "Afiseaza" care teoretic trebuie sa afiseze date nu conteaza ca afiseaza detalii sau afiseaza y. Ea e destinata sa afiseze ceva. Cum ai zis...  Ce trebuie sa afiseze ci nu cum

Edited by Ruben56, 30 August 2014 - 22:21.


#8
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
"Afiseaza" nu este un substantiv.

Tu scrie aici textul cu CE face aplicatia.

#9
Ruben56

Ruben56

    Senior Member

  • Grup: Senior Members
  • Posts: 2,817
  • Înscris: 05.12.2013
Inca o intrebare daca se poate. Sunt incepator in oop si e si seara, obosit oarecum si poate vorbesc prostii.
So.. Daca in clasa Afiseaza am diferite metode care afiseaza diferite lucruri pot pasa metodei dorite un parametru ? Daca as crea o metoda setter pt fiecare metoda ajung la kilometru de cod, glumesc. Deocamdata am o singura metoda setter dar daca am nevoie de un parametru si modific setter apare bug in n locuri in site.

Ce fac in acest caz ?

#10
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostRuben56, on 30 august 2014 - 22:29, said:

Inca o intrebare daca se poate. Sunt incepator in oop si e si seara, obosit oarecum si poate vorbesc prostii.
So.. Daca in clasa Afiseaza am diferite metode care afiseaza diferite lucruri pot pasa metodei dorite un parametru ? Daca as crea o metoda setter pt fiecare metoda ajung la kilometru de cod, glumesc. Deocamdata am o singura metoda setter dar daca am nevoie de un parametru si modific setter apare bug in n locuri in site.

Ce fac in acest caz ?

Stergi clasa Afiseaza deoarece e o porcarie.

#11
Ruben56

Ruben56

    Senior Member

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

View PostOriginalCopy, on 30 august 2014 - 22:26, said:

"Afiseaza" nu este un substantiv.

Tu scrie aici textul cu CE face aplicatia.
Maine.. sunt obosit acuma. O noapte placuta va doresc

#12
Rhesus

Rhesus

    Senior Member

  • Grup: Senior Members
  • Posts: 2,882
  • Înscris: 22.04.2014
Afișează nu ar trebuie să fie o metodă a unei clasei? De ce faci o clasă afișează?

#13
Balescu_Ovidiu

Balescu_Ovidiu

    Junior Member

  • Grup: Members
  • Posts: 220
  • Înscris: 05.03.2014
Probabil el a vrut sa faca niste obiecte care sa faca ceea ce fac cin si cout, dar acestea sunt stream-uri.

Eu propun ca urmatoarea aplicatie sa fie un automat de limonada.
Automatul de limonada stoarce o lamaie si pune zahar intr-un pahar daca primeste o bacnota de un leu.

Edited by Balescu_Ovidiu, 30 August 2014 - 22:56.


#14
puya4ever

puya4ever

    Active Member

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

View PostBalescu_Ovidiu, on 30 august 2014 - 22:53, said:

Probabil el a vrut sa faca niste obiecte care sa faca ceea ce fac cin si cout, dar acestea sunt stream-uri.

Eu propun ca urmatoarea aplicatie sa fie un automat de limonada.
Automatul de limonada stoarce o lamaie si pune zahar intr-un pahar daca primeste o bacnota de un leu.

vei avea urmatoarele obiecte:
Obiectul automat
Obiectul automatLimonada care extinde automat

Obiectul pahar care este returnat de automat si care in interiorul lui contine alt
obiect drinkable (care va fi o interfata).

Obiectul limonada ce va implementa Drinkable

Obiectul zahar care va implementa interfata Ingredients.

Obiectul bancnota care va fi pasat ca parametru la obiectul automat.

Edited by puya4ever, 30 August 2014 - 23:02.


#15
Balescu_Ovidiu

Balescu_Ovidiu

    Junior Member

  • Grup: Members
  • Posts: 220
  • Înscris: 05.03.2014
Eu zic altfel:

Obiectul automat de limonada care face limonada.
-Parametrul zahar care scade cu 1 odata cu o limonada facuta.
-Parametrul limonada care scade cu 1 odata cu o limonada facuta.
-Parametrul bani care creste cu 1 odata ce sa facut o limonada.
-Sa nu uitam ca automatul trebuie alimentat din cand in cand.

Edited by Balescu_Ovidiu, 30 August 2014 - 23:19.


#16
puya4ever

puya4ever

    Active Member

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

View PostBalescu_Ovidiu, on 30 august 2014 - 23:10, said:

Eu zic altfel:

Obiectul automat de limonada care face limonada.
-Parametrul zahar care scade cu 1 odata cu o limonada facuta.
-Parametrul limonada care scade cu 1 odata cu o limonada facuta.
-Parametrul bani care creste cu 1 odata ce sa facut o limonada.

zahar, limonada, bani nu sunt parametrii - ele vor fi obiecte.

Aici discutam strict de designul obiectelor, nu de functionalitate. Poate in
aplicatia mea va scade cu 5, nu cu 1, pentru ca asa am eu chef.

Mai trebuie sa citesti :)

#17
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Sau mai bine combinati ideile voastre:

Zahar, Limonada si Ban sunt value objects si accepta cate un numar cu cantitatea ca parametru in constructor.

Iar obiectele astfel construite sunt pasate ca parametri automatului.

Nu vad de ce vedeti divergente in ceea ce ati spus, in loc sa le combinati.

#18
Balescu_Ovidiu

Balescu_Ovidiu

    Junior Member

  • Grup: Members
  • Posts: 220
  • Înscris: 05.03.2014
Ai dreptate OriginalCopy, daca e sa luam prima idee ar fi prea multe obiecte, si daca e sa luam a doua idee codul nu extensibil.

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

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