Web Developer Posted February 16, 2009 Report Share Posted February 16, 2009 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. Quote Link to comment Share on other sites More sharing options...
marrtins Posted February 16, 2009 Report Share Posted February 16, 2009 Labāk iemācies kādu funkcionālās programmēšanas valodu, pēc tam OOP būs skaidrs kā diena, rezultātā mācēsi divas lietas - funkcionālo programmēšanu un objekt-orientēto - divi zaķi ar vienu šāvienu :) Quote Link to comment Share on other sites More sharing options...
codez Posted February 16, 2009 Report Share Posted February 16, 2009 (edited) 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 February 16, 2009 by codez Quote Link to comment Share on other sites More sharing options...
Web Developer Posted February 16, 2009 Report Share Posted February 16, 2009 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... Quote Link to comment Share on other sites More sharing options...
bubu Posted February 17, 2009 Report Share Posted February 17, 2009 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ā? Quote Link to comment Share on other sites More sharing options...
codez Posted February 17, 2009 Report Share Posted February 17, 2009 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. Quote Link to comment Share on other sites More sharing options...
marrtins Posted February 17, 2009 Report Share Posted February 17, 2009 (edited) 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 February 17, 2009 by marrtins Quote Link to comment Share on other sites More sharing options...
marrtins Posted February 17, 2009 Report Share Posted February 17, 2009 papildus būtu jāapgūst tādas lietas kā: specifiskos magic keywords, autoloading, objektu iterāciju, utt. Šādas lietas tieši uz OOP nav attiecināmas, drīzāk tie ir tādi kā extensioni - un katrai valodai tie variē. Quote Link to comment Share on other sites More sharing options...
codez Posted February 17, 2009 Report Share Posted February 17, 2009 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. Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted February 17, 2009 Report Share Posted February 17, 2009 (edited) 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 February 17, 2009 by v3rb0 Quote Link to comment Share on other sites More sharing options...
cucumber Posted February 17, 2009 Report Share Posted February 17, 2009 Lai nesanak ka parastas funkcijas apvieno viena klase, tad sauc metodes, bet butiba tas pashas f-jas, tikai ar citu sintakses veidu Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted February 17, 2009 Report Share Posted February 17, 2009 Papēti šos resursus par PHP un OOP. Par OOP kā klasika ir arī Ekela grāmatas - Thinking in Java, Thinking in patterns. (apskaties zemāk tajā resursā - tur ir norādes uz šīm un uz citām labām grāmatām un rakstiem). Quote Link to comment Share on other sites More sharing options...
Web Developer Posted February 17, 2009 Report Share Posted February 17, 2009 Šeit nu pilnībā piekrītu v3rb0. OOP ir domāšanas veids, kuru labāk mācīties uzreiz valodās, kuras pilnībā balstās uz OOP un kurās ir izstrādātas augsta līmeņa OOP konstrukcijas (nezināju kā lai savādāk nosauc). Quote Link to comment Share on other sites More sharing options...
codez Posted February 17, 2009 Report Share Posted February 17, 2009 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. Quote Link to comment Share on other sites More sharing options...
codez Posted February 17, 2009 Report Share Posted February 17, 2009 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.