Kursinfo, Ada till Java, OOP intro, Hello world

TDDC30
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1
Jonas Lindgren, Institutionen för Datavetenskap, LiU
På denna föreläsning:
•
Kursinformation
•
Imperativa delen av Java
•
Introduktion till objektorientering
•
Hello World!
1
Kurspersonal
• Kursledare: Erik Nilsson
• Examinator: Torbjörn Jonsson
•
•
•
•
•
•
Labbhandledare : Rebecka Geijer Michaeli (I, Ii)
Labbhandledare : Magnus Nielsen (SVP)
Labbhandledare : Christopher Omberg (SVP)
Labbhandledare : Sam Le (I, Ii)
Labbhandledare : Johan Frimodig (I, Ii)
Labbhandledare :Tore Risinger (I, Ii)
• Kursadministratör: Madeleine Häger Dahlkvist
2
Kursinnehåll
•
•
•
•
(ca) 11 Föreläsningar (22h)
5 Lektioner (10h)
5 Laborationer (52h)
Datortentamen..
Datastrukturer
och
algoritmer
Java
24h + 10h + 52h = 86h schemalagd tid
Kurslitteratur
Data Structures and Algorithms in Java av Michael T. Goodrich och Roberto Tamassia
Java Direkt med Swing av Jan Skansholm
3
725G82 (SVP)
• 2 HP Extra!
• => Problemlösning med Java, intro nu i början
av kursen
• 3 Föreläsningar/Lektioner
• (ca) 10 laborationer
• Obligatorisk dugga (minst 3 tillfällen, start v. 5)
• Eventuellt kommer det gå att dugga tidigare
• Omtenta i annan kurs krockar med labpass för grupp B (4/3) => välj
grupp A i första hand.
Innan vi börjar..
5
Labbarbetet
2014:
Innan vi börjar..
Labbarbetet
2015:
6
Varde Java!
•
•
•
•
Ett objektorienterat språk
Ett av världens mest använda
Senaste version 1.8 (vi kommer använda 1.7)
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
7
Imperativa delen av Java(1)
Kodskelett i Ada
procedure My_Program is
begin
-- Code goes here
end My_Program;
Kodskelett i Java
public class MyProgram {
public static void main(String[] args) {
// Code goes here
}
}
8
Imperativa delen av Java(3)
Deklaration och tilldelning i Ada
procedure My_Program is
x : Integer;
y : Character := 'c';
z : array(1..5 ) of Integer;
s : String(1..5) := "hello";
begin
x := 7;
end My_Program;
Deklaration och tilldelning i Java
public class MyProgram {
public static void main(String[] args) {
// Variables may be declared
// (almost) anywhere in the code
int x;
char y = 'c';
int[] a = new int[5]; // 0..4
String s = ”hello";
x = 7;
}
}
9
Imperativa delen av Java(2)
Primitiva datatyper
Datatyp
Storlek(bits)
Största negativa
värde
Största positiva
värde
byte
8
-128
127
short
16
-32,768
32,767
int
32
-2,147,483,648
2,147,483,647
long
64
-9,223,372,036,
854,775,808
9,223,372,036,854,
775,808
Datatyp
Storlek(bits)
Minsta värde
Största värde
float
32
+- 3.403823e-45
+-3.403823e+38
double
64
+-4.940655e-324
+-4.940655e+308
Datatyp
Storlek(bits)
Minsta värde
Största värde
char
16 (!)
0
65,536
boolean
(1)
false
Notera: String finns inbyggt in Java, men är inte en primitiv
true
10
Imperativa delen av Java(5)
Villkorssatser i Ada
if a = 4 and
b /= 3 and
not Some_Bool_Func(c) then
Do_Something;
elsif a = 0 then
Do_Something_Else;
end if;
Villkorssatser i Java
if (a == 4 &&
b != 3 &&
!someBooleanMethod(c)) {
doSomething();
} else if (a == 0) {
doSomethingElse();
}
11
Imperativa delen av Java(4)
Operatorer
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
Operator
Betydelse
|, &, ^
Binär OR, AND och XOR
<<
Binär vänsterskift
>>
Binär högerskift
12
Imperativa delen av Java(6)
Upprepning i Ada
Upprepning i Java
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);
for i in 1..10 loop
Put(i);
New_Line;
end loop;
for (int i = 0; i < 10; ++i) {
System.out.println(i);
}
if (i > 10) {
break;
} går också
bra
13
Imperativa delen av Java(7)
Funktioner och procedurer i Ada
function Sum(a, b : in Integer)
return Integer is
begin
return a + b;
end Sum;
Metoder i Java
int sum(int a, int b) {
return a+b;
}
procedure Print(text : in String) is void print(String text) {
begin
System.out.println(text);
Put_Line(text);
}
end Print;
14
Imperativa delen av Java(8)
Exceptions i Ada
raise Exception_Name;
begin
--code that raises exception
--here
exception
when Exception_Name1 =>
Do_Something;
when Exception_Name2 =>
Do_Something_Else;
end
Exceptions i Java
throw new ExceptionName();
throw new ExceptionName("message");
try {
// Code that throws exceptions here
} catch (ExceptionName1 e) {
doSomething();
} catch (ExceptionName2 e) {
doSomethingElse();
}
15
Imperativa delen av Java(9)
Paket i Ada
Paket i Java
package body Package_Name is
package packagename;
--...
end Package_Name;
//...
16
Objektorienterad programmering
17
Introduktion till OOP(1)
Fallstudie: Boll
Slutsatser:
• Attribut (en. field) Information/egenskaper
• Metoder (en. method) Vad den kan göra
18
Introduktion till OOP(2)
Fallstudie: DVD-spelare
Slutsatser:
• Attribut (en. field) Information/egenskaper
• Metoder (en. method) Vad den kan göra
• Objekt kapslar in sin implementation, visar upp ett gränssnitt
19
Introduktion till OOP(3)
Fallstudie: DVD-spelare
+ TV
Visa upp
den här
filmen!
Slutsatser:
• Attribut (en. field) Information/egenskaper
• Metoder (en. method) Vad den kan göra
• Objekt kapslar in sin implementation, visar upp ett gränssnitt
• Objekt samarbetar!
20
Introduktion till OOP(4)
Fallstudie: Kia Cee’d SW
många objekt
Slutsatser:
• Objekt kan vara lika varandra, men är ändå inte samma objekt
• Objekt som verkar vara likadana hör ändå ihop på något sätt..
21
Klasser
• Beskriver en typ av objekt
class KiaCeedSW{
Color color;
int modelYear;
String licensePlate;
boolean isBeingRepaired;
...
boolean canDrive() {
if (isBeingRepaired) {
return false;
} else {
return true;
}
}
}
Klass
Beskrivs av
Instantierar
Objekt
22
Hello World!
Ett komplett, objektorienterat program skrivet i Java
class Human {
int age = 20;
void sayHello() {
System.out.println(”Hello world!");
}
public static void main(String[] args) {
Human david = new Human();
david.sayHello();
}
}
23
I know
Java!
Show me!
24