Inkapsling (Separation of Concerns)

Inkapsling i bemärkelsen Separation of Concerns (på svenska ungefär att hålla isär saker och ting, delegera) 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.

Kod och data 
En av de mest uppenbara inkapslingarna man gör inom programmering enligt detta paradigm är att man alltid försöker hålla isär programkoden som opererar på data och själva data. Idealt ska den enda beröringspunkten mellan kod och data vara de operationer som koden utför på data.

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å de 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 
 Vilka data som ska bearbetas och hur dessa är organiserade: Modellen 
 Vilka delar av data som ska presenteras för användaren (som kan vara en mänsklig användare eller ett annat program) och hur de ska presenteras: Vyn
 Vilka operationer som ska kunna utföras på data och hur: Kontrollen

Exempel: Ordbehandlaren 
I ett ordbehandlingsprogram är modellen det dokument som man arbetar med. Vyn är programmets presentation mot användaren av dokumentet. Kontrollen är de redigeringsuppgifter man 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 alla data om en viss person på ett sådant sätt att dessa 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-paradigmet är det alltså en enkel sak att definiera nya vyer - dvs att sammanställa sina data på olika sätt och ur olika 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.

Programutveckling