Interface als Konstruktorparameter nutzen, um Funktion zu plotten

masul

Mitglied
Guten Abend, alle zusammen!

Ich muss mich für eine anstehende Klausur mit dem Thema "Interfaces als Konstruktorparameter" auseinandersetzen. Bisher habe ich sowas noch nie benutzt, bin jetzt auch in einen Kurs gekommen, in dem dieses Thema schon behandelt wurde. Jetzt muss ich mir das quasi selbst aneignen.
Ich habe mir dazu eine alte Klausur des Professors angeschaut, in der genau dies drankam, und versuche jetzt, die Aufgabe als Übung zu lösen. (Aufgabe siehe Anhang)

Leider bin ich nicht sehr weit gekommen, da ich nicht weiß, wie ich mit diesem Interface umgehen soll.;(


Hier mein bisheriger Code dazu:
Java:
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

[COLOR="Red"]public class FunctionPlotter extends JPanel [/COLOR]{
	
	protected Function function;
	
	public FunctionPlotter(Function function) {
		this.function = function;
		repaint();
	}
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		for(int i = 25; i <= 500; i += 25) {
			g.setColor(Color.GRAY);
			g.drawLine( i, 0, i, 600);
			for(int j = 25; j <= 600; j += 25)
				g.drawLine( 25, j, 500, j);
		}
		
		g.setColor(Color.RED);
		
		// hier muss ich noch irgendwie den Funktionsgraphen zeichnen lassen
		
	}
}

Java:
import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JFrame;

[COLOR="Red"]public class Main [/COLOR]{

	public static void main(String[] args) {
		
		JFrame frame = new JFrame("FunctionPlotter");
		Container container = frame.getContentPane();
		container.setLayout(new GridLayout(1, 2));
		container.add(new FunctionPlotter(new Function() {
			public int value(int argument) {
				return (int) (200 * Math.sin(0.1 * argument));
			}	
		}));
		container.add(new FunctionPlotter(new Function() {
			public int value(int argument) {
				return (int) (150 * Math.cos(0.05 * argument - (Math.PI/4)));
			}	
		}));
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(1050, 650);
		frame.setVisible(true);
	}
}

Und das von ihm vorgegebene Interface:

Java:
[COLOR="Red"]public interface Function[/COLOR] {
	
	public abstract int value(int argument);
}

Ich habe mich schon im Forum umgeschaut und etwas Ähnliches gefunden, nur dass ich das irgendwie nicht so ganz verstanden habe.
http://www.java-forum.org/codeschnipsel-u-projekte/122994-einfacher-funktionsplotter.html

Es wäre echt supernett, wenn mir einer auf die Sprünge helfen könnte, denn die Klausur ist mein 2. Versuch und bin dementsprechend nervös.
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    68,3 KB · Aufrufe: 27

masul

Mitglied
Mir geht es darum, diese Aufgabe im Anhang zu lösen. Bin bisher noch nicht so weit gekommen, da ich mit diesem Interface nicht viel anfangen kann.
 
G

Gast2

Gast
Naja, du musst eine Klasse schreiben die Function implementiert und eine der angegebenen Funktionen erfüllt. Diese Klasse übergibst du dann dem FunktionsPLotter.
 

masul

Mitglied
Also ich habe das so verstanden, dass das Interface nur im Konstruktor übergeben und nicht von der Klasse direkt implementiert werden soll..
 
G

Gast2

Gast
Ja ist auch richtig. Du erstellst ja auch ne neue Klasse die das Interface implementiert. Alternativ kannst du auch ne anonyme Klasse nehmen wenn du das schon kennst.
 

HimBromBeere

Top Contributor
Ein Interface übergint man nicht einfach, man übergibt ein konkretes Objekt einer bestimmten Klasse (oder zumindest einer anonymen). Diese Klasse kann dabei ein Interface implementieren, mit dem Konstruktor hat das aber herzlich wenig zu tun.
 

masul

Mitglied
Hmm..ich glaube du meinst das, was ich in meinem 2. Codeschnipsel Z.13 auch getan habe. Aber ich verstehe nicht so ganz, wo ich diese Funktion dann zeichnen lassen soll.
 
G

Gast2

Gast
Achso, dann hat dein Problem doch gar nichts mit Konstruktoren oder Interfaces zu tun ???:L

Dein Problem scheint zu sein dass du nicht weißt wie du die Funktion zeichnen sollst? Geh mit ner Schleife von -10 bis 10 in bspw. 0.1 Schritten und bestimme mit der Funktion den entsprechenden Y Wert. Dann machst du nen Punkt an der Stelle x/y.
 

masul

Mitglied
Tut mir leid, wenn ich mich falsch ausgedrückt habe. Du hast natürlich Recht. Ich war nur verunsichert, weil ich nicht wusste, ob das soweit richtig war, wie ich das gemacht habe. Aber muss ich jetzt in meine FunctionPlotter- Klasse eine extra Methode schreiben (wie z.B. drawFunction), damit ich die Funktion zeichnen lasse und ihr dann mein argument von der Interface-Methode übergeben? Bin verwirrt, wo ich den Graphics-Code reinschreiben soll.
 
G

Gast2

Gast
Genau da wo dein Kommentar ist. In der paintComponent(). Wie genau du das machst siehe mein Kommentar oben drüber.
 

masul

Mitglied
Ich habe jetzt in der paintComponent() folgende Schleife hinzugefügt:

Java:
for(int i = 0; i <= 500; i++) {
	g.drawLine(i, function.value(i) +200, i, function.value(i) +200);
}

Nur ist das jetzt keine durchgezogene Linie, sondern nur mehrere Punkte..Habe schon versucht, kleinere Schritte zu machen, hat irgendwie nicht funktioniert.
 
G

Gast2

Gast
Wenn du einen durchgängigen Graphen haben willst und die Funktion auf dem gesamten Zahlenbereich definiert ist. Dann ziehe die Linien immer von einem Funktionspunkt zum nächsten. Das heißt du musst dir immer den letzten berechneten Punkt zwischenspeichern.
 

njans

Top Contributor
Dann zeichne doch nicht jeden Punkt, sondern eine Linie von funktionswert i zu i+1 ;)
Achtung, da musst du aufpassen, dass du keine IndexOutOfBounds exception bekommst.
 

masul

Mitglied
Vielen Dank für eure schnellen und hilfreichen Kommentare!

Habe jetzt einfach
Java:
g.drawLine(i, function.value(i) +200, i-1, function.value(i-1) +200);
in die Schleife geschrieben und jetzt passt's:)

Manchmal brauche ich einfach noch jemanden, der mir einen kleinen Denkanstoß gibt.
Ich wünsche euch noch einen schönen Abend!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
I No EJB found with interface of type Java Basics - Anfänger-Themen 12
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Abstrakt oder Interface Java Basics - Anfänger-Themen 3
Say public/default Interface Java Basics - Anfänger-Themen 9
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
I Browser integriert in Desktop Applikation - Webcam interface not found Java Basics - Anfänger-Themen 26
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
D Interface Verständisfrage Java Basics - Anfänger-Themen 8
U Interface | constructor injection Java Basics - Anfänger-Themen 5
J Interface Interface korrekt implementieren Java Basics - Anfänger-Themen 5
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
T Interface Map und Map.Entry Java Basics - Anfänger-Themen 4
U Interface als PAramter (Vergleich) und ein Error Java Basics - Anfänger-Themen 9
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
I JSON und Interface Java Basics - Anfänger-Themen 3
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
L Interface & Comparable Java Basics - Anfänger-Themen 15
T Interface Java Basics - Anfänger-Themen 0
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
A Interface Kuddelmuddel Java Basics - Anfänger-Themen 4
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
H abstract und interface Java Basics - Anfänger-Themen 4
F Interface Casting Java Basics - Anfänger-Themen 13
C Telefonliste mit interface implementieren Java Basics - Anfänger-Themen 30
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Interface Java Basics - Anfänger-Themen 2
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
T Interface Methode im Interface mit mehreren Parametern Java Basics - Anfänger-Themen 10
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
E Interface nur von abstrakter Klasse implementierbar?! Java Basics - Anfänger-Themen 1
J Vererbung Abstrake Klasse <-> Interface Java Basics - Anfänger-Themen 5
C Interface als Datentyp eines Attributes? Java Basics - Anfänger-Themen 6
U Interface Bedeutung "Code to an interface rather than to an implementation." Java Basics - Anfänger-Themen 4
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
M Maven Main-Methode Interface und Klasse Java Basics - Anfänger-Themen 2
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
N Interface Interface Erstellung Java Basics - Anfänger-Themen 3
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
T Vererbung Interface Java Basics - Anfänger-Themen 5
F Interface aus anderem Package nutzen Java Basics - Anfänger-Themen 10
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
B Erste Schritte Wie definiere ich in Java ein Interface? Java Basics - Anfänger-Themen 6
L OOP Interface Prinzip? Java Basics - Anfänger-Themen 6
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
J Innerhalb Interfacemethode: Interface als Attribut Java Basics - Anfänger-Themen 2
A Frage zu Interface Java Basics - Anfänger-Themen 16
J Interface Java Basics - Anfänger-Themen 3
W Interface Java Basics - Anfänger-Themen 1
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
J Frage zu dem Thema interface Java Basics - Anfänger-Themen 5
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
A Klasse,Vererbung,Interface,Singleton,Thread Java Basics - Anfänger-Themen 5
S Interface-Methode abrufen? Java Basics - Anfänger-Themen 2
P Vererbung Klasse erbt von abstrakter Klasse implementiert Interface Java Basics - Anfänger-Themen 2
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
P interface Java Basics - Anfänger-Themen 1
F eigenes Listener Pattern mit Interface Java Basics - Anfänger-Themen 1
M Interface als Datentyp Java Basics - Anfänger-Themen 12
K Interface Methoden überschreiben Java Basics - Anfänger-Themen 1
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
G Interface klasse Java Basics - Anfänger-Themen 4
N Interface Interface (sinnvoll) erzeugen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben