TDDD78 Introduktion till OOP i Java
|
|
- Henrik Hellström
- för 7 år sedan
- Visningar:
Transkript
1 TDDD78 Introduktion till OOP i Java
2
3 Klasser Bilar är komplicerade vi tar cirklar som exempel 3
4 En klass i Java 4 För att modellera cirklar som objekt i Java: Skapa en cirkelklass Varje Java-klass är i sin egen fil, med "samma" namn (Avancerat undantag: nästlade klasser) Circle.java Definiera fält (se del 2) Definiera konstruktorer (se del 4) Definiera metoder (se del 3) Medlemmar Klassnamn använder "CamelCase": ArrayList, ProcessBuilder, StackTraceElement I singular: Inte Circles, Towers eller ArrayLists!
5
6 Egenskaper Vi har nämnt att mojänger/objekt har egenskaper Vissa kan vara konstanta, andra kan ändras efter att objektet skapas 6 Längd/höjd Färg Motorstyrka Toppfart Nuvarande fart Kvarvarande bränsle Koordinater (x,y) Radie (r)
7 Fält i en klass 7 Realisera egenskaperna som fält (medlemsvariabler) i en klass All kod för klassen är inuti klassdeklarationen Circle.java double x, y; double r; Detta är en klass som talar om vilken sorts information alla cirkelobjekt ska innehålla Ännu har vi inte skapat någon cirkel! Ange datatyp för varje fält: double = 64-bitars flyttal medlemsvariabel = member variable fält = field klass = class
8 Namngivning Namngivning för fält: Ge beskrivande namn x,y,r OK, vedertagna förkortningar temp, foo, bar inte bra, vad är detta? index eller selectedindex? left eller livesleft? s=52 eller decksize=52? Använd Javas standard! Bra namn färre kommentarer behövs! Sträva efter självdokumenterande kod! 8 Variabler, fält, metoder: main(), args, tvåplustvå, out, println() addelement(), arraylength, allautomförstabörjarmedstor
9 Fält i objekt 9 Varje objekt vi skapar får sin egen kopia av fälten Alla cirklar har en radie Alla cirklar har varsin radie (Hur skapar man objekt? Med "new" detaljer diskuteras senare!) Datorns minne Object (data) header: x 12.7 y r bytes "intern info" för Java 3*8=24 bytes för fälten Object (data) header: x 23.9 y r 12.7 [Python2: Overhead >300 bytes, fält 72 bytes]
10 Tillstånd (state) 10 Varje objekt har ett nuvarande tillstånd (state) Avgörs av nuvarande värdet på samtliga fält (även de konstanta) Datorns minne Object (data) header: x 12.7 y r Object (data) header: x 23.9 y r 12.7 Två distinkta objekt med olika tillstånd tillstånd = state
11 Samma tillstånd Två distinkta objekt i minnet kan ha samma tillstånd Precis som två variabler kan ha samma värde x=10 y=10 x = y, men x och y är ändå olika variabler! Python: a = ("hello", "world") b = ("hello", "world") två olika listor med samma element b.append("again") bara b ändras, inte a a och b var olika listor på olika plats i minnet Datorns minne Object (data) header: x 12.7 y r Object (data) header: x 12.7 y r Samma tillstånd, men inte samma objekt
12 Byta tillstånd I många klasser kan objekten byta tillstånd när tiden går Datorns minne Datorns minne 12 Object (data) header: x 12.7 y r Ändra värdet på y Object (data) header: x 12.7 y r Fortfarande samma objekt men nytt tillstånd!
13 Final Om ett fält inte får/ska ändras efter att objektet skapats: Deklarera det final Person.java class Person { final String personnummer; Person(String personnummer) { this.personnummer = personnummer; 13 Circle.java final double x, y; final double r; Allt är final klassens objekt är immutable ( oföränderliga)
14 Punktnotation Använd punkt för att komma åt ett fält i ett objekt Fler exempel när vi pratar om metoder 14 Circle.java double x, y; double r; static void print(circle circ) { System.out.println("Hey! You gave me a circle!"); System.out.println("Its radius is " + circ.r);
15 Att gömma data 15 Fält har skyddsnivåer: private bara klassens egna metoder kan komma åt fältet Klassen har full kontroll oftast bra! public alla kan komma åt fältet Princip: Ju färre som kommer åt något, desto enklare att verifiera, ändra T.ex. svårt att ändra datatyp senare annan kod kan kräva att x är double (protected, "package-protected" senare) Circle.java public // Klasser är oftast public private double x, y; private double r; Vi ignorerar detta i många exempel återkommer senare
16
17 Beteenden 17 Objekt i verkligheten gör saker, har beteenden Spontant, "aktivt": Kamelen väljer att spotta Inte del av "vanlig" OO Se multitrådning Reaktivt, på begäran: Tryck på tutan bilen tutar Uppnås via metoder (methods) som kan anropas
18 Metoder Varje cirkel ska kunna beräkna sin area Deklarera en metod som returnerar detta Metoder placeras oftast efter fält 18 Circle.java double x, y; double r; double getarea() { return Math.PI * r * r; void setradius(double newr) { r = newr; Alltid ett returvärde (typ eller void) Parametrar har typer, namn Metod utan sidoeffekter: Påverkar inget, informerar bara Metod med sidoeffekter: Ändrar något (i detta objekt / på annan plats) sidoeffekt = side effect
19 Metodkroppen I metodens kropp (body) anges vad metoden ska göra Som i en "vanlig" funktion med en skillnad: Circle.java 19 double x, y; double r; double getarea() { return Math.PI * r * r; void setradius(double newr) { r = newr; Kan direkt komma åt objektets fält! Men i vilket objekt? Vi deklarerar "r" en enda gång. Vi kan skapa 1000 cirklar, och var och en har en egen radie!
20 This 1: Detta objekt 20 Om vi tar bort "förkortningar": Circle.java double x, y, r; double getarea() { return Math.PI * this.r * this.r ; public static void main(string[] args) { Circle c1 = ; Circle c2 = ; double a = c1.getarea(); double b = c2.getarea(); "r" är en förkortning för "this.r" Fältet "r" i objektet "this" men vad är "this"? "this" är objektet vars metod anropades! I första anropet: this är samma objekt som c1 I andra anropet: this är samma objekt som c2 Ett objekt kan ha många "namn", giltiga i olika delar av koden!
21 This 2: Omskrivning Nästan som om kompilatorn skrev om koden Adderade en this-parameter till varje metod 21 double x, y, r; double getarea() { return Math.PI * this.r * this.r ; public static void main(string[] args) { Circle c1 = ; double a = c1.getarea(); "Implicit parameter": this double x, y, r; double getarea(circle this) { return Math.PI * this.r * this.r; public static void main(string[] args) { Circle c1 = ; double a = getarea(c1); (Nästan: Det finns viktiga skillnader, t.ex. i ärvning)
22 This 3: Utelämna this 22 Kan ofta utelämna this Givet en identifierare "r" söker kompilatorn efter: 1. Lokala variabler och parametrar "r" 2. Fält "r" double x, y, r; double getarea() { return Math.PI * this.r * this.r ; public static void main(string[] args) { Circle c1 = ; double a = c1.getarea(); "Det finns inget r, så de måste mena this.r " double x, y, r; double getarea() { return Math.PI * r * r; public static void main(string[] args) { Circle c1 = ; double a = c1.getarea();
23 This 4: Gömda fält Men variabler och parametrar gömmer fält ("hiding") 23 double x, y, r; Olika namn (r, newr) void setradius2(double newr) { System.out.println(r); // Finns variabel/parameter? Nej! Skriv ut fältet r = newr; // Sätter fältets värde double x, y, r; void setradius2(double r) { System.out.println(r); System.out.println(this.r); r = r; this.r = r; Samma namn (r), parameter gömmer fält // Finns variabel/parameter? Ja! Skriv ut den // Måste vara fältet // Sätter argumentet till sitt eget värde // Sätter fältets värde
24 Namngivning Namngivning: Som för fält: Ge beskrivande namn update() eller moveplayer()? doit() eller shuffledeck()? units() eller setunittype()? 24 Använd Javas standard! Variabler, fält, metoder: main(), args, tvåplustvå, out, println() addelement(), arraylength, allautomförstabörjarmedstor
25 Namngivning 2: Overloading Metoder kan överlagras (overloading) Olika metoder i samma klass med samma namn class Printer { void print(int val) { void print(double val) { void print(double val, int precision) { Skiljs åt av antal argument + argumenttyperna Användning: När metoderna gör i princip samma sak När det vore onödigt krångligt att hitta på egna namn (printint, printdouble, ) 25
26 Metodlängd (1) Hur lång får en metod vara? "The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that. Functions should not be 100 lines long. Functions should hardly ever be 20 lines long." -- Robert Martin, Clean Code: A Handbook of Agile Software Craftsmanship 26 "The routine should be allowed to grow organically up to lines. Decades of evidence say that routines of such length [are] no more error prone than shorter routines." -- Steve McConnell, Code Complete
27 Metodlängd (2) Varför dessa motsatser? 27 Ju fler kockar desto sämre soppa Fyra ögon ser bättre än två För varje regel finns en lika stark och motsatt motregel
28 Metodlängd (3) 28 Målet: Kod ska vara läsbar, lätt att förstå, lätt att underhålla Långa metoder Bryt ut delar svåra att hålla reda på, bryt ut delar till egna metoder! kan tappa sammanhanget, svårt att förstå Korta metoder Många metoder lättare att läsa mer att hålla reda på Väg kriterierna mot varandra Och var inte för extrema åt något håll! Hitta rätt balans, utgå från målet istället för medlet! Men: Vi måste ofta ge komplettering för "för långa" metoder ( rader) Vi har sällan gett komplettering för "för korta" metoder
29
30 Skapande Att skapa nya listor, tupler osv. i Python: 30 tomlista = [] minlista = ["a", "b", "c"] mintupel = (12, 34, 56) mindict = { "a": 1, "b": 2 Egen syntax för varje typ Ange alla element som listan / tupeln / ska innehålla
31 Skapa objekt 1 31 Hur skapar man nya objekt? Generell "objektsyntax", ange värdet på varje fält? Circle mycircle = Circle[[12.7, 4.512, ]]; Datorns minne Object (data) header: x 12.7 y r Nej: Många klasser har fält som ska beräknas eller kan lämnas tomma eller är privata för internt bruk Måste kunna välja vilka fält vi sätter
32 Skapa objekt 2 32 Hur skapar man nya objekt? Först skapa "nollställt" objekt, med alla fält "nollställda", sedan sätta önskade värden utifrån? Circle mycircle; mycircle.x = 10; mycircle.y = 20; Nej: Tillåter godtyckliga värden Listor kan innehålla vad som helst Men cirklar ska ha radie > 0 Klassen ska kunna garantera detta! Datorns minne Object (data) header: x 0 y 0 r 0 Fundamental princip: Klassen bestämmer över sina objekt (kan förhindra manipulation utifrån
33 Konstruktorer 1 Låt klassen ange konstruktorer, speciella metoder för att initialisera objekt 33 double x, y, r; Ingen returtyp (inte void!) Samma namn som klassen Circle(double x, double y, double radius) { Detta är en konstruktor! konstruktor = constructor
34 Konstruktorer 2 Ibland vill vi: Kunna sätta specifika värden på alla fält 34 double x, y, r; En parameter per fält Circle(double x, double y, double radius) { this.x = x; this.y = y; En tilldelning per fält; this.r = radius; "this" är det nya objektet public static void main(string[] args) { Circle c1 = new Circle(10.0, 20.0, 14.2); Vi anropar konstruktorn med new och anger lämpliga parametrar
35 Konstruktorer 3: Vad händer? 35 1: Minne allokeras (reserveras) för objektet 2: Alla fält får defaultvärden Heltal: 0 Floating point: 0.0 Boolean: Objekt: false 3: Konstruktorn anropas null (diskuteras senare) Object header: x y r (skräp) (skräp) (skräp) (skräp) Object Circle header: x 0.0 y 0.0 r 0.0 Circle(double x, double y, double radius) { this.x = x; this.y = y; this.r = radius; Fundamental princip: Klassen bestämmer över sina objekt klassen anger konstruktorkoden!
36 Konstruktorer 4: Kontroller Ibland vill vi: Kontrollera att bara tillåtna värden anges 36 double x, y, r; Circle(double x, double y, double radius) { if (radius <= 0.0) { Se till att radien > 0, throw exception ; annars avbryts konstruktorn inget objekt skapas this.x = x; this.y = y; this.r = radius;
37 Konstruktorer 5 Ibland vill vi: Ta in värden i annat format än det klassen använder 37 double x, y, r; Circle(Point center, double radius) { if (radius <= 0.0) throw ; this.x = center.x; this.y = center.y; this.r = radius; Anta en "punktklass" som lagrar x, y Ta ut x och y från "centrumpunkten"
38 Konstruktorer 6 Ibland vill vi: Beräkna värden på fält från andra parametrar 38 double x, y, r; double area; Circle(double x, double y, double circumference) { if (circumference<= 0.0) throw ; this.x = x; this.y = y; this.r = circumference / (2*Math.PI); Beräkna radie från omkrets this.area = Math.PI * r * r; Beräkna area från radie
39 Konstruktorer 7 Ibland vill vi: Sätta värden själva eftersom de är "interna" detaljer, inte något som anroparen ska bry sig om double x, y, r; int timespainted; Håll reda på antalet gånger vi har ritat cirkeln (statistik) 39 Circle(double x, double y, double radius) { this.x = x; this.y = y; this.r = radius; this.timespainted = 0; Från början är antalet alltid 0
40 Konstruktorer 8 En konstruktor kan göra vad som helst 40 double x, y, r; boolean debug; Circle(double radius) { System.out.println("Hello, world!"); System.exit(0); Inte vad man ska göra, men man kan
41 Konstruktorer 9: Kopiering Ibland kan man vilja kopiera objekt Konstruktor som tar ett objekt av samma typ 41 double x, y, r; Circle(double x, double y, double radius) { this.x = x; this.y = y; this.r = radius; Circle(Circle other) { this.x=other.x; this.y=other.y; this.r=other.r; Kopieringskonstruktor: Tar ett objekt av samma typ
42 Konstruktorer 10: Overloading En klass kan ha flera konstruktorer Alla heter samma som klassen overloading 42 double x, y, r; Circle(double x, double y, double radius) { this.x = x; this.y = y; this.r = radius; Circle(Point center, double diameter) { this.x = center.x; this.y = center.y; this.r = diameter / 2;
43 Konstruktorer 11: Minst en! Varje klass har minst en konstruktor Har du inte skrivit någon? Då skapar Java en tom konstruktor utan argument! double x, y, r; 43 double x, y, r; public Circle() { // Gör ingenting // alla fält har defaultvärden (0, 0.0, false, )
44
45 Nu: Tillräckliga kunskaper för labb 2 Programmering och OO: Viktiga begrepp Kontrakt Annoteringar Gömma information inkapsling Pekare allmänt och i Java Objektorientering: Typhierarkier och ärvning (drygt 1 fö) Gränssnitt Liskov Substitution Principle Subtypspolymorfism Ärvning mellan gränssnitt; mellan klasser Abstrakta klasser Egenskaper hos Javas klasshierarki Tillräckliga kunskaper för labb 3 Programmering och OO: Viktiga begrepp Identitet och likhet Lagring och livstid olika sorters variabler Metoder utan objekt (+ intro till Tetris-labben) Tillräckligt för början av labb 4
46 GUI-programmering i Java, del 1 GUI-programmering i Java, del 2 Tillräckligt för hela labb 4
TDDD78 Introduktion till OOP i Java
jonas.kvarnstrom@liu.se 2016 TDDD78 Introduktion till OOP i Java Klasser 3 Bilar är komplicerade vi tar cirklar som exempel (ritprogram?) En klass i Java För att lagra info om cirklar som objekt i Java:
Läs merTDDD78 Introduktion till OOP i Java
jonas.kvarnstrom@liu.se 2017 TDDD78 Introduktion till OOP i Java Klasser 3 Bilar är komplicerade vi tar cirklar som exempel (ritprogram?) En klass i Java 4 För att lagra info om cirklar som objekt i Java:
Läs merTDDD78, TDDE30, 729A Introduktion till objektorienterad programmering i Java
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Introduktion till objektorienterad programmering i Java Klasser 3 Bilar är komplicerade vi tar cirklar som exempel (ritprogram?) En klass i Java 4 För
Läs merTDDD78 Viktiga begrepp, del 2
jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp, del 2 Identitet och likhet Är likhet och identitet samma sak? Oj, vi har samma kläder på oss idag! Nej, men likadana! Besserwisser 3 Detta är två rutor
Läs merTDDD78 Objektorientering i Java, del 4. Hur vet man om två objekt är lika? Hur undviker man objekt och när?
TDDD78 Objektorientering i Java, del 4 Hur vet man om två objekt är lika? Hur undviker man objekt och när? jonas.kvarnstrom@liu.se 2016 Identitet och likhet Är identitet och likhet samma sak? Oj, vi har
Läs merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merTyphierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser Hur används hierarkier för att modellera nära relaterade typer? Nu:
Läs merObjektorientering: Lagring, räckvidd och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)
Läs merObjektorientering: Lagring och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop
Läs merTDDD78 Objektorientering: Lagring och livstid
jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2015 2014 jonas.kvarnstrom@liu.se
Läs merInkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
Läs merTDDD78 Objektorientering i Java, del 2
TDDD78 Objektorientering i Java, del 2 Objektvariabler är pekare vad är det? Hur används pekare för att sätta samman objekt (composition)? Hur används hierarkier för att modellera nära relaterade typer?
Läs merIntroduktion 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
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2014 2017 jonas.kvarnstrom@liu.se
Läs merTDDD78 Viktiga begrepp i programmering / objektorientering
jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp i programmering / objektorientering Repetition 3 En variabel består av: Ett symboliskt namn i programkoden En lagringsplats i minnet, som kan innehålla
Läs merIdag. 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
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se
Läs merMotivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!
Pekare (till objekt) Objektvariabler är pekare vad är det? (Viktiga begrepp inte bara inom objektorientering!) Hur används pekare för att sätta samman objekt (composition)? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se
Läs merpublic och private Obs: private inte skyddar mot access från andra objekt i samma klass.
public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2016 2014 jonas.kvarnstrom@liu.se
Läs merClasses 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
Läs merÄrvning av implementation. Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva?
Ärvning av implementation Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Implementationsarv 1: Klassnivåer
Läs merTentamen 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
Läs merTDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 2 Vad krävs? Hur fungerar det? Hur får en subtyp fungera egentligen? Krav på hierarkier 1 3 Får subtypen LinkedList sakna metoder från
Läs merFö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
Läs merFöreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Läs merSammansatta datatyper Generics: Parametrisk polymorfism
jonas.kvarnstrom@liu.se 2017 Sammansatta datatyper Generics: Parametrisk polymorfism Listor och arrayer 2 Enligt TDDD73: Många språk har både listor och arrayer även Java och Python! Exakta definitioner
Läs merDagens 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
Läs merOmtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:
Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-08-30, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:
Läs mer(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
Läs mer"Ä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
Läs merFöreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Läs merExempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.
Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.
Läs merDet finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Läs merFö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
Läs merSubklasser 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).
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merOOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
Läs merI 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,
Läs merGrundlä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
Läs merLÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Läs merObjekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto
Objekt och klasser - Introduktion Objekt Ð Begreppet objekt Ð Hur klasser anvšnds fšr att skapa objekt Ð Fšr-definierade klasser Ð Metoder och parameteršverfšring Ð Definiera klasser Ð Modifierare Ð Statiska
Läs merTDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices Abstrakt klass eller gränssnitt? (1) 3 Gränssnitt Kan implementera flera Ingen
Läs mer1 Egna klasser. 1.1 En punkt-klass
1 Egna klasser Vi har bekantat oss med klasser genom att se hur vi kan använda olika klasser. I synnerhet klassen Scanner och klassen Math. För scannerklassen skapade vi en instans för att sedan utnyttja
Läs merIntroduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder
Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i
Läs merFöreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser
Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla
Läs merArv: 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
Läs merF2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander
F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng
Läs merBankkonto - ö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
Läs merFö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
Läs merClasses och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Läs merFält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.
Fält av referenser Tanken med objekt är man kan bygga ihop olika sorts objekt till nya saker. Sålunda kan man exempelvis använda Bil och Trafikljus att konstruera ett Väg-objekt. Om Bil och Trafikljus
Läs merFö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?
Läs merFöreläsning 6: Metoder och fält (arrays)
TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden
Läs merTENTAMEN 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
Läs merDAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,
Läs merDynamisk bindning och polymorfism
Dynamisk bindning och polymorfism I C++ är pekare till basklasser polymorfa, dvs de kan peka på objekt av en subklass typ Vid statisk bindning sker all bindning vid kompileringen -> Vid ett metodanrop
Läs merDel A (obligatorisk för alla)
Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna. Ringa in rätta svar och lämna in tillsammans med dina övriga svar! a) Hur många objekt skapas av följande kod? World w = new
Läs merUppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:
Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte
Läs merJava, klasser, objekt (Skansholm: Kapitel 2)
Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma
Läs merFöreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc
Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp
Läs merObjekt och klasser - Introduktion
Objekt och klasser - Introduktion Begreppet objekt Hur klasser används för att skapa objekt Fördefinierade klasser Metoder och parameteröverföring Definiera klasser Modifierare Statiska variabler och metoder
Läs merProgrammering 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
Läs mer2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa
2203$( Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Email: bjorne@nada.kth.se Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: 7906277 previous next Exempel: lampa Light1 #
Läs merFö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
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel
732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public
Läs merITK: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,
Läs merLaboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Läs merParameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Läs merDatatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Läs merObjektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016
Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class
Läs merOOP Objekt-orienterad programmering
OOP F4:1 OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder Metoder - subrutiner OOP F4:2 Kod som utför en viss operation. Ligger i olika klasser och anropas via operatorn.
Läs merTDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om
Läs merTDDE10 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
Läs merAnmä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-06-11 Skrivtid: 0900 1400 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äs merTypkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Läs merTENTAMEN 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
Läs merMetoder - en funktion: medel
itop Läsanvisning: kap 2+13 F5 Metoder - en funktion: medel metodhuvud, funktionshuvud, signatur modifierare formella resultatvärdets typ parametrar metodens namn! Metoder, parameteröverföring! Fält Nästa
Läs merIdag. 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
Läs merJAVA 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
Läs merHögskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna
Läs merObjektorienterad Programmering DAT043
Objektorienterad Programmering DAT043 Föreläsning 3 22/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Kom ihåg: Visa Javas API. Nämn att slidesens också har tillhörande text på kurshemsidan.
Läs merÖvningar Dag 2 En första klass
Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt
Läs mer2D1311 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
Läs merOutline. 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
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merFöreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt
Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras
Läs merI 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
Läs merTDIU01 Programmering i C++
TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista
Läs merObjektorienterad 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
Läs merObjekt, Klasser, Paket m. m.
Objekt, Klasser, Paket m. m. Bildserie 3 Objekt Ett objekt karakteriseras av - Identitet, det som gör det möjligt att särskilja objektet från andra objekt - Tillstånd, den data som finns i objektet - Beteende,
Läs merModeller, Objekt och Klasser
Modeller, Objekt och Klasser Bildserie 3 Objekt Orienterad Programmering OO-programmering bygger på att vi som människor uppfattar tillvaron i termer av objekt - Bastu, pizza, öl,... Det borde vara lättare
Läs merObjektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Läs merTentamen i Programmeringsteknik I, ES, 2010-03-18
Tentamen i Programmeringsteknik I, ES, 2010-03-18 Skriv tid: 14-17. Hjälpmedel: 1. Kurslitteratur, en av följande: Lewis & Loftus, Java Software Solutions Skansholm, Java Direkt Guzdial & Ericson, Intrododuction
Läs merObjektorienterad 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
Läs merObjektorienterad Programmering (OOP) Murach s: kap 12-16
Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block,
Läs merKLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar
KLASSER Inkapsling Abstrakt datatyp Public och private Klassmedlemmar Datamedlemmar Funktionsmedlemmar Initiering av objekt Konstruktor Ta del av objektets tillstånd Förändra objektets tillstånd Avinitiera
Läs mer