Inkapsling (Separation of Concern)
Från Rilpedia
Inkapsling i bemärkelsen Separation of Concern (sv. ung. att hålla isär saker och ting) innebär inom datorprogrammering att man använder olika mekanismer för att separera sådant som på ett abstraktionsplan inte har med vartannat att göra.
Innehåll |
Kod och data
En av de mest uppenbara inkapslingarna man gör inom programmering enligt denna paradigm är att man alltid försöker hålla isär programkoden som opererar på ett data och själva datat. Idealt ska den enda beröringspunkten mellan kod och data vara de operationer som koden utför på datat.
Ett exempel på detta är att man i moderna program nästan alltid håller isär den programkod som presenterar användargränssnittet mot användaren från de ledtexter och liknande som styr användningen - till exempel ledtexten "Spara som..." som kommer upp i en dialogruta när man begär att ett program ska spara det arbete man håller på med.
På detta sätt blir det också enkelt att göra ett datorprogram multispråkligt - man byter språk på det data som innehåller programmets ledtexter, och vips har man skapat en ny språkversion av programmet.
Egenskaper
En annan vy på inkapsling enligt denna paradigm är att man i god programvarudesign alltid strävar efter att kapsla in den kod som ger ett program en viss egenskap - Separation of Features. Den kod som utför utskriftsarbeten kapslar man sålunda in och hanterar den som ett fristående block som man förser med ett API.
Model - View - Controller
Model - View - Controller-paradigmen (MVC, sv. Modell - Vy - Kontroll) är en inkapslingsmetod som tillhandahåller ett kraftfullt sätt att organisera komplexa applikationer. Angreppssättet är vanligt inom den objektorienterade världen.
I detta fall utgår man från
- Vilket data som ska bearbetas och hur detta är organiserat: Modellen
- Vilka delar av datat som ska presenteras för användaren (som kan vara en mänsklig användare eller ett annat program) och hur det ska presenteras: Vyn
- Vilka operationer som ska kunna utföras på datat, och hur: Kontrollen
Exempel: Ordbehandlaren
I ett ordbehandlingsprogram är modellen det dokument som du arbetar med. Vyn är programmets presentation mot dej av det dokumentet. Kontrollen är de redigeringsuppgifter du utför på dokumentet.
Modellen är i detta fall tämligen oförutsägbar, medan de operationer användaren vill utföra är väldigt förutsägbara. Det finns sällan behov av mer än ett fåtal vyer av modellen i ett sådant program.
Exempel: En adressbok
I en adressbok samlar man ofta på sig uppgifter om sin bekantskapskrets i form av
- Namn (förnamn, efternamn)
- Adress
- Postadress
- Ort
- Telefonnummer hem
- Telefonnummer arbete
- Mobilnummer
- Faxnummer
- Födelsedag
- Arbetsplats
- Roll på arbetsplats
I detta fall bygger man upp sin modell med möjligheten att samla allt data om en viss person på ett sådant sätt att detta bildar en ihopkopplad entitet - en datastruktur. Sedan identifierar man de vyer på denna modell som kan vara av intresse - exempelvis
- Namn och mobilnummer
- Namn, adress, postadress, ort
- Namn, arbetsplats och roll på arbetsplats
- Namn och födelsedag
I en välgjord design enligt MVC-paradigmen är det alltså en enkel sak att definiera nya vyer - dvs, att sammanställa sitt data på olika sätt och ur olika - just det! - vyer. Anledningen till att detta blir enkelt är just att man har hållit isär saker som inte har med varandra att göra.