Onsdag! 😀

Introduktion till programmering

Förra veckan tittade vi lite på grundläggande designmönster inom objektorienterad programmering.
Idag ska vi gå igenom grafiska interface. Vad de är, varför de finns och hur de fungerar.

Historia

Som du kanske vet var de tidiga datorerna helt textbaserade. Detta var lite opraktiskt att jobba med och så småningom kom mer och mer grafiska applikationer, och så även grafiska gränssnitt.
På den här tiden var Windows inte ett fristående operativsystem, utan det var en grafisk “frontend” för DOS, vilket var Microsofts motsvarighet till textbaserat operativsystem.
Den enda egentliga kvarlevan av DOS i dagens Windows-datorer är “Kommandotolken”, där man kan köra textkommandon om man så önskar.

Hur ritas grafiken upp?

Nu kanske du undrar hur grafiken ritas upp i Windows. Hur programmerar man ett fönster? En meny?
Saken är den att denna funktionalitet finns inbyggd i “bibliotek” i Windows. För att rita upp ett typiskt Windows-fönster behöver man med andra ord Windows på datorn.
Det samma gäller för till exempel Mac OS X, eller Linux. Ska man bygga en mobilapp för Android eller iOS behöver man tillgång till dess interface-bibliotek.
Praktiskt? Nja, kanske inte. Men så blir det när alla vill göra sitt eget system och struntar i alla andra, och många system har ju också olika förutsättningar för hur man kan bygga interface.
Detta gör ju också att om man skriver ett program för Windows, och sen vill kunna använda det på Mac OS X, måste det “portas”. Eftersom den kod som rår över interfacet är en väldigt ansenlig del av helheten, kan det vara mycket tidskrävande.

Undantag

Tänk om det fanns ett sätt att koda program med grafiska interface, som fungerar på de flesta enheter utan att portas?
Det gör det. Programmeringsspråket Java är ett av världens populäraste, antagligen mycket tack vare att programmen skrivna i det går att köra på alla datorer på vilka man kan installera “JVM”.
JVM står för “Java Virtual Machine”, och man skulle kunna säga att istället för att köra Java-programmen direkt i datorns interna lilla värld, körs de i en liten avskiljd sandlåda.
Denna “sandlåda” har sedan portats till alla möjliga plattformar, så man skulle kunna säga att istället för att programmerarna får porta sin kod till många olika system, har skaparna av Java gjort ett “låtsassystem” och portat det till många system för att underlätta för alla andra.

Undantag från undantaget

Android-applikationer är som regel skrivna i Java. Men ett typiskt Java-interface fungerar inte på Android. Varför inte?
Jo, Android använder en modifierad version av Java, och har också en egen “Virtuell maskin”, Dalvik. Det bibliotek som som oftast använder för att skapa Java-interface, Swing, finns inte i Android.
Till Android har man istället tagit fram ett nytt sätt att bygga interface, som lämpar sig bättre för små skärmar.

Bygga interface i praktiken

Att skapa interface påminner en del om “vanlig” programmering. Man skapar fönster, textrutor, knappar och dialogrutor programmatiskt.
Det finns också lösningar där man bygger interface-utseendet visuellt (som t.ex. WPF-editorn i Visual Studio), men ofta måste man komplettera denna visuella representation med kod för att kontrollera t.ex. knappklick.

Grafiska interface med Python

Python stöds också av en mängd olika system, förutsatt att man har Python-tolken installerad.
Det finns också en stor mängd olika bibliotek för att bygga interface, men jag tänkte gå igenom ett som heter TkInter.
TkInter fungerar på alla plattformar som stödjer Python, så det passar extra bra i den här lilla kursen! 🙂

Däremot blev detta ett väldigt omfattande teori-inlägg, så vi avrundar för denna veckan och går igenom kodexempel nästa gång! Håll ut 😀