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 Kodskelett i Java procedure My_Program is begin -- Code goes here end My_Program; public class MyProgram { public static void main(string[] args) { // Code goes here 8
Imperativa delen av Java(3) Deklaration och tilldelning i Ada Deklaration och tilldelning i Java 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; 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 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) false true Notera: String finns inbyggt in Java, men är inte en primitiv 10
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 &&!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 while i < 10 loop i := Do_Something; end loop; loop i := Do_Something; exit when i > 10; end loop; Upprepning i Java while (i < 10) { i = dosomething(); do { i = dosomething(); while (i <= 10); if (i > 10) { break; går också bra for i in 1..10 loop Put(i); New_Line; end loop; for (int i = 0; i < 10; ++i) { System.out.println(i); 13
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); 14
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 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; Beskrivs av Klass Objekt Instantierar 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