Avatar billede nicolailissau Nybegynder
29. maj 2009 - 00:02 Der er 8 kommentarer og
5 løsninger

OOP? Ja, jeg kan bruge det til at forklare delene på en cykel tak! Men hvad mere?

Hej Eksperter

Sidder og læser noget fra denne bog:
http://books.google.com/books?id=B_OCVIL_W80C&printsec=frontcover&hl=da&source=gbs_summary_r&cad=0#PPA143,M1
Ganske gode forklaringer og let overskueligt. Men mangler lidt perspektiv. Har nu efterhånden læst lidt omkring på OOP, men har stadig ikke fundet fidusen idet. Eksemplerne er altid:
"Din klasse er en computer", "Din klasse er en cykel" og dertil hører enten en masse hardware eller en masse cykeldele.

Men det hjælper ikke på min forståelse.

Er godt med på ideen i OOP, men kan ikke se det smarte. Er der en eller flere der vil vise mig et kodeeksempel fra deres egen brug af OOP, hvor jeg kan få lidt brugbar forståelse :)

På forhånd tak,
Nicolai Lissau
Avatar billede hoeks Nybegynder
29. maj 2009 - 00:29 #1
Jeg har kodet java i et år nu, efter tidligere ikke at have skrevet objektorienteret. Jeg er begyndt at kunne se fordelen i OO, og dermed er det blevet meget sjovere at udvikle i.
Specielt synes jeg det, at man kan 'polymorphe' er ret fedt. Men da jeg er en ret dårlig programmør, så kan du jo ikke bruge mit besyv til meget. Måske kan du dog bruge disse artikler til at få større indsigt.

Her er en sammenligning imellem FP og OOP:
www.inf.uos.de/elmar/talks/oo-vs-fp.ps.gz+FP+vs+oop&cd=8&hl=da&ct=clnk&gl=dk" target="_blank">http://209.85.229.132/search?q=cache:cKjnzzp7j2MJ:www.inf.uos.de/elmar/talks/oo-vs-fp.ps.gz+FP+vs+oop&cd=8&hl=da&ct=clnk&gl=dk

Polymorping:
http://www.proceedings2005.imcsit.org/docs/38.pdf




Og her er endnu en artikel. I kommentarerne bliver der diskuteret lidt frem og tilbage - måske kan det hjælpe dig på vej:

http://blog.objectmentor.com/articles/2009/04/20/is-the-supremacy-of-object-oriented-programming-over
Avatar billede arne_v Ekspert
29. maj 2009 - 02:20 #2
Nogle bud på fordele:

1)  den tætte sammenhæng mellem koden og virkeligheden kan give et mere logisk design som er nemmere at forstå

2)  encapsulation hvor implementationen skjules gør det langt nemmere at rette i kode uden at lave ulykker

Polymorphisme hører ind under #2. Men mindst lige så vigtig er muligheden for at erklære noget for private.
Avatar billede ebusiness Nybegynder
29. maj 2009 - 02:22 #3
OOP er først og fremmest et redskab til at holde styr på din egen kode. Der er ikke noget du kan lave med OOP som du ikke kunne have lavet uden, du kan gøre det på en lidt anden måde som muligvis er mere overskuelig.

Som ny programmør får man intet ud af OOP, primært fordi det ikke er noget problem at holde styr på mindre begynderopgaver. Af samme grund ser lærebogseksemplerne ofte temmelig søgte ud, man kan simpelthen ikke konstruere en opgave som både er simpel nok til at være et godt eksempel og samtidig kompleks nok til at det i praksis giver mening at gøre noget specielt ud af OOP delen.

Der er mange meninger om emnet, men jeg synes at der er nogen grund til at bruge mere OOP end nødvendigt. Bare husk at muligheden er der, brug de dele du synes passer ind i en opgave og lad resten ligge til en anden gang.
Avatar billede arne_v Ekspert
29. maj 2009 - 02:36 #4
Det er faktisk en vigtig pointe. OOP's fordele over PP viser sig først i større applikationer.

Vi kan diskutere om skellet går ved 2000 linier kode eller 10000 linier kode.

Men OOP er ikke specielt genialt til hello world.
Avatar billede ebusiness Nybegynder
29. maj 2009 - 02:45 #5
Lige en rettelse til mit indlæg:

Der er mange meninger om emnet, men jeg synes ikke at der er nogen grund til at bruge mere OOP end nødvendigt.
Avatar billede repox Seniormester
29. maj 2009 - 08:49 #6
OOP er bare en smartere måde at lave genanvendelig kode på, der skal lette dit arbejde.

Du efterspørger et eksempel fra vores egen kode, som kan give dig et bedre indblik.

Du kan se mit databaselag (den klasse jeg har skrevet til at håndtere mine databasekald) her:
http://pastebin.com/m27131bcb

Det forudsættes i mit objekt at du enten har nogle konstanter der angiver dine MySQL oplysninger eller selv angiver dem ved instancieringen.

Eksempler på brug kan findes her:
http://pastebin.com/m431a7040

Grunden til at jeg har lavet dette abstraktionslag var for at lette processen for mig selv ved databasekald og give mig mulighed for indføre nogle design patterns som kunne bruges med de andre objekter.

OOP er smart fordi objektet er genanvendeligt (særligt fra PHP5 er det blevet rigtig godt). Og når du først har prøvet at andvende et objekt og opdaget hvordan simpelt struktureret kode kan gøre det nemt for dig at løse opgaver og tilrette kode, vil du sikkert se lyset.
Avatar billede j4k0b Nybegynder
29. maj 2009 - 08:51 #7
Objektorienteret programmering gælder langt hen ad vejen om at programmerer virkelighedens arbejdsgange ind i dit program, på en måde så det ligner virkeligheden. Det giver ikke så meget mening at programmere en cykel, men hvis du er ved at lave en webshop så har du mange elementer (objekter) der skal repræsentere noget fra den virkelige verden, eksempelvis én ordre, én kunde, ét produkt osv. Når du skriver disse klasser laver du samtidig de egenskaber og funktioner det pågældende objekt stiller omverdenen til rådighed for at manipulerer med sig.

Du siger du forstår ideen bag OOP men ikke kan se det smarte i det. Mit gæt er at du har gjort dig fortrolig med nogle mindre eksempler der kort ridser lidt generelt op. Der er dog mere i det end cykler.

Hvis det er noget der har fanget din interesse, og du er typen der kan sætte sig ned og læse en større omgang abstrakt design-filosofi, så vil jeg anbefale dig at købe denne lærebog fra Datamatiker- og Dataloguddannelsen:

Objektorienteret analyse & design
ISBN-10: 8777511530
ISBN-13: 9788777511530
Pris: cirka 400 kroner

http://www.saxo.com/dk/item/objektorienteret-analyse-design-paperback.aspx?searchkeyword=objektorienteret+analyse+og+design&searchurl=%2fsearch%2fsearch.aspx%3fkeyword%3dobjektorienteret%2banalyse%2bog%2bdesign%26pagemodule%3dfront
Avatar billede nicolailissau Nybegynder
29. maj 2009 - 10:40 #8
Mange tak for svar! Der fik jeg det afklaret, ikke mindst fordi jeg startede på at orientere min mysql query.. Hvilket så jo var et godt formål.

Da jeg oprettede spørgsmålet igår gik det ret stærkt (i frustrationens bitre arme) og jeg kan se jeg har fået lagt sølle 30 point. Men jeg vil bede j4c0b, repox og arne_v om at smide et svar.

Mange tak for den detaljerede afklaring.
Avatar billede repox Seniormester
29. maj 2009 - 10:56 #9
Jamen, held og lykke med OOP ;)
Avatar billede j4k0b Nybegynder
29. maj 2009 - 12:16 #10
svar
Avatar billede arne_v Ekspert
29. maj 2009 - 13:07 #11
svar
Avatar billede nicolailissau Nybegynder
29. maj 2009 - 14:46 #12
6 point :) arghh.. Vær venlige at smide et svar i denne post:
http://www.eksperten.dk/spm/876655
Hjælp skal belønnes.
Avatar billede arne_v Ekspert
29. maj 2009 - 15:15 #13
Den rigtige holdning !

Bemaerk dog at der sammenlagt kun maa uddeles 200p for et spoergsmaal.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester