Inkapsling (Separation of Concerns)

Från Wikipedia

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[redigera | redigera wikitext]

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[redigera | redigera wikitext]

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[redigera | redigera wikitext]

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[redigera | redigera wikitext]

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[redigera | redigera wikitext]

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.