Home

informasjonshiding

Informasjonshiding er et prinsipp innen programvareutvikling som innebærer at en komponent eksponerer bare det som er nødvendig for andre deler av systemet, mens implementasjonsdetaljene holdes skjult. Dette bidrar til å redusere kompleksitet, dempe avhengigheter og gjøre det lettere å endre og vedlikeholde programvaren over tid.

Opprinnelsen til begrepet hører hjemme i modulær design, og ble blant annet formulert av David Parnas i

Hvordan informasjonshiding oppnås, skjer ofte gjennom innkapsling og abstraksjon. I objektorienterte språk gjøres dette vanlig via

Fordeler med informasjonshiding inkluderer redusert kobling mellom komponenter, bedre mulighet for å endre intern implementasjon uten

Ulemper kan være at overdreven innkapsling fører til unødvendig kompleksitet eller ekstra indirection, noe som kan

Eksempler på informasjonshiding inkluderer en klasse som har private felt og offentlige metoder eller et bibliotek

I praksis står informasjonshiding sentralt i modulær design og API-utvikling, og den kobler til begreper som

1970-årene.
Parnas
hevdet
at
modulene
i
et
system
bør
skjule
designbeslutninger
og
data
som
ikke
trenger
å
være
synlige
for
andre
moduler,
slik
at
endringer
i
en
modul
ikke
uforholdsmessig
påvirker
resten
av
systemet.
private
felt
og
offentlige
grensesnitt,
som
gir
en
tydelig
API
og
skjuler
intern
representasjon.
I
modulbaserte
språk
eller
biblioteker
opprettholdes
grenser
ved
erklærte
grensesnitt
eller
kontrakter
som
andre
komponenter
kan
bruke
uten
å
kjenne
til
implementasjonen.
å
påvirke
brukere,
lettere
testing
av
grensesnittet
og
økt
gjenbruk
av
moduler
med
klare
ansvarsområder.
gjøre
feilsøking
vanskeligere
og
i
visse
tilfeller
påvirke
ytelse.
Det
krever
også
bevisst
arkitekturarbeid
for
å
sikre
at
riktig
informasjon
er
skjult
og
riktig
grensesnitt
eksponeres.
som
eksponerer
en
konsistent
API
mens
den
bak
kulissene
bytter
ut
strukturer
eller
datarepresentasjoner.
innkapsling,
abstraksjon
og
grensesnittteori.
Den
forblir
relevant
i
moderne
programvareutvikling,
også
i
kontekster
som
API-design
og
mikrotjenestearkitekturer.