OOP Objekt-orienterad programmering Delkursansvarig Stefan

OOP F1:1
OOP
Objekt-orienterad programmering
Delkursansvarig
Epost
Kursens webbsidor
Stefan Möller
[email protected]
http://people.dsv.su.se/~sm/oop/
Föreläsning 1
Introduktion till kursen OOP
Vad är Java?
Ett första Java-program
Input / output
Allmänt om programmering – se gärna ITP Föreläsning 2:
https://video.dsv.su.se/ht10/dvkintro/
Stefan Möller
OOP F1:2
Central-enhet
PM
CPU
Skivminne
Sekundärminnesenheter
(SM)
CD-läsare
Diskett-läsare
Stefan Möller
1
OOP F1:3
Primär-minne (PM)
Processor (CPU)
0
11001010 00101101 10101100 10101101
4
00101101 10101100 10101101 10101010
R1
8
10101011 01101101 10011100 11010011
R2
12
00101101 10101100 10101101 11010001
16
11001010 00101101 10101100 10101101
20
01011100 01111001 00110100 11101001
24
10011100 10101011 10101100 10101101
28
11001010 00101101 10101100 01110001
Ett antal register ...
Styrenhet
Aritmetisk
enhet
PM är en vektor av minnesceller
8 bitar = 1 byte, 4 byte = 1 ord
t ex 512 MB (megabyte - miljoner byte)
I PM finns program-instruktioner & -data
Stefan Möller
OOP F1:4
Kod i högnivåspråk måste översättas till maskinkod.
Kompilering:
Källkod i
högnivåspråk
Kompilator
Olika beroende
på datorsystem
Maskinkod som
kan exekveras i
datorsystemet
Interpretering:
Källkod i
högnivåspråk
Interpretator
Olika beroende på datorsystem
Läser en instruktion i taget, översätter
till maskinkod och exekverar
Stefan Möller
2
OOP F1:5
JAVA
"Plattformsoberoende"
Källkod kompileras till s.k. "Java bytekod"
Java bytekod interpreteras på aktuell dator
Java källkod
Java bytekod
Java kompilator
Måste finnas på den
dator där man vill köra
ett Java-program.
Java interpretator
Finns i de flesta
webbläsare
Stefan Möller
OOP F1:6
Vad är Java? Två logiska delar:
Språk-kärna
imperativ del
OOP-del
• datatyper
• deklarationer
• programsatser
• metoder
• mm, mm
• klasser
• objekt
• inkapsling
• arv
• polymorfism
• mm, mm
API-bibliotek
Ett (stort!) antal färdiga
klasser som kan användas
i olika program.
Uppdelat i delbibliotek, t.ex.:
• java.io
• java.util
• javax.swing
• m.fl, m.fl.
Dokumentation på:
http://java.sun.com/javase/6/docs/api/
Stefan Möller
3
OOP F1:7
Java är freeware, kan laddas ner från Sun (java.sun.com)
Olika versioner 1.0 1.1
1.2 1.3 1.4
1.5 1.6
Java SE - JDK 6
(Java Standard Edition version 6)
Innehåller det man behöver
Kompilator (javac)
JVM (Java Virtual Machine), dvs interpretatorn (java)
API-biblioteket
(plus lite annat ...)
(på MS Windows måste path-variabeln uppdateras ...)
Instruktioner och hjälp för installation, se DSV:s webbsidor:
http://dsv.su.se/introdator/java/
Stefan Möller
OOP F1:8
Kursen OOP
Läses av flera olika studentgrupper:
DSK1:OOP (ID1013)
GES:OOP
OBS – samma kurs med samma innehåll.
Kursen är på 7.5 hp, examinationen uppdelad på:
Inlämningsuppgift 1, 1.5 hp
Inlämningsuppgift 2, 3 hp
Tentamen, 3 hp
Inlämningsuppgifterna betyg G/U, tentan betyg A-F
Stefan Möller
4
OOP F1:9
Kursen OOP
Innehåll:
Java's språkkärna
imperativa delen
OOP delen
Användning av API-biblioteket
Konstruktion av mindre program
Litteratur:
Lewis & Loftus
Java Software Solutions, Upplaga 6
(annan bok kan användas)
Föreläsningsbilder mm. material
Kommunikation:
First Class-konferens för inlämning av inlämningsuppgifter
samt handledning. Webbplats för material.
Stefan Möller
OOP F1:10
// Ett första JAVA-program
class Hello{
public static void main(String[]args){
System.out.println("Hej Världen!");
}
}
// Resten av raden är en kommentar, ignoreras av kompilatorn
{ } - start och slut på ett block
Case Sensitive (skiftlägeskänsligt)
Namngivning mm - följ API-bibliotekets utseende
Filnamn - samma som class-namn + suffixet .java
Hello.java - kompileras och Hello.class skapas
Stefan Möller
5
OOP F1:11
Kompilering & Exekvering (interpretering)
Källkoden på filen Hello.java
Kompilering:
>javac Hello.java
Ger bytekodsfilen Hello.class
Exekvering (egentligen interpretering av bytekoden...):
>java Hello
Stefan Möller
OOP F1:12
Programmering
Indata
Program
Utdata
Data kan vara av olika typ:
"Kalle Nilsson"
73.67
true
2010
'X'
730512
"Stockholm"
Måste representeras i programmet.
Stefan Möller
6
OOP F1:13
Javas enkla (primitiva) datatyper
Heltalstyper:
byte
short
int
long
8 bitar
16 bitar
32 bitar
64 bitar
Flyttalstyper:
float
double
32 bitar
64 bitar
Övriga:
char
boolean
Unicode 16 bitar
true / false
Textsträngar (INTE enkel datatyp):
String
Stefan Möller
Output
OOP F1:14
Görs via System.out, anropa antingen print eller println:
System.out.print("Hej");
System.out.println("Hopp");
System.out.println("Oj");
Värdet av en variabel kan skrivas ut:
int x=25;
System.out.println(x);
Ska flera saker skrivas ut så slås de ihop med operatorn +
System.out.println("Resultatet="+x);
System.out.println("Namn="+namn+"Åldern="+ålder);
Stefan Möller
7
OOP F1:15
Input
Görs via System.in. Måste ”filtreras”, lämpligen med en Scanner
Scanner sc=new Scanner(System.in);
String namn=sc.nextLine();
Ofta först ställa fråga, sedan läsa in:
Klassen Scanner finns i
delbiblioteket java.util
Måste anges "nånstans"
System.out.print("Vad heter du?");
String namn=sc.nextLine();
System.out.print("Hur gammal är du?");
int ålder=sc.nextInt();
Olika inläsningsmetoder i klass Scanner:
sc.nextLine()
sc.nextInt()
sc.nextDouble()
Varför behöver inte
String och System anges
på motsvarande sätt?
m.fl. för olika input-varianter
Stefan Möller
OOP F1:16
Output och input med JOptionPane
Med en biblioteksklass som heter JOptionPane kan man skapa enkla dialogrutor:
JOptionPane.showMessageDialog(null, "Meddelande: ");
JOptionPane ligger i
delbiblioteket javax.swing
String namn=JOptionPane.showInputDialog("Namn:");
OBS – endast String kan läsas in, vill man ha annan sort måste man konvertera.
String str = JOptionPane.showInputDialog("Hur gammal är du?");
int ålder = Integer.parseInt(str);
Stefan Möller
8