Jump to content
php.lv forumi

OOP kā tāds


Recommended Posts

Mana uztvere OOP ir tas, kas man liekas tā sarežģītākā lieta ieš to php (saprotu ka OOP ir ari iekš citam pv). Visos latviskajos turtoriāļos OOP ir aprakstīts ar mašīnām un 4 durvīm un kas būš ja kaut ko pieliks vai nokrāsos vai noņems. Es nezinu, kā citiem, bet man šis galīgi neliekas pamācoši.

 

Cik esmu skatījies, tad saprotu to, ka OOP sākumā ir tādi $var kuru pēc tam tiek kaut kādīgi apstrādāti kā OBJEKTI $var=>this vai kaut kā tā :)

 

Vai lūdzu kāds nevarētu iedot kādu maziņu, tiešām maziņu piemēru iz dzīves, nevis no garāžas, kur to OOP var normāli izmantot??? Piemēram kādas formas apstrādi, vai sql ievietošanu vai pox kaut ko tādu noderīgu.

 

 

 

alus cepī

Link to post
Share on other sites
  • Replies 47
  • Created
  • Last Reply

Top Posters In This Topic

Mana uztvere OOP ir tas, kas man liekas tā sarežģītākā lieta ieš to php (saprotu ka OOP ir ari iekš citam pv). Visos latviskajos turtoriāļos OOP ir aprakstīts ar mašīnām un 4 durvīm un kas būš ja kaut ko pieliks vai nokrāsos vai noņems. Es nezinu, kā citiem, bet man šis galīgi neliekas pamācoši.

 

Cik esmu skatījies, tad saprotu to, ka OOP sākumā ir tādi $var kuru pēc tam tiek kaut kādīgi apstrādāti kā OBJEKTI $var=>this  vai kaut kā tā :)

 

A nevar man kaads pateikt, kaapeec cilveekiem OOP ieksh PHP ir gruutaak iebraukt kaa citaas valodaas? Personiski es pirms PHP ar OOP biju saskaalies ieksh Pascal, un man nebija nekaadu probleemu saprast.

 

nezinu, varbuut http://3a3-interactive.net/php_reference/#1.6.6 tev var paliidzeet... tur nav ne mashiinu, ne durvju :)

Link to post
Share on other sites

..piemērs vai poh kaut ko...

 

varbūt nebūs tas labākais piemērs, bet, mana mysql klase -> http://www.ofmy.info/ven.mysql.zip

 

Es izmantoju klases tādām "loģikām/operācijām", kuras nākas rakstīt bieži, bet ar mazām izmaiņām. Augstāk pareizi pieminēts Object Pascal, jo tur "klases" tiek sauktas par "vizuālām komponentēm" (ok, ir arī nevizuālas). Tur, piemēram ir forma - programmas logs, ir poga. Vienkārši ņem un uzmet uz formas. Pogai atsevišķā lodziņā var pamainīt īpašības - krāsu, uzrakstu (caption), fontu, utml. Tai pogai pēc tam ir arī standratmetodes - onClick, onContextPopup, onDblClick utml. - kuros iekšā tu ieraksti to, kas ir jāiezpilda tālāk. Pēc būtības, ja rakstītu programmu no pašiem pirmsākumiem, tev būtu jāuzraksta zemā līmeņa draiveru bibliotēka, kas izzīmētu šo pogu kā taisnstūri, pa virsu izrakstītu tekstu, pēc tam pārtvertu peles kustējumus un pie klikšķa pārbaudītu, vai koordinātes atrodas pogas "iekšienē" utt. utt. Protams, katru reizi rakstīt šo padarīšanu no jauna ir visaid apgrūtinoši, tāpēc izdomāja tādas lietas kā klases.

 

Klase ietver vispārēju loģiku (algoritmu), raksturīpašības un pamatmetodes

Objekts - kases eksemplārs (instance), kurai piemīt visas vai dažas no mātes klases īpašībām, klases atvasināts atražojums

 

Klase - cilvēks

Objekts - Gacha

Raksturīpašības - divas kājas, 1 galva, 2 rokas ar 5 pirkstiem, turās vertikāli utt

Pamatmetodes - elpot, ēst, staigāt, runāt utml.

 

Visi cilvēki radušies no vienas klases, bet katram piemīt atsevišķs īpašību kopums, metodes attīstītas dažādos līmeņos, tāpēc katrs cilvēks ir atšķirīgs, tomēr atpazīstams savas klases atvasinājums.

 

šeit apstāšos (kaut kā panesās filosofija)

Link to post
Share on other sites

Venom, man tīri interese: cik OO ir Tavs ikdienas programmēšanas (ja tāda ir) rezultāts? tjipa - vai viss ir stingri OOP, vai kaut kur kombinē, vai OOP principus pielieto tikai īpašos gadījumos. :huh:

 

manas domas par OOP - zvērā laba tā lieta ir. vienīgais nopietnais mīnuss - jāpārdomā klašu struktūra un mantošana tā, lai tā max korekti atspoguļotu reālās dzīves objektus, ņemot vērā veicamo uzdevumu. nu apmēram tā... <_<

Link to post
Share on other sites

Vēl jau ir tāda lieta, kā piemēram, kad lietojam OOP, mēs klasē nodefinējam visas iespējamās objekta īpašības, bet ne vienmēr mēs visas tās pielietojam, tas nozīmē, ka palielinās noslodze serverim, kas apstrādā kodu.

 

Tai pašā laikā mūsdienās tak tādi jaudīgi serverīši ir :)

Link to post
Share on other sites
Nu tjipa kaut kas taads :D

http://paste.php.lv/1093

Šis patiešām ir vienkāršs, bet tad, kad tev piemēram ir kādi 20 mainīgie, bet tu ne veinmēr tos izmanto, tad gan var rasties jautājums vai šī klase patiešām tev ir nepieciešama tāda, kāda tev viņa ir.

Bet, tas ne vienmēr ir tas, kas cilvēkus atbaida no OOP rakstīšanas, vis grūtāk manuprāt tomēr ir izdomāt visu struktūru, kā kas notiksies utml.

Link to post
Share on other sites

Par aatrdarbiibu.

Vajadziiga tabula 100x100, kuras shuunas satur attieciigos reizinaajumus x*y.

Nu brutaals echo straadaa ~10x aatraak nekaa, ja table tags ir objekts ar atribuutiem un veel satur visus tr tagu objektus, kuri savukaart satur td tagu objektus ar attieciigajiem atribuutiem.

(jaa, katrs td tieshaam ir shitaada klase: http://paste.php.lv/1094 )

Tomeer, ja piemeeram vajag kaut kaadas tabulas daljas td piemeeram piekjeepaat ar iipashaam css classeem vai onmouseoveriem, vai whatever, (pie tam katru reizi citas tabulas daljas) tad ar brutaalu echo aatri var apkakaaties.

Link to post
Share on other sites
Šis patiešām ir vienkāršs, bet tad, kad tev piemēram ir kādi 20 mainīgie, bet tu ne veinmēr tos izmanto, tad gan var rasties jautājums vai šī klase patiešām tev ir nepieciešama tāda, kāda tev viņa ir.

Bet, tas ne vienmēr ir tas, kas cilvēkus atbaida no OOP rakstīšanas, vis grūtāk manuprāt tomēr ir izdomāt visu struktūru, kā kas notiksies utml.

 

Bet veel atbaidoshaak tomeer, manupraat ir, ja tev ir funkcija ar 20 argumentiem un katru reizi ir jaaskaita, kuraa poziicijaa ir kursh arguments :D (tas taa, ja galiigi neizlemj izmantot OOP)

Un, ja kodaa ir klase ir izmantojamas tikai dazhas klases instances, tad tieshaam efektiivaaka ir klase ar 200 atribuutiem, nekaa f-ja ar 200 argumentiem :)

Link to post
Share on other sites

Tad sanāk tā, ja tomēr mēģināšu iebraukt OOP un to lietot, tad būs jamaina viss mans programmēšanas stils. Piemēram atceros, ka vienreiz pētuju Jāzepa Shubi un tur viss bija oop + vēl bija pāris funkcijas un viss.

 

Vēl daudz redzējis, ka citi strīdās par oop izmantošanu vai neizmantošanu, jo to pašu takš var paveikt ar funkcijām un visām standart lietām.

 

Tagad pabeigšu iesākto darbu un tad būs jasāk skatīties tas oop, jo tas ir tāds vienīgais kas man no php nav vēl saprotams :D

Link to post
Share on other sites

Peec pieredzes varu pateikt, ka man pirmaa paareja uz oop beidzaas ar to, ka biju saradiijis vienu resnu klasi (hmm, kaut kaadas 2000+ rindinjas) sql tabulu datu atteeloshanai, redigjeeshanai visaados veidos. Saakumaa likaas baigi kruta, bet veelaak sapratu, ir veerts padomaat par klashu hierarhiju, pirms saakt kaut ko taisiit, savaadaak arii klaseem daudzas metodes sanaak brutaals copy paste no vienas klases uz otru. Taapeec mantojamiiba un polimorfisms rullee :)

Link to post
Share on other sites
kad tev piemēram ir kādi 20 mainīgie, bet tu ne veinmēr tos izmanto, tad gan var rasties jautājums vai šī klase patiešām tev ir nepieciešama tāda, kāda tev viņa ir

Tad jaasaak runa par klashu downgreidoshanu :ph34r:. Shobriid augstaakmineetaa mysql klase ir veel vairaak paplashinaata, bet nelieku www jaunu versiju, jo juutu, ka tieshi shii te pieeja vajadziiga (paaraak plashi un parastiem projektiem apgruutinoshi).

 

Resp. tad klasei ir jaarada ancestors ar pamata funkcionalitaati, bet vajadziibas gadiijuma no vinja jaatmanto papildinaata klase.

 

Att. uz < Venom, man tīri interese: cik OO ir Tavs ikdienas programmēšanas (ja tāda ir) rezultāts? tjipa - vai viss ir stingri OOP, vai kaut kur kombinē, vai OOP principus pielieto tikai īpašos gadījumos. >

 

Ja nerunaajam par JS, Delphi utml, bet tiiri par PHP, tad esmu diezgan negatiivi noskanjots pret full-OOP pieeju, taapat kaa arii pret 99% visu template sisteemu, kas pashaa saakumaa nogjeneree visu kas vien iespeejams un peec tam, vajadziibas gadiijuma to saliek vajadziigaas vietaas.

 

Mana pieeja liidziiga tai, ko esmu pieradis ieksh taa Delphi. Resp. izdalaam saita struktuuraa vizuaalos moduljus: izveelne, skaitiitaajs, balsoshana, utml. Nevizuaalie modulji darbiibaam, kuras biezhi jaatkaarto - mysql, file upload, image resize, translation. Shiim te lietaam respektiivi man arii ir klases (VenMySQL, VenMenu, utt). Viss paareejais "karkass" tomeer katram saitam ir atshkjiriigs un vajadziibas gadiijumaa tikai kopeeju kodu no viena uz otru un pamodificeeju. VenMySQL saaku rakstiit, jo a) piegriezaas 10iem reizhu katraa saitaa raxtiit mysql_connect/select_db utt. un vispaar tas mysql_* funkciju nosaukumi par garu (pat ar Ctrl+Space helpu) B) piegriezaas atkaartot vienas un taas pashas paarbaudes c) gribeeju paarskataamu MySQL log atskaiti, ar "debug" sleedzi, resp. lietotaajs kljuudas neredz, bet es redzu, ja skripta beigaas izsaucu full log ($m->fl();).

Dazhi modulji taa arii "neizpelnaas" klashu statusu - VenCount, translators, aptauju gjenerators, pasta suutijumi caur soketiem utml.

 

Pilniiga saita struktuura ieksh OOP AFAIC stipri "pieaudizna" funkcionalitaati struktuurai. Ja esi meegjinaajis kaut kur neparedzeetaa vietaa izvadiit kaut vai tekosho laiku ieksh kaada phpBB, tu mani sapratiisi. Resp. jaaizrokaas cauri manuaalim lai atrastu template/OOP funkciju, kas dublee php funckionaliaati un caur to kaut kaa jaizvada veelamais. Es savam kodam komentaarus un dokumentaaciju rakstu "postol'ku postol'ku", taapeec neviens peec tam manaa OOP neko nesapratiis - ieskaitot mani :blink: Taapeec es pieturos pie taa, ka ~90% koda iet tiiraa veidaa un jebkuraa vietaa es varu ar vinju izdariit jebko, ko veelos, arii veelaak.

 

//sorry kaut kur lv apostrophe pazuda

Link to post
Share on other sites
Ja nerunaajam par JS, Delphi utml, bet tiiri par PHP, tad esmu diezgan negatiivi noskanjots pret full-OOP pieeju, taapat kaa arii pret 99% visu template sisteemu, kas pashaa saakumaa nogjeneree visu kas vien iespeejams un peec tam, vajadziibas gadiijuma to saliek vajadziigaas vietaas.

 

***

 

full-OOP ieksh php jau nesanaak kaut vai tamdeelj, ka liidz 5ktajai versijai OOP iespeejas tomeer ir sameeraa ierobezhotas. full-OOP tomeer biezhi ir neizdeviigs arii taapeec, jo daudzas lietas objektiivu iemeslu deelj tomeer eertaak un aatraak ir uztaisiit ar funkcijaam.

par templateem. es gan parasti censhos peec iespeejas gjenereet tikai to, kas attieciigajaa skataa ir nepiecieshams un tiek likts galeejaa outputaa.

Link to post
Share on other sites
full-OOP ieksh php jau nesanaak kaut vai tamdeelj, ka liidz 5ktajai versijai OOP iespeejas tomeer ir sameeraa ierobezhotas.

Un arī pret tādu parādīšanos esmu noskaņots visai negatīvi. Tikai sarežģī visu fišku. Dēļ kā nemīlu Java ar saviem private etc. PHP jau tā pietiek global un static. VISS! Bet droši vien tas dēļ tā, ka php zem linušiem arvien biežāk sāk izmantot shell skriptu programmēšanai ar GTK, jo ērta valoda jau ir. Un es būtu priecīgs, ja būtu Delphi pielīdzināms IDE ar php valodu kā pamatu windows programmām (pagaidām tādām izvirtībām izmantoju phpBlender).

 

Savās klases neko "nemantoju" jo, ja šie morfingi tiešām tiktu izmantoti, tad sanāk, ka katru reizi skriptam izpildoties tiek salikta jauns kods no esošā+klases, un tā pie katras ielādes. Prātīgi tomēr laikam sabāzt visu kopā.

Dēļ tā man arī pēdējā laikā saiti pēc struktūras sanāk: index.php + ven.*.php klases/moduļi, kas pieslēdzami ne vienmēr - visi headeri, footeri u.c. pašā index.php kodā, lai katru reizi apacham nav "jāvāc drupatas" no vairākiem failiem. + Vajadzības gadījuma noupdeito index.php vai attiecīgo moduli un miers. Tik un tā es saviem kodiem tik plaši nedalos lai citiem ļautu headerus rediģēt ;)

Link to post
Share on other sites

×
×
  • Create New...