You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Innkapsling er en programmeringsteknikk som har som formål å hindre direkte tilgang til tilstanden til et objekt fra objekter av andre klasser. Motivasjonen er todelt: For det første er det viktig å sikre at tilstanden til alle objektene er gyldig. Dette gjøres best ved at alle endringer av tilstanden skjer ved å kalle objektets metoder, heller enn å endre på attributtene direkte. På denne måten slipper andre objekter å kjenne til alle reglene for gyldighet og konsistens, og koden blir mer robust ved at all logikk om attributter og regler samles i én klasse. For det andre er det viktig at koden for en klasse ikke er avhengig av detaljer i en annen, f.eks. eksakt hvilke attributter og datatyper som brukes for å representere data, fordi dette gjør endringer lettere å håndtere.

Ta som eksempel representasjon av fornavn og etternavn for en person. Dette kan gjøres med ett String-attributt, med fornavn og etternavn skilt med mellomrom, eller to separate String-attributter, ett for fornavn og ett for etternavn. Uansett hvilken konkret representasjon som velges, så handler det logisk sett om å håndtere to (uavhengige) verdier og det er ingen grunn til at detaljer om hvordan representasjonen gjøres skal være kjent for andre klasser. Istedet defineres operasjoner for både å lese og endre disse to verdiene og implementasjonene tar seg av detaljene. Dette er illustrert i følgende figur:

PlantUML 1.2024.4[From string (line 8) ] @startumltitle Innkapsling av fornavn, mellomnavn og etternavnclass Person {String getGivenName()void setGivenName(String givenName)String getFamilyName()void setFamilyName(String familyName)}note above: "Only operations are relevant for other classes"Syntax Error?

 

For det andre er det viktig at detaljer om hvordan data representeres med attributter   kalle metoder Først og fremst gjøres dette ved å 1) definere regler for gyldighet for de ulike typene objekter og 2) sikre at alle metoder kodes i henhold til disse reglene. Dette er nøkkelen til programmeringsmetoden kalt innkapsling, som sammen med såkalte synlighetsmodifikatorer utgjør et vern mot ugyldig tilstander i programmer.

Formålet med innkapsling er hovedsaklig å sikre riktig bruk av et objekt

  • No labels