Atpakaļ uz pirmo lapu

laacz » 2005 » 3. janvāris

OOP

15:51 @ 2005-01-03 = 20 blabla  

Esmu noguris no absolūti useless OOP piemēriem. Tiem, kas sevi lepni dēvē par WEB–oriented. Piem., kāds sakars WEBam ir ar to, ka sarkans ir krāsas apakšklase, kvadrāts ir kāda visai abstrakta objekta apakšklase, u.t.t., u.t.j.pr. Gimme something real. Cilvēku interesē, kā izveidot WEB aplikāciju, nevis, kā inheritēt peni (pardon my french).

1 shizo @ 16:16 (2005. gada 03. janvāris)

laacz, man liekas ka lietojam!
http://www.bbc.co.uk/radio1/onelife/fun/…

2 Munthon @ 16:26 (2005. gada 03. janvāris)

Inheritēt p#$%i gan nevaig :)
Ar 100% pārliecību varu teikt — nevaig kautko izmantot tikai tapēc ka tas ir kruta.
OOP konceptam ir jau ja nemaldos kādi 20 gadi.
Ja Tev vajag pārtaisīt sarkanu par kautkādu tur apakšklasi, tad jau protams no tā liela jēga nav.
Cik es savā praksē esu saksāries ar OOP, tas rada iespēju projektēt izstrādāt un testēt liela apjoma projektus daudz ērtāk nekā ne OOP gadijumā.
Un vēlreiz — tas ir koncepts (protams mūsdienās tam ir ntās realizācijas utt., bet tas nemaina lietas būtību.) Lai izprastu OOP jēgu ir jāmaina domāšanas veids.

p.s. tā skrobāra lekšāna uz augšu rakstot komentu var reāli izvest no pacietības.

3 noisex @ 16:30 (2005. gada 03. janvāris)

oop isti nevar paradit, kas un kaa un kapec neradot visas sources un daudz nestastot par koncepciju no izstradataja puses. Web'a ta viss strada un gala lietotajam pilnigs pohujs kas tur ir apakashaa :)

4 Munthon @ 16:34 (2005. gada 03. janvāris)

noisex, da protams ka po tam lietotājam apakšā kas stāv. Tikpat labi tur apakšā var būt C kodiņš kas ģenerē htmlus. Oki, moš pārāk pārspīlēti, bet tas parāda ideju — produkta kvalitāte nav tikai insektu daudzums, jeb pareizāk mazums bet arī tā pārskatāmība, ātradrbība, spēja to uzturēt utml. Neapšaubu neviena šeit esošā spējas to radīt katram ar saviem līdzeķiem. Katram ir tiesības izvēlēties.

5 buu @ 16:51 (2005. gada 03. janvāris)

Triviāls piemērs varētu būt:
1) uztaisi abstraktu klasi db, kur ir abstraktas metodes tipa connect, close, query, fetch_row
2) uztaisi klasi mysql_db, kas ekstendo klasi db un metodes aizpili ar reālām funkcijām priekš mysql
3) kodā, kur darbības notiek ar datubāzēm izmanto klasi db un tās metodes, konstruē db kā klasi mysql_db

bonusi var būt šādi:
1) ja izdomā datubāzi migrēt piemēram uz MSSQL, tad tikai jāuzraksta mssql_db klase un jāpamaina db inicializācija (līdzīgu efektu gan var panākt arī bes OOP)
2) ja jāizmanto vairākas db — elementāri mendelson — taisam tik vēl vienu db objektu …

6 bubu @ 17:01 (2005. gada 03. janvāris)

buu un kur šis piemērs slikti strādās bez OOP, bet ar vienkāršām funkcijām un prastu include()?

7 buu @ 17:15 (2005. gada 03. janvāris)

bubu: nekad neesu ņēmies apgalvot ka to nevar panākt bez oop — var — tikai kas kuram vieglāk, ērtāk, ātrāk …
tāpat arī jāņem vērā, ka topikā tika prasīts piemērs — ar ko tas nav piemērs?
Bet ja strikti un bērnišķīgi, kā pats jautājums, jāatbild, kur tas nestrādās bez oop, tad diezvai izdosies izveidot kādu sakarīgu servletu ar include()…

8 hmnc @ 17:26 (2005. gada 03. janvāris)

visu var uztaisīt ar un bez OOP. vajag tikai pēc iespējas taisnāku moduli curve_hands.dll ;)
ir lietas, kur OOP reāli palīdz, bet ir lietas, kur OOP ir tas pats kas bumbai rokturis.

9 Sm @ 19:21 (2005. gada 03. janvāris)

artima.com

10 hu_ha @ 20:34 (2005. gada 03. janvāris)

nesen mācību nolūkā vajadzēja vienu softu taisīt, kā rezultātā izdomāju mocīt uz objektiem. Sanāca man sekojošas klases:
sql, kalendārs, lietotājs, persona (atšķirīgas darbības no lietotāja, varbūt varēja taisīt abstraktu un tad mantot, what ever), piezīme (objekts, kurš satur piezīmes kalendāram un vēl tur tā viltīgi tika pielietots), logins (organizee pieejas tiesiibas un ielogoshanaas formu), error (klase, kas satur kljuudu pazinjojumus un padodot kļūdas kodu, tiek veiktas attiecīgas darbības).

Tas bija mans pirmais projektiņš, kur sadūšojos ar OOP parunāties, bet īstenībā labums bija gan no OOP– ja vajadzēja mainīt funkcionalitāti, kad tiek izmantotas funkcijas n vietās, tad objekta iekšpusē to izdarīt bija vieglāk, tb, pie funkcijas izsaukšanas nekas daudz nemainās (vai nemainās nemaz).
p.s. beigu beigās tas viss tika samalts oop ar procedurālo, jo apbeidzās laiks, lai mierīgi taisītu :)

Un šeit nav jautājums, ko var ar otru, to nevar ar citu — visu var. Bet, ja ir pareizi objekti (+/–) tad tos var lietot atkārtoti, pārrakstot tikai dažas funkcijas.

p.p.s. sql, lietotājs, kalendārs, logins tika ņemts no iepriekšējiem gara darbiem, kā rezultātā pamainīju tikai dažas funkcijas objekta iekšpusē un ieguvu visu ko man vajadzēja
eof

11 Kaklz @ 21:05 (2005. gada 03. janvāris)

Teiksim, RSS: http://paste.php.lv/1487 Augšā Klases kods (ne manis rakstīts) apakšā source, kas nepieciešama RSS feed ģenerēšanai.
Triviāli? Varbūt, bet vismaz izskatās pēc saprātīgas OOP pieejas.

12 misame @ 22:05 (2005. gada 03. janvāris)

kamēr OO ir tikai veids, kā sakārtot funkcijas citādāk (tipa kārtīgāk), vari aizmirst par tā lietošanu — tas tev nav vajadzīgs.
Svarīgākās OO priekšrocības manuprāt ir inkapsulācija (no ārpuses nav redzams, kāds kods funkcijā iekšā, bet zināms, ka tas maina objekta stāvokli no x1 uz x2), polimorfisms (tev ir vienalga, kas ir šis konkrētais objekts, galvenais, ka tas atbalsta doto interfeisu) un NEVIS mantošana, kas reāliem objektiem bieži vien sanāk tikpat dabiska kā sarkans ir apakšklase krāsai.

13 shizo @ 11:40 (2005. gada 04. janvāris)

to misame:
argumentee inkapsulaacijas TIK svariigo noziimi ieksh OOP!
Mans viedoklis: Tā kā inkapsulācija ir sava veida galaprodukts, tas noziimee, ka man kaa programeetaajam shiis objekta metodes un parametri ir strikti noteikti. Un ja kaadaa dienaa es izdomaashu mainiit objekta metodi, tas man nebuus pieejams. Un ko tad lai es daru? :)

nee nee sava taisniiba jau ir. piem, ja top liels projekts, i kad citam koderim nav jaalien otra kodera darbaa — vai veeljovairaak, ja objekts iet kaa komerciaals produkts (laacz veeljoprjaam nav publiskojis savu SMPP clasi?), bet PHP k.kaa nea!

OOP. A vot jaa — sakaartotiiba. piemeeram man jau ir iekraajushaas savas biblooteekas. :) tipa. (pie manis pa bargu naudu var iepirkt. ;)) kad k.ko vajag, njemu savu bibloteeku tipa incluudo claas failinj, piesliipee vai atvasina un kaa senie latvieshi teiktu: "zajebis".

14 viestards @ 12:13 (2005. gada 04. janvāris)

Laacz, iesaku izlasīt Code Complete, tur viss ļoti skaidri un sakarīgi aprakstīts.
shizo: poliformisms ir svarīgs tāpēc, ka ļauj nodalīt izmanojamās funkcijas, un nepieļauj grābstīšanos no ārpuses tur, kur nevajag. Tas ir tāpat kā pēc iespējas mazāk izmantot globālos mainīgos.

15 shizo @ 12:32 (2005. gada 04. janvāris)

viestards: starp citu, es jautaaju par inkapsulāciju nevis par polimorfismu. Un nevis defeniiciju, bet kaa misame uzsveera — noziimiigumu ieksh OOP.

viestards ;)

16 viestards @ 13:05 (2005. gada 04. janvāris)

shizo: tpu, sajaucu terminus. tekstā jānomaina poliformisms ar inkapsulāciju, vēl miegs acīs. :) Svarīgums IMO izpaužas tādā veidā, ka inkapsulācija palīdz piespiest (sevi un citus) veidot korektāku kodu, kas noved pie vieglāk debugojamas programmas. Visas šīs OOP features it kā palielina izstrādes laiku, taču tai pašā laikā samazina maintenance, vismaz tā tam vajadzētu būt.

17 misame @ 13:58 (2005. gada 04. janvāris)

shizo: daļēji Tev jau atbildēja viestards. Bet nu vēl arī mani $0.02 par to inkapsulāciju. Gadījumā, kad OOA tiek lietots, lai aprakstītu reālus biznesobjektus un sistēma tiek modelēta tā, ka jebkurā laikam momentā sistēmas objekts atbilst saprātīgam biznesobjektam, parādās liela nozīme inkapsulācijas jēdzienam — objekta publiski pieejamo metožu veidotais interfeiss nodrošina pārejas starp dažādiem loģiski pamatotiem stāvokļiem. Taču, tā kā pieejama arī mantošana, dažādām mantotajām klasēm var pastāvēt dažādas implementācijas vienai un tai pašai pārejai starp dažādiem stāvokļiem — un tad šeit arī ir svarīga inkapsulācija, kas dod iespēju to skaisti realizēt.
Par to "vēlāk gribēšu mainīt parametrus" — nesapratu, vai runa ir par interfeisa, vai par implementācijas mainīšanu? Ja doma ir mainīt interfeisu, tad tā ir slikta doma. Vienīgi ko var darīt — likt klāt jaunas metodes ar papildus parametriem, kas izsauks vecās metodes. Ja doma ir par metodes implementācijas maiņu — tad tieši to jau arī inkapsulācija dod, ka tavas komponentes "klientiem" nav jādomā par to, kā izveidots kods metodes iekšpusē!
fui Lācim, jo teksts bija ar visām garumzīmēm, bet man piesējās, ka es tās nelietojot

18 Mulders @ 09:24 (2005. gada 05. janvāris)

Tak web freimworku var uztaisiit lietojot OOP. Tb lietojot interfeisus un abstraktas klases tu vari uzkodeet akuuno webu nekad neredzot nevienu DB un citus layerus. Tad atnaak cic koderis un rejuuzo tavu freimworku "pluginojot" savus objektus kas implementee tavus kreisos interfeisus. Karoche… visi plugini ir ljoti labi OOP piemeeri!

19 MZM @ 15:32 (2005. gada 06. janvāris)

Mļe! Bet tad būtu uzrakstījuši/iemetuši linku uz rakstu gabalu, kur tas saprotami aprakstīts, nevis tie bezgalīgie piemēri ar automašīnām, krāsām un dzīvniekiem. Idejas no tiem var saprast, bet kad runa ir par abstraktām (netaustāmām) lietām, tad kaut kā nedomājas…

20 misame @ 16:44 (2005. gada 06. janvāris)

mzm: a mož tas nekur nav aprakstīts? varbūt tie, kas beidzot tikuši līdz pielietojamam OOP, ir tik aizņemti, ka vairs manuāļus neraksta? :DDDD

Kā tu saucies:
Tava e-pasta adresīte:
(nevienam netiks rādīta, vai dota; pat pie komentāra ne)
Ko teiksi?
FYI
* Formatēšana: iekļaujot tekstu no abām pusēm iekā '//', tas iznāks kursīvā: //teksts// (teksts), bet treknu tekstu var dabūt ar '**' katrā pusē: **teksts** (teksts), savukārt pasvītrotu ar '__': __teksts__ (teksts).
* Enteri tiek automātiski pārtaisīti par enteriem. Jebkurš HTML (izņemot <BR.*>) tiek parādīts, kā ievadīts (ne HTML'iski)
* E-pastu var vadīt droši iekšā, ja ir bailes no spambotiem. Tas tiek aizsargāts no jamajiem.
* Jebkurš url'is (www.kaka.com, http://kaka.com/, …) tiek automātiski pārtaisīts par spiežamu prieku (www.kaka.com, http://kaka.com/, …)
* Ko nozīmē 'detransliterēšana'? Manuprāt sen jau ir laiks sākt rakstīt nevis translitā (aaboljiishi), bet gan normāliem letiņu burtiem (āboļīši). Tad nu tieši to arī dara attiecīgā poga - pārveido tekstu no translita uz parastu. Gadās kļūmītes, bet labāk šitā nekā nekā.
 

Valid CSS! Valid XHTML 1.0 Transitional! Valid RSS! Valid Atom!
Tātad tā. Kopīraita notice. Viss materiāls, kas atrodams šajā saitā nedrīkst tikt izplatīts, kopēts, jebkādi citādi reproducēts vai izmantots bez manas (laacz) rakstiskas atļaujas. šīs tiesības man laipni piedāvā Autortiesību Likums.
Jebkura informācija, kuru kāds labprātīgi publicē šajā saitā (piemēram, komentāri), pieder tās autoram. Taču, ievietojot infromāciju šajā saitā, tās autors sniedz saita īpašniekam tiesības to daļēji vai pilnā apjomā lietot, izplatīt, reproducēt, modificēt, adaptēt, publicēt, tulkot, publiski demonstrēt. Saita īpašnieks ir tiesīgs jebkuru komentāru jebkurā brīdī dzēst, vai modificēt.
© 1996 — 2025 laacz. Visas tiesības… nu jūs jau zināt, kur.
Spēcināts ar SPP (S Pivom Potjaņet) v2.0b (code name Marasmus)
Hostingu laipni piedāvā DEAC.

laacz blog activity

Top.LV

 

Lapa izlīdusi no servera dzīlēm 0.03542 sekundē(s)