Gå til innhold

Objektorientert programmering, hva er det egentli?


Anbefalte innlegg

Skrevet

Jeg har hørt mye snakk om objektorientert programmering, men har egentlig aldri forstått hva dette er.. Er det noen som har tid til og skrive en forklaring som sier hva det er, på en enkel måte?

Videoannonse
Annonse
Skrevet

Objekt orientert programmering var en norsk oppfinnelse.

Keg kommer ikke på hva det er, men C var noe annet.

Jeg kommer ikke på hva det heter :mad:

Så lagde Bjarne C with Classes, som det fulgte med nye funksjoner.

Litt dårlif forklart men :blush:

Skrevet

(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.

Skrevet

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.

Skrevet (endret)

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
Skrevet

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.

Skrevet

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.

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

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