Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Ähnliche Dokumente
Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

8.6 Visualisierung der Sortieralgorithmen

Dr. Monika Meiler. Inhalt

Vorlesung Informatik II

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Objektorientierte Programmierung Studiengang Medieninformatik

Javakurs für Anfänger

Grafische Benutzeroberflächen

PROCESSING EINE EINFÜHRUNG IN DIE INFORMATIK. Created by Michael Kirsch & Beat Rossmy

Objektorientierte Programmierung Studiengang Medieninformatik

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Graphical User Interfaces

Probeklausur: Programmierung WS04/05

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Plotten von Kreisen ( nach Jack Bresenham ) (C) Ac bis

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Schritt 1 - Ein Spielfeld

NTB Druckdatum:

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Parallele Prozesse Prozeß Parallele Prozesse verzahnte Prozesse Nebenläufige Prozesse: Threads Vorlesung Software-Entwicklung / Folie 131 Ziele:

Theorie zu Übung 8 Implementierung in Java

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Objektorientierte Programmierung Studiengang Medieninformatik

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Einführung in die Programmierung für NF MI. Übung 07

SOFTWARE ENGINEERING BESPRECHUNG ÜBUNG1. Programmverständnis, Dokumentation

Einbindung der Tastatur

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Universität Karlsruhe (TH)

Grafische Benutzeroberflächen

Funktionale und Objekt-Orientierte Programmierkonzepte

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

2 Eine einfache Programmiersprache

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Kapitel X - Zeichnen mit Java2D

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 4

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Programmieren in Java

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Effiziente verkettete Listen

Effiziente verkettete Listen

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Einstieg in die Informatik mit Java

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

GUI Programmierung mit JAVA Swing

PROCESSING STRUKTUR UND INPUT. Created by Michael Kirsch & Beat Rossmy

Programmiermethodik 3. Klausur Lösung

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread

Analyse und Modellierung von Informationssystemen

Javakurs für Anfänger

Java Einführung Vererbung und Polymorphie. Kapitel 13

Medientechnik. Übung 2 Java Swing

Einführung in die Programmierung für NF. Übung 08

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Begriffe 1 (Wiederholung)

Exceptions und Vererbung

Abstrakte Klassen, Interfaces

Javakurs zu Informatik I. Henning Heitkötter

Kapitel 4: Klassen und Unterklassen

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Wiederholung zur Vorlesung Programmieren

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Tetris soll als Computerspiel mittels Java realisiert werden, wobei ein objektorientierter Ansatz gewählt

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

AuD-Tafelübung T-B5b

Analyse und Modellierung von Informationssystemen

Prinzipien der objektorientierten Programmierung (OOP)

Probeklausur: Programmierung WS04/05

Teil 2: OOP und JAVA (Vorlesung 11)

Einführung in die Programmierung für NF

UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

Beschreibung des Angebotes. Java Programmierung. LernenimInternet. Ansprechpartner. Angebot-Nr Angebot-Nr Weiterbildung.

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Informatik II Übung, Woche 17

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Klausur Grundlagen der Programmierung

1 Klassen anlegen und Objekte erzeugen

Übungsblatt 2: Einstieg in JOGL

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Java für Bauingenieure

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

PROCESSING BILDER UND SOUND. Created by Michael Kirsch & Beat Rossmy

1 Modellierung einer Uhr

Vererbung und Polymorphie

Nebenläufige Programmierung in Java: Threads

Transkript:

Einführung in die Programmierung für Nebenfach Medieninformatik Beat Rossmy, Michael Kirsch

Direct Feedback - Socrative Eure Mitarbeit ist uns wichtig! Installiert euch dazu die kostenlose App Socrative Student auf Eurem Smartphone oder nutzt das Webinterface unter http://b.socrative.com/login/ student/ Anonymer Login über den Raumnamen: MSMJ0KRQ 2

Grafikobjekte Verwendung von Java2D, Canvas und der Paint-Methode Beat Rossmy, Michael Kirsch

Quiztime :) 4

Quiztime - Raumnummer MSMJ0KRQ Quiz: Was bedeutet die folgende Code-Zeile? public class Spielfenster extends JFrame { } A: Die Klasse Spielfenster implementiert das Interface JFrame B: Spielfenster ist ein primitiver Datentyp C: JFrame erweitert die Klasse Spielfenster D: Die Klasse Spielfenster erbt von JFrame und besitzt somit alle Eigenschaften und Methoden eines JFrames 5

Quiztime - Raumnummer MSMJ0KRQ Quiz: Welche der folgenden Aussagen bzgl. JPanel im Kontext von Java Swing sind/ist richtig? A: JPanels werden beim Bau von Fertighäusern verwendet B: Ein JPanel ist eine Komponente, die mit weiteren Komponenten bestückt werden kann C: JFrames und JPanels sind das gleiche D: Ein JPanel kann einen JFrame enthalten 6

Quiztime - Raumnummer MSMJ0KRQ Quiz: Welche Aussage bzgl. KeyListener bei Java Swing sind/ist falsch? A: KeyListener ermöglichen die Abfrage von allen mögliche Tastatureingaben B: KeyListener können nur Zustände bei Tastendrücken erkennen C: KeyListener können ebenfalls bei JButtons verwendet werden D: KeyListener besitzen als Parameter ein Key-Event 7

Inhalt I. Einleitung 1. Wie geht es weiter? II. Theorie 1. Der this-operator 2. Keylistener (2) 3. Die paint-methode 4. Threads & Animationen 5. Try/Catch III. Anwendung 1. Praxis in Eclipse IV. Verknüpfung 1. Tutorials V. Ausblick 1. Nächste Vorlesung 2. Übung 8

Übersicht - Wie geht es weiter? Einführung in die Programmierung Processing Java Typen und Operatoren Kontroll- Strukturen Grundlagen aus Processing Swing Klassen und Objekte Gültigkeit und Konventionen Objekte/Klassen Interfaces Methoden Arrays Vererbung Konstruktoren Eingabenverarbeitung Animationen 9

Einleitung 10

News - TIOBE Index for January 2017 http://www.tiobe.com/tiobe-index/ 11

Wie geht es weiter? Bisher wurde das Spielfeld erstellt und Tasteneingaben verwertet Dieses Mal: Paint-Methode, Threads und Fehlerbehandlung 12

Theorie 13

this-operator this-operator Mit dem this-operator kann auf die Klasse zugegriffen werden, die den Code enthält. Somit ist es möglich innerhalb dieser Klasse Attribute und Methoden der Klasse selbst zu verwenden. 14

KeyListener KeyListener ermöglichen die Abfrage von Tastatureingaben Verwendung von KeyListener in zwei Varianten Implementierung des Interfaces KeyListener Implementierung in einer anonymen inneren Klasse Damit ein Fenster Key-Events abfragen kann, muss es im Fokus stehen spielfeld.setfocusable(true); //Aktivierung der Fokusierbarkeit KeyListener können die folgenden drei Events abfragen public void keytyped(keyevent e) public void keypressed(keyevent e) public void keyreleased(keyevent e) 15

Die Paint-Methode Um Formen wie Kreise, Rechtecke usw. darstellen zu können, wird die paint-methode benötigt In ihr wird beschrieben, was gemalt werden soll Beispiel: Ein roter Kreis an der Position (x=300, y=300) mit der Größe 20x20 Pixel @Override public void paint(graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setcolor(color.red); g2d.filloval(300, 300, 20, 20); } 16

Die Paint-Methode Besonderheit: Um die Inhalte erneut zu zeichnen, muss sie aufgerufen werden repaint(); //Erneut die paint-methode aufrufen Um Änderungen bei den Inhalten zu ermöglichen, können Variablen verwendet werden public void paint(graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; g2d.setcolor(color.red); g2d.filloval(ballxpos, ballypos, 20, 20); } 17

Threads & Animationen Um Bewegung in die gezeichneten Elemente zu bekommen, benötigen wir Threads Threads sind Unterprogramme in unserem Hauptprogramm D.h. das Unterprogramm kümmert sich um die Animation. Das Hauptprogramm um alles übrige (Tasteneingaben, Steuerung, Punktstand) Um mit Threads zu arbeiten benötigen wir zwei Dinge Das Interface Runnable Die Run-Methode 18

Threads & Animationen Das Interface Runnable ermöglicht uns die Run-Methode zu implementieren public class Spielfeld extends JPanel implements KeyListener, Runnable { } Die Run-Methode wird als Thread (Unterprogramm) ausgeführt @Override public void run() { //Animation int offset = 1; while (true) { ballxpos = ballxpos + offset; ballypos = ballypos + offset; repaint(); } } 19

Threads & Animationen Threads können auch schlafen gelegt werden, wobei die Schlafzeit in Millisekunden angegeben wird. @Override public void run() { //Animation int offset = 1; while (true) { ballxpos = ballxpos + offset; ballypos = ballypos + offset; repaint(); Thread.currentThread().sleep(5); } } 20

Threads & Animationen 21

Threads & Animationen Threads sind Unterprogramme des Hauptprogramms. In unserem Fall ist der Animations-Thread Teil von Java Pong. Wird das Spiel Java Pong beendet, so wird auch der Thread selbst beendet Java ist der Prozess von unserem Spiel, der wiederum 24 weitere Threads besitzt. Einer davon ist unser Animations-Thread. 22

Fehler & Behandlung Mittels Try/Catch-Blöcken, können problematische Codefragmente abgesichert werden @Override public void run() { int offset = 1; while (true) { try { //Versuche das Folgende ballxpos = ballxpos + offset; ballypos = ballypos + offset; repaint(); Thread.currentThread().sleep(5); } } }catch (InterruptedException e) { //Wenn es schief geht, hier weiter e.printstacktrace(); } 23

Anwendung 24

Anwendung in IntelliJ Hands on 25

Verknüpfung 26

Tutorials / Literatur Bei vielen Internetseiten findet ihr die behandelten Themen weiter und ausführlicher erklärt Eine Auswahl: Brotcrunsher (https://www.youtube.com/playlist?list=pl71c6dfddf73835c2) Java-Tutorials (http://www.java-tutorial.org/swing.html) Head First http://shop.oreilly.com/product/9780596009205.do 27

Ausblick 28

Ausblick In den Übungen werden die Inhalte der heutigen Vorlesung vertieft Spielelemente (Kreis, Rechtecke) zeichnen Ball von Programm automatisch bewegen lassen Ball auf Spielfeld halten (Grenzen) 29

Fragen? 30

Vielen Dank für Eure Aufmerksamkeit 31