Biesterfeld: Funktionen Beibringen

Beitrag lesen

Hej,

ich will / muss meiner Freundin Java beibringen und sollte Ihr gerade die Klammern einwenig erklären, da Sie mit den Klammern durcheinander kommt,

Also vorab: mit Klammern gibt es nicht viel durcheinanderzukommen. Die einfachen Klammern '(' und ')' kommen in Java in genau fünf Fällen vor:

(1) In algebraische Ausdrücken, um die Priorität der Operationen zu bestimmen.
(2) Bei Methoden, um die (auch leere) Parameterliste zu klammern.
(3) Bei Konstruktore, um wie ähnlich bei Methoden die (auch leere) Parameterliste zu klammern.
(4) Um typkompatibele Objekte zu casten.
(5) In Kontrollstrukturen wie if, for, switch

Ferner gilt die Regel: "Alle Klammern die geöffnet wurden, müssen wieder geschlossen werden. Es ist auf korrekte Schachtelung zu achten."

bzw. den Sinn nicht checkt, bzw. wann dieser auftaucht. Wie könnte oder sollte ich das Ihr am besten verständlich erklären??

Das Problem sind nicht die Klammern, sondern ein Mangel an Verständnis der Programmiersprache Java, mit ihren Prinzipien. Diese Prinzipien (sprich genauer Syntax, OOP) anhand der Klammern zu beschreiben halte ich für ungeschickt.

String blabla="Ein Test";
String zahltext="123";
Double zahl=3.456;

Das sind Felder die gesetzt werden

Nun gibt es Beispielsweise direkte Funktionen:

blabla.length();

Dies ist der Aufruf einer Methode length() die zu dem Feld/Objekt blabla gehört.

Oder, irgendwelche Klassen die man aufruft:

System.out.println(blabla);

Dies ist die Methode println( String str ) die zu dem statischen Objekt out der Klasse PrintStream in der Klasse System gehört.

Math.round(zahl);

Die statische Methode round( double d ) oder round( float f ) der Klasse Math

Integer.valueOf(zahltext).intValue();

Hier wirds etwas interessanter: Integer besitzt die statische Methode valueOf( int i ) die ein Objekt der Klasse Integer mit dem Wert i instanziert und dieses Objekt per return zurückgibt. Anstatt nun

  
Integer a = Integer.valueOf(1);  
int x = a.intValue();

zu schreiben kann man die beiden Zeilen kombinieren indem man in der zweiten Zeile a schlicht durch die Definition der ersten Zeile ersetzt. intValue() gibt den "Inhalt" des Integer-Objektes als primitiven int zurück.

Das ist einwenig verwirrend, da ich bei Ihr diesen falschen Ansatz gesehen hatte: length(blabla);

Hmmm, sowas krieg ich auch öfter zu sehen. Es resultiert aus einem grundlegendem Verständnismangel der OOP. Es gibt in Java keine Funktionen. Man kann nicht irgendwo aus dem Nirvana heraus irgendwelche Funktionalität abrufen. Was es gibt sind Methoden. Diese sind entweder Objektgebunden (werden also auf ein instanziertes Objekt) angewandt, z.B.

String s = new String;( "xyz" )  
int l = s.length();

oder sind statisch. Sie liegen also bei der entsprechenden Klasse wie eben

long x = Math.round( 0.3d )

Das bezieht sich auch auf Methoden die innerhalb der Klassen verwendet werden, in denen sie deklariert wurden. Also z.B.

  
  
class A {  
  
  private final String s;  
  
  public A( String s ) {  
    this.s = s;  
    init();  
  }  
  
  public void init() {  
    System.out.println( "Objekt der Klasse A mit Wert "+ this.s +"erzeugt." );  
  }  
  
  public static String on() {  
    return "Programm läuft";  
  }  
  
  public static void main( String args[] ) {  
    on();          // Ausgabe: Programm läuft  
    new A( "a" );  // Ausgabe: Objekt der Klasse A mit Wert a erzeugt.  
  }  
}  

Was wäre der Unterschied zwischen einer Klasse und einem Objekt?

Die Klasse ist der Bauplan, der Eigenschaften und Methoden der Objekte die daraus instanziert werden vorgibt.

Eine Klasse ist die Datei helloword.jawa bzw. helloword.class in dem mehrere Objekte durch Funktionen/Methoden gebildet werden können?

Nein, die Datei helloworld.jawa (es sollte *.java heissen, zudem sollten Klassen immer groß geschrieben werden) ist der Programmcode. Die Datei helloworld.class der vom Compiler übersetze Bytecode. Eine Klasse ist etwas abstrakteres. Ein Modell, der Realität die du durch Programmcode beschreiben möchtest und in Sourcecode implementierst.

Beste Grüße
Biesterfeld

--
Art.1: Et es wie et es
Art.2: Et kütt wie et kütt
Art.3: Et hätt noch immer jot jejange
Das Kölsche Grundgesetz