Redigerer
Objektorientert programmering
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
'''Objektorientert programmering''' ('''OOP''') er et [[paradigme]] for [[programmering]] av [[Datamaskin|datamaskiner]]. Konseptet stammer fra arbeidet [[Norge|nordmennene]] [[Kristen Nygaard]] og [[Ole-Johan Dahl]] gjorde ved [[Norsk Regnesentral]] med [[programmeringsspråk]]et [[Simula]] på [[1960-tallet]], noe de ble belønnet med både [[Turing-prisen]]<ref>{{Kilde www |url=http://awards.acm.org/citation.cfm?id=6917600&srt=all&aw=140&ao=AMTURING&yr=2001 |tittel=ACM Turing Awards: 2001 – Ole-Johan Dahl |besøksdato=2011-10-22 |språk=Engelsk }}{{død lenke|dato=august 2017 |bot=InternetArchiveBot }}</ref><ref>{{Kilde www |url=http://awards.acm.org/citation.cfm?id=5916220&srt=all&aw=140&ao=AMTURING&yr=2001 |tittel=ACM Turing Awards: 2001 – Kristen Nygaard |besøksdato=2011-10-22 |språk=Engelsk }}{{død lenke|dato=august 2017 |bot=InternetArchiveBot }}</ref> og [[John von Neumann-medaljen]] for. Prinsippene i OOP som de skapte påvirket og ble utbredt senere gjennom en rekke programmeringsspråk. Blant annet [[Smalltalk]] fra [[1970-årene]], [[C++]] fra [[1980-årene]], [[Java (programmeringsspråk)|Java]] og [[Python]] fra [[1990-årene]] og en rekke nyere programmeringsspråk etter 2000. De fleste av de mest brukte programmeringsspråkene i dag benytter seg av en objektorientert programmeringsmodell. Følgende prinsipper er sentrale i OOP: * ''Objekter'' – pakke data og funksjonalitet sammen i enhetstyper/klasser i programmet. Dette er basis for ''modularitet'', en av kvalitetene man prøver å oppnå. * ''Abstraksjon'' – gjøre at programmereren underveis kan ignorere noen av detaljene ved implementasjon av det som jobbes med. * ''Innkapsling'' – skjule den interne tilstanden til et objekt fra andre. Dette gjør at utenforstående kode ikke kan endre på tilstanden til objektet på uforutsette måter. * ''Polymorfi'' – gjøre at et objekt kan oppføre seg som et annet, bare den oppfyller den «kontrakten» grensesnittet spesifiserer. * ''Arv'' – lette arbeidet med innkapsling og polymorfi ved å tillate [[Programmerer|programmereren]] å lage objekter som er mer spesialiserte utgaver av andre objekter. ==Kobling== Kobling er et mål på hvor sterkt et objekt er knyttet til andre objekter innen objektorientert programmering. Det er ofte et mål at objekter har et begrenset antall avhengigheter. Om mange objekter har lav kopling henger ofte sammen med høy [[Kohesjon (informatikk)|kohesjon]], som ofte er ønsket. ==Kohesjon== Kohesjon handler om hvor fokusert ansvar et objekt har i objektorientert programmering. Et mål i objektorientert programmering er ofte høy kohesjon. Høy kohesjon vil si høyt fokus og begrenset ansvar, og begrenset ansvar betyr som regel at objektet utfører et begrenset antall oppgaver gjerne innenfor ett funksjonelt område. Ved å sørge for høy kohesjon bidrar man til å modularisere og gjøre vedlikehold enklere. Høy kohesjon korrelerer ofte med lav kopling. ==Fordeler og ulemper== Objektorientert programmering har vært det rådende paradigmet siden [[1990-årene]], og har både tilhengere og motstandere. Tilhengerne peker ofte på at objekter og hierarkier både passer den virkelige verden godt og er en naturlig måte å tenke på for mennesker. De trekker også fram at de fleste utviklere i dag er kjent med og tildels utdannet i paradigmet, og kan jobbe med kode som er skrevet slik uten ekstra opplæring. Motstanderne peker ofte på virkelige problemstillinger som passer dårlig i en objektmodell samt problemet med å bruke objektorientering i samband med [[relasjonsdatabase]]r og at umodne utviklere kan overdrive og dra prinsippene for langt og etterape stil og floskler uten å helt forstå når noe er riktig og feil å bruke og da ende opp med kildekode som er mer komplisert enn nødvendig. [[Funksjonell programmering]] trekkes ofte frem som en motsats til OOP selv om noen også ser de to paradigmene som utfyllende til hverandre og at man kan bruke begge deler i samme system/kodebase ‒ noen språk har støtte for begge. == Se også == * [[Funksjonell programmering]] * [[Generisk programmering]] == Referanser == <references/> == Eksterne lenker == * {{Offisielle lenker}} * [https://web.archive.org/web/20050524182840/http://fagbladet.nifustep.no/fagbladet/innhold/redaksjonsarkiv/nr_4_1995/ein_grunnstein_i_babels_t_rn_historia_om_det_norske_programmeringsspr_ket_simula Artikkel om Simula fra Fagbladet Forskningspolitikk] {{stubb}} {{Typer programmeringsspråk}} {{Autoritetsdata}} [[Kategori:Programmering]] [[Kategori:Norske oppfinnelser]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Objektorientert programmering
(
rediger
)
Mal:Autoritetsdata
(
rediger
)
Mal:Død lenke
(
rediger
)
Mal:Fix
(
rediger
)
Mal:Fix/category
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:ISOtilNorskdato
(
rediger
)
Mal:Ifsubst
(
rediger
)
Mal:Kilde www
(
rediger
)
Mal:Navbox
(
rediger
)
Mal:Offisielle lenker
(
rediger
)
Mal:Spire
(
rediger
)
Mal:Spire/stil.css
(
rediger
)
Mal:Stubb
(
rediger
)
Mal:Typer programmeringsspråk
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Article
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:External links/conf/Offisielle lenker
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navbar/styles.css
(
rediger
)
Modul:Navbox
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:TableTools
(
rediger
)
Denne siden er medlem av 4 skjulte kategorier:
Kategori:Artikler med offisielle lenker og uten kobling til Wikidata
Kategori:Artikler uten offisielle lenker fra Wikidata
Kategori:Spirer 2025-05
Kategori:Store spirer
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon