Jump to content
php.lv forumi

OOP mācīšanās


motion

Recommended Posts

Sākumā izlasi grāmatu par OOP teoriju. Vai arī mācies reizē OOP ar Java vai C# (.NET), piemēram. Neiesaku mācīties OOP no php. Labāk neklausies codez - šķiet, šis no sevis ir iedomājies ģēniju un cenšas citiem ieteikt sliktākos variantus, lai šo "ģēniju" kāds neizdomātu izkonkurēt - par šādu iespējamu scenāriju, palasot viņa ziņojumus, nebrīnos, ja godīgi...

 

Saku - OOP labāk mācies tīri teorētiskā līmenī - tur tāpat visi piemēri būs aprakstīti ar valodām "C un paveidi" vai ar Java.

Link to comment
Share on other sites

  • Replies 35
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Kapēc mācīties OOP no kaut kādas JAVAs vai C++, ja taisās programmēt PHP? Katras valodas OOP, it sevišķi skriptu valodām, ir savādāka. Vislabāk to var redzēt, piemēram, starp c++ un javascript. Ja tu iemācīsies c++ OOP, kura ir tīri bāzēta uz klasēm, tad tev tas nedos praktiski neko javascript OOP, kura ir prototipu bāzēta. Tas pats ir ar PHP. Protams tik daudz atšķirību kā starp c++ un javascriptu nav, taču ir ļoti daudzas nianses, kuras PHP OOP atšķirās no c++ un kuras bieži izmanto. Ja iemācīsies C++ OOP, tad vēl tikpat ilgi būs jāapgūst specifiskās nianses, kuras PHP OOP ir papildus un nianses, kuras PHP OOP nav realizētas.

Edited by codez
Link to comment
Share on other sites

PHP OOP vari izmantot, vari neizmantot arī, tur var programmēt dažādi... Bet, piemēram, Java viss notiek tikai OOP un pie tam, ļoti augstā līmenī. Tāpēc, uzskatu, ka labāk būtu mācīties kādu Java vai C-veidīgo valodu, lai iemācītos OOP, jo OOP tomēr labāk iemācīsies, ja mācīsies to valodā, kura balstās tikai uz OOP. PHP OOP izskatās vairāk pēc fīčas - tak labi zināms, ka php versijās <5 to OOP nemaz tik plaši neizmantoja.

Ja jau cilvēks grib iemācīties OOP, tad labāk viņam to darīt ar visiem teorētiskajiem pamatiem. Lai pēc tam var viegli pāriet uz citu OOP.

PHP ir tāda surogātvaloda ar visu OOP...

Link to comment
Share on other sites

Labāk iemācies kādu funkcionālās programmēšanas valodu, pēc tam OOP būs skaidrs kā diena

Funkcionālo valodu? Kāds funkcionālai valodai sakars ar OOP? Tajā tak pavisam cita domāšana un programmēšanas stils jālieto atšķirībā no OOP vai imperatīvām valodām.

 

codez: vispār jau, kā jau pats saki, JS nav OOP valoda. Tā ir prototipu orientēta, uz kuras pamata var "izlikties", ka programmē OOP. Tas pats, kas C - nav OOP valoda, bet var OOP'iski programmēt. Tāpēc manuprāt diezgan bezjēdzīgi to pieminēt OOP kontekstā, un salīdzināt kurā tad valodā ir vieglāk OOP mācīties.

 

Web Developer: Kādu teorētisko OOP aspektu tu nevarētu realizēt un izmantot PHP valodā, ja jau tu tā apgalvo? Kas PHP nav realizējams OOP'iskā veidā?

Link to comment
Share on other sites

bubu, OOP klasificējas 2 daļās - klašu bāzēta un prototipu bāzēta.

http://en.wikipedia.org/wiki/Prototype-based_programming

Prototype-based programming is a style of object-oriented programming in which classes are not present

 

Es nerunāju par to, kurā valodā ir vieglāk mācīties OOP. Es tikai saku, ja gribēsi pēctam programmēt ar to OOP iekš PHP, tad labāk uzreiz mācīties iekš tā PHP. Ja mācītos OOP citā valodā, bet vēlāk gribētu parogrammēt PHP, tad tik un tā papildus būtu jāapgūst tādas lietas kā: specifiskos magic keywords, autoloading, objektu iterāciju, utt.

Link to comment
Share on other sites

Funkcionālo valodu? Kāds funkcionālai valodai sakars ar OOP? Tajā tak pavisam cita domāšana un programmēšanas stils jālieto atšķirībā no OOP vai imperatīvām valodām.

Jā - domāšana ir cita, sintakse ir cita - nav klases, nav objektu, taču, piemēram, man funkc. valodas (šajā gad konkrēti Erlang) palīdzēja daudz labāk saprast OOP un es uzskatu, ka funkc. valodās var mierīgi kodēt OOP`iski.

Edited by marrtins
Link to comment
Share on other sites

Nu par to jau es runāju, ka tās ir PHP OOP specifiskās lietas. Bet tās ir OOP, jo visas saiastītas ar klasēm. Magic keywordi ir klašu speciālās metodes. autoloading nodrošina klašu ielādēšanu, objektu iterācija ir objektu iterācija. Tas viss piederās pie PHP OOP.

Link to comment
Share on other sites

OOP ir state of mind, nevis vienas valodas fēčas darbam ar klasēm. Jāiemācās ir tiešām domāt risinājumu objektos (un tā lai tajā būtu kaut kas labāk par procedurālo stilu), nevis kā to visu tagad pierakstīt ar class, private, public, extends, __call() utt keywordiem.

 

Pēc savas pieredzes varu teikt, sen mācījos OOP ar PHP, domāju ka iemācījos, pēc tam nācās pabakstīt citas valodas, ij tad sapratu ka ar PHP nebiju ne iemācījies, ne sapratis OOP būtību, biju iemācījies tikai

sintaksi.

 

Paskatīties apkārt, kas notiek citos dārziņos vienmēr noder.

Edited by v3rb0
Link to comment
Share on other sites

Lai nesanak ka parastas funkcijas apvieno viena klase, tad sauc metodes, bet butiba tas pashas f-jas, tikai ar citu sintakses veidu

Link to comment
Share on other sites

Ja runā par OOP as state of mind, tad PHP web aplikāciju gadījumā es ar to neieteiktu aizrauties.

WEB aplikāciju gadījumā ir pat neispējami pilnībā realizēt OOP principus.

Piemēram, lai attēlotu lietotāja profilu, ir nepieciešams liels daudzums klašu:

user, friends, wallcoments, profilenews, messages, visitors un daudzas citas.

Apskatīsim, piemēram, news klasi, kura attēlo profila jaunumus, tai jāstrādā gan lietotāja profilā, gan lietotāja sākumlapā, kur parāda viņam jaunumus.

Bet šīs klases HTML renderējumam tāpat ir piesaistīts js un css.

Bet savukārt js un css piesaistā konrkētai attēlojamai lapai.

Principā šāda pieeja, kura būtu visdziļāk ņemta kā OOP, ir gaužām nederīga web aplikācijās.

Tāpēc webā, manuprāt, pietiek ar MVC paterna izmantošanu, kurā kā klases izmanto tikai tādas, kurās nav HTML izvades. Savukārt katras lapas HTML izvadei ir savs templeits, kurš ir cieši sasaistīts ar JS un CSS failiem, kuri tiks pievienoti.

Mans secinājums: Ja izmanto MVC paternu, tad OOP tā reāli paliek izmantoti tikai modeļos, jo controleri ir vienkārši un perfomances dēļ tajos nekādu OOP nevajag, savukārt views vispār ir bez OOP.

Link to comment
Share on other sites

Ja var realizēt OOP pilnīgi, tad es gribētu zināt, kā tiktu realizēta šāda lieta:

Tas pats lietotāja profils ar daudziem modeļiem: friends, news, visitors, profileinfo, utt

Katram modelim ir savs HTML izvads, kur beigās visu modeļu HTML izvads tiek apvienots vienā lapsa HTML izvadā.

Katra modeļa HTMLam ir savs CSS fragments.

Kā darīs?

1)visu modeļu CSS un JS failus inklūdos konkrētajā lapsa izvadā? Īsti neder, jo var nākties pat inklūdot vairāk kā 30 js, css failus.

2)Apvienos visu modeļu CSS vienā failā? Arī īsti neder, jo modeļa izvads var būt vairākas lapās.

3)Apvienos visu CSS un JS vienā vai dažos failos, ko inklūdo vienmēr. Arī īsti neder, ja aplikācija ir apjomīga, jo katras lapai nepieciešamasi var būt daži līdz daži desmiti kB, kamēr viss kopējais JS un CSS var būt pāri pa MB un lapas pirmā ielāde var ilgt daudzas sekundes.

Reāli es neredzu tādu foršu iespēju, kā modeļus pilnībā realizēt OOP stilā un šeit nav svarīgi pat vai tas ir PHP vai kāds cita serveru valoda, tas attiecas uz web applikācijām vispārīgi.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...