Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell
|
|
- Inken Vogt
- vor 7 Jahren
- Abrufe
Transkript
1 Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS
2 Gliederung 1) Motivation 2) Grundlagen 3) Hamster-Simulator 4) Komponenten des Java-Hamster-Modells 5) Andere Ansätze 6) Erfahrungen und Fazit Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 2
3 Motivation Anforderungen an Programmiermodell für Anfänger: Einfach, intuitiv, Spaßfaktor Komplexitätsreduktion Inkrementelle Vermittlung der Konzepte Einfach zu bedienende Programmierumgebung Visualisierung der Ausführung Lehr-/Lernmaterialien, Übungen ( Learning-by-Doing ) Wahl der Programmiersprache: Mutterspracheneffekt Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 3
4 Grundlagen des Java-Hamster-Modells Symbol Bedeutung Hamster (Blickrichtung Ost) Hamster (Blickrichtung Süd) Hamster (Blickrichtung West) Hamster (Blickrichtung Nord) Kachel mit Mauer Kachel mit Körnern Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 4
5 Grundlagen des Java-Hamster-Modells Hamsteraufgabe: Gegeben sei die folgende Landschaft. Der Hamster soll zwei Körner fressen. Landschaft: Lösung: Ein Hamsterprogramm Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 5
6 Grundlagen des Java-Hamster-Modells 4 Grundbefehle: vor(); linksum(); nimm(); gib(); ein Feld nach vorne springen 90 Grad nach links drehen ein Korn von der aktuellen Kachel aufnehmen ein Korn aus dem Maul auf der akt. Kachel ablegen Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 6
7 Hamster-Simulator Motivation: Programmieren üben Kennenlernen von Programmentwicklungsumgebungen Kennenlernen des Programmentwicklungsprozesses Spaß haben Komponenten: (Programm)Editor Compiler Landschaftseditor Interpreter Debugger Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 7
8 (Imperatives) Programmieren spielend gelernt mit dem Java-Hamster-Modell (Teubner, 1999/2002) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 8
9 Imperatives Programmieren Programme und Anweisungen void main() { // nimm erstes Korn vor(); vor(); nimm(); // nimm zweites Korn Der Hamster soll zwei Körner fressen. linksum(); vor(); vor(); nimm(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 9
10 Imperatives Programmieren Definition neuer Befehle ( Prozeduren) void rechtsum() { linksum(); linksum(); linksum(); Der Hamster soll zwei Körner fressen. void main() { // nimm erstes Korn rechtsum(); vor(); vor(); nimm(); // nimm zweites Korn rechtsum(); vor(); vor(); nimm(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 10
11 Imperatives Programmieren Laufzeitfehler vor();... und Feld vor dem Hamster ist blockiert nimm();... und kein Korn auf der akt. Kachel vorhanden gib();... und kein Korn im Maul des Hamsters Testbefehle vornfrei() maulleer() kornda() ist das Feld vor dem Hamster blockiert? ist das Maul des Hamsters leer? liegt ein Korn auf der akt. Kachel? Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 11
12 Imperatives Programmieren Kontrollstrukturen ( Parametrisierte Algorithmen) Auswahlanweisungen Wiederholungsanweisungen Der Hamster soll bis zur nächsten Wand laufen und dabei alle Körner fressen. void main() { sammleallekoerner(); while (vornfrei()) { vor(); sammleallekoerner(); void sammleallekoerner() { while (kornda()) nimm(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 12
13 Imperatives Programmieren Definition neuer Testbefehle ( boolesche Funktionen) Der Hamster soll auf der linken Seite eine Nische suchen und sich dort hinein begeben. boolean linksfrei() { linksum(); if (vornfrei()) { rechtsum(); return true; else { rechtsum(); return false; void main() { while (vornfrei() &&!linksfrei()) vor(); if (linksfrei()) { linksum(); vor(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 13
14 Imperatives Programmieren Programmentwurf ( Schrittweise Verfeinerung) Problem Analyse Entwurf Implementierung Test D ok u m en t a ti o n Programm Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 14
15 Imperatives Programmieren Der Hamster bekommt ein Gedächtnis und lernt zählen ( Zahlen, Variablen und Ausdrücke) Der Hamster soll bis zur nächsten Mauer und zurück laufen. void main() { int schritte = 0; while (vornfrei()) { vor(); schritte = schritte + 1; linksum(); linksum(); while (schritte > 0) { vor(); schritte = schritte 1; Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 15
16 Imperatives Programmieren Verallgemeinerung des Funktionskonzeptes Der Hamster soll n Schritte aber maximal bis zur nächsten Mauer laufen. void main() { int anzahl = vor(5); int vor(int schritte) { while (schritte > 0 && vornfrei()) { vor(); schritte--; return schritte; Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 16
17 Imperatives Programmieren Rekursion ( Backtracking) Der Hamster soll in einem beliebigen zyklenfreien Labyrinth ein Korn suchen. boolean gefunden = false; void main() { suchegeradeab(); void suchegeradeab() { if (kornda()) { gefunden = true; nimm(); if (!gefunden && linksfrei()) { linksum(); vor(); suchegeradeab(); vor(); linksum(); if (!gefunden && rechtsfrei()) { rechtsum(); vor(); suchegeradeab(); vor(); rechtsum(); if (!gefunden && vornfrei()) { vor(); suchegeradeab(); vor(); else { kehrt(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 17
18 Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell (Teubner, 2004) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 18
19 Objektorientierte Programmierung Anpassungen des ursprünglichen Hamster-Modells Zusätzlich zum Standard-Hamster können weitere Hamster erzeugt werden Hamster sind Instanzen einer Klasse Hamster Dem Territorium wird ein Koordinatensystem zugeordnet Auf einer Kachel können sich mehrere Hamster befinden Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 19
20 Objektorientierte Programmierung Klasse Hamster class Hamster { Hamster(int r, int s, int b, int k) {... void vor() {... void linksum() {... void gib() {... void nimm() {... boolean vornfrei() {... boolean maulleer() {... boolean kornda() {... Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 20
21 Objektorientierte Programmierung Hamster-Namen ( Objektvariablen) Der Standard-Hamster soll bis zur nächsten Wand laufen. void main() { Hamster paul = Hamster.getStandardHamster(); while (paul.vornfrei()) { paul.vor(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 21
22 Objektorientierte Programmierung Erzeugung neuer Hamster(objekte) void main() { Hamster paul = new Hamster(2, 0, Hamster.OST, 6); Hamster heidi = new Hamster(2, 5, Hamster.WEST, 0); // Paul laeuft zu seiner Angebeteten while (paul.vornfrei() && paul.getspalte()!= heidi.getspalte()) { paul.vor(); // Paul uebergibt Heidi seine Koerner if (paul.getspalte() == heidi.getspalte()) { while (!paul.maulleer()) paul.gib(); while (heidi.kornda()) heidi.nimm(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 22
23 Objektorientierte Programmierung Erweiterung des Befehlsvorrats ( Vererbung) class SammelHamster extends Hamster { void sammle() { while (this.kornda()) this.nimm(); void main() { SammelHamster paul = new SammelHamster(2,3,Hamster.OST,0); paul.sammle(); while (paul.vornfrei()) { paul.vor(); paul.sammle(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 23
24 Objektorientierte Programmierung Hamster-Kolonnen ( Arrays) void main() { Hamster[] tiere = new Hamster[Territorium.getAnzahlReihen()]; for (int i=0; i<tiere.length; i++) tiere[i] = new Hamster(i, 0, Hamster.OST, 0); for (int i=0; i<tiere.length; i++) { while (tiere[i].vornfrei()) tiere[i].vor(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 24
25 Objektorientierte Programmierung Zeichenketten (Strings) Kommunikation mit dem Nutzer ( Ein- und Ausgabe) class Hamster {... void schreib(string zeichenkette) {... String lieszeichenkette(string aufforderung) {... int lieszahl(string aufforderung) {... void main() { Hamster paul = Hamster.getStandardHamster(); int anzahl = paul.lieszahl("anzahl Drehungen?"); while (anzahl > 0) { paul.linksum(); anzahl--; Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 25
26 Objektorientierte Programmierung Hamster-Spiele ( Polymorphie, Interfaces) interface Spieler { int lieferenaechstenspielzug(); class SchiedsrichterHamster extends Hamster { Spieler spielera, spielerb, aktspieler; SchiedsrichterHamster(Spieler a, Spieler b) { this.spielera = a; this.spielerb = b; void spielen() { while (!spielende()) { int zug = aktspieler.lieferenaechstenspielzug(); zugdurchfuehren(zug); aktspieler = aktspieler==spielera?spielerb:spielera;... Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 26
27 Objektorientierte Programmierung class MenschHamster extends Hamster implements Spieler { int lieferenaechstenspielzug() { return this.lieszahl("zug?"); class SpielHamster extends Hamster implements Spieler { int lieferenaechstenspielzug() { // Spielbaum aufbauen und besten Zug liefern void main() { Spieler mensch = new MenschHamster(...); Spieler hamster = new SpielHamster(...); SchiedsrichterHamster schiedsrichter = new SchiedsrichterHamster(mensch, hamster); schiedsrichter.spielen(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 27
28 Objektorientierte Programmierung Hamster-Fehler ( Exceptions) class Hamster { void vor() throws MauerDaException {... void linksum() {... void gib() throws MaulLeerException {... void nimm() throws KachelLeerException {... void main() { Hamster paul = Hamster.getStandardHamster(); // paul laeuft zur naechsten Mauer try { while (true) paul.vor(); catch (MauerDaException e) {; Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 28
29 Objektorientierte Programmierung Hamster-Privatsphäre ( Zugriffsrechte, Pakete) package hamster.util; import java.util.*; public class AllroundHamster extends Hamster { private int gesammeltekoerner;... Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 29
30 Parallele Programmierung spielend gelernt mit dem Java-Hamster-Modell (Teubner, 2006) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 30
31 Parallele Programmierung Bisher (Programmierer steuert die Hamster): void main() { Hamster paul = new Hamster(0, 0, Hamster.OST, 0); Hamster heidi = new Hamster(1, 0, Hamster.OST, 0); while (paul.vornfrei() && heidi.vornfrei()) { paul.vor(); heidi.vor(); while (paul.vornfrei()) { paul.vor(); while (heidi.vornfrei()) { heidi.vor(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 31
32 Parallele Programmierung Nun (die Hamster werden eigenständig): class Hamster extends java.lang.thread { class RHamster extends Hamster { public void run() { while (vornfrei()) vor(); void main() { RHamster paul = new RHamster(0, 0, Hamster.OST, 0); RHamster heidi = new RHamster(1, 0, Hamster.OST, 0); paul.start(); heidi.start(); Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 32
33 Parallele Programmierung Selbstständigkeit ( Threads) Hamster-Kommunikation ( gemeinsame Objekte) Merkwürdige Fehler ( Synchronisation) Abstimmung zwischen Hamstern ( wait, notify) Aushungern von Hamstern ( Deadlocks) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 33
34 Parallele Programmierung Realisierung und Visualisierung klassischer Synchronisationsprobleme Philosophen-Problem ( Philosophen-Hamster) Semaphor-Konzept ( Semaphor-Hamster) Erzeuger-Verbraucher-Problem ( Buffer-Kachel) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 34
35 Algorithmen und Datenstrukturen spielend gelernt mit dem Java-Hamster-Modell (ebook, Version 1.0) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 35
36 Algorithmen und Datenstrukturen Algorithmenvisualisierung/-animation mit dem Java- Hamster-Modell Sortieralgorithmen Suchalgorithmen Bäume Graphen Mustererkennung Kompressionsalgorithmen... Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 36
37 Objektorientierte Softwareentwicklung spielend gelernt mit dem Java-Hamster-Modell (ebook, Version 1.0) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 37
38 Objektorientierte Softwareentwicklung Hamster-Modell für Programmieren im Großen nur bedingt geeignet Veranschaulichung der OO-Modellierung anhand der Entwicklung von Hamster-Spieleprogrammen OO-Analyse OO-Entwurf UML Schwerpunkt Entwurfsmuster Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 38
39 Objektorientierte Softwareentwicklung Framework für 2-Personen/Hamster-Strategie-Spiele Implementierung bestimmter Spiele Kalah TicTacToe Alapo Reversi 4-Gewinnt... Hamster-Modell dient zur Visualisierung (anstelle von Swing/AWT) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 39
40 Objektorientierte Softwareentwicklung Klassendiagramm für TicTacToe-Spiel 1 TTTSpiel TTTBrett TTTFigur gehört 2 TTTSpieler ist_spieler_a liefere- Naechsten- Spielzug()... kennt 1 TTTRegeln ausführen TTTProgramm regelkonform TTTSpielzug Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 40
41 Objektorientierte Softwareentwicklung Sequenzdiagramm für TicTacToe-Spiel tictactoe : TTTSpiel akt_spieler : TTTSpieler regeln : TTTRegeln brett : TTTBrett spielen()... lieferenaechsten- Spielzug(zug) zug spielzugok(akt_spieler, zug) antwort [antwort = true] fuehrespielzugaus (akt_spieler, zug) gebespielbrettaus()... Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 41
42 Andere Ansätze Turtle-Grafik (Logo) Karel the Robot Kara der Marienkäfer (endliche Automaten) Stifte und Mäuse (objektorientierter Ansatz) Robocode (Ansatz für Fortgeschrittene) BlueJ (Visualisierung der Modellierung!) Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 42
43 Erfahrungen und Fazit Einsatz seit 9 Jahren im Programmierkurs Java der Uni Oldenburg Viel positives Feedback Viele kreative Eigenleistungen Verbesserte Leistungen? Mischung Hamster-Programme / richtige Java- Programme notwendig!!! Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 43
44 Hamster-Gedicht Wer irrt so spät im Kachelwald, es ist der Hamster und ihm ist kalt. Ob rechts ob links er hat die Wahl, das Korn zu suchen ist seine Qual. So läuft er ziellos durch die Gänge, im Nacken stets die JAVA-Zwänge. Und bis er hat das Korn gefunden, dauert es oft viele Stunden. Dann das Ergebnis all der Müh und Not: Das Feld ist voll, der Hamster tot!!! Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 44
Dr. Dietrich Boles. Programmierkurs Java. Teil. Objektorientierte Programmierung. Unterrichtseinheit 20. (Hamster-) Objekte
Programmierkurs Java Teil Objektorientierte Programmierung Unterrichtseinheit 20 (Hamster-) Objekte Dr. Dietrich Boles Programmierkurs Java UE 20 (Hamster-) Objekte Dietrich Boles Seite 1 Gliederung Imperatives
Mehr1. Einführung. Programmieren 1 / Algorithmen und Datenstrukturen. Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Sommersemester 2010
1. Einführung Programmieren 1 / Algorithmen und Datenstrukturen Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Sommersemester 2010 1 Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt.
MehrInformatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-
Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil IV Einführung in die Programmierung - II Michael Roth
Mehr1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch
MehrInhaltsverzeichnis. 4.9 Aufgaben... 63
Inhaltsverzeichnis 1 Einleitung 1 1.1 Programmierung... 1 1.2 Objektorientierte Programmierung... 2 1.3 Voraussetzungen und Ziele dieses Buches... 3 1.4 Aufbau dieses Buches... 4 2 Das imperative Hamster-Modell
Mehr1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster
1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:
MehrProgrammieren mit dem Java-Hamster-Modell. VP Orientierung Informatik WS 2008/09 H.Hagenauer
Programmieren mit dem Java-Hamster-Modell VP Orientierung Informatik WS 2008/09 H.Hagenauer Idee didaktisches Modell zur Einführung in die Programmierung leichter und intuitiver Zugang ( spielerisches
MehrUm dies zu vermeiden, werden nun drei so genannte Testbefehle eingeführt:
Folge 4 IF-ELSE-Anweisung - Testbefehle JAVA 4.1 Testbefehle (Boolesche Ausdrücke) Wenn Sie den Hamster in eine unlösbare Situation bringen (z.b. obwohl vor ihm eine Mauer steht), dann ist der Hamster
MehrSpielerisches Erlernen der Programmierung mit dem Java- Hamster-Modell
Spielerisches Erlernen der Programmierung mit dem Java- Hamster-Modell Dietrich Boles Department für Informatik, Abteilung Informationssysteme Universität Oldenburg, Fakultät II Escherweg 2 26121 Oldenburg
MehrSchleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.
Folge 6 WHILE-Schleife JAVA 6.1 Schleifen Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten. Zu einer Schleife gehören die Schleifenbedingung und der Rumpf. Die Schleifenbedingung
MehrInformatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.
Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VIII Einstieg in Java II Michael Roth (h_da) Informatik
MehrC.1 Klasse SHamster. public class SHamster extends Hamster { private Hamster shamster;
C. Sicher hat es Sie bisher auch schon oft geärgert, dass der Standard-Hamster immer vom Typ Hamster und nicht vom Typ einer erweiterten Hamster-Klasse ist und man für ihn keine neu definierten Befehle
MehrInstallation. Start. Das Territorium im Simulator
Einführung Java mit dem Hamstermodell 1. Wir lernen das Programm kennen Der Hamstersimulator ist ein JAVA-Programm, das von Dietrich Boles entwickelt wurde, um Programmieranfängern die Grundlagen der Programmierung
Mehr2. Operationen und Schleifen Programmieren / Algorithmen und Datenstrukturen 1
2. Operationen und Schleifen Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Sommersemester 2010 1 Agenda Organisation Schleifen Prozeduren
MehrVorwort. Aufbau der Java-Hamster-Bücher
Vorwort Programmieranfänger 1 leiden häufig darunter, dass sie beim Programmieren ihre normale Gedankenwelt verlassen und in eher technisch-orientierten Kategorien denken müssen, die ihnen von den Programmiersprachen
MehrProgrammieren spielend gelernt
Dietrich Boles Programmieren spielend gelernt mit dem Java-Hamster-Modell Dietrich Boles Programmieren spielend gelernt mit dem Java-Hamster-Modell 3. überarbeitete und erweiterte Auflage Bibliografische
MehrObjektorientierte Programmierung spielend gelernt
Dietrich Boles, Cornelia Boles Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell Dietrich Boles, Cornelia Boles Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell
MehrVisual Basic Hamster
1. Einleitung Visual Basic Hamster Harald R. Haberstroh Die Idee zum Hamstermodell ist ganz einfach: Sie als Programmierer müssen einen virtuellen Hamster in einer virtuellen Landschaft steuern. Das Hamster-Modell
Mehr2.1 Komponenten des Hamster-Modells
2. Computer können heutzutage zum Lösen vielfältiger Aufgaben genutzt werden. Die Arbeitsanleitungen zum Bearbeiten der Aufgaben werden ihnen in Form von Programmen mitgeteilt. Diese Programme, die von
MehrAusnahmebehandlung in Java
Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception
MehrDietrich Boles Cornelia Boles. Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell
Dietrich Boles Cornelia Boles Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell Dietrich Boles Cornelia Boles Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell
MehrJAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
MehrÜbungen mit Anleitung. Hamster-Simulator. Nicola Ramagnano 23. Oktober 2011
Übungen mit Anleitung Hamster-Simulator Nicola Ramagnano 23. Oktober 2011 Dieses Dokument steht unter einer Creative Commons Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 2.5 Schweiz
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrProgrammieren spielend gelernt mit dem Java-Hamster-Modell
Programmieren spielend gelernt mit dem Java-Hamster-Modell Dietrich Boles Programmieren spielend gelernt mit dem Java- Hamster-Modell 5., überarbeitete und erweiterte Auflage Dr.-Ing. Dietrich Boles Universität
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Ausnahmebehandlung und Nebenläufigkeit 9. Vorlesung am 15. Dezember 2010 Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A
MehrKlassen des J ava-hamster-modells
Anhang A Klassen des J ava-hamster-modells Dieser Anhang enthält eine ausführliche Beschreibung der im Java-Hamster-Modell vordefinierten Klassen. A.l Exception-Klassen Oberklasse aller Exception-Klassen
MehrSkript für den Informatikunterricht an der. Max-Weber-Schule
Skript für den Informatikunterricht an der Max-Weber-Schule Teil A: Programmieren Lernen mit dem Java-Hamstermodell Teil B: Strukturiertes Programmieren mit Java und dem Java-Editor Teil C: Objektorientierte
MehrHamstern mit BlueJ. Dr. Dietrich Boles. Universität Oldenburg 01.02.2006
Hamstern mit BlueJ Dr. Dietrich Boles Universität Oldenburg 01.02.2006 1. Einleitung Ziel dieses Artikels ist die Beschreibung der Integration von BlueJ und dem Java- Hamster-Modell, zwei existierenden
MehrInhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2
iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...
MehrBeispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
MehrDietrich Boles. Hamstroid - Hamster-Simulator für Android-Smartphones. Version 1.2. Benutzungshandbuch
Dietrich Boles Hamstroid - Hamster-Simulator für Android-Smartphones Version 1.2 Benutzungshandbuch 02.01.2015 1 Inhalt 1 Einleitung... 5 2 Hamstroid-Versionen... 7 2.1 Version 1.0... 7 2.2 Version 1.1...
MehrProgrammierkurse für Anfänger und Fortgeschrittene
Programmierkurse für Anfänger und Fortgeschrittene Dietrich Boles Universität Oldenburg, Department für Informatik Escherweg 2, D-26121 Oldenburg boles@informatik.uni-oldenburg.de Zusammenfassung Sicher
MehrGrundlagen der EDV. Prof. Dr.-Ing. Klaus-Dieter Thoben Dipl.-Inform. Carl Hans 02.11.2006. VA EDV/ Informatik Grundlagen
Grundlagen der EDV Prof. Dr.-Ing. Klaus-Dieter Thoben Dipl.-Inform. Carl Hans 02.11.2006 Administratives (1) Übungstermine: Insgesamt 4 Übungsgruppen Jeweils Donnerstags von 13:00 17:00 im Biba Zwei Gruppen
MehrDas Java-Hamster-Modell
Das Java-Hamster-Modell Programmieren lernen mit dem Hamster Informatikunterricht in der Jahrgansstufe 11 der Ursulaschule Osnabrück Das Java-Hamster-Modell Übersicht 1. Was ist ein Programm? 2. Wodurch
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 07: Nebenläufigkeit Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in die Nebenläufigkeit und Java Thread Konzept: Motivation
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
MehrIII.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
MehrBenutzungshandbuch. Hamster-Simulator-Light
Benutzungshandbuch Hamster-Simulator-Light Version 1.0 (21.09.2009) Dietrich Boles Universität Oldenburg 2 Inhaltsverzeichnis 1 Einleitung... 9 1.1 Das Hamster-Modell... 9 1.2 Der Hamster-Simulator...
MehrGliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
MehrProgrammieren spielend gelernt
Dietrich Boles Programmieren spielend gelernt mit dem Java-Hamster-Modell 2., durchgesehene Auflage Im Teubner B. G. Teubner Stuttgart Leipzig Wiesbaden Die Deutsche Bibliothek - CIP-Einheitsaufnahme Ein
MehrInstitut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrInformatik II. Semesterklausur
Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 5. Juli 2003 Stefan Fischer, Dr. Martin Müller Informatik II Semesterklausur Prüfungsmodul Informatik II (SS 2003)
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrAufgaben. Objektorientierte Programmierung
Aufgaben Objektorientierte Programmierung 1. Baue in die Klasse Hase eine Methode dreherechts() ein, damit sich der Hase auch im Uhrzeigersinn drehen kann 2. Notiere alle Befehle (Stift und Blatt Papier
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 3 Lösungsvorschlag Objektorientierte Programmierung 08. 05. 2006 Lösung 8 (Java und UML-Klassendiagramm
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
MehrProgrammieren spielend gelernt
Programmieren spielend gelernt mit dem Java-Hamster-Modell Von Dietrich Boles, Oldenburg EI3 B.GTeubner Stuttgart Leipzig 1999 Dipl.-Inform. Dietrich Boles Geboren 1963 in Altena (Westf.). Studium der
MehrProgrammieren spielend gelernt
Dietrich Boles Programmieren spielend gelernt mit dem Java-Hamster-Modell Dietrich Boles Programmieren spielend gelernt mit dem Java-Hamster-Modell 3. überarbeitete und erweiterte Auflage Bibliografische
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) Übungsorganisation Bringen Sie Ihren Labtop in die Übungen mit! 09.10.2017 CuP - VO 2 Programmieren 1. Definition der Aufgabe, die das Programm lösen soll. 2.
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
Mehrparallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.
Threads parallele Prozesse auf sequenziellen Prozessoren Prozesse und Threads Es gibt zwei unterschiedliche Programme: Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher. Ein Thread
MehrII. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )
Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:
MehrII.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.
MehrImplementierung und Visualisierung von Entwurfsmustern im Java-Hamster-Modell
Carl von Ossietzky Universität Oldenburg Department für Informatik Abteilung Informationssysteme Prof. Dr. Hans-Jürgen Appelrath Individuelles Projekt Implementierung und Visualisierung von Entwurfsmustern
MehrProbeklausur Java Einführung in die Informatik. Wintersemester 2016/2017
Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung
MehrUnterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Einführung in das objektorientierte Modellieren und Implementieren mit Java
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Einführung in das objektorientierte Modellieren und Implementieren mit Java Das komplette Material finden Sie hier: Download bei School-Scout.de
MehrInstitut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
MehrObjektorientierte Programmierung spielend gelernt
Dietrich Boles, Cornelia Boles Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell Dietrich Boles, Cornelia Boles Objektorientierte Programmierung spielend gelernt mit dem Java-Hamster-Modell
MehrLebenszyklus von Threads
Threads Umgangssprachlich Faden, Diskussionsfaden, Gewinde, Faser, Garn, roter Faden Threads ermöglichen Nebenläufigkeit (parallele Ausführung von Anwendungsteilen). Typisch für Threads ist,dass sie zu
MehrProgrammieren in Java
Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 19. 25. Februar 2003 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
Mehrimport JavaKaraProgram; public class Quadrat extends JavaKaraProgram { // Anfang von Quadrat void turnaround() { kara.turnleft(); kara.
Informatik 11: Einführung in Java Kara legt Muster!(Lsg.) Gierhardt Aufgaben: 1. KARA soll ein mit Kleeblättern gefülltes Quadrat mit variabler Seitenlänge ablegen. Der Methodenaufruf quadratzeichnen(5)
MehrUnterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Implementieren mit Java - Schülerband Das komplette Material finden Sie hier: School-Scout.de School-Scout Der persönliche Schulservice
Mehr! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -
! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete II.4.2 Abstrakte Klassen und Interfaces - 1 - Ähnliche Programmteile public class Bruchelement { Bruch wert;
MehrVorkurs Informatik WiSe 15/16
Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollstrukturen - 1 - Anweisung Anweisung Zuweisung Methodenaufruf
MehrObjektorientierte Konzepte
Objektorientierte Konzepte Objekt Klasse enthaltender Polymorphismus (Untertypen) Vererbung Objektorientierte Programmierung, Grundlagen und Ziele 1 Objekt Objekt kapselt Variablen und Routinen Interaktionen
MehrAbschnitt 10: Datenstrukturen
Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung
MehrInformatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
MehrFragenkatalog ESOP WS 16/17
Fragenkatalog ESOP WS 16/17 1. Einleitung 1.1 Was ist Programmieren? 1.2 Was ist ein Programm? 1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.4 Was ist ein Algorithmus? 1.5 Was sind
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
MehrFaulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen
Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
MehrII.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
MehrBeispielprüfung CuP WS 2015/2016
Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen
MehrCoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.
CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)
Mehr8.6 Visualisierung der Sortieralgorithmen
8.6 Visualisierung der Sortieralgorithmen 8.6.1 Problemstellung Schauen Sie sich den folgenden Quelltext eines Java-Applets an: import java.awt.*; import javax.swing.*; import java.awt.event.*; public
MehrSkript für den Informatikunterricht an der. Max-Weber-Schule
Skript für den Informatikunterricht an der Max-Weber-Schule Jochen Pellatz, Version 1.0 (August 2007) Skript 1: Programmieren lernen mit dem Java-Hamster-Modell Skript 2: Programmieren mit Java und dem
MehrOOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE
OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE Nutzung des AMCS (Auditorium Mobile Classroom Service) https://amcs.website Einloggen/Registrieren mit beliebigem Pseudonym Passwort Kurs Softwaretechnologie PIN:
MehrA.1 Exception-Klassen
A. Dieser Anhang enthält eine ausführliche Beschreibung der im Java-Hamster-Modell vordefinierten Klassen. Kümmern Sie sich nicht um das verwendete Schlüsselwort synchronized. Dieses bekommt erst bei der
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrAufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen
Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel
MehrJava-Grundkurs für Wirtschaftsinformatiker
Klaus-Georg Deck Herbert Neuendorf Java-Grundkurs für Wirtschaftsinformatiker Die Grundlagen verstehen - Objektorientierte Programmierung - Fortgeschrittene Konzepte kennenlernen - Betriebswirtschaftlich
MehrII.4.2 Abstrakte Klassen und Interfaces - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.2 Abstrakte Klassen und Interfaces - 1
Mehr9. Ausnahmebehandlung
Schwerpunkte Ausnahmen und Laufzeitfehler 9. Ausnahmebehandlung Java-Beispiele: Ausnahme.java TryCatch.java TryCatchAll.java Finally.java TryInTry.java KeyboardTry.java Oeffnungszeit.java Stack-Trace Java-Ausnahmeklassen-Hierarchie
MehrInstitut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März
MehrLösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am
Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public
MehrInstitut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung Prof. R. Westermann Endterm Klausur zu Informatik I 20. Februar 2010 ˆ Die Arbeitszeit beträgt 120
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 16. Java: Threads für Animationen 1 Motivation
Mehr1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!
Objektorientierte Programmierung & Modellierung WS 2007/8 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Ralf Lämmel Dr. Manfred Jackel 1. Teilklausur 07.12.2007 Gruppe A Bitte in Druckschrift
MehrGrundlagen der Modellierung und Programmierung, Übung
Grundlagen der Modellierung und Programmierung Übung Prof. Wolfram Amme LS Softwaretechnik Prof. Klaus Küspert LS Datenbanksysteme Prof. Birgitta König-Ries LS Verteilte Systeme Prof. Dr. Wilhelm Rossak
Mehr