Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Innkapsling består altså av å definere et sett operasjoner for sikker (og indirekte) tilgang til data, istedenfor å gi direkte tilgang til attributter og dermed lekke detaljer om implementasjonsteknikken til andre klasser. For å gjøre innkapslingen tydelig kan en angi i diagrammer den såkalte synligheten til navn, dvs. hvilke som skal være offentlig (kjent) og hvilke som skal være private. De offentlig skal være mulige å bruke (referere til) utenfor klassen og de private umulige. Dette illustreres med henholdsvis grønne og røde punkter eller + og - foran navnene, som vist i figuren under.

PlantUML Macro
titleKlasse med angitt synlighet av navnSynlighet angitt med grønn og rød farge
class "Person" as Person1 {
	-String givenName
	-String familyName
	+String getGivenName()
	+void setGivenName(String givenName)
	+String getFamilyName()
	+void setFamilyName(String familyName)
}
PlantUML Macro
titleSynlighet angitt med symbolene + og -
note top: Synlighet angitt med grønn og rød farge

skinparam classAttributeIconSize 0
class "Person" as Person2 {
	-String givenName"
	-String familyName
	+String getGivenName()
	+void setGivenName(String givenName)
	+String getFamilyName()
	+void setFamilyName(String familyName)
}
note top: Synlighet angitt med + og -

Tilsvarende tilbyr mange objektorienterte språk mekanismer såkalte synlighetsmodifikatorer for å deklarere hvilke navn som skal være offentlige og private. Alternativ 1 over vil kodes som følger:

Code Block
languagejava
titleInnkapsling med bruk av public og private
class Person {
	private String givenName;
	private String familyName;
	public String getGivenName() { ... }
	public void setGivenName(String givenName) { ... }
	public String getFamilyName() { ... }
	public void setFamilyName(String familyName) { ... }
}

Merk at offentlig og privat synlighet kan brukes for både operasjoner og attributter alt ettersom de oppfattes som en del av innkapslingen eller ikke (eller om innkapsling er viktig). Det er opp til programmereren å tenke gjennom hvilke som skal brukes hvor.