Monday, November 16, Senaste Labben
|
|
- Kristin Henriksson
- för 6 år sedan
- Visningar:
Transkript
1 Senaste Labben
2 Senaste Labben Strålande resultat (mv 4.6)!
3 Senaste Labben Strålande resultat (mv 4.6)! God objektorientering?
4 Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? God kodhygien?
5 Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? God kodhygien? Använd breakpoints vid testning
6 Klasser och objekt All kod vi skriver ligger i klasser Klasser kan instansieras till objekt med new Variabler lagrar referenser till objekt Objekten har de instansvariabler och metoder som anges i motsvarande klassdefinition. Man kommer åt dem med punktnotation objektreferens. metod Alltså måste man alltid instansiera ett objekt för att kunna använda metoderna och variablerna Undantag: variabler och metoder får deklareras static. I så fall hör de direkt till klassen och man kommer åt dem med klassnamn. metod
7 God objektorientering Varje objekt svarar mot något substantiv i en beskrivning Logisk uppdelning av vilka objekt som kan göra vad Instansvariabler lagrar objektets tillstånd Objekt ändrar inte instansvariabler i andra objekt. Objekt kommunicerar genom att anropa varandras metoder, och kan skicka data genom metodernas parametrar. Objekt kan referera till andra objekt genom att lagra referenser i instansvariabler. Data som är gemensamma för alla objekt i en klass får deklareras static
8 God kodhygien Bra variabelnamn. Bra kommentarer. Bra uppdelning i små gripbara delar Bra indentering och radbrytningar
9 Overloading Vi kan ha flera olika metoder med samma namn Dessa måste i så fall skiljas genom olika signaturer: parametrarnas typ och antal int sum (int n1, int n2) { return n1+n2 int sum(int n1, int n2, int n3) { return n1+n2+n3 Detta används oftast för likartade uppgifter på olika parametertyper (tex println()), men metoderna kan vara hur olika som helst Gott råd: undvik overloading. Det förvirrar mest.
10 Arv (inheritance) Givet en klass A kan vi definiera en underklass B med ordet extends i klasshuvudet. Underklassens objekt ärver då allt från överklassen: class A { int x; void f(int z) {... class B extends A { int y;... b = new B(); if (b.x == b.y)... c = b.f(0);
11 Arv (inheritance) Givet en klass A kan vi definiera en underklass B med ordet extends i klasshuvudet. Underklassens objekt ärver då allt från överklassen: class A { int x; void f(int z) {... class B extends A { int y;... b = new B(); if (b.x == b.y)... c = b.f(0);
12 class A class B extends A p y g f z h p g f new B() h y z
13 Användning I swing finns ett stort antal klasser lämpade för grafik. Tex JFrame som definierar en klass för fönster. Vi kan bilda en underklass till JFrame som svarar mot mer specialiserade fönster. Tex spelplaner för luffarschack. Vi får automatiskt alla fönstermetoder som JFrame har men kan definiera ytterligare sådana. Överklasser: allmänna Underklasser: mer specialiserade
14 Klasshierarkier En underklass kan i sig användas som överklass till en ännu mer specialiserad klass: class Business {... class RetailBusiness extends Business {... class KMart extends RetailBusiness {... Här ärver KMart både från RetailBusiness och Business
15 !"#$%&##' 3&,*$4!"#$%&##' /&+0$-&!"#$%&##' ()*+,' )*-.#' ($%12#' Varje klass har bara en överklass som den ärver från. Arv går i flera led. Om inget sägs är den speciella klassen Object överklass.
16 class A class B extends A class C extends B p y q g z v f h p g f new C() h y z q v
17 Overriding Om en metod som finns i överklassen definieras om i underklassen gäller definitionen i underklassen. Detta kallas overriding. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... c = b.f(0);
18 Overriding Om en metod som finns i överklassen definieras om i underklassen gäller definitionen i underklassen. Detta kallas overriding. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... c = b.f(0);
19 class A class B extends A p h g f z h p g f new B() h z
20 Exempel JPanel definierar en metod paintcomponent(). Alla underklasser till JPanel ärver denna. Skriver vi ingen ny sådan metod i underklassen så finns den ursprungliga (som ritar en tom yta). Vi kan göra en override och definiera en egen paintcomponent() som innehåller önskad grafik
21 final Om överklassen deklarerat en metod final så får man inte göra override på den i en underklass. class A { int x; final void f(int z) {... class B extends A { int y; void f(int z) {... Detta används för att hindra omdefinitioner av kritiska metoder i stora system
22 super Om man definierat om en metod i underklassen men ändå vill använda överklassens metod, använd super. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... void g() { y = f(0); y = super.f(0);
23 super Om man definierat om en metod i underklassen men ändå vill använda överklassens metod, använd super. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... void g() { y = f(0); y = super.f(0);
24 Exempel class A extends JPanel { override void paintcomponent(graphics g) { super.paintcomponent(g)...
25 Konstruktorer I underklassens konstruktor lägger Java alltid automatiskt in ett anrop till överklassens konstruktor först. class A { int z; A() { z = 0; class B extends A { int y; B() { y = 1; b = new B(); Här har b.z värdet 0 och b.y värdet 1 eftersom både As och Bs konstruktorer har använts
26 Om man vill får man i underklassens konstruktor göra ett anrop till överklassens konstruktor med notationen super(). Detta måste då ligga först i konstruktorn. class A extends JFrame { A() {... class A extends JFrame { A() { super( Titel );... Inget anrop till JFrames konstruktor. Då sker automatiskt ett anrop till JFrame(), dvs det skapas ett fönster utan titel Ett anrop till JFrames konstruktor med parametern Titel. Detta innebär ett anrop till JFrame( Titel ), dvs det skapas ett fönster med rubriken Titel.
27 Abstrakta klasser En abstrakt metod deklareras med ordet abstract och innehåller enbard metodhuvud. Ingen metodkropp! abstract void moveto(int x, int y); Detta anger metodens signatur men inte dess beteende. En klass som har abstrakta metoder måste deklareras abstract: abstract class Piece { abstract void moveto(int x, int y);...
28 En abstrakt klass får inte instansieras! mypiece = new Piece() Den enda användningen är som överklass till mer specialiserade klasser class King extends Piece {... Underklassen ger definitioner av alla överklassens abstrakta metoder class King extends Piece { void moveto (int i, int j) {...
29 abstract class A class B extends A p g g f z h p g f new B() h z
30 En abstrakt klass får innehålla både vanliga och abstrakta metoder. Om någon metod är abstrakt är klassen abstrakt. Om en underklass inte implementerar alla abstrakta metoder blir underklassen också abstrakt.
31 abstract class A abstract class B extends A p g z f h new B()
32 I en abstrakt klass får alla metoderna vara abstrakta. Klassen säger då ingenting om något beteende alls, utan bara om en signatur: vilka metoder som ska finnas och vilka typer de och deras parametrar har. En signatur är precis det som man behöver veta om en klass för att kunna anropa metoderna. För att definiera signaturer är det bättre att använda interface än abstrakta klasser
33 interface Interface används för att definiera signaturer. Ett interface ser ut som en klassdeklaration men med ordet interface istället för class. Den innehåller bara abstrakta metoder. Metoderna blir automatiskt abstrakta - man behöver inte skriva abstract
34 interface A f g interface A { void f (int i); boolean g(); String h(int i, int j); h new A() Liksom en abstrakt klass får ett interface inte instansieras.
35 implements För ett interface används ordet implements (och inte extends): om A är ett interface kan man skriva class B implements A Eftersom A är ett interface och inte en klass finns inget att ärva. Allt i A är abstrakt. Istället gör ordet implements ett åtagande: alla abstrakta metoder i A måste implementeras i B. Det får dessutom finnas ytterligare saker i B, men åtminstone metoderna i A måste finnas. implements är alltså ett sätt att i klasshuvudet ange en del av klassens signatur
36 class B interface A implements A f g h p f g h
37 class B interface A implements A f g h p f g
38 En klass kan implementera flera interface och måste då implementera alla abstrakta metoder i interfacen interface A interface B interface C f g h p class D implements A, B, C f g h p
39 Exempel interface MouseListener { void mouseclicked(mouseevent event); void mousepressed(mouseevent event); void mousereleased(mouseevent event); void mouseentered(mouseevent event); void mouseexited(mouseevent event);
40 Exempel I klassen JPanel finns en metod addmouselistener() Den tar som enda parameter ett objekt som ska vara en muslyssnare För att det objektet verkligen säkert ska fungera måste det ha metoderna mouseclicked() etc. Alltså, när man skriver addmouselistener(m) måste man vara säker på att m har sådana metoder. Det är man om m är från en klass som implementerar interfacet MouseListener
41 implements vs extends Använd implements om interface och extends om (abstrakta) klasser En (abstrakt) klass får innehålla också riktiga metoder. Ett interface får bara ha abstrakta metoder. En klass får vara underklass till bara en annan klass En klass får implementera flera interface
42 interface A interface B abstract class C f g h p h q class D extends C implements A, B f g p
43 Exempel class MyPanel extends JPanel implements MouseListener, KeyListener { Vi definierar en klass som ärver JPanel. Det ger oss massor av metoder åt grafikhållet Vi måste definiera metodeterna mouseclicked(), keypressed() etc för att uppfylla interfacen. Vi får använda objekt instansierade av MyPanel som parametrar vid anrop till addmouselistener() och addkeylistener()
44 Encapsulation Stora programsystem består av flera filer, så kallade packages. En package kan användas på två sätt. 1) Instansiera objekt från klasser 2) Bilda underklasser I varje sådan package är det viktigt att bestämma: vad ska vara tillgängligt utanför, dvs av användare, och vad har vi bara för internt bruk. Det som är tillgängligt utanför måste deklareras public. För att förhindra overriding i en underklass använd final. För att ställa krav på användaren använd interface.
45 Dagens tillämpning Luffarschack: Hitta sätt att ranka rutor med avseende på hur bra det vore att sätta kryss eller ring där Grundide: det enda som är viktigt för en ruta är vilka möjliga vinnande rader den kan ingå i. Så vi vill räkna ut några sådana.
46 Vilka möjliga vinstrader är rutan (2,1) del i?
47 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1)
48 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1) (1,1)-(5,1)
49 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1) (1,1)-(5,1) (2,1)-(6,2)
50 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1) (1,1)-(5,1) (2,1)-(6,2) (2,0)-(2,4)
51 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1) (1,1)-(5,1) (2,1)-(6,2) (2,0)-(2,4) (2,1)-(2,5)
52 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1) (1,1)-(5,1) (2,1)-(6,2) (2,0)-(2,4) (2,1)-(2,5) (1,0)-(5,4)
53 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1) (1,1)-(5,1) (2,1)-(6,2) (2,0)-(2,4) (2,1)-(2,5) (1,0)-(5,4) (2,1)-(6,5)
54 Vilka möjliga vinstrader är rutan (2,1) del i? (0,1)-(4,1) (1,1)-(5,1) (2,1)-(6,2) (2,0)-(2,4) (2,1)-(2,5) (1,0)-(5,4) (2,1)-(6,5) Totalt 7 st möjliga femradingar
55 Antag att spelet har pågått ett tag. En del rutor har, en del har O, och en del är tomma. Vi vill veta värdet av att sätta ett märke ( eller O) i en viss tom ruta. Det värdet beror av statusen på rutans femradingar.
56 Exempel. Rutans samtliga femradingar innehåller redan både och O. O O O I detta fall är det tämligen värdelöst att sätta ett märke här
57 Exempel. En femrading innehåller fyra kryss O O I detta fall är det jättebra att sätta ett märke här
58 För varje femrading, bestäm dess status med avseende på ett märke ( eller O) som så: Om det inte finns något motståndarmärke i femradingen kan den fortfarande vara en vinnande femrading. I så fall, låt dess rang vara antalet märken i raden. Om det finns ett motståndarmärke kan den femradingen aldrig vinna åt mig. Låt rangen bli -1. Exempel, med avseende på : 2 3 O -1 0 O -1 O -1
59 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O
60 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2
61 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2 (1,1)-(5,1): 1
62 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2 (1,1)-(5,1): 1 (2,1)-(6,2): 1
63 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2 (1,1)-(5,1): 1 (2,1)-(6,2): 1 (2,0)-(2,4): 0
64 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2 (1,1)-(5,1): 1 (2,1)-(6,2): 1 (2,0)-(2,4): 0 (2,1)-(2,5): 1
65 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2 (1,1)-(5,1): 1 (2,1)-(6,2): 1 (2,0)-(2,4): 0 (2,1)-(2,5): 1 (1,0)-(5,4): -1
66 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2 (1,1)-(5,1): 1 (2,1)-(6,2): 1 (2,0)-(2,4): 0 (2,1)-(2,5): 1 (1,0)-(5,4): -1 (2,1)-(6,5): -1
67 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på : O (0,1)-(4,1): 2 (1,1)-(5,1): 1 (2,1)-(6,2): 1 (2,0)-(2,4): 0 (2,1)-(2,5): 1 (1,0)-(5,4): -1 (2,1)-(6,5): -1 Summa rankade femradingar rank antal
68 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O
69 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1
70 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1 (1,1)-(5,1): -1
71 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1 (1,1)-(5,1): -1 (2,1)-(6,2): -1
72 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1 (1,1)-(5,1): -1 (2,1)-(6,2): -1 (2,0)-(2,4): 0
73 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1 (1,1)-(5,1): -1 (2,1)-(6,2): -1 (2,0)-(2,4): 0 (2,1)-(2,5): -1
74 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1 (1,1)-(5,1): -1 (2,1)-(6,2): -1 (2,0)-(2,4): 0 (2,1)-(2,5): -1 (1,0)-(5,4): 1
75 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1 (1,1)-(5,1): -1 (2,1)-(6,2): -1 (2,0)-(2,4): 0 (2,1)-(2,5): -1 (1,0)-(5,4): 1 (2,1)-(6,5): -1
76 För en ruta, bestäm statusen av samtliga dess femradingar, med avseende på både och O. med avseende på O : O (0,1)-(4,1): -1 (1,1)-(5,1): -1 (2,1)-(6,2): -1 (2,0)-(2,4): 0 (2,1)-(2,5): -1 (1,0)-(5,4): 1 (2,1)-(6,5): -1 Summa rankade femradingar rank antal
77 O En sammanfattande ranking av rutan ges av följande tabell:
78 O En sammanfattande ranking av rutan ges av följande tabell: rank O
79 Uppgift Gör ett program som räknar ut en sådan tabell för varje tom ruta. Ska kunna anropas av ett godtyckligt luffarschacksgui. Demo
80 Vi gör en så kallad package som heter LufRank. Den har en public class som också heter LufRank. En användare kan instansiera ett objekt av den och få något som räknar ut rankingen. LufRank ska alltså ha en metod ranktable() som räknar ut rankingtabellen för en given ruta och given märkestyp. vad är signaturen för ranktable()?
81 ranktable() har följande parametrar: - koordinaten för rutan - märket ( eller O) - ett objekt som representerar ställningen på brädet, dvs kan tala om, för varje koordinat, om där finns ett märke och i så fall vilket. Dags att bestämma hur data representeras vid anrop av ranktable().
82 - koordinaten för rutan representeras som ett par av heltal (x och y). - märket representeras som ett heltal - brädet måste ha en metod findmark(), som givet en koordinat (dvs par av heltal) returnerar märket (dvs ett heltal), där noll betyder ledig. - denna metod är allt som LufRank kräver av brädet. Använd ett interface för att uttrycka det kravet. - resultatet av ranktable() blir en int[] som innehåller rankingen.
83 interface TwoDimensionalMarks { int findmark (int x, int y); public int [] ranktable(int x, int y, int mark, TwoDimensionalMarks board){... Initialt är resultatet en array där alla värden är 0 För alla femradingar som hör till rutan (x,y): räkna ut femradingens ranking om denna är >0 så öka motsvarande element i resultatet
84 Vi behöver metoder för att: 1. Räkna ut alla femradingar som hör till en viss koordinat 2. Räkna ut rankingen för en enskild femrading Börja med 2. Metoden rank() tar som indata en femrading, ett märke (dvs int), och ett spelbräde som innehåller ställningen. Den ska returnera -1 om femradingen innehåller något annat märke. Annars ska den returnera antalet märken. Nu verkar det vara dags att bestämma hur en femrading ska representeras!
85 En femrading består av en koordinat som representerar den ena ändpunkten, och en andra koordinat som representerar riktningen. Koordinater är par av heltal final Coordinate d0 = new Coordinate(1,0); final Coordinate d1 = new Coordinate(0,1); final Coordinate d2 = new Coordinate(1,1); final Coordinate d3 = new Coordinate(1,-1); final Coordinate[] directions = {d0,d1,d2,d3; class Coordinate { final int x,y; Coordinate (int x, int y) { this.x = x; this.y = y;
86 Klassen Coordinate innehåller dessutom en metod som kollar om koordinaten ligger på brädet. Här är brädets storlek SIZE x SIZEY rutor, där SIZE och SIZEY är instansvariabler av typen final int. Slutligen finns en metod neighbour() för att räkna ut vilken koordinat som ligger i en viss riktning och ett visst antal rutor bort boolean valid() { return x >= 0 && y >= 0 && x < SIZE && y < SIZEY; Coordinate neighbour (Coordinate direction, int distance) { return new Coordinate(x+distance*direction.x, y+distance*direction.y);
87 class Fiverow { final Coordinate start, direction; Fiverow (Coordinate b, Coordinate d) { start = b; direction = d; Coordinate element (int i) { return start.neighbour(direction,i); boolean valid() { return start.valid() && element(4).valid();
88 Metoden rank() tar som indata en femrading, ett märke (dvs int), och ett spelbräde som innehåller ställningen. Den ska returnera -1 om femradingen innehåller något annat märke. Annars ska den returnera antalet märken. int rank(fiverow fiverow, int mark, TwoDimensionalMarks board) { int res = 0; for (int i=0; i<5; i++) { Coordinate current = fiverow.element(i); int currentmark = board.findmark(current.x, current.y); if (currentmark==mark) res++; else if (currentmark!= 0) { res = -1; break; return res;
89 Initialt är resultatet en array där alla värden är 0 För alla femradingar som hör till rutan (x,y): räkna ut femradingens ranking om denna är >0 så öka motsvarande element i resultatet Anta att vi har en metod getrows() som räknar ut femradingar för en given koordinat. public int [] ranktable(int x, int y, int mark, TwoDimensionalMarks board) { int [] result = {0,0,0,0,0,0; for (Fiverow fiverow : getrows(new Coordinate(x,y))) { int numberofmarks = rank(fiverow, mark, board); if (numberofmarks >= 0) result[numberofmarks]++; return result;
90 Vi har nu gjort hela LufRank så när som på getrows(). Den kräver lite eftertanke. Slutsats 1: vi lagrar den som en ArrayList<Fiverow>. ArrayList (se L&L 7.7) har en metod add() för att lägga till element och vi kan iterera över den i for-satsen. (Mer än så behöver vi inte veta om ArrayList just nu.) Slutsats 2: getrows() kommer förmodligen att anropas mycket ofta för en given koordinat. Därför kan det löna sig att räkna ut det en gång för alla och lagra i en tvådimensionell array.
91 LuFRank får ytterligare en instansvariabel final ArrayList<Fiverow>[][] rows; getrows() gör helt enkelt en tabelluppslagning: ArrayList<Fiverow> getrows(coordinate base) { return rows[base.x][base.y]; I LufRank konstruktorn definieras rows med hjälp av metoden constructrows(). Konstruktorns parametrar är brädets storlek. public LufRank(int x, int y) { SIZE = x; SIZEY = y; rows = new ArrayList [SIZE][SIZEY]; constructrows();
92 constructrows() är nu allt som återstår. Den ska alltså, för alla i,j, göra en ArrayList av femradingar som hör till koordinaten (i,j), och lägga den i rows[i][j] Antag att vi har en metod allfiverows() som räknar ut alla femradingar för en viss koordinat. Då blir det lätt: void constructrows() { for (int i=0; i<size; i++) for (int j=0; j<size; j++) rows[i][j] = allfiverows (new Coordinate(i,j));
93 allfiverows() är nu allt som återstår. Den ska hitta alla femradingar till koordinaten (i,j). Antag att vi har en metod adddirection() som lägger till femradingar som går i en viss riktning till en lista. Då blir det lätt: ArrayList<Fiverow> allfiverows(coordinate base) { ArrayList<Fiverow> al = new ArrayList<Fiverow>(); for (Coordinate direction : directions) adddirection(base, direction, al); return al;
94 adddirection() är nu allt som återstår. Den ska lägga till alla femradingar i viss riktning till listan. Det finns fem stycken femradingar i varje riktning. Startpunkten får vi med ett offset från den nuvarande koordinaten. Antag att vi har en metod addone() som lägger till en femrading (om den ligger helt inom brädet) för en viss riktning och offset. Då blir det lätt: ArrayList<Fiverow> adddirection(coordinate base, Coordinate direction, ArrayList<Fiverow> al) { for (int offset = 0; offset < 5; offset++) addone(base, direction, offset, al); return al;
95 addone() är nu allt som återstår. Den ska lägga till en femrading i viss riktning och med visst offset till listan, om den femradingen ligger helt inom brädet. addone() är ju lätt: ArrayList<Fiverow> addone(coordinate base, Coordinate direction, int offset, ArrayList<Fiverow> al ){ Fiverow fiverow = new Fiverow(base.neighbour(direction, offset-4), direction); if (fiverow.valid()) al.add(fiverow); return al;
96 Då är allt klart
97 För att använda LufRank, skriv import LufRank.*; När du startar ett spel kan du skaffa dig ett rankingobjekt, tex kallat ranker, genom LufRank ranker = new LufRank(x,y); där x,y är storleken på brädet.
98 Du har förmodligen någon klass Board som innehåller ställningen på brädet. Den kan se ut hursomhelst, men se till att den implementerar interfacet TwoDimensionalMarks. Det innebär att den måste ha en metod public int findmark(int x, int y) som returnerar markeringen vid (i,j). För att få rankingtabellen vid (i,j) med avseende på markeringen mark och ställningen som ges av board, använd ranker.ranktable(i,j,mark,board)
99 Inför nästa lab Läs resten av L&L (ej kap 9-12) Behåll samma partner Se till att få kod från annan grupp Kolla upp hur man definierar en package i netbeans
Exempel på spelprogrammering i java.
Exempel på spelprogrammering i java http://www.brackeen.com/javagamebook/ Chatten? Overloading Vi kan ha flera olika metoder med samma namn Dessa måste i så fall skiljas genom olika signaturer: parametrarnas
Klasser som datastrukturer
Klasser som datastrukturer Ex: du vill skicka ett meddelande som består av text (String), avsändarnamn (String), klockslag (två int). Du kan förstås skicka alla dessa efter varandra. Bättre är att bygga
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).
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30
Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt
Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur
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
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,
"Ä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 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)
TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface) Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Terminologi Vad är en klass?
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?
Tentamen i Objektorienterad programmering
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar
Fö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,
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
Fö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[]
Exempel på användning av arv: Geometriska figurer
(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014
DAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
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å
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
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
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
Lab5 för prgmedcl04 Grafik
Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna
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
Föreläsning 14: Grafik & mera händelsehantering
TDA 545: Objektorienterad programmering Föreläsning 14: Grafik & mera händelsehantering Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafik läs kap 17 Viktigt i denna föreläsning: att rita
Fö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
public 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
Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling,
För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen.
Java utan netbeans Du har gjort ett program i netbeans Hur exportera det så att andra kan köra det utan att använda netbeans? Välj projektet som main project Högerklicka på det och välj Clean and Build
Omtentamen 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:
OOP Objekt-orienterad programmering
OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort
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
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:
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
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-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
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
TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
Typhierarkier 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:
1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
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
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl
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
Laboration 4: Game of Life
Laboration 4: Game of Life Programmerade system I1 Bakgrund: I denna laboration ska vi ägna oss åt Game of Life, vilket är en mycket enkel modell av en population organismer som kan leva, dö och fortplanta
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
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
Objektorienterad 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
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
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
Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal
Tentamen DD2385 Programutvecklingsteknik vt 2009 Fredagen den 5 juni 2009 kl 10.00 13.00 Inga hjälpmedel utom penna, sudd och linjal Tentans del I omfattar 22 poäng. Del II har också 22 poäng Preliminära
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
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
Modeller, 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Ö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
Lite 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
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
Föreläsning 2, vecka 8: Repetition
TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning
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:
Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02
Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall
TDDD78 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
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 2017-10-23 Skrivtid: 0800 1300 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
Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.
Arv och polymorfi Arv och polymorfi är två centrala begrepp i objektorientering. Arvsmekanismen innebär att vi kan skapa nya klasser utifrån redan existerande klasser. Man gör detta med hjälp av nyckelordet
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
Del 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
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
DAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:
Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-01-13, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex
Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering
Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad
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
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
5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har
Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och
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
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
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
DD1342 Programkonstruktion för F1,
DD1342 Programkonstruktion för F1, 2007-2008 Lappskrivning 2 Tisdag 5/2 2008 kl 14.15 15.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga
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
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
732G 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
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:
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 2017-10-23 Skrivtid: 0800 1300 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
Java, 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
Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }
Föreläsning 3 Arv Kategorisering Stora program leder till många klasser (tänk liknelsen med en affär med många varor). Att dela in saker i kategorier är en vanlig strategi för att hantera stora komplexa
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 2017-03-16 Skrivtid: 0800 1300 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
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
Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010
Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
OOP 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
public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;
public interface Skrivbar { void skriv(); public class Punkt implements Skrivbar { public double x; public double y; public Punkt(double xx, double yy) { x = xx; y = yy; public Punkt() { @Override public
Klasshierarkier. Klasser kan byggas på redan definierade klasser
Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen
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
Föreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation
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-7, TDA540 Dag: 208-0-3, Tid: 4.00-8.00 Uppgift a) class används för en klassdeklaration som
Föreläsning 10. ADT:er och datastrukturer
Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad
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
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
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en
Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Inledning Skrivningen innehåller ett antal bilagor: Bilagan listsandtrees innehåller fyra klasser: Klassen List med några grundläggande
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
Uppgiften ä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
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