TDDE10
TDDE11, 725G90/1
Objektorienterad programmering i Java, Föreläsning 1
Erik Nilsson, Institutionen för Datavetenskap, LiU
På denna föreläsning:
• Kursinformation
• Imperativa delen av Java
• Hello World!
1
Kurspersonal
• Kursledare: Erik Nilsson
• Examinator: Torbjörn Jonsson
•
•
•
•
•
•
•
•
Kursassistent : Rebecka Geijer Michaeli
Labbhandledare : Magnus Nielsen
Labbhandledare : Johan Frimodig
Labbhandledare : Eric Petterson
Labbhandledare : Gustav L'Estrade
Labbhandledare : Christoffer Holm
Labbhandledare : Viktor Olsson
Labbhandledare : Simon Mehari
• Kursadministratör: Madeleine Häger Dahlkvist
2
Kursinnehåll
•
•
•
•
•
(ca) 10 Föreläsningar (20h)
4 Lektioner (8h)
4+1 Laborationer (26h)
Projektarbete (12h) (EJ TDDE11)
Datortentamen
20h + 8h + 26h +12h = 66h schemalagd tid
=> mycket hemarbete!
Kurslitteratur
Objektorienterad Programmering och Java av Per Holm
Java Direkt med Swing av Jan Skansholm
3
Kursöversikt
Vecka Teoretiskt
Praktiskt
Kommentar
3
FÖ intro, 3x FÖ OOP
Lab 0, Webtutorial
(1 + 1 pass)
4
Lektion 1, FÖ Datastrukturer
Lab 1 (3 pass)
5
FÖ Generics mm, Lektion 2
Lab 2 (3 pass)
6
FÖ Grafik, Lektion 3, FÖ Extra Lab 3 (1 pass)
7
2 x FÖ Proj (ej TDDE11)
Lab 3 (2 pass)
Kravspec.
skrivs
8
LE Projekt (ej TDDE11)
2 Extrapass, Projekt
Kravspec.
OK =>
börja koda
9
Projekt
10
Projekt, Demo
Reflektion
skrivs.
4
Lite om laborationerna
• Anmälan till grupp i Webreg
Måste vara registrerad...
Ni går i grupp A eller B
Eclipse
ThinLinc
Muntlig demo i labsal
Kodinlämning via skriptet sendlab
Fusk...
–
•
•
•
•
•
•
5
Nu till Java!
•
•
•
•
Ett objektorienterat språk
Ett av världens mest använda
Senaste version 1.8
Körs av Java Virtual Machine ”JVM”, ej av operativsystemet
• + Samma program kan köras på Windows, Mac, UNIX..
• - Lite långsammare än jämförbara språk
6
Imperativa delen av
Java(1)
Kodskelett
procedure My_Program is
begin
-- Huvudprogram
end My_Program;
Källkodsfilen heter
my_program.adb
public class MyProgram {
public static void main(String[] args) {
// huvudprogram
}
}
Källkodsfilen heter
MyProgram.java
7
Imperativa delen av
Deklaration och
Java(2) tilldelning
public class MyProgram {
procedure My_Program is
public static void main(String[] args) {
x : Integer;
// Deklaration och satser mixas
y : Character := 'c';
int x;
z : array(1..5) of Integer;
x = 7;
s : String(1..5) := "hello";
char y = 'c';
begin
int[] a = new int[5]; // index 0..4
x := 7;
String s = ”hello";
end My_Program;
}
}
8
Imperativa delen av
Datatyper
Java(3)
Integer
Float
Boolean
Character
String
int
float, double
boolean
char
String
Record
Array
Class
[], Inbyggda klasser t.ex ArrayList
Primitiva
Datatyper
9
Imperativa delen av
Datatyper
Java(4)
i minnet...
x:
1
d:
b : TRUE
c : 'f'
3.14
s:
s innehåller
en referens 'h''e' 'l' 'l' 'o'
(en pekare).
int x = 1;
double d = 3.14;
boolean b = true;
char c = 'f';
Primitiva
Datatyper
String s ;= new String(”hello”);
s är en variabel av klasstyp
Just String går att tilldela
på ett enklare sätt
String s = ”hello”;
I stort sätt alla övriga datatyper i java är av klasstyp!
D.v.s. referenserna är överallt!
10
Imperativa delen av
Java(5) Villkorssatser
if a = 4 and
b /= 3 and
not Some_Bool_Func(c)
then
Do_Something;
elsif a = 0 then
Do_Something_Else;
end if;
if (a == 4 &&
b != 3 &&
!someBooleanMethod(c)) {
doSomething();
} else if (a == 0) {
doSomethingElse();
}
11
Imperativa delen av
Java(6) Upprepning
while i < 10 loop
i := Do_Something;
end loop;
while (i < 10) {
i = doSomething();
}
loop
i := Do_Something;
exit when i > 10;
end loop;
do {
i = doSomething();
} while (i <= 10);
if (i > 10) {
break;
}
går också bra
12
Imperativa delen av
Java(7) Upprepning
for i in 1..10 loop
Put(i);
New_Line;
end loop;
for (int i = 0 ; i < 10 ; ++i ) {
System.out.println(i);
}
Körs 1 gång,
Villkor för om loopen Körs i slutet av
innan första ”varvet”.
skall fortsätta gå.
varje ”varv”.
13
Imperativa delen av
Operatorer
Java(8)
Operator
Betydelse
&&
Logiskt AND
||
Logiskt OR
!
Logiskt NOT
+, -, *, /
Aritmetiska operatorer
%
Rest vid heltalsdivision (eng. Remainder)
<, <=, !=, >=, >
Jämförelseoperatorer
++x, x++, --i, i--
Pre- och
postinkrementering/dekrementering
x += 1;
14
Imperativa delen av
Java(9) Underprogram
function Sum(a, b : in Integer)
return Integer is
begin
return a + b;
end Sum;
procedure Print(text : in
String) is
begin
Put_Line(text);
end Print;
Procedurer
och
funktioner
int sum(int a, int b) {
return a+b;
}
Parametrar har alltid
parametermod ”in”
void print(String text) {
ReturtypSystem.out.println(text);
}
metoder
(funktioner)
15
Imperativa delen av
Java(10) Exceptions
raise Exception_Name;
throw new ExceptionName();
throw new ExceptionName("message");
begin
try {
-- Kod som kastar exception
// Kod som kastar exception
exception
when Exception_Name1 =>
Do_Something;
when Exception_Name2 =>
Do_Something_Else;
end
} catch (ExceptionName1 e) {
doSomething();
} catch (ExceptionName2 e) {
doSomethingElse();
}
Vi tittar närmre på
exceptions senare...
16
Imperativa delen av
Poster
Java(11)
type My_Record_Type is
record
V : Datatype;
-- …
end record;
class My_Class {
Datatype v;
int someMethod() {
// operationer på datat!
}
}
Poster används för att
samla data som hör ihop.
Klasser används för att samla
och metoder
data
som hör ihop.
Underprogram som
hanterar datat deklareras
utanför posten.
17
Imperativa delen av
Paket
Java(12)
package body
Package_Name is
package packagename;
//...
--...
end Package_Name;
Paket är för att samla ihop
data med underprogram i
en separat ”modul”.
Paket är för att samla
klasser som hör ihop.
Klasser ligger på egna filer.
Paket är alltså mappar.
Adas paket är mer som
mina klasser.
18