• Keine Ergebnisse gefunden

Übung Lotto

N/A
N/A
Protected

Academic year: 2022

Aktie "Übung Lotto"

Copied!
37
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Modul 404

Objektbasiert programmieren nach Vorgabe

Ueli Hagger

(2)

Modul 404

Kompetenz: Vorgabe interpretieren, objektbasiert mit einer Programmiersprache implementieren, dokumentieren und testen.

Übung Lotto

(3)

Aufgabe Lotto Teil 1

Sie kennen vermutlich das Schweizer Zahlenlotto.

https://www.swisslos.ch/de/swisslotto/einzeltipps/spielen.html#tipp

Nun wollen sie dieses in einem Java-Programm simulieren wobei folgendes möglich sein muss:

• Auswahl von 6 Zahlen (Tipp).

• Ziehung der Lottozahlen (button)

• Auswertung (gezogene zu getippten Zahlen)

(4)

Lotto Vorübung unabhängies Programm

Im ersten Schritt sollen 6 Zahlen in eine JList mit DefaultListModel erfasst werden können. Die Zahlen sollen über ein Textfeld eingegeben und nachher im Objekt eines DefaultListModel gespeichert und in der Jlist untereinander ausgegebenen werden.

Danach soll das Programm so ergänzt werden, dass

a) nur Zahlen im Bereich 1 bis 42 eingeben werden können b) keine gleichen Zahlen eingegeben werden können.

c) Die Zahlen sortiert werden

(5)

Aufgabe Lotto Teil 1

Vorgehen

• Entwickeln sie das GUI

• Als erstes soll nur die Auswahl der getippten Zahlen gemacht werden können.

• Die Zahlen sollen in eine JList ausgegeben untereinander ausgegeben werden.

• Die Zahlen soll in einer Liste gespeichert werden

• Auswahl von 6 Zahlen (Tipp).

• Ziehung der Lottozahlen (button) (random)

(6)

Aufgabe Lotto Teil 2

Vorgehen

• Entwickeln sie das GUI

• Nun sollen auch noch folgende Tests programmiert werden.

▪ Tippzahlen im Bereich 1 bis 42

▪ Nur 6 Zahlen können getippt werden

▪ Test, dass keine gleichen Zahlen getippt bzw. gezogen werden

• Auswertung (gezogene zu getippten Zahlen)

• Die Zahlen sollen sortiert ausgegeben werden

(7)

User Interface Lotto

(8)

Liste für gezogene Zahlen

DefaultListModel listeGezogen = new DefaultListModel();

JList gezogen = new JList(listeGezogen);

gezogen.setFont(new Font("Tahoma", Font.PLAIN, 20));

gezogen.setBounds(182, 183, 120, 169);

contentPane.add(gezogen);

8

(9)

"Eingabe": Event Handler

(10)

"Ziehen": Event Handler

10

(11)

Event Handler für Button "Ziehen"

btnZiehen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

listeGezogen.clear();

Random random = new Random();

// 6 Zahlen zwischen 1 und 42 ziehen for (int i = 0; i < 6; i++) {

int randomInt = random.nextInt(42) + 1;

listeGezogen.addElement(randomInt);

} // 6 Zahlen ziehen } // ziehen

});

(12)

Event Handler für "Eingabe"

eingabe.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

// Eingabe des Tipps

String zahl = eingabe.getText();

if (listeTipp.getSize()>=6)

JOptionPane.showMessageDialog(null,7,"Zuviele Zahlen",JOptionPane.ERROR_MESSAGE);

else{

int iZahl = Integer.parseInt(zahl);

if (iZahl>=1 && iZahl<=42) listeTipp.addElement(zahl);

else

JOptionPane.showMessageDialog(null,zahl,"Zahl nicht im Bereich", JOptionPane.ERROR_MESSAGE);

} // zuviele Zahlen } // mein Tipp

});

12

(13)

Kontrolle ob Tipp in Bereich 1 bis 42

(14)

Weiterführende Aufgaben

1. Es dürfen keine gleichen Zahlen getippt und gezogen werden

2. testen

(15)

Anhang

(16)

Übersicht Klassendiagramm

(17)

Beziehungen zwischen Klassen: Assoziationen

Haben alle Objekte einer Klasse eine bestimmte Beziehung zu einem oder mehreren Objekten einer anderen Klasse, so wird diese Beziehung Teil der Klassenbeschreibung.

Beispiel:

Beziehungen (Assoziationen) können für eine oder beide Richtungen der Beziehung einen Namen haben. Die Leserichtung wird durch einen Pfeil markiert.

Mitarbeiter arbeitet-für Unternehmen

beschäftigt

(18)

Beziehungen zwischen Klassen: Rollen

18

Die an einer Beziehung beteiligten Klassen nehmen darin eine bestimmte Rolle ein, die bei Bedarf angegeben werden kann.

Person arbeitet-für Unternehmen

beschäftigt

Mitarbeiter Arbeitgeber

Kunde Konto

Weiteres Beispiel:

ist-kontoinhaber

ist-kontoberechtigter

(19)

Multiplizitäten (Kardinalitäten) in Beziehungen

Auto Motor

0..1 1

Frage 2:

Ein Motor gehört zu wie vielen Autos?

Frage 1:

Ein Auto besitzt wie viele Motoren?

Multiplizität:

Liefert Antwort auf die Frage:

• Mit wie vielen Objekten der gegenüberliegenden Klasse kann ein Objekt der Klasse verbunden sein?

Vermerk der Anzahl in Leserichtung, also bei der

besitzt gehört zu

(20)

Multiplizitäten (Kardinalitäten) in Beziehungen

20

Frage 2:

Ein Unternehmen beschäftigt wie viele Personen?

Frage 1:

Eine Person arbeitet für wie viele

Unternehmen?

Person arbeitet-für Unternehmen

beschäftigt

Mitarbeiter Arbeitgeber

1..* 1

(21)

Notation von Multiplizitäten

Person

Person 1

nicht angeschrieben bedeutet 1!

genau 1

Person 0 .. 1

0 bis 1

Person 3 .. *

3 bis beliebige viele

Person beliebige viele (entspricht 0 .. *)

Person 0 .. 2

0 bis 2

Person

2 genau 2

Person 2, 4, 6

2, 4 oder 6

*

(22)

Spezielle Beziehungen: Aggregierung

Aggregierung ist eine Teil-Ganzes-Beziehung zwischen zwei Klassen.

Auf der Seite der Klasse, welche das Ganze darstellt, ist eine kleine Raute angebracht.

22

Auto Motor

Ganzes

1 1

Teil

Ein Teil kann zu mehreren Ganzen gehören:

Zimmer 1..* 1.. * Wand

(23)

Spezielle Beziehungen: Aggregierung

Teile können selber wieder Teile enthalten und eine Aggregation kann auch einen Namen haben:

Motor 1 4 .. 32 Ventil

Zylinder

Zylinderblock 2 .. 8

1 Auto

1 1

hat

(24)

Spezielle Aggregierung: Komposition

24

Komposition ist ein Spezialfall der Aggregation:

• Die Teile sind existenzabhängig vom Ganzen.

• Die Teile existieren folglich nur, wenn das Ganze existiert.

• Ein Teil kann somit nur zu einem Ganzen gehören.

Komposition ist durch eine gefüllte Raute auf der Seite des Ganzen angezeigt.

Rechnung 1 1..* Position

Buch 1 1..* Kapitel

(25)

Generalisierung

Girokonto sollzinsen : double

Festgeldkonto Sparkonto

Generalisierung ist eine Beziehung zwischen einer allgemeineren Klasse und einer Untermenge dieser Klasse.

Die Unterklasse enthält durch Vererbung alle Attribute der Oberklassen(n).

Die Unterklasse erweitert die Oberklassen durch weitere Attribute oder Beziehungen.

Generalisierung Spezialisierung

Konto

kontostand : double inhaber : string

habenzinsen : double

(26)

Operationen (Methoden)

26

Konto

kontostand : double inhaber : string

habenzinsen : double einzahlen()

zeigeKontostand() kuendigen()

Klassenname Attribute

Operationen

Mit Objekten kann man etwas tun, z.B. für ein Konto:

darauf einzahlen, den Kontostand anzeigen, das Konto kündigen, etc.

Jeder Klasse von Objekten kann man in UML deshalb Operationen

(auch Methoden genannt) zuordnen:

(27)

Vererbung von Operationen

Über eine Spezialisierung werden neben Attributen auch Operationen

vererbt.

Girokonto

sollzinsen : double dispo : double

Festgeldkonto mindBetrag : int laufzeit : int

Sparkonto

auszahlen() Konto

kontostand : double inhaber : string

habenzinsen : double einzahlen()

zeigeKontostand() kuendigen()

(28)

Konventionen für die Namensgebung

28

Kunde adresse

gibAdresse()

Konto kontoNr

kontoStand auszahlen()

1

0..*

0..*

besitzt

kontoInhaber

Klassenname: Substantiv

Rollenname: Substantiv

Beziehungsname: Verb

Attribute: Substantiv

Operationen: Verb

Namen sollte man so wählen, dass man Sätze formen kann.

Beispiel:

(29)

Beispiel

• Quelle: http://www.srvtz.de/Wiki.jsp?page=JavaI.Alles&print=ja

(30)

Beispiel 1: CD-Datenmodell (1)

Problembeschreibung:

Es soll ein Klassenmodell für ein Informationssystem über CDs modelliert werden:

• Jede CD enthält einen oder mehrere Titel.

• Jede CD ist von einer Plattenfirma herausgebracht.

• Eine CD hat einen CD-Titel.

• Ein Titel kann auf mehreren CDs enthalten sein.

• Ein Titel hat einen Namen und eine Länge.

• Jeder Titel kann von mehreren Künstlern gespielt werden.

• Ein Künstler kann mehrere Titel spielen.

30

(31)

Möglichkeit zur Findung von Klassen

Beschreiben Sie in textueller Form das Problem. Beachten Sie das die Beschreibung in Aufsatzform abgefasst werden muss, d.h. keine Stichworte, Aufzählungen usw.

Markieren Sie alle Hauptwörter, z.B. mit einem roten Stift.

Markieren Sie alle Verben, z.B. mit einem grünen Stift.

Markieren Sie alle Multiplizitäten, z.B. mit einem blauen Stift.

Alle Hauptwörter sind nun Klassen, bzw. Attribute.

Alle Verben sind Methoden, welche die Attribute verändern, bzw. etwas ausführen oder Beziehungen

(32)

Beispiel 1: CD-Datenmodell (1)

Problembeschreibung:

Es soll ein Klassenmodell für ein Informationssystem über CDs modelliert werden:

• Jede CD enthält einen oder mehrere Titel.

• Jede CD ist von einer Plattenfirma herausgebracht.

• Eine CD hat einen CD-Titel.

• Ein Titel kann auf mehreren CDs enthalten sein.

• Ein Titel hat einen Namen und eine Länge.

• Jeder Titel kann von mehreren Künstlern gespielt werden.

• Ein Künstler kann mehrere Titel spielen.

(33)

Klassen oder Attribute

CD, Titel, Plattenfirma, CD-Titel, Titel, Namen, Länge, Künstler

Methoden, Beziehungen

enthält, enthalten sein, gespielt werden, spielt

(34)

Klassen oder Attribute

CD, Titel, Plattenfirma, CD-Titel, Namen, Länge, Künstler

Methoden, Beziehungen

enthält, enthalten sein, gespielt werden, spielt

34

(35)

Beispiel 1: CD-Datenmodell (1)

Problembeschreibung:

Es soll ein Klassenmodell für ein Informationssystem über CDs modelliert werden:

• Jede CD enthält einen oder mehrere Titel.

• Jede CD ist von einer Plattenfirma herausgebracht.

• Eine CD hat einen CD-Titel.

• Ein Titel kann auf mehreren CDs enthalten sein.

• Ein Titel hat einen Namen und eine Länge.

• Jeder Titel kann von mehreren Künstlern gespielt werden.

• Ein Künstler kann mehrere Titel spielen.

(36)

Beispiel 1: CD-Datenmodell (2)

36

CD cdTitel

plattenfirma

Titel

titelName titelLänge

Kuenstler name

1..* spielt

gespielt-von

1..* 1..* 1..*

(37)

Beispiel 1: CD-Datenmodell (3)

Erweiterung:

Über eine Plattenfirma sollen Aussagen gemacht werden können:

Plattenfirma

gibt-heraus

herausgegeben-von

1 CD

cdTitel

Titel

titelName titelLänge

Kuenstler name spielt

gespielt-von

1..* 1..* 1..* 1..*

1..*

CD cdTitel

plattenfirma

Titel

titelName titelLänge

Kuenstler name

1..* spielt

gespielt-von

1..* 1..* 1..*

Referenzen

ÄHNLICHE DOKUMENTE

[r]

Nicht ganz normal war es ja auch, mich zu bitten, heute den Festvortrag zu halten, obwohl mich hier niemand kennt und ich bisher auch noch nichts von den

Haben alle Objekte einer Klasse eine bestimmte Beziehung zu einem oder mehreren Objekten einer anderen Klasse, so wird diese Beziehung Teil der

Das angesehene Stellenbüro Robert Half International berichtete, dass in einer Umfrage 56% der Männer erklärt hatten, sie würden auf bis zu ein Viertel des Gehalts verziehten, um

Es wird keine Haftung übernommen für Schäden durch die Verwendung von Informationen aus diesem Online-Angebot oder durch das Fehlen von Informationen.. Dies gilt auch für

Die Nutzung ist nur für den genannten Zweck gesta et, nicht jedoch für einen weiteren kommerziellen Gebrauch, für die Weiterleitung an Dri e oder für die Veröff entlichung im

Unsicher vermeidende Bindung Unsicher ambivalente Bindung Hochunsichere (desorganisierte) Bindung?. Bindung

Damit die finanziellen und rechtlichen Folgen beiden Ehegatten klar sind, lohnt es sich, das Thema Scheidung bereits bei der Eheschliessung anzusprechen.. E ntscheidet sich