JAVAUTVECKLING LEKTION 11

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

Objektorienterad programmering Föreläsning 5

Agenda. Objektorienterad programmering Föreläsning 13

Malmö högskola 2008/2009 CTS

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

Objektorienterad programmering

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

Lösningsförslag övning 2.

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

Objektorienterad Programmering DAT043

OOP Objekt-orienterad programmering

JAVAUTVECKLING LEKTION 7

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

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

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

JAVA Mer om klasser och objektorientering

Föreläsning 5-6 Innehåll

JAVAUTVECKLING LEKTION 4

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen. Lösningsförslag

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Lösningar för tenta 3 DAT043,

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

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.

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

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

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

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

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

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

Föreläsning 4. Klasser och objekt

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

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

TENTAMEN OOP

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

JAVAUTVECKLING LEKTION 8

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Klasshierarkier - repetition

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

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

OOP Objekt-orienterad programmering

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Mer om klasser och objekt

Java, klasser, objekt (Skansholm: Kapitel 2)

TENTAMEN OOP

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

Del A (obligatorisk för alla)

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

JAVAUTVECKLING LEKTION 3

Tentamen OOP

Objekt och klasser - Introduktion

Del A (obligatorisk för alla)

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

OOP Objekt-orienterad programmering

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Enkla variabler kontra referensvariabel

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

Generiska konstruktioner. Kursbokens kapitel 13

Föreläsning 5. Föreläsning 5

Föreläsning 3-4 Innehåll

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

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

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

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

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

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

Laboration 1 - Grunderna för OOP i Java

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

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

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

TENTAMEN OOP

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

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Objektorienterad programmering

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

Typkonvertering. Java versus C

1 Egna klasser. 1.1 En punkt-klass

OOP Objekt-orienterad programmering

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 )

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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Laboration 1: Figurer i hierarki

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Modeller, Objekt och Klasser

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.

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

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 till tentamen

Transkript:

JAVAUTVECKLING LEKTION 11 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Mer om klasser och objekt Statiska/instans-metoder Överlagrade metoder Inkapsling Konstruktorer 1

UPPGIFT 13.6 Deklarera en klass Kort som kan användas för att beskriva kort i en vanlig kortlek. Använd heltalen 0,1,2,3 för att presentera de fyra kortfärgerna, klöver, ruter, hjärter resp. spader. Använd konstanter så att man slipper komma ihåg vilket nummer som betyder vilken färg. Skriv sedan ett program som skapar två kort. Initiera korten så att de innehåller spader dam och klöver 7. UPPGIFT 13.6 KLASSEN KORT public class Kort { // klassvariabler public static final int KLÖVER = 0; public static final int RUTER = 1; public static final int HJÄRTER = 2; public static final int SPADER = 3; // instansvariabler int färg; int valör; 2

UPPGIFT 13.6 KORT, TESTPROGRAM public class KortTest { public static void main(string[] arg) { Kort k1 = new Kort(); Kort k2 = new Kort(); k1.färg = Kort.SPADER; k1.valör = 12; k2.färg = Kort.KLÖVER; k2.valör = 7; INSTANSMETODER modifieare resultattyp namn (typ1 p1, typ2 p2, ) { lokala deklarationer och satser p1, p2, är parametrar. Modifierare kan vara public, private eller protected. OBS! ordet static får inte vara med. 3

ANROP AV INSTANSMETODER Objekt.metodnamn(a1, a2, an) Objekt är referens till ett objekt. a1, a2, an är argument. Deras typer bör överrensstämma med motsvarande parametrar. ÖVNING 15.1 Deklarera en klass som beskriver rektanglar. Låt klassen innehålla instansvariabler som beskriver en rektangels startpunkt (dess övre vänstra hörn) samt dess höjd och bredd. Klassen skall också innehålla instansmetoder som sätter höjden, sätter bredden, beräknar arean och beräknar omkretsen. 4

ÖVNING 15.1 KLASSEN REKTANGEL INSTANSVARIABLER public class Rektangel { // instansvariabler double x, y; double b, h; // startpunktens koordinater // bredd och höjd ÖVNING 15.1 KLASSEN REKTANGEL INSTANSMETODEN SÄTTBREDD public void sättbredd(double br) { if (br >= 0) else b = br; throw new IllegalArgumentException("Negativ bredd"); 5

ÖVNING 15.1 KLASSEN REKTANGEL INSTANSMETODEN SÄTTHÖJD public void sätthöjd(double hö) { if (hö >= 0) h = hö; else throw new IllegalArgumentException("Negativ höjd"); ÖVNING 15.1 KLASSEN REKTANGEL INSTANSMETODERNA AREA OCH OMKR public double area() { // beräknar arean return b * h; public double omkr() { // beräknar omkretsen return 2 * b + 2 * h; 6

ÖVNING 15.2 Rektangel r = new Rektangel(); while (true) { String s = JOptionPane.showInputDialog("Ange rektangelns bredd och höjd"); if (s == null) break; Scanner sc = new Scanner(s); r.sättbredd(sc.nextdouble()); r.sätthöjd(sc.nextdouble()); JOptionPane.showMessageDialog(null, String.format ("Rektangeln har arean %.3f " + "och omkretsen %.3f\n", r.area(), r.omkr())); INKAPSLING (ENCAPSULATION ) Inkapsling innebär att ett objekts inre uppbyggnad ska vara ointressant för den som använder objektet. Detta är en grundprincip i objektorienterad programmering. Allt en programmerare behöver veta är vad objektet kan göra och hur man ber objektet att göra det. 7

KLASSEN PERSON public class Person { private String förnamn; // privat instansvariabel private String efternamn; // privat instansvariabel // instansmetoder public void setnamn(string förnamn, String efternamn) { this.förnamn = förnamn; this.efternamn = efternamn; public String getnamn() { return förnamn + " " + efternamn; ÖVERLAGRADE METODER Två eller flera metoder i en klass får ha samma namn. Antalet parametrar eller parametrarnas typer måste då vara olika. Det räcker inte att returtyperna är olika. Vid anrop väljer kompilatorn den version där parametrarna stämmer med argumenten i anropet. 8

PERSON TESTPROGRAM Person p1 = new Person(); OBS! Två argument skickas till metoden setnamn p1.setnamn("mahmud", "Al Hakim"); System.out.println(p1.getNamn() ); KLASSEN PERSON METODEN SETNAMN (V2) public void setnamn(string namn) { int k = namn.indexof(','); if (k < 0) throw new IllegalArgumentException("Fel i namn"); efternamn = namn.substring(0, k).trim(); förnamn = namn.substring(k+1).trim(); 9

PERSON TESTPROGRAM Person p1 = new Person(); OBS! Ett argument skickas till metoden setnamn p1.setnamn("mahmud, Al Hakim"); System.out.println(p1.getNamn() ); KLASSEN PERSON METODEN SETNAMN (V3) public void sätt(string s, char avgränsare) { int k = s.indexof(avgränsare); if (k < 0) throw new IllegalArgumentException("Fel i namn"); efternamn = s.substring(0, k).trim(); förnamn = s.substring(k+1).trim(); 10

PERSON TESTPROGRAM Person p1 = new Person(); OBS! Två argument skickas till metoden setnamn p1.setnamn("mahmud;al Hakim, ';'); System.out.println(p1.getNamn() ); Vad händer om vi skickar ";" istället för ';' METODEN TOSTRING Metoden tostring() ger en textversion av det aktuella objektet. @Override public String tostring() { return this.förnamn + " " + this.efternamn; 11

KONSTRUKTORER Har samma namn som klassen. Får inte ha returtyp. Får finnas flera, men då måste de ha olika antal parametrar eller olika typer av parametrar. Om man inte definierar några egna konstruktorer, får man automatiskt en parameterlös konstruktor, en s.k. defaultkonstruktor. Om man definierar egna konstruktorer, måste man själv definiera en parameterlös konstruktor om man vill ha en sådan. KLASSEN PERSON public class Person { private String förnamn; // privat instansvariabel private String efternamn; // privat instansvariabel public Person() { // Defaultkonstruktor // Konstruktor med två parametrar public Person(String förnamn, String efternamn){ setnamn(förnamn,efternamn);... 12