Inkapsling
OOPs tre grundstenar Det finns följande fundamentala koncept som varje OOP- språk stödjer: Inkapsling eller datagömning (Encapsulation) Arv (Inheritance) Polymorfism (Polymorphism)
Inkapsling (Encapsulation) Inkapsling är en grundprincip inom objektorienterad programmering. Man döljer ett objekts innehåll genom att skapa ett gränssnitt mot andra objekt. Objekt kommunicerar genom att skicka meddelanden till varandra. De erbjuder och ber varandra att exekvera metoder. Programmeraren behöver därför inte veta hur ett objekt är skrivet, bara hur man skriver meddelanden till det. En annan fördel är att objektet kan skyddas mot fel i andra objekt.
Inkapsling Dölja Skydda mot ”felaktig” manipulering av klassens data. ”viktiga” saker som behöver skyddas, ”oviktiga” saker som inte behöver disponeras för andra. Bilisten behöver inte veta hur motorn arbetar för att köra bilen. Skydda mot ”felaktig” manipulering av klassens data. Förhindra t ex beräkning av en cirkel mot negativt värde på radien. Kolla så en array inte indexeras utanför gränserna.
Inkapsling I .Net kan man tillämpa inkapsling på olika sätt. properties är ett exempel på inkapslingstekniker i .Net. Obs. inga pareneser reserverat ord i properties, och här en string. Passar i alla data typer (även egna objekt)
Inkapsling - synlighetsmodifierare Datagömning innebär att access till data kan kontrolleras med hjälp av synlighetsmodifierare. Fem nivåer: public, åtkomlig utan begränsning private, åtkomlig endast från klassens medlemmar protected, som private men också åtkomlig från subklasser internal, åtkomlig från assemblyn (medlemmar i samma exe, eller dll) protected internal, som internal men också åtkomlig från subklasser (i andra assemblyer)
Datagömning - Tumregeler Instansvariabler private – skall väljas i första hand på alla variabler Variabler som sparar mellandata skall alltid vara privata. Nästa val bör vara protected och sista public. Man skall helst inte ha någon instansvariabel som är publik. Varför privat instansvariabel? för att kontrollera om man vill ge andra objekt rättighet att endast uppdatera (ändra) variabelns värde, endast läsa, eller både läsa och uppdatera. Kontrollera att riktiga (kontrollerade) värden sätts in i eller läses från variabeln.
Datagömning – tumregler forts Undvik helst att ha instansvariabler som är publika. ”protected” fält och metoder blir åtkomlig för subklasser. Men även subklasser bör använda sig av gränssnitt för att minimera underhållsarbete. Samma regler gäller även metoder, dvs. de metoder som är tänkt att ingå i gränssnittet måste vara nåbara för att objektet skall kunna kommunicera med andra objekt. Sådana metoder behöver vara publika (använder public modifierare).
Synlighet - Metoder Metoder som är hjälpfunktioner dvs. de som utför t ex mellanoperationer bör vara private som första val, protected som andra. Metoden Main måste vara public . Konstruktorer skall också vara public .