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 )

Relevanta dokument
Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Programmeringsteknik I. Föreläsning 3: Klasser och arrayer

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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.

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

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

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

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. Täcker material från lektion 1, 2, 3 och 4:

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

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

Del A (obligatorisk för alla)

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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

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

Lösningsförslag övning 2.

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

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

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

Malmö högskola 2008/2009 CTS

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

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

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

(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

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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

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

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Objekt och klasser - Introduktion

Arrayer. results

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 i Java

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

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

Enkla variabler kontra referensvariabel

Hur ser ett Java-program ut?

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

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

Klasshierarkier - repetition

Mer om klasser och objekt

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

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

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

Konstruktion av klasser med klasser

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

TENTAMEN OOP

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

Tentamen i Programmeringsteknik I

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

Tentamen i Programmeringsteknik I

Lösningar för tenta 3 DAT043,

Föreläsning 3-4 Innehåll

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

Del A (obligatorisk för alla)

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

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

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

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.

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

OOP Objekt-orienterad programmering

Laboration 3, uppgift En klass för en räknare

Föreläsning 2, vecka 8: Repetition

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

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

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

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.

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

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

Presentation av trafiksimuleringsprojektet

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

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

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

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

TENTAMEN OOP

Föreläsning REPETITION & EXTENTA

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

Det finns en referensbok (Java) hos tentavakten 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 {... }

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]

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

Typkonvertering. Java versus C

Övningar Dag 2 En första klass

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

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

Laboration A Objektsamlingar

Transkript:

(26 januari 2018 F3 1 ) 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 2 ) Arrayer En array är en datatyp som representerar flera värden av samma typ. Exempel: värden index 7 23 8 1 4 17 9 3 42 0 1 2 3 4 5 6 7 8 I Java är arrayer objekt som skapas med new. Uttrycket new int[9] skapar följande array-objekt värden index 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8

(26 januari 2018 F3 3 ) Arrayer För att hålla reda på array-objekt användes referensvariabler. Satsen int[] a = new int[9]; skapar följande bild: a 0 0 0 0 0 0 0 0 0

Det är bara vid deklarationer av array-referenser man kan göra på detta sätt. (26 januari 2018 F3 4 ) Arrayer Det går att ge värden till elementen i samband med att det skapas. Satsen int[] a = new int[]{7, 23, 8, 1, 4, 17, 9, 3, 42 skapar det array-objekt och sätter a att referera det. a 7 23 8 1 4 17 9 3 42 Skrivs dock vanligen (läs alltid) utan new int[] dvs så här int[] a = {7, 23, 8, 1, 4, 17, 9, 3, 42

(26 januari 2018 F3 5 ) Arrayer För att komma åt enskilda element i arrayen används index inom [ ]-parenteser. Exempel: a[0] = -47; a[1] = 3; a[2] = 5; a[3] = a[1] + a[2]; a[a[1]] = (int)(math.random()*1000); a[(int)(math.random()*9)] = 99; char c = 'd'; a[c-'a']++;

(26 januari 2018 F3 6 ) Arrayer Array-objekt innehåller fler saker än värden. En mer rättvisande bild är a 8 3 0 4 1 0 3 7 0 andra saker (metoder, variabler)

(26 januari 2018 F3 7 ) Arrayer Ett exempel på information som finns i array-objekten är attributet length (obs: ej en metod) Exempel: Räkna antalet negativa tal i arrayen a: int n = 0; int i = 0; while (i < a.length) { if (a[i] < 0) { n++; i++ System.out.println("Antal negativa tal är " + n);

(26 januari 2018 F3 8 ) Sammanfattning av arrayers egenskaper En array innehåller 0 eller flera element. Alla element måste vara av samma typ. Elementen kan vara av vilken typ som helst inklusive objektreferenser och arrayer. Ett skapat array-objekt har en fix storlek som inte kan ändras men en array-referens kan tilldelas ett annat array-objekt med annan storlek. Attributet length innehåller arrayens storlek. Man använder index-operatorn [ ] för att referera enskilda element. Indexering med [ ] är en mycket effektiv operation.

(26 januari 2018 F3 9 ) for-satsen För att iterera över elementen i en array används ofta for- i stället för while-satsen. Exempel: Räkna antalet negativa värden i en array int n = 0; for (int i=0; i<a.length; i++) { if (a[i] < 0) { n++; int n = 0; int i = 0; while (i<a.length) { if (a[i] < 0) { n++; i++; Funktionen är identisk (men loopvariabeln i existerar inte efter for-loopen)

(26 januari 2018 F3 10 ) for-each -satsen Exempel: Räkna antalet negativa element som ovan int n = 0; for (int i = 0; i < a.length; i++) { if (a[i] < 0) { n++; int n = 0; for (int v : a) { if (v < 0) { n++; Observera att Variabeln v kommer successivt att anta alla värden som finns i arrayen Kommer inte åt några index

(26 januari 2018 F3 11 ) Arrayer kan lagra objektreferenser Exempel: Array med paddor. Turtle[] t = new Turtle[8]; t Skapar en array men inga paddor. Ett snedstreck anger null-referens. Vi kan skapa paddor på vanligt sätt och lägga in dem i världen: for (int i = 0; i < 6; i++) { t[i] = new Turtle(w); t (Vi förutsätter att w refererar ett World-objekt)

(26 januari 2018 F3 12 ) Arrayer som parametrar Antag att vi skapar en array med 6 paddor i main enligt ovan och anropar metoden scatter med arrayen t som parameter. public void scatter(turtle[] a) { int angle = 0; for (Turtle p : a) { p.turn(angle); p.move(150); angle += 60; t main a p scatter Anmärkning: Det är några problem i koden som vi återkommer till.

(26 januari 2018 F3 13 ) Arrayer som parametrar Observera att metoden scatter skulle kunna ändra i Turtle-objekten, skulle kunna ändra i arrayen (t ex ta bort eller lägga till Turtle-objekt) men kan inte ändra på t eller någon annan variabel i main-metoden. t main a p scatter

(26 januari 2018 F3 14 ) Vad är problemen i koden? Testkör! Demo TurtleDemo kompilerar inte Det går inte att anropa en instansmetod från en klassmetod utan att gå via en objektreferens. kraschar när vi rättat kompileringsfelet. Går inte att anropa metoder för en null-referens. Det andra felet dvs NullPointerException är ett av de vanligaste problemen ni kommer att råka ut för!

Metoder kan returnera arrayer Exempel: Andragradsekvationen från förra föreläsningen public static double maxroot(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return Double.NaN; else { d = Math.sqrt(d); double x1 = -p/2 + d; double x2 = -p/2 - d; if (x1 > x2) { return x1; else { return x2; Nu kan vi låta metoden skapa och returnera en array med de två rötterna som element. (26 januari 2018 F3 15 )

(26 januari 2018 F3 16 ) Kan returnera båda rötterna i en array public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return r;

(26 januari 2018 F3 17 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... roots? main

(26 januari 2018 F3 18 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return r; roots? main p 2 q 1 d? r? quadequation

(26 januari 2018 F3 19 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return result; roots? main p 2 q 1 d 1 r quadequation 1 1

(26 januari 2018 F3 20 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1);... public static double[] quadequation(double p, double q) { double d = (p*p - 4*q)/4; if (d < 0) { System.out.println("Complex roots"); return null; else { d = Math.sqrt(d); double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return result; roots main p 2 q 1 d 1 r quadequation 1 1

(26 januari 2018 F3 21 ) Vad händer vid anrop av quadequation? public static void main(string[] a) { double[] roots; roots = quadequation(2, 1); roots... main 1 1

(26 januari 2018 F3 22 ) En anmärkning De 4 sista raderna i quadequation: double[] r = new double[2]; r[0] = -p/2 + d; r[1] = -p/2 - d; return r; kan ersättas med return new double[]{-p/2+d, -p/2-d;

(26 januari 2018 F3 23 ) Typiska fel Glömma skapa arrayen: int[] a; a[i] = 4; Felaktigt index: int[] a = new int[5]; a[5] = 4; NullPointerException ArrayIndexOutOfBoundsException Glömma att skapa objekten i en objektarray : Turtle[] t = new Turle[5]; t[0].move(40); NullPointerException Observera att felmeddelandet säger var felet har inträffat!

(26 januari 2018 F3 24 ) Introduktion till klasser Ett Javaprogram består av en eller flera klasser. Klassen är den minsta självständiga enheten i ett Javaprogram. Vilka klasser har ni sett/använt? Klasser har namn. Hur ser man om ett namn står för en klass?

(26 januari 2018 F3 25 ) En klass kan representera En konkret fysisk enhet. Exempel: fordon, tärning, person, hus, kondensator, sköldpadda, biljardboll,... En mer abstrakt enhet. Exempel: triangel, bankkonto... En programmeringsteknisk enhet. Exempel: program, teckenström, Scanner, Math...

(26 januari 2018 F3 26 ) Vad är en klass? En textfil med typen.java. En programmodul. En abstrakt beskrivning av någon typ objekt. En mall. En datatyp.

(26 januari 2018 F3 27 ) Klasser och objekt En typisk klass konstrueras med instansvariabler metoder Instansvariablerna står ofta för någon egenskap (ex: längd, vikt, färg, personnummer, segelyta,... Metoderna står för någon form av operation (move, turn,... ) eller används för att hämta information (getxpos, getworld,... ) Fram t o m nätlektion 4 har ni sett metoder men inga instansvariabler. De variabler ni sett/använt har varit lokala variabler eller formella parametrar.

(26 januari 2018 F3 28 ) Metoder Klasser instansieras till objekt. Detta görs med operatorn new. Referensvariabler (pekare, adresser) används för att hålla reda på objekt. Operatorn new returnerar en referens till det skapade objektet. För att komma åt attribut och metoder i används punktnotation. Instansvariabler och metoder har en synlighet som anges med public eller private (två till finns). Metoderna är ofta publika och instansvariablerna privata.

(26 januari 2018 F3 29 ) Exempel: En klass för att representera en tärning Vilka egenskaper har en tärning? Färg? Vikt? Material? Storlek? Antal sidor? Aktuellt värde?... Beror på vad vi vill göra! Nöjer oss med Antal sidor och Aktuellt värde

(26 januari 2018 F3 30 ) Vilka operationer vill vi ha? Skapa en tärning Slå en tärning Avläsa tärningens värde Ändra tärningens värde? Nej, knappast. Ändra antalet sidor? Möjligen....

(26 januari 2018 F3 31 ) En första skiss av klassen Dice public class Dice { private int nsides; private int value; public Dice() {... public int getvalue() {... public void roll() {... // Konstruktor // Avläsa värde // Slå tärningen Två privata instansvariabler (nsides och value). En parameterlös konstruktor (Dice) och två publika metoder (getvalue och roll).

(26 januari 2018 F3 32 ) Konstruktorer Har samma namn som klassen. I detta fall Dice. Används när ett objekt ska skapas. Ger instansvariabler värden. public Dice() { this.nsides = 6; Fråga: Hur gör man för att få en tärning med ett annat antal sidor?

(26 januari 2018 F3 33 ) Alternativ konstruktor För att skapa en tärning med ett annat antal sidor än 6: public Dice(int nsides) { this.nsides = nsides; Obs: Här är det nödvändigt att använda this! Nu kan man skapa tärningar: Dice d1 = new Dice(); Dice d2 = new Dice(17); Dice d3 = new Dice(40396); Måste man skriva konstruktorer?

(26 januari 2018 F3 34 ) Dice: Metoderna Definition av metoderna: public int getvalue() { return value; public void roll() { value = (int)(math.random()*nsides) + 1; Nu kan vi testa! Demo Dice

(26 januari 2018 F3 35 ) Förbättringar av konstruktorerna Vad får value för värde när en tärning skapas? Defaultvärde är på instansvariabler är 0 (eller null för referensvariabler). Fråga: Vilket värde borde value få? Så här då? public Dice() { this.nsides = 6; this.roll(); public Dice(int nsides) { this.nsides = nsides; this.roll()

(26 januari 2018 F3 36 ) Fler förbättringar av konstruktorerna Vad händer om man gör new Dice(-3)? Konstruktorerna bör kontrollera att den får vettiga värden! public Dice(int nsides) { if (nsides < 2) { System.out.println("Dice: Wrong number of sides"); this.nsides = 6; this.nsides = nsides; this.roll()

(26 januari 2018 F3 37 ) Dice: Ännu fler förbättringar Upprepning av identisk kod är en styggelse! Den parameterlösa konstruktorn skrivs snyggare så här: public Dice() { this(6); Uttrycket this(... ) i en konstruktor anropar alltså en annan konstruktor. Flexiblare användning med modifierad roll-metod: public int roll() { this.value = (int)(math.random()*nsides) + 1; return this.value;

(26 januari 2018 F3 38 ) Dice: tostring-metod Metoden tostring definierar en konvertering från ett objekt till ett String-objekt. Den vill man så gott som alltid ha! public String tostring() { return "" + value; Öh? eller public String tostring() { return "Dice(" + nsides + ", " + value + ")"; Råd: Gör inte tostring-metoderna så pratiga!

(26 januari 2018 F3 39 ) Snyggare Ett tärningsvärden ser ju ut så här:

(26 januari 2018 F3 40 ) Snyggare eller så här:

(26 januari 2018 F3 41 ) Först: Hur kan man visa en bild?* import java.awt.*; import javax.swing.*; public class ImageDisplay extends JFrame { public ImageDisplay(String imagefile, int width, int height, int x, int y) { setlocation(x, y); ImageIcon icon = new ImageIcon(imageFile); JLabel label = new JLabel(icon); add(label); setpreferredsize(new Dimension(width, height)); pack(); setdefaultcloseoperation(exit_on_close); setvisible(true); Demo ImageDisplay

(26 januari 2018 F3 42 ) Resultat Med main-programmet public static void main(string[] args) { new ImageDisplay("images/Matterhorn-800.jpg", 850, 600, 0, 0); får man fönstret: Länk till källkoden.

(26 januari 2018 F3 43 ) Hur gör man tärningsbilder? public class DiceDisplay { private String[] faces = new String[6]; public DiceDisplay() { faces[0] = "images/die1.png"; faces[1] = "images/die2.png"; faces[2] = "images/die3.png"; faces[3] = "images/die4.png"; faces[4] = "images/die5.png"; faces[5] = "images/die6.png"; // instansvariabel // konstruktor void display(dice d, int x, int y) { // metod int index = d.getvalue() - 1; new ImageDisplay(faces[index], 230, 230, x, y);

(26 januari 2018 F3 44 ) Användning public static void main(string[] args) { Dice d = new Dice(); DiceDisplay dd = new DiceDisplay(); for (int i =0; i<12; i++) { d.roll(); System.out.print(d.getValue() + " "); //dd.display(d, 0, 0); dd.display(d, i%4*240 + 10, i/4*280 + 10); System.out.println(); Demo DiceDisplay Demo PokerDice Demo DiceWindow

Resulterande skärm av DiceDisplay Länk till källkoden. (26 januari 2018 F3 45 )

(26 januari 2018 F3 46 ) Pokertärningar public class PokerDice extends JFrame { /** * Opens a window and displays a number of dice * with poker faces * @param dice the set of dice */ public PokerDice(Dice[] dice) { ImageIcon[] icons = new ImageIcon[6]; icons[0] = new ImageIcon("images/Die9.png"); icons[1] = new ImageIcon("images/Die10.png"); icons[2] = new ImageIcon("images/DieJack.png"); icons[3] = new ImageIcon("images/DieQueen.png"); icons[4] = new ImageIcon("images/DieKing.png"); icons[5] = new ImageIcon("images/DieAce.png"); for (Dice d: dice) { add(new JLabel(icons[d.getValue()-1])); setlayout(new FlowLayout()); setpreferredsize(new Dimension(630, 440)); pack(); setdefaultcloseoperation(exit_on_close); setvisible(true);

(26 januari 2018 F3 47 ) Pokertärningar forts public static void main(string[] args) { Dice[] poker = new Dice[5]; for (int i=0; i<5; i++) { poker[i] = new Dice(); new PokerDice(poker); Länk till källkoden. Länk till källkoden för klickbar pokertärning.