Gå til innhold

Objektorientert programmering, hva er det egentli?


Anbefalte innlegg

Videoannonse
Annonse

(Jeg er vanligvis ikke snill nok til å gjøre slikt for folk, men siden jeg fant den frem da jeg rapporterte tråden kan jeg vel like gjerne poste den her: «Hva betyr egentlig Objektorientert programmering?»)

 

prog master: C er et prosessorientert (procedural) språk. For mer informasjon om C++s historie, og en del av designvalgene som er tatt, er The Design and Evolution of C++ («D&E») midt i blinken.

Lenke til kommentar

Kort fortalt...

 

Objektorientert programmering gjør det mulig å gruppere funksjoner og data sammen som en entitet.

 

F.eks. for prosedyreorienterte språk er det vanlig å gjøre følgende:

kontoliste = last_kontoliste_fra_database();

...

konto = finn_konto(kontoliste, "jan jensen")

beløp = 200 kr

trekk_fra_penger_fra_konto(konto, beløp)

 

Med objektorientert språk vil det kunne se slik ut:

Kontoregister.initialiser()

...

konto = Kontoregister.finn_konto("jan jensen")

beløp = 200 kr

konto.trekk_fra_penger(beløp)

 

 

+ en haug annet, slik som arv og annet dritt.

Lenke til kommentar

hishadow: Så vidt jeg kan se belyser eksempelet ditt lite annet enn syntaksforskjeller. Det er vanlig å emulere OO i språk uten eksplisitt støtte for det, som C. Hvorvidt et program er objektorientert eller ikke bestemmes ikke av språket det er skrevet i. Klassisk prosedyrell tankegang tror jeg ville vært mer à la:

konto.beløp -= 200

Dvs. at logikk relatert til denne klassen av objekter spres utover programmet istedenfor å isoleres i et fast sett med operasjoner (metoder). Når polymorfi kommer inn i bildet kan man heller ikke vite på forhånd hvilken funksjon metodekallet bindes til, og man ser den virkelige fordelen med objektorientering (løs kobling).

Endret av A_N_K
Lenke til kommentar

Ikke ta dette for seriøst. Var ment som et eksempel... men trekk_fra_penger_fra_konto(konto, beløp) hjelper jo til å skjule strukturen til kontoen. :fun: Jeg ser hva du mener.

 

Spredning av logikk kan jo egentlig sies å gjelde for objekter også, men på et mindre detaljnivå. Som programmerer vil vi jo ha større kontroll, men en tett sammenkobling vil fortsatt være der.

 

I prakis er jo ikke objektorientert programmering om annet enn objekter, deres oppbygning og relasjonene mellom dem.

Lenke til kommentar

Med OO kommer man i alle fall et godt stykke på vei med å isolere ansvarsområder, selv om man fort finner ut at det ikke er noen sølvkule. Aspektorientert programmering (med kodeveving) er en interessant retning, men det er altså et supplement til OO.

Lenke til kommentar
Gjest
Dette emnet er stengt for flere svar.
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...