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



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

Lektion 3. Datateknik A, Java I, 5 poäng

Malmö högskola 2008/2009 CTS

Tentamen OOP

JAVAUTVECKLING LEKTION 11

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

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

Föreläsning 5-6 Innehåll

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Java, klasser, objekt (Skansholm: Kapitel 2)

Övningar Dag 2 En första klass

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

Objektorienterad programmering

Objektorienterad programmering D2

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

LÖSNINGSFÖRSLAG TENTAMEN

Introduktion till arv

Föreläsning 3-4 Innehåll

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

OOP Objekt-orienterad programmering

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

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

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

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

Att använda Java SE JDK 6

Objektorienterad programmering i Java

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

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

Lösningsförslag övning 2.

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

TUTORIAL: KLASSER & OBJEKT

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

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

Tentamen. Lösningsförslag

Objektsamlingar i Java

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

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

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.

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

JAVA Mer om klasser och objektorientering

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 bänken.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

OOP Objekt-orienterad programmering

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

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

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

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

OOP Objekt-orienterad programmering

Objekt och klasser - Introduktion

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

TENTAMEN OOP

Objektorienterad programmering Föreläsning 5

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

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

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Funktionens deklaration

Modeller, Objekt och Klasser

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Klasshierarkier - repetition

Övning 3. Datateknik A, Java I, 5 poäng

Objekt, Klasser, Paket m. m.

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Lektion 7. Datateknik A, Java I, 5 poäng

Tentamen, EDAA20/EDA501 Programmering

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Föreläsning 2, vecka 8: Repetition

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

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 )

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

Inledande programmering med C# (1DV402) Tärningarna ska kastas

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.

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.

LÖSNINGSFÖRSLAG TENTAMEN

Del A (obligatorisk för alla)

Laboration A Objektsamlingar

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

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

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

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

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

Objekt och referenser

TDDD78 Objektorientering: Lagring och livstid

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]

Klasser och objekt i C#

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Transkript:

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 Metodnamn Parametrar Kodsatser inom matchande klamrar En metod är åtkomlig i hela den egna klassen. Dvs den kan anropas från alla andra metoder i klassen 1

Anropa Metoder Publika metoder kan anropas Anrop görs med punktnotation p1.setnamn("kalle"); PersonTest p1 : Person main(string[]): void setnamn("kalle") Använder 1..1 1..* Person -namn : String -persnr: String + setnamn(n : String) + setpersnr(p : String) + print() : void Metoder - Anropa Exekveringen överförs till den anropade metodens första sats Return återlämnar exekveringen public class Person private String namn; private String persnr; public void setnamn(string n) namn = n; 3 1 public class PersonTest public static void main(string[] args) Person p1 = new Person(); 2 public void setpersnr(string p) persnr = p; public void print() System.out.println("Namn\t" + namn); System.out.println("Persnr\t" + persnr); 5 p1.setnamn("kalle Karlsson"); 4 p1.print(); 6 Metoder - Parametrar private String namn; Ett privat fält kan inte nås av andra objekt Publika metoder som ger objekten tillgång (set- och get-metoder) set - tilldelar fältet sitt värde get - lämnar ut fältets värde Parametrar används för att skicka information in till en metod 2

Personklassens setnamn() public class Person private String namn; public void setnamn(string n) namn = n;... PersonTest public class PersonTest public static void main(string[] args) Person p1 = new Person(); p1.setnamn( Kalle ); p1.setnamn(kalle); // ej tillåtet p1.setnamn(10); // ej tillåtet p1.setnamn(); // ej tillåtet Parametrars Räckvidd Räckvidden definierar var en metod, variabel kan användas i programmet public class Person Fält och metoder // Fält klassen private String namn; Parametrar metoden // Metoder public void setnamn(string n) namn = n; public String getnamn() return namn; 3

Metoder - Parametrar Parametrar överförs via värdeanrop d.v.s endast en kopia skickas till metoden För de primitivatyperna innebär det att kopian är skiljd från originalet För objektreferenser refererar dock kopian till samma objekt som originalet Värdeanrop - Exempel public class VardeAnrop public void nollstall(int tal) tal = 0; public static void main(string[] args) VardeAnrop v = new VardeAnrop(); int tal = 10; System.out.println("tal = " + tal); v.nollstall(tal); System.out.println("tal = " + tal); Värdeanrop - objekt public class ReferensAnrop public void bytnamn(person p, String n) p.setnamn(n); public static void main(string[] args) ReferensAnrop ra = new ReferensAnrop(); Person p1 = new Person(); p1.setnamn("kalle"); p1.setpersnr("711111-1111"); p: Person (kopia) Person namn: "Kalle" persnr: "711111-1111" p1: Person (orginal) p1.print(); ra.bytnamn(p1, "Stina"); p1.print(); 4

Konstanta Parametrar Förhindrar att en metod modifierar inskickade parametrar. Exempel: public void nollstall(final int x) x = 0; // Kompileringsfel Returvärden Returvärden används för att skicka information tillbaka från en metod Alla metoder har en returtyp, men inte alla metoder returnerar något åtkomstmodifierare returtyp metodnamn(parametrar) Returtypen kan t.ex. vara: void int double String // Returnerar ingenting // Returnerar ett heltal // Returnerar ett decimaltal // Returnerar en textsträng Returvärden När en metod returnera ett värde tilldelas metodanropet värdet. obj.settal(10); obj.gettal(); Uttrycket obj.gettal() kommer att ersättas med värdet 10 System.out.println(obj.getTal()); // eller 10 int i = obj.gettal(); // i = 10 10 public int gettal() return tal; 5

Utöka Klassen Person Förnamn Efternamn Ålder Set och get Även set och get för hela namnet Person - fornamn : String - efternamn : String - alder : int -persnr: String + setfornamn(f : String) + setefternamn(e : String) + setalder(a : int) + setpersnr(p : String) + setnamn(f : String, e : String) + getfornamn() : String + getefternamn() : String + getalder() : int + getpersnr() : String + getnamn() : String + print() : void Överlagring Av Metoder Flera metoder med samma namn Varje ny variant måste ha en egen signatur, d.v.s olika antal eller olika typer på parametrarna. Den metod som passar bäst anropas Alla varianter ska ha samma betydelse Ingen gräns i antal överlagringar Överlagring - Exempel signatur public void skrivut(string s) // kod för att skriva ut strängen s signatur public void skrivut(string s, Color c) // kod för att skriva ut strängen s i färgen c signatur public void skrivut(string s, Color c, Font f) // kod för att skriva ut strängen s // i färgen c och med fonten f 6

Konstruktorn Reglerar hur ett objekt ska skapas Är deklarerad som public eller private Saknar returtyp Har samma namn som klassen Eventuellt parametrar public Punkt() Konstruktorn är ofta överlagrad Konstruktorn (forts.) Används för att skapa en instans av en klass Är ingen medlem i klassen Används för att initiera objekt (fält) Returnerar inget värde Exempel: public Punkt(int x, int y) xkord = x; ykord = y; Defaultkonstruktorn Om ingen konstruktor anges, kommer en default-konstruktor att tillhandahållas. Tar inga parametrar Innehåller ingen kod public Punkt() Förklarar varför vi kunnat skriva: Punkt p1 = new Punkt(); 7

Anrop Av Konstruktorn En konstruktor körs bara en gång, när ett objekt skapas med nyckelordet new Argumenten i konstruktoranropet måste matcha parametrarna i konstruktordeklarationen Punkt p1 = new Punkt(); // OK p1.setx(10); Punkt p2 = new Punkt(10, 20); // Fel Punkt p3 = new Punkt(10); // Fel This Är en självreferens, dvs en referens till det egna objektet Används ofta för att: 1. Skicka en referens för det egna objektet till ett annat objekt (tvåvägs kommunikation) 2. Från en konstruktor anropa en annan konstruktor i samma klass 3. Skilja mellan fält och lokala variabler med samma namn Överlagring Av Konstruktor Även konstruktorn kan överlagras Samma regler som för metoder public class Punkt private int xkord; // Punktens x-koordinat private int ykord; // Punktens y-koordinat public Punkt(int xkord, int ykord) this.xkord = xkord; this.ykord = ykord; public Punkt() this(0, 0); 8

Konstanter (final) Modifieraren final gör ett fält till en så kallad konstant Kan sen inte förändras i programmet Värdet för fältet måste sättas direkt vid deklarationen eller i konstruktorn Finns flera konstruktorer måste konstanten få ett värde i samtliga Konstanter Exempel public class Punkt private int xkord; // Punktens x-koordinat private int ykord; // Punktens y-koordinat private final int SIZE; private final int MAX_X = 500; private final int MAX_Y = 500; public Punkt(int xkord, int ykord, int size) this.xkord = xkord; this.ykord = ykord; this.size = size; public Punkt(int xkord, int ykord) this(xkord, ykord, 10); Statiska Medlemmar Finns endast i ett exemplar för klassen, som alla objekt delar Lagras och används på klassnivå istället för på objektnivå public class Punkt... private static int antalpunkter = 0; public Punkt(int xkord, int ykord, int size) antalpunkter++;... 9

Statiska Metoder Metoder tillhör klassen och anropas med namnet på klassen public class Punkt... private int xkord; private static int antalpunkter = 0; public static getantalpunkter() // kan inte komma åt icke statiska fält i en // statisk metod xkord ej tillgänglig här!!! return antalpunkter;... // Anrop av statisk metod int antal = Punkt.getAntalPunkter(); OBS! Det behövs inget Punktobjekt för att anropa den statiska metoden. tostring() public String tostring() Alla klasser har en tostring metod Används för att skapa en strängrepresentation av aktuellt objekt Bör alltid omdefinieras // i klassen Punkt public String tostring() return "(" + xkord + ", " + ykord + ")"); // anrop av metoden ger t.ex. följande utskrift // (12, 234) eller (198, 32) Klass i en klass Väldigt ofta används andra objekt som fält i ett objekt T.e.x kan för- och efternamn i våran Person-klass flyttas till en ny klass Namn - fornamn : String - efternamn : String + Namn(f : String, e : String) + Namn() + setfornamn(f : String) + setefternamn(e : String) + setnamn(f : String, e : String) + getfornamn() : String + getefternamn() : String + getnamn() : String + tostring() : String Person - namn : Namn - antalpersoner : int + Person(n : Namn, a : int, p :String) + setnamn(n : Namn) + setnamn(f : String, e : String) + setfornamn(f : String) + getnamn() : Namn + getnamnasstring() : String + getefternamn() : String + getantalpersoner() : int + tostring() : String 10

Dokumentationskommentarer Används för att automatgenerera dokumentation Beskriver klasser, metoder och fält javadoc genererar HTML-kod /** * Dokumentation */ Klasser och fält Första meningen ska vara en summering /** * Representerar en tvådimensionell punkt. Klassen är tänkt * att användas i olika geometriska klasser såsom cirklar, * rektanglar etc. Innehåller information om punktens x- och * y-koordinat. * * @author Robert Eriksson * @version 1.0 */ public class Punkt /** Punktens x-koordinat. */ private int xkord; /** Punktens y-koordinat. */ private int ykord; Konstruktor & metod /** * Sätter för- och efternamn på personen. Utifrån det för- och * efternamn. som skickas som argument till metoden, skapas * ett nytt <code>namn</code> objekt. Referensen till detta * objekt tilldelar vi vårat fält <code>namn</code>. * @param f personens förnamn * @param e personens efternamn */ public void setnamn(string f, String e) namn = new Namn(f, e); /** * Returnerar förnamnet på personen. * @return personens förnamn */ public String getfornamn() return fornamn; 11

Javadoc Javadoc skapar HTML-filer utifrån deklarationer och dokumentations 1. Samla alla filer i en katalog 2. Öppna en DOS-prompt och skriv javadoc *.java i katalogen 3. Öppna filen index.html i en webbläsare 12