Inkapsling är en av de central delarna i Objektorienterad programmering (OOP). De övriga är klass, arv och polymorfism.
Inkapsling kan man se som ett skydd för en klass så att den inte kan användas på fel sätt. Det kan också handla om att inte visa/exponera för många saker, speciellt inte sånt som inte är relevant för den som ska använda klassen.
Kort kan vi säga att det handlar om att förstå dessa fyra nyckelord som styr inkapsling för klasser, metoder och attribut:
- public
- internal
- protected
- private
En huvudregel som man bör tillämpa är att alltid vara så restriktiv med tillgång till metoder o attribut. Med andra ord; om något kan vara private så bör du använda private.
Public
Metoder och attribut som blir markerade public kan nås överallt. Man brukar benämna det publika som ”gränssnittet” till en klass. Var försiktig med att göra allt publikt. Kan du så bör du faktiskt göra allt privat.
Private
Man skulle kunna säga att private är lite raka motsatsen till public. Det är endast kod inifrån själva klassen som kan nå klassens metoder o attribut som är markerade privata.
Protected
För att protected ska spela någon roll så måste det finnas ett arv. Protected skyddar alla metoder o attribut så att endast klassen och dess subklasser kan använda dem. Man skulle kunna säga att attribut och metoder begränsas till ”inom familjen”.
Det är viktigt att tänka på om du vill att du eller andra ska kunna skapa subklasser från din klass. Vilka saker ska då subklassen få tillgång till?
Internal
Detta är kanske den minst vanliga. För att att internal ska spela någon roll så måste det finnas olika projekt. Internal fungerar som publikt men hindrar åtkomst om det sker från ett annat projekt eller en annan applikation. Oftast använder man internal när man skriver ”paket”, dvs. separata projekt som blir separata dll-filer. När dessa ”paket” sedan används av ett annat program (eller projekt) då spelar internal roll.
Sammanfattning
modifierare
i klassen
i subklasser
i andra projekt
i andra klasser
public
ja
ja
ja
ja
internal
ja
ja
nej
ja (i samma projekt)
protected
ja
ja
nej
nej
private
ja
nej
nej
nej
Videogenomgång
Videon nedan tar dig igenom ett komplett exempel där alla varianter av inkapsling demonstreras.
Övningar
Övning 1
Skapa en klass som beskriver en Bok. Du ska ha med följande egenskaper: Titel, Författare, AntalSidor. Klassen ska också ha en metod SkrivUt som skriver ut bokens info.Skriv ett program som använder klassen Bok och demonstrerar att den fungerar.
Senaste kommentarer