Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/
Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget Godkänd minst kunna redogöra för följande begrepp och skriva fungerande Javaprogram som exemplifierar och drar nytta av dem: 2
Kursplan Mål - objektorientering: arv, polymorfism, abstrakta klasser, gränssnitt - stackar, köer och länkade listor - paket och synlighet - undantag - ändliga automater - matchning med reguljära uttryck - hashtabeller och mappningar - sökning och sortering 3
Kursplan Examination Tentamen: Alla lärande mål Laborationer: 1. Stackar och köer 2. Ändliga automater och reguljära uttryck 3. Sökning och sortering 4. Arv och undantag 4
Kursplan Betygskriterier Betyget G: Minst G på samtliga examinationsmoment. Betyget VG: Utöver kraven för G, minst ett av följande krav: - VG på tentamen och minst en laboration - VG på tre laborationer 5
Planering Två pass per gång - Lektion Turing (2 timmar) - Laboration Chomsky (2 timmar) 6
Planering: Introduktion Inledning, repetition (1/9) Arv, polymorfism, abstrakta klasser, gränssnitt (5/9) 7
Planering: Del 1 - ADT Abstrakta datastrukturer - ADT (7/9) Stackar, köer, Parametiserade typer, iteratorer Abstrakta datastrukturer - ADT (12/9) Dubbellänkade listor Paket Undantag Laboration: Stackar och köer 8
Planering: Del 2 Automater Automater och reguljär uttryck (15/9) Hashtabeller, mappning och flerdimensionella fält (19/9) Laboration: Automater och reguljära uttryck 9
Planering: Del 3 - Algoritmer Sökning(28/9) Linjärsökning Binärsökning Sökträd Sortering (5/10) Urvalssortering Quicksort Laboration: Sökning och Sortering 10
Planering: Del 4 - OOP Mer om OOP (10/10) Blandat Laboration: Arv och undantag 11
Planering: Avslutning Repetition (19/10) - Exempeltenta / frågestund Handledning(1/11) 12
Viktiga datum Tentamen 22/10 9-13 (OBS: Lördag) Bergsbrunnagatan, sal 2 Omtentamen 26/11 9-13 (OBS: Lördag) Bergsbrunnagatan, sal 2 Deadlines för laborationerna: - Deadline 1 (4/11) - Deadline 2 (2/12) Andra chansen 13
Programskal public class Name{ public static void main(string args[]) {... Koden behöver sparas i filen Name.java 14
Metoder En rad programsatser som beskriver hur en metod utför något. sats; 15
Metoder Indata: meningsfulla argument/parametrar: arg_1 arg_2... arg_n sats; 16
Metoder Indata: Lämpliga argument/parametrar Utdata: Resultatet (valbart) arg_1 arg_2... arg_n sats; resultat 17
Lokala variabler public class Main{ i public static void main(string args[]) { // deklarera i utan tilldelning int i; 18
Lokala variabler public class Main{ i public static void main(string args[]) { // deklarera i utan tilldelning int i; j 5 // deklarera j med tilldelning int j = 5; 19
i 4 Lokala variabler public class Main{ public static void main(string args[]) { // deklarera i utan tilldelning int i; j 5 // deklarera j med tilldelning int j = 5; // i tilldelas värde 4 i = 4; 20
Enkla typer - Heltal Typ Minsta värde Högsta värde byte - 127 128 short - 32 768 32 767 int -2 147 483 648 2 147 483 647 long -9 223 372 036 854 775 808 9 223 372 036 854 775 807 21
Enkla typer - Decimaltal Typ Minsta värde Högsta värde Noggrannhet float 7 siffror double 3,4 10 38 3,4 10 38 1,7 10 308 1,7 10 308 15 siffror 22
Enkla typer - Sanningsvärden Typ Minsta värde Högsta värde boolean falskt sant 23
Enkla typer - char char är en teckentyp Exempel: char c = 'A'; 24
Normalt programflöde sats; sats; sats; 25
Normalt programflöde- exempel public class Normal{ public static void main(string args[]) { int i = 4; int j = 5; boolean samenumber = (i == j); System.out.println(sameNumber); 26
Villkorsflöde sant? sats; falskt sats; sats; sats; sats; sats; 27
Villkorsflöde - Exempel public class Condition{ public static void main(string args[]) { int i = 4; int j = 5; if(i == j) System.out.println("Same number"); else { System.out.print("Not the same "); System.out.println("number"); 28
Upprepningsflöde? sats; sant falskt steg; sats; sats; 29
Upprepningsflöde Exempel 1 public class While{ public static void main(string args[]) { int i = 0; while(i < 4) { System.out.println(i); i++; 30
Upprepningsflöde Exempel 2 public class For{ public static void main(string args[]) { for(int i = 0; i < 4; i++) System.out.println(i); 31
Fält(array) Ett fält(array) är en samling element av samma typ. index: 0 1 2... n 32
Fält(array) Ett fält(array) är en samling element av samma typ. Exempel: int[] array = new int[5]; array index: 0 1 2 3 4 33
Fält(array) Ett fält(array) är en samling element av samma typ. Exempel: int[] array = new int[5]; array[2] = 17; array index: 17 0 1 2 3 4 34
Fält(array) Ett fält(array) är en samling element av samma typ. Exempel: int[] array = new int[5]; array[2] = 17; array[4] = 42; array index: 17 42 0 1 2 3 4 35
Fält(array) Att loopa genom ett fält public class Array{ public static void main(string args[]) { int[] array = new int[5]; array[0] = 34; array[1] = 100; array[2] = 17; array[3] = 500; array[4] = 42; for(int i = 0; i < array.length; i++) System.out.println(array[i]); 36
Hur använder man javafilen? 1. Öppna terminalen 2. Gå till den katalog där filen med koden finns i (använd kommandot cd) 3. För att kompilera filen skriver man: javac Filnamn.java 4. För att köra programmet skriver man: java Filnamn 37
Klasser/Objekt Klass beskriver objekt class Circle{... class Square{... 38
Exempel - Person public class Person{ // instance-variable private String name = ""; // constructor public Person(String name){ this.name = name; public synlig för alla private endast synlig för klassen 39
Exempel - Person public private name 40
Exempel - Person public class Person{ private String name = ""; // constructor public Person(String name){ this.name = name; // method public String getname(){ return name; 41
Exempel - Person public getname() private name 42
Exempel - Person Hur kan vi lägga till ålder? public class Person{ private String name = ""; public Person(String name){ this.name = name; public String getname(){ return name; 43
Exempel - Person public class Person{ private String name = ""; private int age = 0; public Person(String name, int age){ this.name = name; this.age = age; public String getname(){ return name; 44
Exempel - Person public getname() private name age 45
Exempel - Person Hur kan vi komma åt åldern? public class Person{ private String name = ""; private int age = 0; public Person(String name, int age){ this.name = name; this.age = age; public String getname(){ return name; 46
Exempel - Person public class Person{ private String name = ""; private int age = 0; public Person(String name, int age){ this.name = name; this.age = age; public String getname(){ return name; public int getage(){ return age; 47
Exempel - Person public getname() private name age getage() 48
Instansvariabler Instansvariabel variabel med ett värde för varje instans av en klass Exempel i klassen Person: private int name; private int age; 49
Klassvariabler Klassvariabler - unik variabel för klassen och finns tillgänglig för varje instans av klassen Alla instanser av klassen delar på klassvariablerna. Exempel: public static int adultage = 18; 50
Klassen Person public class Person{ public static int adultage = 18; private String name = ""; private int age = 0; public Person(String name, int age){ this.name = name; this.age = age;... 51
Exempel - Person public getname() private name age getage() adultage 52
Klassen Person Hur kan vi använda adultage? public class Person{ public static int adultage = 18; private String name = ""; private int age = 0; public Person(String name, int age){ this.name = name; this.age = age;... 53
Klassen Person Hur kan vi använda adultage? public class Person{ public static int adultage = 18; private String name = ""; private int age = 0; public Person(String name, int age){ this.name = name; this.age = age;... public boolean isadult() { return age >= Person.adultAge; 54
Exempel - Person public getname() private name age getage() isadult() adultage 55
Klassmetoder Klassmetod En metod som får använda klassvariabler men inte instansvariabler Exempel: public static int getadultage() { return Person.adultAge; 56
Klassen Person public class Person{ public static int adultage = 18; private String name = ""; private int age = 0; public Person(String name, int age){ this.name = name; this.age = age;... public static int getadultage() { return Person.adultAge; 57
Exempel - Person public getname() private name age getage() isadult() adultage getadultage() 58
UML Klassnamn variabler metoder Person 59
UML Klassnamn variabler metoder Person +adultage: int - name: String - age: int 60
UML Klassnamn variabler metoder Person +adultage: int - name: String - age: int +getname(): String +getage(): int +isadult() : boolean +getadultage(): int 61
UML Person +adultage: int - name: String - age: int +getname(): String +getage(): int +isadult() : boolean +getadultage(): int Förklaring klassvariabel klassmetod - privat +publik 62
Nästa genomgång Arv polymorfi abstrakta klasser gränssnitt 63