SMD134 Objektorienterad programmering Den här lektionen Kursöversikt Kursens huvudwebsida Kursplanering http://www.sm.luth.se/csee/courses/smd/134/ Kursens hemsida för Lp1 – 2002 Lärare: Telefon: Rum: Mail: Josef Hallberg (49)2434 A3306 [email protected] Handledare: Mail: Jan-Åke Lehto [email protected] Kursplanering 1. 2. 3. 4. Hur skriver man ett datorprogram Java och objektorientering Att programmera Design av programmet Hur fungerar datorn? Kursplanering fortsättning Några av grundbegreppen vid programmering tas up: Processor, binära data, arbetsminne, I/O enheter o.s.v. Även mer praktiska saker som kompilering och text editorn Emacs kommer att tas upp. 5. Metoder i Java tas upp. Hur man formulerar algoritmer och implementerar dem med användning av if, for och while förklaras. 6. Genomgång av rekursiva metoder. Jämförelse mellan iterativ och rekursiv programmering av metoder. Några grundläggande typer som finns i Java tas upp. Genomgång av de primitiva datatyperna, variabler samt variabeltilldelningar med primitiva datatyper. Heltalsräkning samt flyttalsräkning tas också upp. 7. Genomgång av klasser i Java. 8. Fortsatt beskrivning av klasser. Instansmetoder och instansvariabler. Klasser som definierade datatyper. Begreppet inkapsling. Privat, offentlig, pakettillgänglig. 9. Arv och överskuggning. 10. Gränssnitt och abstrakta klasser. 11. Användningen av undantag (Exceptions) i Java. 12. I/O-klasserna i Java och deras användning. Några av de grundläggande referenstyperna i Java tas upp. Vad skillnaden mellan referenstyper och primitiva datatyper är kommer att tas upp. Uttryck och programsatser i Java tas upp. Genomgång av de olika typerna av uttryck i Java och av if-satser, for-satser, while-satser. Kurslitteratur Programmeringsspråk http://www.cdt.luth.se/~qwazi/smd134/ Kurslitteratur är valfri men några rekommenderade alternativ finns Java från grunden av Torkel Franzen. Laborationer Laborationerna sker enskilt Flera mindre uppgifter kommer att ges och dessa skall redovisas på laborationstid (före deadline som kommer presenteras på kurshemsidan) En större laboration kommer att ges. Handhavandet av denna presenteras senare. Inriktad till nybörjare i högre grad än de andra böckerna Java: Software Solutions av John Lewis och William Loftus. An Introduction to Computer Science Using Java av Kamin, Mickunas och Reingold. 1 Arbetsminnet Hur fungerar datorn? Hård Disk I/O Enheter Processor Arbetsminnet är en sekvens av minnesceller som innehåller binära tal Varje minnescell har en adress och med hjälp av denna kan man komma åt innehållet i cellen Under en programkörning (programexekvering) finns maskinkoden lagrat i arbetsminnet Arbetsminne In- och ut-enheter skärm, tangentbord, mus, skrivare etc. Maskinkoden är specifik för en viss processorarkitektur Processorn hämtar instruktioner i rätt ordning och utför dem Processorn exekverar maskinkoden Arbetsminne innehåller programkoden och datastrukturerna som programmet använder Programmeringsspråk Syftet med programmeringsspråk är att en människa skall kunna uttrycka sina tankar så att en dator kan tolka dem Ett särskilt program – en kompilator – översätter programmet till maskinkod Ett programmeringsspråk måste bl.a. kunna: Java Objektorienterat programmeringsspråk Maskinoberoende Det färdiga programmet kan köras på alla datorer som har en javamiljö Java tillhandahåller en virtuell maskin för detta ändamål, maskinkoden som denna maskin förstår kallas bytekod Utan tvetydigheter beskriva vad datorn skall göra Abstrahera bort tekniska detaljer på låg nivå (register, minnesadresser etc.) Tillhandhålla faciliteter för att konstruera datastrukturer och metoder Skräpsamling Objekt som ej används städas undan automatiskt Programtext brukar kallas för källkod Att programmera Design av programmet Skriva – Kompilera – Exekvera Testa programmet Felsökning Data som programmet arbetar med lagras också i arbetsminnet Läsa manualer Dokumentation av såväl programmeringsverktyg som klasser och metoder finns ”on-line” Java och javaprogram Java är ett imperativt programmeringsspråk, vilket innebär att ett javaprogram består av en sekvens av kommandon – satser – som datorn utför steg för steg Ett javaprogram består av minst en klass som innehåller metoder I I metoderna finns programsatserna klasserna finns metoddefinitioner 2 Ett enkelt javaprogram // Enkelt javaprogram som skriver ut texten // ”Hello world” på skärmen Objektorientering Objektorientering innebär att man manipulerar med objekt i sitt program Dessa objekt har vissa egenskaper och man kan utföra operationer på ett objekt public class Greetings { public static void main(String argv[]) { System.out.println(”Hello world”); } } Design av ett datorprogram Bryt ned problemet i hanterbara delar Identifiera Exempel: Bil Egenskaper: motorstyrka, toppfart, form, färg etc. Operationer: starta, gasa, bromsa, sväng etc. Exempel: En databas Egenskaper: innehåller poster Operationer: Lägg till en post, ta bort en post, undersök en post Utvecklingsmiljön upp i Skissa upp hur programmet skall se ut JDK (Java Development Kit) javac Kompilatorn java Den virtuella maskinen Kompilering och exekvering av ett Java program Kompilering görs genom att använda kommandot javac Exempel: > javac Greetings.java Operativsystem Rita objektdiagram Rita flödesdiagram Skriv pseudokod Kompilator vilka algoritmer som skall användas för att lösa problemet Emacs vilka objekt som programmet kan delas Bestäm Textredigerare Solaris Datorer Sun Emacs Varför använda Emacs? Snabbt, Kraftfullt finns för UNIX, Windows, m.m programmerings hjälpmedel Indentering av kod Igenkänning av syntax (färgkodning) Kompilering, felsökningsverktyg Exekvering av ett Java program görs genom komandot java Exempel: > java Greetings 3 Konfigurera Emacs Filen .emacs är en fil man lägger i roten på din användare Innehåller Ursprungligen designat för att låta flera programmerare använda datorn samtidigt. Delar resurser mellan användare på ett sådant sätt att man upplevs vara ensam på datorn Även om UNIX ursprungligen var designat av programmerare – för programmerare, väcktes snabbt ett intresse i andra branscher. inställningar för Emacs Java anpassad .emacs fil finns att hämta från: ~/qwazi/smd134/emacs/.emacs Prova gärna göra egna ändringar UNIX - Fortsättning UNIX – en kort översikt Först utvecklat av Bell Labs – 1969 Banbrytande koncept UNIX - Uppbyggnad Kärnan (kernel) (the shell) Verktyg och applikationer (tools and apps) Multitasking Skalet Multiuser Portabilitet UNIX programs (tools) av applikationsmjukvara Bibliotek Ökad popularitet ledde till en hel flora av Unixvarianter tex (Solaris, Linux, FreeBSD m.m.) UNIX – Uppbyggnad forts. Funktionerna hos ett Unix-system är organiserat i tre nivåer Skalet – The shell Finns många varianter, huvudsakliga uppgift att fungera som ”tolk” mellan användaren och datorn Förser användaren med möjligheter att ”koppla ihop” flera små program (sk. Pipes) Kärnan – The kernel Hjärtat av operativsystemet, hanterar hårdvara, filsystem, nätverk och dylikt. UNIX – Uppbygnad forts. Skalet – The shell – fortsättning Styra om in och utmatningar från program klasslista.txt cat sort sorterad.txt cat klasslista.txt | sort > sorterad.txt ls wc ls | wc list - wordcount Grundtanken: Enkla små programmoduler kan länkas samman till större kraftfullare program 4 Skalet – praktiska tips I labbet används tc-shell (tcsh) Konfigurationsfil för personliga inställningar finns i hemkatalogen: .cshrc UNIX – Grafiskt gränssnitt Ett grafiskt, fönsterbaserat användargränssnitt mot UNIX Tips: öppna filen .cshrc i emacs, lägg till raden: module add java längst ner i filen Kolla in: www.sm.luth.se/~torkel/newsmd071/newintro.html X-windows Fönsterhanterare Bestämmer utseende och ger extra funktionalitet åt användaren. KDE, FVWM, Gnome, windowmaker, m.fl. KDE liknar MacOS/Windows Terminaler vs. Grafiska gränssnitt Traditionellt sett har interaktion med datorn skett via tangentbord + textterminal Kommandon skrevs in via tangentbord, resultatet listades på skärmen Även i dagens grafiska användargränssnitt finns fördelar med att mata in kommandon på ”traditionellt vis” Sker i s.k. terminalemulatorer. I X-windows, vanligen xterm. xterm ger dig tillgång att ge kommandon till ett skal 5