Grafik-Programmierung

Größe: px
Ab Seite anzeigen:

Download "Grafik-Programmierung"

Transkript

1 Grafik-Programmierung In dieser Übung fahren wir mit den Grundlagen der Grafikprogrammierung aus Übung 6 fort und wenden dies auf Spiele an. Aufgabe 1: Zeichenbare Game-Objekte Zunächst definieren wir ein Interface PaintableGameObject mit der Methode paintcomponent. Unsere Spielobjekte (vom Typ GameObject) sollen dieses Interface implementieren und dadurch grafisch darstellbar sein. Die eigentliche Darstellung erfolgt jeweils spezifisch für jedes Spielobjekt. In unserem Spiel brauchen wir uns dann nicht mehr weiter darum zu kümmern, wie die Spielobjekte gezeichnet werden, da aufgrund der dynamischen Bindung jedes Objekt weiß, wie es sich selbst zeichnen soll. Wir erweitern danach das Interface GraphicsObject um dieses Interface, damit alle Spielobjekte gezeichnet werden können. Da durch diese Interfaces-Erweiterung die implementierenden Klassen abstrakt geworden sind, müssen wir noch die Methode paintcomponent jeweils spezifisch implementieren. Hinweis: Falls Sie Ihre Lösung von Übung 4 nicht vollständig realisiert haben, können Sie von der Webseite der Veranstaltung eine Beispielvorgabe der bereits in den Übungen realisierten Interfaces und Klassen herunterladen. a) Erstellen Sie ein Interface PaintableGameObject im Paket games.basic.gameobjects.interfaces. Diese soll die Methode public void paintcomponent(graphics g) bereitstellen. b) Leiten Sie das Interface games.basic.gameobjects.interfaces. GameObject (siehe Übung 4) neben SimpleGameObject auch von PaintableGameObject ab. c) Passen Sie dann die Klassen RectangularGameObject und CircularGameObject aus dem Paket games.basic.gameobjects entsprechend an, indem Sie dort jeweils die Methode paintcomponent implementieren. S. 1 / 14

2 Dabei soll die Farbe des Rechteckes bzw. Kreises jeweils per Attribut wählbar sein, ebenso ob die Figuren ausgefüllt sein sollen oder nicht. Hinweis: Zum Zeichnen eines ausgefüllten Rechteckes bzw. Kreises können Sie die Methoden fillrect(x, y, width, height) bzw. filloval(x, y, width, height) aus der Klasse java.awt.graphics verwenden (siehe während drawrect bzw. drawoval jeweils nur den Rahmen der Figuren zeichnet. Hinweis: Zum Festlegen der Strichdicke können Sie die Methode setstroke(new BasicStroke( <<Strichdicke>> ) aus der Klasse Graphics2D verwenden. d) Erstellen Sie eine (analog zu RectangularGameObject) eine von AbstractGameObject abgeleitete Klasse CrossGameObject, welche ein Kreuz (d.h. 2 Linien) darstellt. games.basic.gameobjects.interfaces.paintablegameobject.java: package games.basic.gameobjects.interfaces; import java.awt.graphics; public interface PaintableGameObject { public abstract void paintcomponent(graphics g); games.basic.gameobjects.interfaces.gameobject.java: package games.basic.gameobjects.interfaces; public interface GameObject extends SimpleGameObject, PaintableGameObject { public abstract boolean isleftof(gameobject other); public abstract boolean isrightof(gameobject other); public abstract boolean isaboveof(gameobject other); public abstract boolean isbelowof(gameobject other); public abstract boolean touches(gameobject other); S. 2 / 14

3 games.basic.gameobjects.rectangulargameobject.java: package games.basic.gameobjects; import java.awt.basicstroke; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.stroke; import games.basic.position.interfaces.positionable; public class RectangularGameObject extends AbstractGameObject { private int width; private int height; private Color color; boolean filled; final static float STROKE = 3.0f; // Strichdicke // Konstruktor public RectangularGameObject(Positionable pos, int width, int height, Color color, boolean filled) { super(pos); // Aufruf: AbstractGameObject(pos); this.width = width; this.height = height; this.color = color; this.filled = filled; public int getwidth() { return this.width; public int getheight() { return this.height; public void paintcomponent(graphics g) { Color oldcolor = g.getcolor(); // alte Farbeeinstellung sichern // Rechteck zeichnen g.setcolor(color); if (filled) { g.fillrect( getpos().getx(), getpos().gety(), width, height); else { Graphics2D g2d = (Graphics2D) g; Stroke oldstroke = g2d.getstroke(); // alte Strichdicke sichern g2d.setstroke( new BasicStroke(STROKE) ); g.drawrect( getpos().getx(), getpos().gety(), width, height); g2d.setstroke( oldstroke ); // Strichdicke wiederherstellen S. 3 / 14

4 g.setcolor(oldcolor); // Farbe wiederherstellen public String tostring() { // verwende tostring-methode aus Positionable return ("pos = " + this.getpos() + ", size = " + this.getwidth() + " x " + this.getheight()+ ")"); public boolean equals(object other) { if (other == null!(other instanceof RectangularGameObject)) return false; RectangularGameObject otherrect = (RectangularGameObject)other; Positionable thispos = this.getpos(); // Beachte: this.pos funktioniert nicht, da Attribut pos // in Oberklasse private ist! // --> getpos() funktioniert, egal ob // Attribut pos hier oder in Oberklasse // definiert ist Positionable otherpos = otherrect.getpos(); return // vergleiche aktuelle Position // verwende equals-methode von Positionable thispos.equals( otherpos ) // vergleiche Breite/Höhe && this.getwidth() == otherrect.getwidth() && this.getheight() == otherrect.getheight() && this.color == otherrect.color && this.filled == otherrect.filled; games.basic.gameobjects.circulargameobject.java: package games.basic.gameobjects; import java.awt.basicstroke; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.stroke; import games.basic.position.interfaces.positionable; public class CircularGameObject extends AbstractGameObject { private int radius; private Color color; private boolean filled; final static float STROKE = 3.0f; // Strichdicke // Konstruktor public CircularGameObject(Positionable pos, int radius, Color color, boolean filled) { super(pos); // Aufruf: AbstractGameObject(pos); S. 4 / 14

5 this.radius = radius; this.color = color; this.filled = filled; public int getwidth() { return 2 * this.radius; public int getheight() { return 2 * this.radius; public void paintcomponent(graphics g) { Color oldcolor = g.getcolor(); // alte Farbeeinstellung sichern // Kreis zeichnen g.setcolor(color); if (filled) { g.filloval( getpos().getx(), getpos().gety(), 2 * radius, 2 * radius); else { Graphics2D g2d = (Graphics2D) g; Stroke oldstroke = g2d.getstroke(); // alte Strichdicke sichern g2d.setstroke( new BasicStroke(STROKE) ); g.drawoval( getpos().getx(), getpos().gety(), 2 * radius, 2 * radius); g2d.setstroke( oldstroke ); // Strichdicke wiederherstellen g.setcolor(oldcolor); // Farbe wiederherstellen public String tostring() { // verwende tostring-methode aus Positionable return ("pos = " + this.getpos() + ", radius = " + this.radius + ")"); public boolean equals(object other) { if (other == null!(other instanceof CircularGameObject)) return false; CircularGameObject othercirc = (CircularGameObject)other; // Beachte: this.pos funktioniert nicht, da Attribut pos // in Oberklasse private ist! // --> getpos() funktioniert, egal ob // Attribut pos hier oder in Oberklasse // definiert ist Positionable thispos = this.getpos(); Positionable otherpos = othercirc.getpos(); S. 5 / 14

6 return // vergleiche aktuelle Position // verwende equals-methode von Positionable thispos.equals( otherpos ) // vergleiche Breite/Höhe && this.radius == othercirc.radius && this.color == othercirc.color && this.filled == othercirc.filled; games.basic.gameobjects.crossgameobject.java: package games.basic.gameobjects; import games.basic.position.interfaces.positionable; import java.awt.basicstroke; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.stroke; public class CrossGameObject extends AbstractGameObject { private int width; private int height; private Color color; boolean filled; final static float STROKE = 3.0f; // Strichdicke public CrossGameObject(Positionable pos, int width, int height, Color color, boolean filled) { super(pos); this.width = width; this.height = height; this.color = color; this.filled = filled; public int getwidth() { return this.width; public int getheight() { return this.height; public void paintcomponent(graphics g) { Color oldcolor = g.getcolor(); // alte Farbeeinstellung sichern // Kreuz zeichnen g.setcolor(color); if (filled) { S. 6 / 14

7 g.fillrect( getpos().getx(), getpos().gety(), width, height); else { Graphics2D g2d = (Graphics2D) g; Stroke oldstroke = g2d.getstroke(); // alte Strichdicke sichern g2d.setstroke( new BasicStroke(STROKE) ); g.drawline( getpos().getx(), getpos().gety(), getpos().getx() + getwidth(), getpos().gety() + getheight()); g.drawline( getpos().getx() + getwidth(), getpos().gety(), getpos().getx(), getpos().gety() + getheight()); g2d.setstroke( oldstroke ); // Strichdicke wiederherstellen g.setcolor(oldcolor); // Farbe wiederherstellen public String tostring() { return ("pos = (" + this.getpos().getx() + ", " + this.getpos().gety() + ", size = " + this.getwidth() + " x " + this.getheight()+ ")"); public boolean equals(object other) { if (other == null!(other instanceof CrossGameObject)) return false; CrossGameObject othercross = (CrossGameObject)other; Positionable thispos = this.getpos(); Positionable otherpos = othercross.getpos(); return (thispos.getx() == otherpos.getx()) && (thispos.gety() == otherpos.gety()) && this.getwidth() == othercross.getwidth() && this.getheight() == othercross.getheight() && this.color == othercross.color && this.filled == othercross.filled; Aufgabe 2: Grafik für Tic Tac Toe Tic Tac Toe (auch Drei gewinnt oder Kreis und Kreuz ) ist ein Spiel für zwei Personen. Dabei machen auf einem 3 3 Felder großen Spielfeld die beiden Spieler abwechselnd ihre Zeichen (ein Spieler Kreuze, der andere Kreise). Der Spieler, der als erstes drei seiner Zeichen in eine Reihe, Spalte oder eine der beiden Hauptdiagonalen setzen kann, gewinnt. [wikipedia] S. 7 / 14

8 Implementieren Sie die grafische Darstellung für das Spiel Tic Tac Toe. Dabei sollen geeignete Spielobjekte jeweils (rote) Kreuze sowie (blaue) Kreise zur Darstellung der Züge der beiden Gegner verwendet werden. a) Erstellen Sie eine von JPanel abgeleitete Klasse TicPanel im Paket games.examples.tictactoe. Übergeben Sie der Klasse eine Liste von darzustellenden Spielobjekten, d.h. von Objekten vom Typ games.basic.gameobjects.interfaces.gameobject. Hinweis: Für Listen bietet Java u.a. die generische Klasse ArrayList (java.util.arraylist<gameobject>, siehe Diese besitzt u.a. die folgenden für diese Aufgabe relevanten Funktionen: new ArrayList<GameObject>() erzeugt eine leere Liste von GameObject-Objekten. boolean add(gameobject elem) fügt ein Element zur Liste hinzu for (GameObject elem : liste) { iteriert über alle Elemente einer Liste von GameObject-Elementen. Weitere wichtige Methoden aus ArrayList sind u.a. GameObject get(int index) liest das Element an Position index aus int size() liefert die Anzahl der Elemente in der Liste boolean remove(gameobject elem) löscht das Element aus der Liste, sofern es enthalten ist. Überschreiben Sie dann die Methode public void paintcomponent(graphics g) und zeichne Sie dort zunächst die Trennlinen für das 3 x 3-Feld. Zeichnen Sie ferner in das übergebene Graphics-Objekt g alle darzustellenden S. 8 / 14

9 Spielobjekte (aus der ArrayList). b) Erzeugen Sie schließlich (in einer Klasse games.examples.tictactoe.tictactoe) ein JFrame-Fenster, fügen Sie ein Objekt der Klasse TicPanel zu diesem JFrame hinzu und zeigen Sie das Fenster auf dem Bildschirm an. c) Erzeugen Sie zum Testen eine Liste von Spielobjekten (Kreuze und Kreise), welche Sie sich auf dem Panel darstellen lassen. Hinweis: Zum Neuzeichnen des Fensters können Sie die Methode frame.repaint() aufrufen. TicTacToe main(string[] args) { Jframe frame = TicPanel panel = new TicPanel( objliste); TicPanel objliste : ArrayList<GameObject> +paintcomponent(graphics g) GameObject +paintcomponent(graphics g) AbstractGameObject -pos: Positionable CrossGameObject -width, height: int -color: java.awt.color +paintcomponent(graphics g) CircularGameObject -radius: int -color: java.awt.color -filled: boolean +paintcomponent(graphics g) d) Nicht ausgelastet? Lassen Sie beim Zeichnen der Kreise und Kreuze einen Abstand zum Rand des jeweiligen Feldes, d.h. zu den Rahmenlinien des 3x3-Feldes. S. 9 / 14

10 games.examples.tictactoe.cross.java: package games.examples.tictactoe; import java.awt.color; import games.basic.gameobjects.crossgameobject; import games.basic.position.interfaces.positionable; import games.basic.position.position; public class Cross extends CrossGameObject { public static final Color CROSS_COLOR = Color.red; private static final int GAP = TicTacToe.GAP; public Cross(int x, int y, int size) { super(new Position(x+GAP, y+gap), size - GAP*2, size - GAP*2, CROSS_COLOR, false); games.examples.tictactoe.dot.java: package games.examples.tictactoe; import games.basic.gameobjects.circulargameobject; import games.basic.position.interfaces.positionable; import games.basic.position.position; import java.awt.color; import java.awt.graphics; public class Dot extends CircularGameObject { public static final Color CIRC_COLOR = Color.blue; private static final int GAP = TicTacToe.GAP; public Dot(int x, int y, int size) { super(new Position(x+GAP, y+gap), size - GAP*2, CIRC_COLOR, false); games.examples.tictactoe.ticpanel.java: package games.examples.tictactoe; import java.util.arraylist; import javax.swing.jpanel; S. 10 / 14

11 import java.awt.color; import java.awt.graphics; import games.basic.gameobjects.interfaces.*; class TicPanel extends JPanel { private ArrayList<GameObject> components; private int componentsize; public TicPanel(int componentsize, ArrayList<GameObject> components) { this.componentsize = componentsize; this.components = components; public void paintcomponent(graphics g) { // Zeichne Trennlinien für 3x3-Feld g.setcolor(color.black); g.drawline(componentsize, 0, componentsize, componentsize * 3); g.drawline(componentsize * 2, 0, componentsize * 2, componentsize * 3); g.drawline(0, componentsize, componentsize * 3, componentsize); g.drawline(0, componentsize * 2, componentsize * 3, componentsize * 2); // Zeichne Komponenten for (GameObject component : components) { component.paintcomponent(g); // class TicPanel games.examples.tictactoe.tictactoe.java: package games.examples.tictactoe; import games.basic.gameobjects.interfaces.gameobject; import java.awt.color; import java.awt.graphics; import java.util.arraylist; import java.util.scanner; import javax.swing.jframe; import javax.swing.jpanel; public class TicTacToe { public static final int GAP = 5; private ArrayList<GameObject> components = new ArrayList<GameObject>(); private int componentsize = 60; private int xframesize = componentsize*3 + 10; S. 11 / 14

12 private int yframesize = componentsize*3 + 30; JFrame frame; public static void main(string[] args) { TicTacToe prog = new TicTacToe(); prog.run(); public void run() { frame = new JFrame("Tic Tac Toe"); frame.setdefaultcloseoperation(jframe.exit_on_close); TicPanel panel = new TicPanel(); frame.add( panel ); frame.setsize(xframesize, yframesize); frame.setvisible(true); play(); public void play() { Dot meinzug1 = new Dot(0, 0, componentsize); Cross gegnerzug1 = new Cross(componentSize, componentsize, componentsize); components.add(meinzug1); components.add(gegnerzug1); frame.repaint(); Dot meinzug2 = new Dot(0, componentsize*2, componentsize); Cross gegnerzug2 = new Cross(componentSize*2, componentsize*2, componentsize); components.add(meinzug2); components.add(gegnerzug2); frame.repaint(); Scanner scanner = new Scanner(System.in); System.out.print("x = "); int x = scanner.nextint(); System.out.print("y = "); int y = scanner.nextint(); Dot meinzug = new Dot(componentSize * x, componentsize * y, componentsize); components.add(meinzug); frame.repaint(); class TicPanel extends JPanel { public void paintcomponent(graphics g) { // Zeichne Trennlinien für 3x3-Feld g.setcolor(color.black); S. 12 / 14

13 g.drawline(componentsize, 0, componentsize, componentsize * 3); g.drawline(componentsize * 2, 0, componentsize * 2, componentsize * 3); g.drawline(0, componentsize, componentsize * 3, componentsize); g.drawline(0, componentsize * 2, componentsize * 3, componentsize * 2); // Zeichne Komponenten for (GameObject component : components) { component.paintcomponent(g); // inner class TicPanel Zusatz-Aufgabe 3: Spielsteuerung für Tic Tac Toe Erweitern Sie die Klasse TicTacToe um die Spielsteuerung für das Spiel TicTacToe. Dazu können Sie von Tastatur jeweils das Feld einlesen und abwechselnd (für jeden Spieler) Kreuze bzw. Punkte in dieses Feld setzen. Wer alle Felder einer Zeile, Spalte oder Diagonale besetzt hat, hat das Spiel gewonnen. S. 13 / 14

14 Zusatz-Aufgabe 4 (für Java-Experten): Java-Rätsel Was gibt das folgende Java-Programm aus und warum verhält es sich so seltsam? package click; public class CodeTalk { public void doit() { printmessage(); void printmessage() { System.out.println("Click"); package hack; import click.codetalk; public class TypeIt { private static class ClickIt extends CodeTalk { void printmessage() { System.out.println("Hack"); public static void main(string[] args) { ClickIt clickit = new ClickIt(); clickit.doit(); Ausgabe: Click Lösung: Die Methode printmessage ist nicht public, sondern (ohne expliziten Sichtbarkeitsmodifizierer) nur innerhalb des jeweiligen Paketes sichtbar. Die Klassen CodeTalk und dessen Unterklasse ClickIt (als innere Klasse von TypeIt) liegen jedoch in verschiedenen Paketen (click bzw. hack). Folglich ist die Methode printmessage in der Klasse ClickIt nicht überschrieben (da die geerbte Methode nicht sichtbar ist, handelt es sich hier aus Sicht des Aufrufers um eine neue Methode!). Die Methode doit verwendet deshalb die Methode printmessage aus CodeTalk (mit der Ausgabe Click ) und nicht die Methode aus der Unterklasse ClickIt (mit der Ausgabe Hack ). Ausgabe: Click (und nicht wie vielleicht vermutet Hack) S. 14 / 14

Grafik-Programmierung

Grafik-Programmierung Grafik-Programmierung In dieser Übung beschäftigen wir uns zunächst mit elementaren Grundlagen der Grafikprogrammierung. In der nächsten Übung werden wir dies auf Spiele anwenden. Aufgabe 1: Einfache Grafik:

Mehr

Abstrakte Klassen, Interfaces und Pakete

Abstrakte Klassen, Interfaces und Pakete Abstrakte Klassen, Interfaces und Pakete Vorbemerkung: Wir wollen allmählich die Basis für die Entwicklung (einfacher) Spiele in Java schaffen. Dazu erstellen wir in dieser Übung einige Schnittstellen

Mehr

Ereignis-Bearbeitung und Threads

Ereignis-Bearbeitung und Threads Bachelor Informatik SS 2015 Übung 8 Beispiellösung Ereignis-Bearbeitung und Threads Aufgabe 1: Ereignis-Bearbeitung und Layout-Manager a) Layouten Sie ein Fenster mit einem Zeichenpanel (für die Spieldarstellung)

Mehr

Exceptions und Zugriffsmodifikatoren

Exceptions und Zugriffsmodifikatoren Exceptions und Zugriffsmodifikatoren Aufgabe 1: Exceptions import java.awt.awtexception; public class ExceptionTest { public static void main(string[] args) { System.out.println("Anfang main"); ExceptionTest

Mehr

Exceptions, Pakete und Zugriffsmodifikatoren

Exceptions, Pakete und Zugriffsmodifikatoren Exceptions, Pakete und Zugriffsmodifikatoren Aufgabe 1: Exceptions import java.awt.awtexception; public class ExceptionTest { public static void main(string[] args) { System.out.println("Anfang main");

Mehr

Grafik Programmierung

Grafik Programmierung Grafik Programmierung In dieser Übung beschäftigen wir uns zunächst mit elementaren Grundlagen der Grafikprogrammierung. In der nächsten Übung werden wir dies auf Spiele anwenden. Aufgabe 1: Einfache Grafik:

Mehr

Musterübung 09: Vererbung und Dynamische Bindung

Musterübung 09: Vererbung und Dynamische Bindung Musterübung 09: Vererbung und Dynamische Bindung Abgabetermin: TT.MM.JJJJ Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Hofer) G4 (Angerer) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Kapitel X Zeichnen mit Java2D SWT I Sommersemester 2009 Prof. Walter F. Tichy David Meder Literatur Informationen zu Java2D finden Sie in

Mehr

Grundlagen der Objektorientierung

Grundlagen der Objektorientierung Grundlagen der Objektorientierung Klassen, Attribute, Methoden Kapselung und Konstruktoren Vererbung Packages Interfaces und Adapterklassen 04.06.2008 Marcel Wieczorek 14 Klassen, Attribute, Methoden package

Mehr

Kapitel X - Zeichnen mit Java2D

Kapitel X - Zeichnen mit Java2D Kapitel X - Zeichnen mit Java2D SWT I Sommersemester 2010 Walter F. Tichy, Andreas Höfer, Korbinian Molitorisz IPD Tichy, Fakultät für Informatik KIT die Kooperation von Forschungszentrum Karlsruhe GmbH

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Mehr

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

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz 16 Zeichnen in Swing-Komponenten 2009 2014, Prof. Dr. D. Ratz 16.1 Grafische Darstellung von Komponenten Der Repaint-Manager sorgt für die grafische Darstellung der Komponenten Aktivierung beim erstmaligen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

Übung 09: Vererbung und Dynamische Bindung

Übung 09: Vererbung und Dynamische Bindung Übung 09: Vererbung und Dynamische Bindung Abgabetermin: TT.MM.JJJJ Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) G4 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben 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

Mehr

Die abstrakte Klasse Expression:

Die abstrakte Klasse Expression: Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die

Mehr

!!!" # $ # %&' $ ' ( )

!!! # $ # %&' $ ' ( ) !!!" #$ #%&'$' () *)+)'& *',- import javax.swing.* ) import javax.swing.*; public class SimpleFrameTest { public static void main(string[] args) { SimpleFrame frame = new SimpleFrame(); )) )-)- ).'&-)

Mehr

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

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

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

Institut 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

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

'($)*'+ $, *$+*$'- $..$+/, 01.2$, 2*$0, - $'($)*'+ $, *$+*$

'($)*'+ $, *$+*$'- $..$+/, 01.2$, 2*$0, - $'($)*'+ $, *$+*$ !"# $ % & # ... 4 "... 5 '($)*'+ $, *$+*$'- $..$+/, 01.2$, 2*$0, - $'($)*'+ $, *$+*$ 3+'0+1$+/, 0... 5 "" $0+4, - $*$2*'1/25 1.... 6 " 4$+26 *... 8 Objektorientierung... 8 Kontrollstrukturen... 9 Projekt...

Mehr

1. Laboraufgabe. Grafische Nutzerschnittstellen. Studiengang I / IEA / SAT

1. Laboraufgabe. Grafische Nutzerschnittstellen. Studiengang I / IEA / SAT 1. Laboraufgabe Grafische Nutzerschnittstellen Studiengang I / IEA / SAT FB Automatisierung und Informatik: Grafische Nutzerschnittstellen 1 1. Laboraufgabe: Die Aufgabe lautet, ein Javaprogramm zu schreiben,

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object

Mehr

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen(); Typecast class Pilz void suchen() void sammeln() class EßbarerPilz extends Pilz Suppe kochen() Suppe einesuppe = new Suppe(); return einesuppe; class GiftPilz extends Pilz void entsorgen() class Suppe

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

Konzepte objektorientierter Programmierung

Konzepte objektorientierter Programmierung Konzepte objektorientierter Programmierung Objekte Klassen Nachrichten Kapselung Einführung Vererbung heute! Konzepte objektorientierter Programmierung Was ist ein Objekt? Was ist eine Klasse? Was sind

Mehr

Graphische Nutzerschnittstellen

Graphische Nutzerschnittstellen Graphische Nutzerschnittstellen Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Inhalt 1. Einführung,

Mehr

Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java.

Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java. Threads In dieser Übung beschäftigen wir uns mit der Realisierung von Threads in Java. Aufgabe 1: Erzeugen und Starten von Threads a) Sei BankKunde eine von einer Klasse Kunde abgeleitete Klasse. Erweitern

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Institut 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

Mehr

Graphische Nutzerschnittstellen

Graphische Nutzerschnittstellen Graphische Nutzerschnittstellen Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Inhalt 1. Einführung,

Mehr

Informatik II Übung 6

Informatik II Übung 6 Informatik II Übung 6 Gruppe 2 Carina Fuss cfuss@student.ethz.ch 11.4.2018 Carina Fuss 11.4.2018 1 Übung 6 Nachbesprechung Übung 5 Objektorientierung Vererbung, Polymorphie, abstrakte Klassen, Interfaces,

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

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

Plotten von Kreisen ( nach Jack Bresenham ) (C) Ac bis Plotten von Kreisen ( nach Jack Bresenham ) (C) Ac 3-1990 bis 2-2017 Wie zeichnet der Computer Kreise? Natürlich mithilfe von Pixels, picture elements, also kleinen Bildpunkten. Die beste Approximation

Mehr

II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.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

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Grundidee abstrakter Klassen:

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung

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 - ! 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;

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick 1 Einführung 2 Einfache Swing Komponenten 3 Ereignisbehandlung und Adapterklassen 4 Zeichnen 5 Layout Manager 6 Komplexere Swing Komponenten

Mehr

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Aufgabenblatt 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

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik Programmieren II Zeichnen in Swing-Komponenten Heusch 18 Ratz 16.1 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Zeichnen in Swing-Komponenten (1) Eine Swing-Komponente kann nicht

Mehr

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 { Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse

Mehr

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik Programmieren II Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz 9.6 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Abstrakte Klassen: Motivation Prinzip der Vererbung: Aus

Mehr

Einführung in die Informatik. Lösung zu Übungsblatt 6

Einführung in die Informatik. Lösung zu Übungsblatt 6 Prof. J. Wolff von Gudenberg Prof. R. Kolla Prof. F. Puppe Prof. D. Seipel Universität Würzburg Lehrstuhl für Informatik II Prof. Dr. J. Wolff von Gudenberg Am Hubland, 97074 Würzburg Dipl.-Inform. Gregor

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von

Mehr

Klausur: Java (Liste P)

Klausur: Java (Liste P) Klausur: Java (Liste P) SS05 Erlaubte Hilfsmittel: Gebundene! Unterlagen (Skript mit Anmerkungen, eigene Mitschrift) und maximal ein Buch. Bitte keine losen Blätter. Lösung ist auf den Klausurbögen anzufertigen.

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

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

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober 2001 Stefan Holland Informatik II Hinweise: Klausur II Verwenden Sie für Ihre Lösungen ausschließlich

Mehr

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

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

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Aufgabe 1: Vererbungsbaum entwerfen a) Finden Sie sinnvolle Beziehungen. Füllen Sie die letzten Spalten aus. Hinweis: Es kann nicht alles mit etwas anderem verbunden werden. Klasse

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Vererbung 2 Packages Packages dienen zur Strukturierung von Klassen Computer.java package BEZEICHNER ; package vorlesung7; public class KLASSEN-BEZEICHNER { public

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

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

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

14. Java Objektorientierung. Klassen, Vererbung, Kapselung 427 14. Java Objektorientierung Klassen, Vererbung, Kapselung Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - n 1. Grundelemente der Programmierung n 2. Objekte, Klassen und Methoden n 3. Rekursion und dynamische Datenstrukturen n 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und

Mehr

Fakultät IV Elektrotechnik/Informatik

Fakultät IV Elektrotechnik/Informatik Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

HERZLICH WILLKOMMEN PROGRAMMIERKURS (JAVA) ZUM. Dr. Vera Weil Institut für Informatik Universität zu Köln. 9. Vorlesung (05.

HERZLICH WILLKOMMEN PROGRAMMIERKURS (JAVA) ZUM. Dr. Vera Weil Institut für Informatik Universität zu Köln. 9. Vorlesung (05. HERZLICH WILLKOMMEN ZUM PROGRAMMIERKURS (JAVA) Dr. Vera Weil Institut für Informatik Universität zu Köln 9. Vorlesung (05. Dezember 2018) Letztes Mal Statische Methoden und Felder Zugriffsmechanismen Vererbung

Mehr

14. Java Objektorientierung

14. Java Objektorientierung Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs 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

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 04: Variablenzugriff und Eingaben Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Zugriff auf Instanzvariablen Praktisches Beispiel: Student

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.4.1 Unterklassen und Vererbung

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

6. Globalübung (zu Übungsblatt 8)

6. Globalübung (zu Übungsblatt 8) 6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006

Mehr

Java Projekt: Tic Tac Toe + GUI

Java Projekt: Tic Tac Toe + GUI Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel

Mehr

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Aufgabenblatt Nr. 5 Generizität und TicTacToe Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 11: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 2 Objektorientierte Programmierung 24. 04. 2006 Aufgabe 5 (Vererbung - Trace (Klausur FT

Mehr

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

Kapitel 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

Mehr

Interfaces und Generics

Interfaces und Generics Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Interfaces und Generics Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Liste und InsertionSort für Punkte für Objekte beliebiger

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Klassenattribute und -methoden Bieniusa Software Entwicklung 1 2/ 23 Beispiel: Klassenattribute I class Uebungsgruppe

Mehr

Java. Prof. Dr. Stefan Enderle NTA Isny

Java. Prof. Dr. Stefan Enderle NTA Isny Java Prof. Dr. Stefan Enderle NTA Isny 7. Oberflächenprogrammierung JFrame Die Klasse JFrame bietet eine Basis für Programme mit graphischer Benutzeroberfläche. Das folgende Programm legt ein Objekt der

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli 2001 Stefan Holland Informatik II Hinweise: Klausur Verwenden Sie für Ihre Lösungen ausschließlich den

Mehr

Musterlösung Stand: 5. Februar 2009

Musterlösung Stand: 5. Februar 2009 Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr