Programmering för språkteknologer II, HT2014. Rum
|
|
- Ola Lindström
- för 8 år sedan
- Visningar:
Transkript
1 Programmering för språkteknologer II, HT2014 Rum
2 Idag - Kursplan och planering - Repetition - Objektorientering Klasser Arv Polymorfism Gränssnitt 2
3 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 självständigt utforma Javaprogram som exemplifierar och drar nytta av dem: paket och synlighet, objektorientering: --- arv, polymorfism, abstrakta klasser, gränssnitt, undantag, reguljära uttryck, hashtabeller och mappningar; 3
4 Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget Godkänd minst kunna: - i Java implementera elementära algoritmer för dessa typer av uppgifter, och föra grundläggande resonemang om deras tidskomplexitet: stackar, köer och listor, sökning, sortering. 4
5 Kursplan Examination Tentamen: Alla lärandemål, speciellt teorin Laborationer: framförallt praktiska - Lab 0. Objektorientering, synlighet - Lab 1. Regulära uttryck, automater, hashtabeller - Lab 2. Sökning, sortering - Lab 3. Stackar, köer, listor, undantag, paket - Lab 4. Objektorientering, applicering av övriga lärandemål 5
6 Kursplan Innehåll - Två teoretiska delar: Objektorientering Datastrukturer och algoritmer - Ni ska även kunna applicera delarna praktiskt egen implementering Förstå och använda Javas implementationer 6
7 Kursplan Betyg Betyget G: Betyget G på tentamen Betyget G på laboration 1-4 Betyget VG: Betyget VG på tentamen Betyget G på laboration 1-4 7
8 Planering Följer laborationernas innehåll: V. 36 Introduktion, objektorientering Fö 0, Lab 0 V. 37 Reguljära uttryck, automater, hashtabeller, läsning/skrivning Fö 1, Lab 1 V Sökning, sortering, generics Fö 2, (3), Lab 2 8
9 Planering Följer laborationernas innehåll: V. (38) Stackar, köer, listor, interface, paket Fö 3-4, Lab 3 V Fördjupning och applicering av kunskaper Fö 5, Lab 4 V. 45 Repetition, tentamen Fö 6, tentamen 9
10 Laborationer - Utförande - 5 laborationer - Redovisning: laboration 0 : ingen redovisning laboration 1 4: skriftlig redovisning (via mail) - Laborationerna får göras två och två Ni väljer själva vem ni vill arbeta med Det underlättar om båda är på ungefär samma nivå Man får arbeta själv om man vill 10
11 Laborationer - Förberedelser - För att utnyttja laborationstillfället kan ni förbereda er: Läs alltid igenom laborationen innan laborationstillfället Läs relevant litteratur Börja programmera Laboration 0 nu på onsdag behöver inte förberedas i förväg, men börja gärna arbeta med den idag. 11
12 Laborationer - Omfattning - Blir större och större och mer omfattande - Mer tid finns för det större laborationerna, speciellt laboration 3 och 4. - Planera för det! 12
13 Laborationer - deadlines - Rekommenderade deadlines Laboration 1: 17/9 Laboration 2: 29/9 Laboration 3: 13/10 Laboration 4: 29/10 - i fas med kurs - Slutlig deadline: 7/11 - Uppsamling: 6/12 13
14 Datum för tentamen Tentamen: 7/11 Omtentamen: 12/12 14
15 Kurslitteratur Kursbok: Eck, David J. Introduction to Programming Using Java. Alternativ litteratur: Clifford A. Shaffer. Data Structures and Algorithm Analysis (Java version) Bruno R. Preiss. Data Structures and Algorithms with Object-Oriented Design Patterns in Java Böcker på svenska: Holm, Per. Objektorienterad programmering och Java. Studentlitteratur. Skansholm, Jan. Java direkt med Swing. Studentlitteratur. 15
16 Kursarbete - 7,5 hp motsvarar 200 timmars arbete Schemlagt: 32 timmar 7*2 h föreläsningar, 7*2 h laborationer, 4 h tentamen Eget arbete: 168 timmar - Arbete med laborationer - Läsning och föreberedelse för tentamen - Eget arbete med programmering 16
17 Repetition 17
18 Programskal Enkel klass public class Name{ public static void main(string args[]) {... Koden behöver sparas i filen Name.java 18
19 Programskal Enkel klass public class Name { public static void printnumber(int i) { System.out.println("The number is" + i); public static void main(string args[]) { printnumber(4711); 19
20 Programskal Kompilera och exekvera > javac Name.java > java Name The number is:
21 Metoder En rad programsatser som beskriver hur en metod utför något. sats; 21
22 Metoder Indata: meningsfulla argument/parametrar: arg_1 arg_2... arg_n sats; 22
23 Metoder Indata: Lämpliga argument/parametrar Utdata: Resultatet (valbart) arg_1 arg_2... arg_n sats; resultat 23
24 Lokala variabler public class Main{ i j 5 public static void main(string args[]) { // deklarera i utan tilldelning int i; // deklarera j med tilldelning int j = 5; 24
25 Lokala variabler public class Main{ public static void main(string args[]) { // deklarera i utan tilldelning int i; // deklarera j med tilldelning int j = 5; // i tilldelas värde 4 i = 4; // i tilldelas samma värde som j, dvs 5 i = j; 25
26 Enkla typer - Heltal Typ Minsta värde Högsta värde byte short int long
27 Enkla typer - Decimaltal Typ Minsta värde Högsta värde Noggrannhet float 7 siffror double 3, , , , siffror 27
28 Enkla typer - Sanningsvärden Typ Minsta värde Högsta värde boolean falskt sant 28
29 Enkla typer - char char är en teckentyp Exempel: char c = 'A'; 29
30 Normalt programflöde sats; sats; sats; 30
31 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); 31
32 Villkorsflöde sant? sats; falskt sats; sats; sats; sats; sats; 32
33 Villkorsflöde Exempel 1 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"); 33
34 Villkorsflöde Exempel 2 public class Condition{ public static void main(string args[]) { int i = 4; int j = 5; if(i == j) { System.out.println("Same number"); else if ( i < j){ System.out.print("First number smaller"); else { System.out.print("First number bigger"); 34
35 Upprepningsflöde? sats; sant falskt steg; sats; sats; 35
36 Upprepningsflöde Exempel 1 public class While{ public static void main(string args[]) { int i = 0; while(i < 4) { System.out.println(i); i++; 36
37 Upprepningsflöde Exempel 2 public class For{ public static void main(string args[]) { for(int i = 0; i < 4; i++) System.out.println(i); 37
38 Fält(array) Ett fält(array) är en samling element av samma typ. index: n 38
39 Fält(array) Ett fält(array) är en samling element av samma typ. Exempel: int[] array = new int[5]; array index:
40 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:
41 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:
42 Fält(array) Att loopa genom ett fält public class ForArray{ 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]); 42
43 Fält(array) Att loopa genom ett fält public class ForEachArray{ public static void main(string args[]) { int[] array = new int[5];... for(integer i: array) { System.out.println(i); 43
44 Argument till programmet public class CmdTest{ public static void main(string args[]) { if(args.length >= 1) { System.out.println("Hello " + args[0]); else { System.out.println("What is your name?); 44
45 Kodkonventioner Beskriver hur kod ska se ut Viktigt för att få koden läsbar Konsekvens(speciellt om man är flera) Exempel: Klassnamn börjar på stor bokstav Variabler/metoder börjar på liten bokstav Den kod ni skriver i laborationerna ska följa Oracles kodkonventioner. 45
46 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 46
47 Objektorientering - Klasser - Instans- och klassvariabler - Instans- och klassmetoder - Arv - Polymorfism - Gränsnitt - Synlighet och inkapsling - UML-diagram 47
48 Klasser/Objekt Klass beskriver objekt class Circle{... class Square{... 48
49 Klasser i Java - Standardklasser: String, File, ArrayList Vanliga metoder för dessa: String s; if(s.length() > 0) { String t = s.tolowercase(); String[] words = s.split("\\w+"); //... 49
50 Klasser i Java - Skillnad på array och ArrayList //Fast storlek String[] name = new String[5]; //Varierande storlek ArrayList<String> = new ArrayList<String>(); (implementeras som en array med fast storlek, men storleken ändras vid behov) 50
51 Klasser i Java - Wrapper-klasser klasser för att hantera enkla typer: Integer int Double double Används när man behöver en klass Exempel: ArrayList<Integer> tal; 51
52 Klasser i Java Autoboxing/Unboxing - Autoboxing: enkel datatyp konverteras till motsvarande wrapper-klass - Unboxing: Wrapper-klass konverteras till motsvarande enkla datatyp Exempel: list.set(0, 28); //motsvarar list.set(0, new Integer(28)); 52
53 Klasser Loopa igenom en ArrayLista 1 public class ForEachLoop{ public static void main(string args[]) { ArrayList<Integer> array = for(integer i: array){ System.out.println(i); 53
54 Klasser Loopa igenom en ArrayLista 2 public class WhileIterator{ public static void main(string args[]) { ArrayList<Integer> array = ; Iterator<Integer> it = array.iterator(); while(it.hasnext()){ System.out.println(it.next()); 54
55 Skapa egna klasser 55
56 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 56
57 Exempel - Person public private name 57
58 Exempel - Person public class Person{ private String name = ""; // constructor public Person(String name){ this.name = name; // method public String getname(){ return name; 58
59 Exempel - Person public getname() private name 59
60 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; 60
61 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; 61
62 Exempel - Person public getname() private name age 62
63 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; 63
64 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; 64
65 Exempel - Person public getname() private name age getage() 65
66 Instansvariabler Instansvariabel variabel med ett värde för varje instans av en klass Exempel i klassen Person: private int name; private int age; 66
67 Inkapsling - Skydda variabler genom att man INTE tillåter att andra klasser kommer åt dem - Deklarera variabler som private: private String name = ""; - Använd getter/setter för att hämta värde/ändra på dem: get-metoder: getname() set-metoder: setname(string n) - Implementationen hålls gömd => - Lätt att ändra - Går att kontrollera värden (ex: tillåtna dagar i ett datum) 67
68 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; 68
69 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;... 69
70 Exempel - Person public getname() private name age getage() adultage 70
71 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;... 71
72 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; 72
73 Exempel - Person public getname() private name age getage() isadult() adultage 73
74 Klassmetoder Klassmetod En metod som får använda klassvariabler men inte instansvariabler Exempel: public static int getadultage() { return Person.adultAge; 74
75 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; 75
76 Exempel - Person public getname() private name age getage() isadult() adultage getadultage() 76
77 UML Unified modeling Language - Verktyg för att uttrycka idéer Grafisk beskrivning av olika aspekter av objektorienterade system - Världsstandard - Vi kommer att använda klassdiagram Beskriver klasser och relationer mellan klasser 77
78 UML Klassnamn variabler metoder Person 78
79 UML Klassnamn variabler metoder Person +adultage: int - name: String - age: int 79
80 UML Klassnamn variabler metoder Person +adultage: int - name: String - age: int +getname(): String +getage(): int +isadult() : boolean +getadultage(): int 80
81 UML Person +adultage: int - name: String - age: int +getname(): String +getage(): int +isadult() : boolean +getadultage(): int Förklaring instansvariabel instansmetod klassvariabel klassmetod - privat +publik 81
82 UML relationer mellan klasser Association Klass 1 Klass 2 Arv subklass Association betyder att två klasser känner till varandra på något sätt. Kan specifieras ytterligare. 82
83 Mer om objektorientering Arv Abstrakta klasser Polymorfism Gränssnitt 83
84 Arv 84
85 Klassen Cat public class Cat{ private Person owner; private String name; public Cat(person myowner, String myname){ owner = myowner; name = myname; public String getinfo(){ return "Cat: " + name; Cat -owner: Person -name: String +getinfo(): String 85
86 Klassen Dog public class Dog{ private Person owner; private String name; public Dog(person myowner, String myname){ owner = myowner; name = myname; public String getinfo(){ return "Dog: " + name; Dog -owner: Person -name: String +getinfo(): String 86
87 Klassen Rabbit public class Rabbit{ private Person owner; private String name; private boolean incage; public Rabbit(Person myowner, String myname, boolean cage){ owner = myowner; name = myname; incage = cage; public String getinfo(){ return "Rabbit: " + name + " InCage: " + incage; Rabbit -owner: Person -name: String -incage: boolean +getinfo(): String 87
88 Klasserna samlade: Cat Dog Rabbit -owner: Person -name: String -owner: Person -name: String -owner: Person -name: String -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String 88
89 Använda klasserna public class ExampleWithoutInheritance{ public static void main(string args[]) { Person owner = new Person("Kalle", 20); Cat mycat = new Cat(owner, "MyCat"); Dog mydog = new Dog(owner, "MyDog"); Rabbit myrabbit = new Rabbit(owner, "MyRabbit", true); System.out.println("My name is " + owner.getname() + " and these are my pets:"); System.out.println(myCat.getInfo()); System.out.println(myDog.getInfo()); System.out.println(myRabbit.getInfo()); 89
90 Provkör!!! - Resultat My name is Kalle and these are my pets: Cat: MyCat Dog: MyDog Rabbit: MyRabbit incage: true 90
91 Arv Hur kan vi tala om att de är husdjur? Pet Cat Dog Rabbit -owner: Person -name: String -owner: Person -name: String -owner: Person -name: String -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String 91
92 Arv Vad har alla husdjur gemensamt? Pet Cat Dog Rabbit -owner: Person -name: String -owner: Person -name: String -owner: Person -name: String -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String 92
93 Arv Vad har alla husdjur gemensamt? Pet -owner: Person Cat Dog Rabbit -name: String -name: String -name: String -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String 93
94 Arv Vad har alla husdjur gemensamt? Pet -owner: Person -name: String Cat Dog Rabbit -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String 94
95 Arv Pet känner till Person Pet - owner: Person - name: String Person Cat Dog Rabbit -incage: boolean 95
96 Superklass och subklass Pet Superklass #owner: Person #name: String Cat Dog Rabbit -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String Subklass Subklass Subklass 96
97 Förra koden utan arv public class Cat{ private Person owner; private String name; public class Dog{ private Person owner; private String name; public class Rabbit{ private Person owner; private String name; private boolean incage; 97
98 Ny kod med arv public class Pet { protected Person owner; protected String name; public class Cat extends Pet{ public class Dog extends Pet{ public class Rabbit extends Pet{ private boolean incage; Nyckelordet extends används när man vill ärva från en annan klass. 98
99 Synlighet Samma klass paket subklass Alla klasser public X X X X protected X X X Inget (package) private X X X Vi kommer att gå igenom paket senare i kursen 99
100 Synlighet - UML Pet #owner: Person #name: String Förklaring - private # protected + public ~ package Cat Dog Rabbit -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String 100
101 Ny kod med arv Hur kan vi skapa konstruktorerna? public class Pet { protected Person owner; protected String name; public Pet(Person owner, String name){ this.owner = owner; this.name = name; public class Cat extends Pet{ public Cat(Person owner, String name){ super(owner, name); super() används för att anropa konstruktorn för klassen Pet 101
102 Ny kod med arv Hur kan vi skapa konstruktorerna? public class Dog extends Pet{ public Dog(Person owner, String name){ super(owner, name); public class Rabbit extends Pet{ private boolean incage; public Rabbit(Person owner, String name, boolean incage){ super(owner, name); this.incage = incage; super() används för att anropa konstruktorn för klassen Pet 102
103 Main-metoden public class ExampleWithInheritance{ public static void main(string args[]) { Person owner = new Person("Kalle", 20); Cat mycat = new Cat(owner, "MyCat"); Dog mydog = new Dog(owner, "MyDog"); Rabbit myrabbit = new Rabbit(owner, "MyRabbit", true); System.out.println("My name is " + owner.getname() + " and these are my pets:"); System.out.println(myCat.getInfo()); System.out.println(myDog.getInfo()); System.out.println(myRabbit.getInfo()); 103
104 Provkör!!! - Resultat My name is Kalle and these are my pets: Cat: MyCat Dog: MyDog Rabbit: MyRabbit incage: true 104
105 Arv - Fakta Arv Arv innebär att man skapar nya klasser genom att utgå från redan existerande klasser och utöka dem med ytterliggare instansvariabler och metoder. Exempel: Klassen Rabbit är en utökning av klassen Pet. 105
106 Arv - Fakta Superklass - Den klass man ärver från, till exempel klassen Pet. Subklass Den klass som ärvt från en superklass, Till exempel klasserna Cat, Dog och Rabbit Enkelt arv När klassen endast ärvt från en superklass Multipel arv När klassen ärvt från flera superklasser (Finns inte i JAVA) super() - används för att anropa superklassens konstruktor super.x() används för att komma åt metod x() i superklassen 106
107 Arv Varför? - Det blir lättare att göra ändringar i rätt klass. - Programmet blir lättare att underhålla och blir mer stabilt 107
108 Abstrakt klass 108
109 Main-metoden - alternativ public class ExampleWithInheritance{ public static void main(string args[]) { Person owner = new Person("Kalle", 20); Pet mycat = new Cat(owner, "MyCat"); Pet mydog = new Dog(owner, "MyDog"); Pet myrabbit = new Rabbit(owner, "MyRabbit", true); System.out.println("My name is " + owner.getname() + " and these are my pets:"); System.out.println(myCat.getInfo()); System.out.println(myDog.getInfo()); System.out.println(myRabbit.getInfo()); 109
110 Provkör!! - Resultat Problem: Pet does not have any method called getinfo(); Lösning: Lägg till metoden getinfo() i klassen Pet! Men, vad ska den göra för något? 110
111 Lösning 1 Lägg till getinfo() i Pet public class Pet { protected Person owner; protected String name; public Pet(Person owner, String name){ this.owner = owner; this.name = name; public String getinfo() { return "Pet:" + name; getinfo() kommer nog aldrig att anropas! 111
112 Lösning 2 Lägg till getinfo() i Pet public abstract class Pet { protected Person owner; protected String name; public Pet(Person owner, String name){ this.owner = owner; this.name = name; public abstract String getinfo(); Då en abstrakt klass kan innehålla en metod som inte är implementerad så kan man inte skapa en instans av den. Alla icke abstrakta klasser som ärver en abstrakt klass Måste implementera alla abstrakta metoder. 112
113 Synlighet - UML Pet #owner: Person #name: String Abstrakt klass Abstrakt metod - kursiv +getinfo(): String Cat Dog Rabbit -incage: boolean +getinfo(): String +getinfo(): String +getinfo(): String 113
114 Main-metoden - alternativ public class ExampleWithInheritance{ public static void main(string args[]) { Person owner = new Person("Kalle", 20); ArrayList<Pet> pets = new ArrayList<Pet>(); pets.add(new Cat(owner, "MyCat")); pets.add(new Dog(owner, "MyDog")); pets.add(new Rabbit(owner, "MyRabbit", true)); System.out.println("My name is " + owner.getname() + " and these are my pets:"); for(pet v: pets) { System.out.println(v); 114
115 Provkör!!! - Resultat My name is Kalle and these are my pets: Cat: MyCat Dog: MyDog Rabbit: MyRabbit incage: true 115
116 Abstrakta klasser - Fakta Abstrakta klasser En klass som har minst en metod som inte är implementerad. Abstrakt metod En metod som finns i en abstrakt klass men som saknar implementering. - Man kan inte skapa en instans av en abstrakt klass - När man ärver en abstrakt klass måste man alltid implementera de abstrakta metoderna. 116
117 Polymorfism - Fakta Polymorfism (mångformiget) Möjligheten att kunna skapa objekt som har mer än en form. Objekten härstammar från en superklass och har liknande egenskaper. Exempel: Pet mycat = new Cat(owner, "MyCat"); Pet mydog = new Dog(owner, "MyDog"); Även om objektet är deklarerad med en superklass så anropas metoden som finns i subklassen: Exempel: // här anropas getinfo() i Cat // istället för den i Pet mycat.getinfo(); 117
118 Hur kan vi byta ägare på ett husdjur? public Class Pet { protected Person owner; protected String name; public void transferownership(person newowner) { owner = newowner; public String getownername() { return owner.getname(); public class Cat extends Pet{
119 Main-metod public class ExampleWithTransferOwner{ public static void main(string args[]) { Person owner = new Person("Kalle", 20); Pet mycat = new Cat(owner, "MyCat"); Pet mydog = new Dog(owner, "MyDog"); System.out.println(myCat.getOwnerName() + " owns the cat."); System.out.println(myDog.ogetOwnerName() + " owns the dog."); 119
120 Main-metod System.out.println("Stina buys the cat from " + mycat.getownername() + "."); mycat.transferownership (new Person("Stina",18)); System.out.println(""); System.out.println(myCat.getOwnerName() + " owns the cat."); System.out.println(myDog.ogetOwnerName() + " owns the dog."); 120
121 Provkör!!! - Resultat Kalle owns the cat. Kalle owns the dog. Stina buys the cat from Kalle. Stina owns the cat. Kalle owns the dog. 121
122 Arv Vad ser vad? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Cat Dog Rabbit -incage: boolean +getinfo():string +getinfo():string +getinfo():string Klassen Pet ser endast sig själv! 122
123 Arv Vad ser vad? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Cat +getinfo():string Dog +getinfo():string Rabbit -incage: boolean +getinfo():string Klassen Cat ser både sig själv och Pet!! 123
124 Arv Vad ser vad? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Cat +getinfo():string Dog +getinfo():string Rabbit -incage: boolean +getinfo():string Klassen Dog ser både sig själv och Pet!! 124
125 Arv Vad ser vad? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Cat +getinfo():string Dog +getinfo():string Rabbit -incage: boolean +getinfo():string Klassen Rabbit ser både sig själv och Pet!! 125
126 Arv - Fakta En klass kan bara se sig själv och de klasser den ärvt från. Exempel: - Superklassen Pet kan bara se Pet - Subklassen Cat kan se både Cat och superklassen Pet - Subklassen Dog kan se både Dog och superklassen Pet - Subklassen Rabbit kan se både Rabbit och superklassen Pet 126
127 Kan vi kategorisera klasserna ytterliggare? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Cat +getinfo():string Dog +getinfo():string Rabbit -incage: boolean +getinfo():string 127
128 Kan vi kategorisera klasserna ytterliggare? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Cat Dog Rabbit -incage: boolean +getinfo():string +getinfo():string Katter och hundar är rovdjur! +getinfo():string 128
129 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat Dog Rabbit -incage: boolean +getinfo():string +getinfo():string +getinfo():string 129 Katter och hundar är rovdjur! Vi skapar klassen Predator!
130 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat Dog Rabbit -incage: boolean +getinfo():string +getinfo():string Vad ser klassen Predator? +getinfo():string 130
131 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat Dog Rabbit -incage: boolean +getinfo():string +getinfo():string +getinfo():string Vad ser klassen Predator? Klasserna Predator och Pet 131
132 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat Dog Rabbit -incage: boolean +getinfo():string Vad ser klassen Cat? +getinfo():string +getinfo():string 132
133 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat Dog Rabbit -incage: boolean +getinfo():string +getinfo():string +getinfo():string Vad ser klassen Cat? Klasserna Cat, Predator och Pet 133
134 Vad ser vad nu? Pet #owner: Person #name: String +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat Dog Rabbit -incage: boolean +getinfo():string Vad ser klassen Dog? +getinfo():string +getinfo():string 134
135 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat Dog Rabbit -incage: boolean +getinfo():string +getinfo():string +getinfo():string 135 Vad ser klassen Dog? Klasserna Dog, Predator och Pet
136 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat +getinfo():string Dog +getinfo():string Rabbit -incage: boolean +getinfo():string Vad ser klassen Rabbit? 136
137 Vad ser vad nu? #owner: Person #name: String Pet +transferownership(newowner: Person) +getowner(): String +getinfo(): String Predator #hasprey: boolean Cat +getinfo():string Dog +getinfo():string Rabbit -incage: boolean +getinfo():string Vad ser klassen Rabbit? Klasserna Pet och Rabbit 137
138 Gammal kod public class Cat extends Pet{ public Cat(Person myowner, String myname){ super(myowner, myname); public class Dog extends Pet{ public Dog(Person myowner, String myname){ super(myowner, myname); 138
139 Ny kod public class Predator extends Pet{ protected boolean hasprey = false; public Predator(Person myowner, String myname){ super(myowner, myname); public class Cat extends Predator{ public Cat(Person myowner, String myname){ super(myowner, myname); public class Dog extends Predator{ public Dog(Person myowner, String myname){ super(myowner, myname); 139
140 Ny main public class ExampleWithInheritance{ public static void main(string args[]) { Person owner = new Person("Kalle", 20); ArrayList<Pet> pets = new ArrayList<Pet>(); pets.add(new Cat(owner, "MyCat")); pets.add(new Dog(owner, "MyDog")); pets.add(new Rabbit(owner, "MyRabbit", true)); System.out.println("My name is " + owner.getname() + " and these are my pets:"); for(pet v: pets) { System.out.println(v); 140
141 Provkör!!! - Resultat My name is Kalle and these are my pets: Cat: MyCat Dog: MyDog Rabbit: MyRabbit incage: true 141
142 Gränssnitt 142
143 Gränssnitt Fakta Ett gränssnitt defininerar ett gränssnitt (eller en mall) och får INTE innehålla kod. Exempel: public interface PetInterface{ public void print();
144 Gränssnitt Fakta Ett gränssnitt kan INTE ärvas. class Cat extends PetInterface{ void print() {... class Dog extends PetInterface{ void print() {... class Rabbit extends PetInterface{ void print() {
145 Gränssnitt Fakta Ett gränssnitt MÅSTE implementeras. Exempel: class Cat implements PetInterface{ void print() {... class Dog implements PetInterface{ void print() {... class Rabbit implements PetInterface{ void print() {
146 Klasserna samlade: PetInterface print() Cat -owner: Person -name: String Dog -owner: Person -name: String Rabbit -owner: Person -name: String -incage: boolean 146
147 Ny Main-metod public class ExampleInterface{ public static void main(string args[]) { Person owner = new Person("Kalle", 20); PetInterface[] pets = new PetInterface[3]; pets[0] = (PetInterface) new Cat(owner, "MyCat"); pets[1] = (PetInterface) new Dog(owner, "MyDog"); pets[2] = (PetInterface) new Rabbit(owner, "Rabbit", true); for(int i = 0; i < pets.length; i++) pets[i].print(); 147
148 Provkör!!! - Resultat Cat: MyCat Dog: MyDog Rabbit: MyRabbit incage: true 148
149 Gränssnitt - Fakta Casting innebär att man konverterar från ett objekt till ett annat. Exempel: pets[0] = (PetInterface) new Cat(owner, "MyCat"); Detta fungerar eftersom klassen Cat har implementerat gränssnittet PetInterface. 149
150 Gränssnitt - Fakta En klass kan implementera ett gränssnitt men inte ärva den. En klass kan endast ärva en klass men kan implementera flera gränssnitt. Exempel: class X implements interface1, interface2 { 150
151 Laboration 0 - Övning på objektorienterad programmering - Implementera ett litet objektorientar program om fordon, steg för steg - Frågor efter varje steg samt i slutet, som man bör kunna svara på: Frågorna är även relevanta inför tentan - Ingen redovisning, men materialet är relevant för resten av kursen! - Fråga gärna om ni är osäkra på något! 151
152 Arbeta själv under veckan - Gör färdigt laboration 0 - Gör programmeringsövningar Repetition: Eck kap 1-4 Objektorientering: Eck kap 5 - Repetera från tidigare kurser Reguljära uttryck och automater Grundläggande programmering Läs på inför nästa vecka Reguljära uttryck (se hemsida för material) Hashtabeller, Eck kap
153 Nästa vecka - Tema: Reguljära uttryck --- Fokus: hur de används i Java Hashtabeller Läsning/skrivning - Föreläsning - Laboration 1: Applicera ovanstående på språkteknologiska problem 153
Programmering för språkteknologer II, HT2011. Rum
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
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
Programmering för språkteknologer I, VT2012. Rum
Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska
Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering
och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
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
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
Laboration 1 - Grunderna för OOP i Java
Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben
Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Att instansiera en klass Objekt I Man instansierar (skapar
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
TENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
TENTAMEN OOP
TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Instansiering Åtkomst Abstrakt datatyp UML Överlagring
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Introduktion HT2 Åtkomst Abstrakt datatyp UML Överlagring
UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack
725G61 - Laboration 5 Grundläggande objektorientering Johan Falkenjack November 26, 2013 1 Inledning I labb 1-3 tittade vi på de grundläggande byggstenarna i programmering. Vi lärde oss om variabler, styrstrukturer
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel
Programmering för språkteknologer II, HT2011. Rum
Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Idag - Hashtabeller - Flerdimensionella arrayer (2D) 2 Repetition -
Grundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90 Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Arv Polymorf UML (klassdiagram) 1 Arv Möt tre studenter
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
Lösningsförslag till exempeltenta 2
Lösningsförslag till exempeltenta 2 1 1. Beskriv hur man kan söka igenom en tvådimensionell array. Beskriv pseudokoden och förklara så klart som möjligt hur den fungerar. Lösning: Se laboration 3. - Beskriv
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.
Outline Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vad händer under HT2 Laborationsserie del två I Klasser
Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Överlagring (overloading) Arv
I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else
Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,
TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90/1 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder
(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
UML Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer
JAVA Mer om klasser och objektorientering
JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?
Kort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
1 Repetition av viktiga begrepp inom objektorienterad programmering
Repetition av viktiga begrepp inom objektorienterad programmering 3 1 Repetition av viktiga begrepp inom objektorienterad programmering Tema: Arv, parameteröverföring, statiska attribut och metoder. Litteratur:
Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna
Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Signatur public static int parseint (
Föreläsningsmaterial (Arv) Skrivet av Andreas Lund
Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Inledning Arv är ett begrepp som är tätt förknippat med objektorientering. Principerna bakom arv är grundade i högst vardagliga relationer mellan olika
UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl 10.00 13.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU
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
PROGRAMMERINGSTEKNIK TIN212
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:
Klasshierarkier - repetition
Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet
Objektorienterad Programkonstruktion, DD1346. Tentamen , kl
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 03 18, kl. 14.00 17.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I
Enkla variabler kontra referensvariabel
Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. En variabel som används för att representera en primitiv datatyp kallas för enkel variabel. Deklarationssatsen
Repetition av viktiga begrepp inom objektorienterad programmering
Repetition av viktiga begrepp inom objektorienterad programmering Tema: Arv, parameteröverföring, statiska attribut och metoder. Arv U 1. Betrakta följande klasser: public class Person { protected String
Imperativ programmering. Föreläsning 4
Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering
DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye
DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics
Tentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Föreläsning 9: Arv och UML
TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;
Tentamen ID1004 Objektorienterad programmering May 29, 2012
Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga
Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.
TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program
Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan
Föreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder
2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik
2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det
Tentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-01-09, Tid: 14.00-18.00 Uppgift 1 a) class används för en klassdeklaration
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
TENTAMEN OOP
TENTAMEN OOP 2014-03-15 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Konstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del
Anteckningar 1: Grundläggande saker
UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering
Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel
Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Lösningsförslag till exempeltenta 1
Lösningsförslag till exempeltenta 1 1 1. Beskriv hur binärsökning fungerar. Beskriv dess pseudokod och förklara så klart som möjligt hur den fungerar. 2 Uppgift 1 - Lösning Huvudidé: - Titta på datan i
EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass
EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet
Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34
Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger
OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson
OOP F1:1 Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning OOP Objekt-orienterad programmering Delkursansvarig: First Class-konferens: Kursens webbsidor:
F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander
F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många
"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde
Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande
Föreläsning 8: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och
Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!
itop F8 Arv (Inheritance) Läsanvisning: arv: i kap 10, exceptions: i kap 15 mer kommer sen UML: tas bara upp i OH Object Kalle Student Person Graduate Lärare! Arv! Object, instanceof! Relationer! UML Nästa
I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:
Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-08-24, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:
Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1
Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
OOP Objekt-orienterad programmering
OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första
Kursplanering Objektorienterad programmering
Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund
OOP Tenta
Stockholms universitet sid 1 OOP OOP Tenta 2012-01-14 10.00 15.00 Avser kurserna DSK1:OOP och GES:OOP Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel
Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans