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