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! Kursledning Kursledare: Jonas Lindgren Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson Examinator: Torbjörn Jonsson Kurssekreterare: Anna Grabska Eklund 1
Kursinnehåll 12 Föreläsningar (24h) 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 Innan vi börjar.. 2
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 Imperativa delen av Java(1) Kodskelett i Ada Kodskelett i Java procedure myprogram is begin null;--code goes here end myprogram; public class MyProgram{ public static void main(string args[]){ //code goes here 3
Imperativa delen av Java(2) Primitiva datatyper Datatyp Storlek(bits) Största negativa värde byte 8-128 127 short 16-32,768 32,767 Största positiva värde 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) true false Notera: String finns inbyggt in Java, men är inte en primitiv Imperativa delen av Java(3) Deklaration och tilldelning i Ada Deklaration och tilldelning i Java procedure myprogram is x : Integer; y : Character := 'c'; z : array(1..5 ) of integer; s : String(1..5) := "hello"; begin x := 7; end myprogram; 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 = " 你好 "; x = 7; 4
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 XOR << Binär vänsterskift >> Binär högerskift Imperativa delen av Java(5) Villkorssatser i Ada Villkorssatser i Java 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 &&!some_bool_func(c)){ dosomething(); else if(a == 0){ dosomethingelse(); 5
Imperativa delen av Java(6) Upprepning i Ada Upprepning i Java for I in 1..10 loop Put(I); New_Line; end loop; while i < 10 loop i = do_something; end loop; loop i = do_something; exit when i > 10; end loop; for(int i = 1; i <= 10; i++){ System.out.println(i); while(i < 10){ i = dosomething(); do{ i = dosomething(); while(i <= 10); if(i > 10){ break; går också bra Imperativa delen av Java(7) Funktioner och procedurer i Ada Metoder i Java 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; int sum(int a, int b){ return a+b; void print(string text){ System.out.println(text); 6
Imperativa delen av Java(8) Exceptions i Ada Exceptions i Java raise Exception_Name; begin --code that raises exception --here exception when Exception_Name1 => Do_Something; when Exception_Name2 => Do_Something_Else; end throw new ExceptionName(); throw new ExceptionName("message"); try{ //code that throws exceptions here.. catch(exceptionname1 e1){ dosomething(); catch(exceptionname2 e2){ dosomethingelse(); Imperativa delen av Java(9) Paket i Ada Paket i Java package body Package_Name is package packagename; --... end Package_Name; //... 7
Objektorienterad programmering Introduktion till OOP(1) Fallstudie: Boll Slutsatser: Attribut (en. field) Information/egenskaper Metoder (en. method) vad kan den göra 8
Introduktion till OOP(2) Fallstudie: DVD-spelare Slutsatser: Attribut (en. field) Information/egenskaper Metoder (en. method) vad kan den göra Objekt kapslar in sin implementation, visar upp ett gränssnitt Introduktion till OOP(3) Fallstudie: DVD-spelare + tv Visa upp den här filmen! Slutsatser: Attribut (en. field) Information/egenskaper Metoder (en. method) vad kan den göra Objekt kapslar in sin implementation, visar upp ett gränssnitt Objekt samarbetar! 9
Introduktion till OOP(4) Fallstudie: många objekt Slutsatser: Objekt kan vara exakt lika varandra, men är ändå inte samma objekt Objekt som verkar vara likadana hör ändå ihop på något sätt.. Klasser Beskriver en typ av objekt class PacManBaddie{ int color; Point position; boolean isvulnerable;... boolean trytoeatme(){ if(isvulnerable){ return true; else{ return false; Beskrivs av Klass Objekt Instantierar 10
Hello World! Ett komplett, objektorienterat program skrivet i Java class Human{ int age = 20; void sayhello(){ System.out.println(" Well hello there! "); public static void main(string args[]){ Human bert = new Human(); bert.sayhello(); 11