Föreläsning 5-6 Innehåll

Relevanta dokument
Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

EDAA20 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. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp

Föreläsning 13 Innehåll

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

1 Egna klasser. 1.1 En punkt-klass

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Föreläsning 9-10 Innehåll

Java, klasser, objekt (Skansholm: Kapitel 2)

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Repetition av viktiga begrepp inom objektorienterad programmering

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

1 Repetition av viktiga begrepp inom objektorienterad programmering

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Föreläsning REPETITION & EXTENTA

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Övningar Dag 2 En första klass

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Föreläsning 7-8 Innehåll

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

(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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

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

Klasser och objekt. Henrik Johansson. August 20, 2008

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Tentamen i Objektorienterad modellering och design

Malmö högskola 2008/2009 CTS

Mål Förklaring av termer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Enkla variabler kontra referensvariabel

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Mål Förklaring av termer

Föreläsning Innehåll. Checklista. Några metoder i klassen ArrayList<E> Exempel på vad du ska kunna

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Typkonvertering. Java versus C

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Objektorienterad programmering i Java

Malmö högskola 2007/2008 Teknik och samhälle

OOP Objekt-orienterad programmering

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Klasser och objekt i C#

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Objektorientering: Lagring, räckvidd och livstid

DAT043 - Föreläsning 7

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

JAVAUTVECKLING LEKTION 11

Del A (obligatorisk för alla)

Tentamen i Objektorienterad modellering och design Helsingborg

Mer om klasser och objekt

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Föreläsning 1-2 innehåll

Objekt och klasser - Introduktion

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Tentamen OOP

Objektorientering: Lagring och livstid

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 11

Introduktion till arv

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

TDDD78 Viktiga begrepp, del 2

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Lab5 för prgmedcl04 Grafik

Tentamen, EDAA20/EDA501 Programmering

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Tentamen ID1004 Objektorienterad programmering April 7, 2015

JAVA Mer om klasser och objektorientering

Laboration 1: Figurer i hierarki

Transkript:

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[] args) { SimpleWindow w = new SimpleWindow(600, 600, "Square"); Square sq = new Square(20, 10, 40); sq.draw(w); System.out.println(sq.getArea()); I programmet skapas och används två objekt: ett SimpleWindow-objekt som beskriver ett fönster på skärmen som man kan rita i. ett Square-objekt som beskriver en kvadrat. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 2 / 32

Objekt Objekt motsvarar verkliga eller tänkta saker. kvadrater fönster... Ett objekt är en samling data (attribut): En kvadrat har en sidlängd och ett läge (x- och y-koordinat) för övre vänstra hörnet. Ett fönster har bredd och höjd... Man kan anropa metoder på objekt: rita kvadraten i ett fönster ta reda arean...... Datavetenskap (LTH) Föreläsning 5-6 HT 2017 3 / 32

Exempel: kvadratobjekt Attributen är variabler som lagrar objektets data. x x-koordinat för övre vänstra hörnet y y-koordinat för övre vänstra hörnet side sidlängd x y side 20 10 40 Datavetenskap (LTH) Föreläsning 5-6 HT 2017 4 / 32

Klass Objekt av samma typ beskrivs i en klass. Exempel: klassen Square som beskriver kvadrater. Klassen innehåller attribut och metoder och fungerar som mall för objekten. Exempel: klassen Square (skiss): public class Square { int x; int y; int side; /** Tar reda på kvadratens area. */ public int getarea() { return side * side; Datavetenskap (LTH) Föreläsning 5-6 HT 2017 5 / 32

Skapa objekt Man skapar objekt genom att skriva: new Klassnamn(lista med argument) Exempel: Skapa en kvadrat med läget 20,10 och sidlängden 40: new Square(20, 10, 40) Antal argument och deras typer framgår av klassens dokumentation: Datavetenskap (LTH) Föreläsning 5-6 HT 2017 6 / 32

Referensvariabel När vi skapar ett objekt får vi tillbaka en referens till det. Referensen kan lagras i en variabel. Exempel: Square sq = new Square(20, 10, 40); Variabeln sq refererar nu till ett kvadratobjekt och kan användas som namn på objektet: x y side 20 10 40 sq Datavetenskap (LTH) Föreläsning 5-6 HT 2017 7 / 32

Referensvariabler En referensvariabel har en klass som typ. Typen bestämmer vilka slags objekt variabeln får referera till. Exempel: Square sq = new Square(20, 10 40); Square sq = new SimpleWindow(600, 600, "Square"); Datavetenskap (LTH) Föreläsning 5-6 HT 2017 8 / 32

Anropa metoder När vi anropar en metod använder vi punktnotation: referens.metodnamn(lista med argument); Exempel: Square sq = new Square(20, 10, 40); sq.move(30, 10); int a = sq.getarea(); Observera att parenteserna ska vara med även om inga argument ska skickas med. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 9 / 32

Diskutera Hitta fel I nedanstående kod finns några fel: Rätta till felen: Square sq = new Square(20, 10); sq.draw(w); SimpleWindow w = new SimpleWindow(600, 600, "Square"); sq.move(30, 10); sq.draw(w); System.out.println("Arean: " + w.getarea()); Datavetenskap (LTH) Föreläsning 5-6 HT 2017 10 / 32

Referenstilldelning Värdet null En referensvariabel kan även tilldelas värdet null och refererar då inte till något objekt: Square sq = null; sq null Om referensvariablen har värdet null kan man inte anropa en metod på den. sq.move(30, 10); Datavetenskap (LTH) Föreläsning 5-6 HT 2017 11 / 32

Objekt i datorns minne När ett objekt skapas reserveras det plats för objektets attribut i datorns minne. Exempel på hur ett kvadratobjekt lagras i minnet: x 20 y 10 side 40 47540 47544 47548 (Numren på minnescellerna (adresserna) är bara exempel och ingenting vi normalt behöver tänka på.) Datavetenskap (LTH) Föreläsning 5-6 HT 2017 12 / 32

Referensvariabel och objekt i datorns minne Det som egentligen lagras i en referensvariabel är ett heltal adressen till det objekt referensvariabeln refererar till. Pilen vi ritat i tidigare bild är motsvarar denna adress. Exempel på hur variabeln sq och det kvadratobjekt sq refererar till kan lagras i minnet. sq 47540 5200 x 20 y 10 side 40 47540 47544 47548 Datavetenskap (LTH) Föreläsning 5-6 HT 2017 13 / 32

Diskutera Fyll i värden på variabler och attribut när följande satser exekverats: Square sq1 = new Square(50, 50, 100); Square sq2 = new Square(10, 10, 20); sq1 = sq2; sq1.move(50, 50); sq1 sq2 x y side x y side Datavetenskap (LTH) Föreläsning 5-6 HT 2017 14 / 32

Specifikation För att kunna använda en klass måste vi få veta vilka metoder som finns och hur de ska anropas. Detta beskrivs i klassens specifikation. Specifikationen kan ses som ett kontrakt mellan den som implementerat (skrivit koden för) klassen och den som ska använda klassen i sin egen kod. Specifikationen kan se ut på olika sätt, men innehåller en uppräkning av klassens metoder (beskrivning, returtyp, namn, parametrar). Exempel: Datavetenskap (LTH) Föreläsning 5-6 HT 2017 15 / 32

Specifikation Exempel på specifikation /** Skapar en kvadrat med övre vänstra hörnet i x,y och med sidlängden side. */ Square(int x, int y, int side); /** Ritar kvadraten i fönstret w. */ void draw(simplewindow w); /** Flyttar kvadraten avståndet dx i x-led, dy i y-led. */ void move(int dx, int dy); /** Tar reda på kvadratens area. */ int getarea(); Datavetenskap (LTH) Föreläsning 5-6 HT 2017 16 / 32

Övning Viktiga begrepp public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600, 600, "Square"); Square sq = new Square(20, 10, 40); sq.draw(w); double area = sq.getarea(); System.out.println(area); Vilka variabler finns i main-metoden? Vilka typer har de? Hur många objekt skapas i programmet? Ge exempel på en metod som anropas. Ge exempel på ett argument. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 17 / 32

Klass Programkoden delas upp i klasser. Klassen lagras normalt i en egen fil. Det finns klasser som bara innehåller statiska metoder, t.ex. klassen Math. Andra klasser beskriver objekt och innehåller då: attribut de variabler som innehåller objektets data. konstruktor/er och övriga metoder. Klassen fungerar som en mall för objekten. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 18 / 32

Klass Mönster public class Klassnamn { // deklaration av attribut // konstruktor // övriga metoder Datavetenskap (LTH) Föreläsning 5-6 HT 2017 19 / 32

Klassen Square Attribut public class Square { private int x; private int y; private int side; attribut Attribut I attributen lagras objektets data. Attributen skapas då objektet skapas (med new ) och finns så länge som objektet finns. Attributen får defaultvärden då de skapas (0, 0.0, null, ). Attributen får användas i hela klassen. Attributen är normalt deklarerade private får bara användas inuti klassen. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 20 / 32

Klassen Square Metoderna draw och move /** Ritar kvadraten i fönstret w. */ public void draw(simplewindow w) { w.moveto(x, y); w.lineto(x, y + side); w.lineto(x + side, y + side); w.lineto(x + side, y); w.lineto(x, y); /** Flyttar kvadraten avståndet dx i x-led, dy i y-led. */ public void move(int dx, int dy) { x = x + dx; y = y + dy; Datavetenskap (LTH) Föreläsning 5-6 HT 2017 21 / 32

public eller private Man måste bestämma var ett attribut eller en metod ska kunna användas: public kan även användas utanför klassen private är bara åtkomligt inuti i klassen protected kan bara åtkomligt i klassen och dess subklasser (kommer senare i kursen) om man inte skriver någon av dessa modifierare får attributet/metoden paketskydd och kan användas av andra klasser i samma paket. I regel är attributen privata och metoderna publika, men undantag finns, t.ex. Metoder som bara ska användas internt inuti klassen ska då deklareras private. Atrribut som är konstanter kan vara avsedda att användas utanför klassen och är då publika, t.ex. Math.PI. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 22 / 32

Parametrar public void move(int dx, int dy); dx dy 30 10 parametrar Parametrar Parametrar är variabler som deklareras i metodens parameterlista. Parametrarna skapas då metoden anropas och försvinner när metoden är färdigexekverad. Speciellt för parametrar är att de får värden vid anropet av metoden. Argumentets värde kopieras vid anropet in i motsvarande parameter. En parameter är bara åtkomliga inuti den metod den är deklarerad. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 23 / 32

Anropa metoder på objekt Argument Argument Argument är värden som skickas in till en metod. Exempel: Man vill kunna skapa kvadrater med olika läge och sidlängd,... public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600, 600, "Square"); Square sq = new Square(20, 10, 40); sq.draw(w); double area = sq.getarea()); System.out.println(area); argument Datavetenskap (LTH) Föreläsning 5-6 HT 2017 24 / 32

Klassen Square Metoderna getx, gety och getarea /** Tar reda på x-koordinaten för kvadratens läge. */ public int getx() { return x; /** Tar reda på y-koordinaten för kvadratens läge. */ public int gety() { return y; /** Tar reda på kvadratens area. */ public int getarea() { return side * side; Datavetenskap (LTH) Föreläsning 5-6 HT 2017 25 / 32

Metoder som returnerar värden Vissa metoder returnerar ett värde. De har då något annat än void som returtyp. Metoden måste också ha (minst) en return-sats. returtyp public int getarea() { return side * side; return-sats Datavetenskap (LTH) Föreläsning 5-6 HT 2017 26 / 32

Exekvering och metodanrop Ett anrop av en metod innebär att exekveringen fortsätter med den första satsen i den anropade metoden. När den anropade metoden är klar återupptas exekveringen i den metod där anropet gjordes. public static void main { DrawSquare sq.draw(); public void draw (SimpleWindow w) { Square w.moveto(x, y); public void moveto (int x, int y) { SimpleWindow Datavetenskap (LTH) Föreläsning 5-6 HT 2017 27 / 32

Klassen Square Konstruktor public Square(int xcoord, int ycoord, int sidelength) { x = xcoord; y = ycoord side = sidelength; attributet side parametern sidelength Konstruktor Konstruktorn är en metod med samma namn som klassen Satserna i konstruktorn utförs då objektet skapas (med new ). Konstruktorn innehåller oftast satser för att ge attributen startvärden. Konstruktorn är deklarerad public är åtkomlig utanför klassen. Returtyp ska ej anges. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 28 / 32

this Det är vanligt att samma namn används på attribut och parametrar: public Square(int x, int y, int side) { this.x = x; this.y = y; this.side = side; attributet side parametern side this this är en referens till objektet självt. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 29 / 32

Övning Implementera klasser Lägg till följande metod i klassen Square: /** Sätter sidlängden till newside */ public void setside(int newside) { Datavetenskap (LTH) Föreläsning 5-6 HT 2017 30 / 32

Övning Implementera klasser Lägg till följande metod i klassen Square: /** Returnerar true om kvadraten har större area än kvadraten other, i annat fall returneras false. */ public boolean biggerthan(square other) { Datavetenskap (LTH) Föreläsning 5-6 HT 2017 31 / 32

Checklista Exempel på vad du ska kunna Förklara begreppen objekt och klass. Skapa objekt och anropa metoder på dem. Implementera klasser (med attribut, konstruktor och övriga metoder). Förstå vilka variabler och objekt som finns i ett program och hur de hänger ihop. Visa detta genom att rita en figur över minnessituationen med variabler och objekt med attribut Förklara begreppen specifikation och implementering. Datavetenskap (LTH) Föreläsning 5-6 HT 2017 32 / 32