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

Relevanta dokument
JAVAUTVECKLING LEKTION 11

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

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

DAT043 - Föreläsning 7

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

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

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

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

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

Konstruktion av klasser med klasser

Polymorfi. Objektorienterad och komponentbaserad programmering

Laboration 13, Arrayer och objekt

OOP Objekt-orienterad programmering

Lösningsförslag till tentamen

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

Klasshierarkier - repetition

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Objektorienterad Programmering (TDDC77)

Föreläsning 2. Länkad lista och iterator

Lösningar för tenta 3 DAT043,

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

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

OOP Objekt-orienterad programmering

PROGRAMMERINGSTEKNIK TIN212

Föreläsning 8: Exempel och problemlösning

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

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

Repetition av OOP- och Javabegrepp

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Tentamen. Lösningsförslag

Repetition av OOP- och Javabegrepp

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

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Föreläsning 9: Arv och UML

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

LÖSNINGSFÖRSLAG

DAT043 - föreläsning 8

Objektorienterad programmering i Java

TDDD78 Viktiga begrepp, del 2

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Föreläsning 2, vecka 8: Repetition

Föreläsning 2. Länkad lista och iterator

Lösningsförslag till tentamen

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

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

OOP Objekt-orienterad programmering

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

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

Föreläsning 7. Träd och binära sökträd

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

Arrayer (fält)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

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 REPETITION & EXTENTA

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

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

I ett program hantera man ofta samlingar av objekt av samma typ.

Tentamen i Objektorienterad programmering

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

Generiska konstruktioner. Kursbokens kapitel 13

2D1339 Programkonstruktion för F1, ht 2004

Föreläsning 3. Stack

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

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

TDDD78 Objektorientering i Java, del 4. Hur vet man om två objekt är lika? Hur undviker man objekt och när?

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

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

Inga hjälpmedel tillåtna.

Föreläsning 3-4 Innehåll

Föreläsning 7. for-satsen Fält

Classes och Interfaces, Objects och References, Initialization

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Föreläsning 4 Innehåll

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Språkkonventioner och redigering av tal.

Transkript:

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 String tostring() { return "(" + x + ", " + y + ")"; public void skriv() { System.out.println(toString()); // defaultkonstruktor 1

public interface Ritbar { void rita(); public class Punkt implements Skrivbar, Ritbar { som tidigare public void skriv() { System.out.println(toString()); public void rita() { här ligger satser som ritar en punkt 2

public abstract class GrafiskFigur { deklarationer av variabler om metoder public class Punkt extends GrafiskFigur implements Skrivbar, Ritbar { som tidigare public abstract class Djur implements Ritbar { deklarationer av variabler om metoder 3

Skrivbar sk = new Skrivbar(); // FEL!! // Men följande är OK Punkt p = new Punkt(1.0, 2.5); Tiger ti = new Tiger(); Skrivbar sk; Ritbar ri1, ri2; sk = p; ri1 = p; ri2 = ti; ri2.rita(); // dynamisk bindning 4

public interface Presenterbar extends Ritbar, Skrivbar { void visa(); public interface Lagringsbar { int blockstorlek = 1024; // automatiskt final och static void lagra(); 5

Ritbar[] r = new Ritbar[100]; r[0] = new Tiger(); r[1] = new Punkt(); r[2] = new Mus(); for (int i=0; i<r.length; i++) if (r[i]!= null) r[i].rita(); 6

Nyhet i Java 8: default-metoder (defender methods, virtual extension methods) public interface Skrivbar { void skriv() default { System.out.println(toString()); Nu OK: 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 String tostring() { return "(" + x + ", " + y + ")"; // defaultkonstruktor 7

Default-metoder krånglar till reglerna för interface gör det möjligt att utöka ett interface utan att befintliga klasser som implementerar det behöver påverkas. gäller bara om ingen implementering skett på normalt sätt (egen implementering eller arv från superklass) upphävs om de omdefineras i ett subgränssnitt (även om de där inte är default-metoder) ger oklarheter när en viss metod finns i mer än ett gränssnitt vilka implementeras av en klass eller utökas i ett subgränssnitt. (Kan lösas med hjälp av super.) 8

Jämförelser public class Klockslag implements Comparable<Klockslag> { int tim; int min; public int compareto(klockslag k) { if (tim < k.tim (tim == k.tim && min < k.min)) return -1; else if (tim > k.tim (tim == k.tim && min > k.min)) return 1; else return 0; @Override public String tostring() { return String.format("%02d:%02d", tim, min); 9

int i = k1.compareto(k2); if (i < 0) System.out.println(k1 + " kommer före " + k2); else if (i == 0) System.out.println("Samma klockslag"); else System.out.println(k1 + " kommer efter " + k2); 10

public class Cirkel { // instansvariabler double x, y; // mittpunktens koordinater double radie; // instansmetoder public void sättradie(double r) { // ändrar radien if (r >= 0) radie = r; else throw new IllegalArgumentException("Negativ radie"); public double area() { return Math.PI * radie * radie; public double omkr() { return 2 * Math.PI * radie; // beräknar arean // beräknar omkretsen 11

import java.util.*; // innehåller bl.a. Comparator public class JfrCirkel implements Comparator<Cirkel> { public int compare(cirkel a, Cirkel b) { if (a.radie < b.radie) return -1; else if (a.radie > b.radie) return 1; else return 0; JfrCirkel jfr = new JfrCirkel(); // skapa en jämförare if (jfr.compare(c1,c2) < 0) JOptionPane.showMessageDialog(null, "Den första cirkeln är minst"); 12

import java.text.*; // Innehåller Collator public class Namn implements Comparable<Namn> { String förnamn; String efternamn; static Collator col = Collator.getInstance(); public int compareto(namn annatnamn) { col.setstrength(collator.primary); int i = col.compare(efternamn, annatnamn.efternamn); if (i!= 0) return i; else return col.compare(förnamn, annatnamn.förnamn); @Override public String tostring() { return förnamn + " " + efternamn;... 13

Några metoder i klassen java.util.arrays tostring(a) equals(a,b) sort(a) sort(a, c) sort(a,i1,i2) sort(a,i1,i2,c) ger en textversion av fältet a. Om komponenterna är objekt anropas tostring för varje komponent. ger true om fälten a och b är lika, dvs. har lika många komponenter och motsvarande komponenter är lika (a[i].equals(b[i]) om komponenterna är objekt) sorterar komponenterna i fältet a som ovan, men använder en jämförare c sorterar komponenterna nr i1 till i2-1 i fältet a som ovan, men använder en jämförare c binarysearch(a,k) söker efter komponenten k i fältet a, ger k:s index i fältet om k finns, -1 annars binarysearch(a,k,c) som ovan, men använder en jämförare c aslist(a) ger möjlighet att hantera fältet a som en lista 14

Några metoder i klassen java.util.collections sort(l) sorterar elementen i listan l. sort(l, c) som ovan, men använder en jämförare c. binarysearch(l,e) söker efter elementet e i listan l, ger k:s index i listan om k finns, -1 annars. binarysearch(l,e,c) som ovan, men använder en jämförare c. max(l) ger det största elementen i listan l. max(l,c) som ovan, men använder en jämförare c. min(l) ger det minsta elementen i listan l. min(l,c) som ovan, men använder en jämförare c. 15