Spiele im Wirtschaftsinformatik-unterricht am WG

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
Ein Beispiel in Java.
Kapselung , toString , equals , Java API
Objektorientierte Programmierung Definition von Klassen
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Objektorientierter Entwurf (OOD) Übersicht
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
So animieren Sie Kreisdiagramme mit der Eingangs-Animation „Rad“
Packages Vortrag : Cornelia Hardt 23. November 1999.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
Buch S70ff (Informatik I, Oldenbourg-Verlag)
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Access & Assign Methoden in Visual FoxPro Zuweisungs- und Zugriffs-Methoden.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Delphi II - OOP IFB Fortbildung
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Entwurfs- und Implementationsdiagramme
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
22. Oktober 2007Martin Feldmann, 1 Bachelor-Thesis Entwicklung einer automatisierten Dokumentation von LabVIEW Quellcode für das Rahmenwerk.
Objektorientierte Modellierung mit UML
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
1 VeranstaltungThemaVortragende AINF-Lehrgang 2003 Titel: Grundlagen der Objektorientierten Programmierung Name: Gruppe Programmierung.
A Workshop About this chapter General description Units Time Schedule
Test-Driven Development
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Allgemeine Befehle für die allgemeine Liste
November 18 Informatik Kurse
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
 Präsentation transkript:

Spiele im Wirtschaftsinformatik-unterricht am WG Ein Erfahrungsbericht aus der JG 2 StD Jan Wölfer - Willy-Hellpach-Schule, Heidelberg - Fachberater Wirtschaftsinformatik am RP Karlsruhe

Spiele im WINF-Unterricht im WG Warum sind Spiele ein sinnvolles Thema? Weil Schüler(innen) auf diese Weise besonders motiviert werden Weil gewisse Probleme in den klassischen BWL-Zusammenhängen einfach nicht auftreten Weil bei solchen Projekten oft anspruchsvollere Lösungen erreicht werden als bei auf das berufliche Profil bezogenen Themen

Verbindliche Grundlage: Pflichtenheft Zu Projektbeginn wird ein Pflichtenheft erstellt: Genaue Beschreibung der geforderten Funktionalität Verbindlicher Zeitplan mit Prozessphasen und Meilensteinen Umfang der Abgabemappe Gewichtung der Einzelbewertung der einzelnen Teilbereiche.

Das erste Spiel – Ein Würfelspiel Die Regeln für dieses Spiel sind folgende: Man würfelt und addiert die gewürfelten Augen Man kann nach jedem Wurf entscheiden, ob man die bis dahin erreichten Punkte stehen lassen will oder weiter würfeln will Wenn man eine 6 würfelt sind die Punkte verfallen und die Spielrunde beendet StD Jan Wölfer - Willy-Hellpach-Schule, Heidelberg - Fachberater Wirtschaftsinformatik am RP Karlsruhe

Projektphasen und Meilensteine: Spielentwurf (OOA) Die Teams formulieren besondere Eigenschaften, die ihr Würfelspielprogramm besitzen soll. Diese werden in einem Textentwurf festgehalten. UML-Modellierung (OOD) Erstellung eines Aktivitäts- und eines Klassendiagramms (der dabei von einer Entwicklungsumgebung bereits erzeugte Code bleibt unberücksichtigt) OOP Programmierung der Fachklassen und der GUI-Klasse(n) Testphase Die Teams lassen ihre Software von den anderen Teams testen und geben sich gegenseitig konstruktives Feedback.

In die Projektbewertung fließen ein: Form mit 10 % Das äußere Erscheinungsbild der Abgabemappe, Elemente wie Deckblatt, Seitenzahlen, Kopf-/Fußzeile, Inhaltsangabe, Anhang Einleitender Text mit 10% Eine Beschreibung des Entwurfs, der Motivation bestimmte Funktionalitäten umzusetzen, eine selbstkritische Würdigung der eigenen Arbeit. Außerdem eine Reflexion über Probleme, die bei der Erstellung auftraten und wie diese bewältigt wurden UML-Diagramme mit 30 % GUI-Design mit 20 % JAVA-Quellcode mit 30%

Vorgabe der Klasse Würfel (optional) Je nach Leistungsfähigkeit des Kurses kann die Klasse „Würfel“ den SchülerInnen vorgegeben werden. import java.util.Random; public class Wuerfel { public int wuerfeln(){ Random r = new Random(); return 1 + r.nextInt(6); }

Erweiterung um Klasse Spiel Eine Klasse, die unter Verwendung der Klasse Würfel die Funktionalität des Spieles umsetzt, kann auch genau so heißen.

Erweiterung um Klasse Spiel public void starteNeuesSpiel(){ this.punktestand = 0; } public int macheNeuenWurf(){ this.letzterWurf = this.meinWuerfel.wuerfeln(); if (this.letzterWurf == 6){ else { this.punktestand += this.letzterWurf; return this.letzterWurf;

Erweiterung um Klasse Spiel (Forts.) public String beendeSpiel(){ String antwort = "Sie konnten den Highscore von " + this.highscore + " nicht überbieten."; if (this.punktestand > this.highscore){ antwort = "Herzlichen Glückwunsch, sie konnten den alten Highscore von " + this.highscore + " überbieten! Neuer Highscore: " + this.punktestand; this.highscore = this.punktestand; } return antwort;

Speichern von Highscores Je nach Leistungsfähigkeit des Kurses (oder Zeitpunkt der Durchführung) kann das Projekt zunächst als Umsetzung in 2-Schichten-Architektur oder in 3-Schichten-Architektur mit der Option zum Speichern von Highscores ausgeschrieben werden. Die Option erreichte Punktestände zu speichern wird oft auch ohne dass dies eine konkrete Anforderung ist, von Teams realisiert. Manche Gruppen suchen im Internet nach solchen Techniken und kommen dann auf so Lösungen wie das Abspeichern eines .txt-Files, der zu Programmbeginn gelesen wird und somit als der bestehende Highscore dem Spieler angezeigt wird. Auch wenn der Code dazu meist aus dem Netz weitgehend übernommen wird, stellt es eine besondere Leistung da einen solchen erfolgreich in das eigene Projekt einzubinden.

Anbindung an eine relationale DB Auch nach Abschluss des Projektes ohne die Forderung der Anbindung an eine Datenbank, bietet sich diese funktionale Erweiterung an dieser Stelle an, da die Motivation diese zusätzliche Funktion zu realisieren an dieser Stelle höher ist als beispielsweise beim Abspeichern von Artikelstammdaten. Die Umsetzung der Datenbankanbindung unter Berücksichtigung der Anforderungen der 3-Schichten-Architektur bei gleichzeitiger Wahrung des Fachklassenkonzepts erfordert die Einführung einer weiteren Klasse, die als Dienstklasse die Übergabe der Daten von Fachklasse an Datenbank und zurück organisiert.

Anbindung an eine relationale DB Bei dem Design der Datenbank stellt sich das Problem, was ein geeigneter Primärschlüssel für die Tabelle Highscores wäre. Die Option eine sich automatisch erhöhende Ganzzahl als Primärschlüssel zu wählen, ist möglich. Eleganter ist es jedoch, die Systemzeit zu ermitteln und diese als Schlüsselattribut zu verwenden. Um diese in JAVA zu ermitteln, muss die Klasse Date aus java.util importiert werden. Unter Verwendung dieser lässt sich folgende Methode erstellen: public String ermittleZeitpunkt(){ Date d = new Date(); return d.toString(); } Methode liefert: "Wed Feb 23 09:43:39 CET 2011"

Klasse DB_Zugriff Die Dienstklasse DB_Zugriff, die die Verbindung zu der Datenbank herstellt, hat in diesem Beispielprojekt die folgende Struktur:

Projekt Roulette Für leistungsstarke Kurse bietet sich auch noch ein anderes Spiel-Projekt an: Das Roulettespiel. Bei der Vorgabe der geforderten Funktionalität ist zu überlegen ob man wirklich alle Optionen zum Setzen, die das Roulette beispielsweise in einem Casino vorsieht, umgesetzt werden müssen, oder ob man diesbezüglich eine Reduktion der Komplexität vornimmt, die jedoch den eigentlichen Spielwert nicht allzu negativ beeinflussen sollte.

Projekt Roulette Folgende Fragen haben enorme Auswirkungen auf die Komplexität der Lösung: 1 oder n Einsätze pro Spiel? 1 oder n Spieler, die parallel an einem Tisch spielen?

Mögliche Lösung: Aus Eingabefeldern werden Einsatzfelder Um auf der GUI die Einsätze auf dem Tisch so zu platzieren, dass sie dort liegen, wo auch die Jetons im echten Roulette liegen würden, müssen Eingabefelder auf der GUI vorgehalten werden. Damit diese Eingabefelder ihren Inhalt an Objekte der Klasse Einsaetze übergeben können, bilden wir eine Unterklasse von JTextField, die wir Einsatzfeld nennen Einsatzfelder unterscheiden sich von Eingabefeldern dadurch, dass sie ein Assoziationsattribut zu einem Objekt der Klasse Einsatz besitzen. Diese Objektreferenz wird den Einsatzfeldern über einen parametrisierten Konstruktor bei der Erzeugung übergeben

Von Zahlen zu Gewinnen Im Zentrum des Spiels steht die Zahl, die bei einem Roulettespiel geworfen wird. Jeder Zahl sind Eigenschaften zugewiesen, so wie ihr Zahlenwert, gerade/ungerade, hoch/tief, schwarz/rot, etc. Jeder Eigenschaft ist eine Quote zueigen um die der Einsatz erhöht zurückgegeben wird, der auf diese Eigenschaft gesetzt wurde. Die Summe aller durch erfolgreiche Einsätze quotierten Beträge bildet den Gewinn eines Spielers in einem Spiel, der mit der Summe der geleisteten Einsätze saldiert werden muss.

Die Klasse Zahl Folgende Attribute sind in der Klasse Zahl definiert: Jeder Zahl sind Eigenschaften zugewiesen, so wie ihr Zahlenwert, gerade/ungerade, hoch/tief, schwarz/rot, etc. Jeder Eigenschaft ist eine Quote zueigen um die der Einsatz erhöht zurückgegeben wird, der auf diese Eigenschaft gesetzt wurde. Die Summe aller durch erfolgreiche Einsätze quotierten Beträge bildet den Gewinn eines Spielers in einem Spiel, der mit der Summe der geleisteten Einsätze saldiert werden muss.

Vielen Dank für Ihr Interesse!