# Eigene Funktion erstellen



## nicothestudent (24. Apr 2018)

Hallo,
ich habe ein kleines Problem. Ich musste bisher im Studium in C programmieren und jetzt kam ein ziemlich harter Cut zu Java. 
Nun muss ich ein kleines Verkehrssystem programmieren und wollte zur Übersicht in einer extra Datei eine verwendbare Funktion definieren. Allerdings weiß ich nicht wie dies bei Java funktioniert.. Mein bisheriger Versuch schlug leider fehl.. (siehe quellcode) 
Ich hoffe ihr könnt mir erklären, wie ich diese Funktion erstellen kann um sie dann in der Hauptdatei verwenden zu können.. 


```
while(time < 100){
    updatecar(carA, streetA, streetB, streetC, streetD);
    carA.output(time);
.....
```

updatecar ist hier die Funktion die ich separat, aufgrund ihres Umfangs, definieren möchte!

Habe es jetzt in einem extra Dokument versucht: 

```
class updatecar {
   
    updatecar(Car car, Street streeta, Street streetb, Street streetc, Street streetd){
        //hier kommt dann der Code
    }
}
```

Aber so funktioniert es ja in Java nicht. 

Freue mich auf Hilfe!!


----------



## Robat (24. Apr 2018)

Lies dich am Besten noch mal zu Methoden in Java ein.
Um die Methode dann aufzurufen musst du ein Objekt deiner Klasse erstellen und darüber die Methode aufrufen.


----------



## nicothestudent (24. Apr 2018)

Robat hat gesagt.:


> Lies dich am Besten noch mal zu Methoden in Java ein.
> Um die Methode dann aufzurufen musst du ein Objekt deiner Klasse erstellen und darüber die Methode aufrufen.



Okay gut. Aber wie kann ich dann eine neue Funktion erstellen ohne das ich die Hauptdatei optisch zerstöre?..

Mit freundlichen Grüßen.


----------



## Robat (24. Apr 2018)

So richtig weiß ich nicht was du mit "optisch zerstören" meinst.
Methoden kannst du prinzipiell so anlegen:

```
public class Foo {
    private void bar() {
        // do some stuff
        veryLongTask();
    }

    private void veryLongTask() {
        ...
    }
}
```
Die Methode kannst du natürlich auch noch in eine andere Klasse auslagern.

```
public class Foo {
    private void bar() {
        // do some stuff
        Task task = new Task();
        task.veryLongTask();
    }
}
public class Task {
    public void veryLongTask() {
        ...
    }
}
```


----------



## Blender3D (28. Apr 2018)

nicothestudent hat gesagt.:


> Okay gut. Aber wie kann ich dann eine neue Funktion erstellen ohne das ich die Hauptdatei optisch zerstöre?..


In Java ist jede Klasse eine eigene Datei. Dein Problem ist das Umdenken von strukturierte zu objektorientierter Programmierung.

Aber wenn Du globale Funktionen willst dann kannst Du diese in einer Klasse static definieren.

```
public class GLOBAL {
    public static Car updateCar(Car car, Street streeta, Street streetb, Street streetc, Street streetd) {
        Car ret = null;
        // hier kommt dann der Code
        return ret;
    }
}
```


----------



## nicothestudent (30. Apr 2018)

Danke an alle. 
Habe eine Lösung gefunden.


----------

