# funktion als parameter übergeben



## Guest (19. Jun 2007)

hallo leute, ich habe ein problem 

ich soll eine methode schreiben die 2 intervallgrenzen, die anzahl der teilintervalle und eine funktion als parameter übergeben bekommt. mit diesen "informationen" berechnet die methode dann mittels zusammengesetzter trapezregel den flächeninhalt im intervall. jetzt weiss ich allerdings nicht wie ich eine funktion (wie zb cos(x)) als parameter übergeben kann, in den übungen wurde gesagt das geht in java.

kann mir jemand helfen bitte???


----------



## Beni (19. Jun 2007)

Mit einem Interface, das eine Methode "double funktion( double x)" enthält. Dann machst du irgendwelche Klassen, welche dieses Interface implementieren; und zur Laufzeit übergibst du eine Instanz einer dieser Klassen.


----------



## Guest (21. Jun 2007)

ohje, interfaces... ich hatte das in der vorlesung, allerdings ganz am schluss, wirkte als ob das unbedingt noch reingequetscht wurde. mir entging ehrlich gesagt die motivation zu interfaces.

ne klasse die ein interface implementiert vereinbart damit doch bestimmte methodenschnittstellen bereitzustellen, oder wie war das? ich seh jetzt auch nicht so direkt wie mir das weiterhelfen könnte, kannst du mir das bitte etwas genauer erklären? trotzdem danke schonmal für die schnelle antwort!

ich habe nen kumpel der in c++ recht gut bewandert ist das gleiche gefragt und er hat gemeint das würde mit funktoren gehen, gibt es sowas in java auch? ehrlich gesagt hab ich ihn auch net so richtig verstanden (war aber ein chat) und im internet bin ich auch net fündig geworden.


----------



## kleiner_held (21. Jun 2007)

In C (und damit auch in C++) kann man Pointer auf Funktionen als Parameter uebergeben. Das ist eine der grausig-schoenen Faehigkeiten von C.
In Java geht das definitv nicht (und das ist auch gut so).

Beispiel was Beni meint:

```
public class Test
{
	public interface FunktionsWrapper
	{
	    public double rechne( double x);
	}

	public static double methode(double x1, double x2, FunktionsWrapper funktion)
	{
		return funktion.rechne(x1) + funktion.rechne(x2);
	}
	
	public static void main(String[] args)
	{
		System.out.println(methode(1.0, 2.0, new FunktionsWrapper() {
			public double rechne(double x)
			{
				return Math.sin(x);
			}}));
		System.out.println(methode(1.0, 2.0, new FunktionsWrapper() {
			public double rechne(double x)
			{
				return Math.cos(x);
			}}));
	}
}
```

Das interface FunktionsWrapper beschreibt nur eine einfache Funktion, in der main Methode wird dann je nach Bedarf eine annonyme Klasse angelegt, die das interface korrekt implementiert.


----------



## Gast (21. Jun 2007)

das muss ich mal genau durchgehen, nur leider habe ich jetzt keine zeit mehr! hoffentlich komm ich damit zurecht  wenn nicht dann meld ich mich nochmal.


----------

