Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden  
Sie können sich hier anmelden
Dieses Thema hat 1 Antworten
und wurde 336 mal aufgerufen
 Internet/Computer
Spi sUchmich Offline

Admin


Beiträge: 526

04.12.2008 18:12
Eine Einführung in Java Thread geschlossen
Ich hab ja grad nix besseres zu tun (das heißt eigentlich schon aber dazu bin ich zu faul) und auch wenn es niemanden interessiert, tu ich ein bisschen mein Wissen teilen und schreib hier ein bisschen wie man so in Java programmiert. Ich denke mal das das nicht sooo uninteressant ist...

also Java ist eine Programmiersprache mit der man programmieren kann (welch wunder). Ich erkläre euch hier wie man Klassen schreibt. Eine Klasse ist so etwas wie eine Beschreibung eines Objektes - einer Instanz. Man könnte das so ausdrücken, dass man mit Java - mit Klassen - Objekte aus dem realen Leben darstellen kann. Ganz genau so ist es nicht, aber es ist ein einfaches Grundkonzept. Also eine Klasse könnte zum Beispiel sein: "Auto". Und dieses Auto hat dann Attribute - Eigenschaften. Wie zum Beispiel "Farbe", "Geschwindigkeit", "Firma", "Modell" usw. Und das Auto kann auch was machen z.B. fahren, tanken, scheiben wischen usw. So etwas in der Art kann man tatsächlich irgendwie darstellen.
Also wenn ihr programmieren wollt, braucht ihr erst mal ein Programm dafür. Wir benutzen dafür "Blue J". Dieses könnt ihr hier downloaden. Und übrigens braucht ihr logischerweise die Java Virtual Machine am Computer. Die haben die meisten Leute eh, solltet ihr sie nicht haben schaut mal hier nach.

Also wenn ihr BlueJ installiert habt schaut einfach mal rein. Es sollte so aussehen:


Um ein neues Projekt zu machen klickt auf Projekt→Neues Projekt (nennt es mal "Person").
Ein Fenster öffnet sich, indem ihr auswählt wo die Datei hingespeichert werden soll. BlueJ speichert nämlich automatisch.
Übrigens wird das Projekt nicht als einzlene Datei gespeichert sondern es wird in einem eigenen Ordner angelegt, indem alle Dateien des Projektes drinnen sind.
Also wenn ihr ein neues Projekt erstellt habt erscheint ein kleines Blatt-Symbol. Wenn ihr darauf klickt, könnt ihr die Readme-Datei - die Anleitung - bearbeiten, das ist jetzt aber unwichtig. Was wir mal wollen ist eine Klasse namens "Person".
Also klickt auf "Neue Klasse". Gebt den Klassennamen "Person" ein und die Art der Klasse soll nur "Klasse" sein. Danach klickt auf ok. Ein kleines orangenes Kasterl erscheint. Dieses stellt die Klasse "Person" da. Bevor wir richtig beginnen, überlegen wir mal, was die Klasse alles haben soll.
Sie soll folgende Atribute haben:
  • Name
  • Alter
  • Verheiratet

Und sie soll Methoden haben, das heißt etwas was man mit der Klasse machen kann bzw. was sie selbst macht.
Diese sollen sein:
  • getName
  • setName
  • getAlter
  • setAlter
  • getVerheiratet
  • setVerheiratet

Die Methode "getName" soll den Namen anzeigen, die Methode "setName" soll den Namen ändern können.
Das gleiche gilt für die anderen Methoden.

Da wir uns das nun überlegt haben, können wir doppelt auf die Klasse klicken:

Es steht bereits etwas in dieser Klasse, nämlich eine einfache Beispielklasse, die eigentlich nur 0 mit einem eingegebenen Wert addieren würde, aber das brauchen wir jetzt nicht. Löschen wir soviel raus, dass nur noch das hier dasteht:

/**
* Beschreiben Sie hier die Klasse Person.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Person
{

}


Die ersten paar Sachen (die mit *) wären nicht nötig, aber sie sind einfach ganz nett anzuschauen^^.

Auf was wir uns mal konzentrieren ist das "public class Person".
"public" bedeutet dass die Klasse öffentlich zugänglich ist und jeder darauf zugreifen kann.
"class" sagt einfach, dass das eine Klasse ist und
"Person" ist der Name der Klasse.
Alles was nun zwischen den beiden Klammern steht gehört zu der Klasse.
Das erste was wir reinschreiben sind die Atrribute (ich probiere die Farben von BlueJ nachzubilden):
public class Person
{
    private String name;
    private int alter;
    private boolean verheiratet;

}


(Wichtig: name, alter, verheiratet werden klein geschrieben. Achtet außerdem auf die Strichpunkte zum Schluss)
"private" heißt, dass die Attribute nicht von außen zugänglich sind, sonst könnte jeder was in sie reinschreiben und das wollen wir in diesem Fall nicht. Bei Attributen könnte man das "private" auch weglassen, da wenn nichts dabei steht, sie automatisch private sind (und nicht public!).
Nach dem "private" folgt jeweils ein anderes Wort, dass den Datentyp des Attributes angibt.
"String" bedeutet, dass "name" eine Zeichenkette ist. Im Gegensatz zu "int" und "boolean" ist "String" jedoch eine eigene Klasse, deswegen ist sie auch großgeschrieben und nicht rot. Das kann uns immoment aber relativ egal sein.
"int" heißt, dass "alter" eine ganzzahlige Zahl ist, wie z.B. 1, 5, 8, -29...
Es können auch Minuszahlen sein, aber keine Kommazahlen.
"boolean" bedeutet, dass "verheiratet" nur einen von zwei Werten haben kann: "true" oder "false".
Man könnte den Attributen übrigens auch gleich Werte zuweißen, das sähe dann so aus:
private int alter = 36;
Das machen wir jetzt aber nicht.

Das was wir als nächstes schreiben müssen ist der so genannte "Konstruktor". Er erzeugt bei Aufruf ein Objekt (so wie es in der Klasse beschrieben wird). Außerdem setzt er meistens die Attribute auf gute Werte. Schreiben wir also:
public class Person
{
    private String name;
    private int alter;
    private boolean verheiratet;

    public Person ()
    {
      name = "Johannes";
      alter = 38;
      verheiratet = true;

    }

}

(Übrigens sind die Einrückungen nicht nötig, aber so wird es übersichtlicher)
Nach Anwendungen des Konstruktors existiert also ein Objekt "Person" und der Name der Person ist Johannes, er ist 38 Jahre alt und er ist verheiratet. Gehen wir das mal genau durch.
Es ist wichtig, dass der Kunstruktor genau so heißt wie die Klasse selber also "Person".
Die leeren Klammern dahinter sagen, dass es keinen Übergabeparameter (dazu komm ich später) gibt, das heißt, dass der Benutzer bei Aufruf des Kunstruktors nichts eingeben muss.
Johannes ist in Anführungszeichen geschrieben, dies muss bei Strings immer so sein.
Nachdem wir damit fertig sind, probieren wir das mal aus. Klickt oben links im Fenster auf "Übersetzen". Wenn ihr alles richtig gemacht habt, steht unten jetzt "Klasse übersetzt - keine Syntaxfehler", ansonsten erscheint eine Meldung, dass es einen Syntaxfehler (Syntax = so etwas wie Grammatik in deutsch nur in Java) gibt, den ihr dann suchen müsst. Häufige Fehler sind vergessene Klammern oder Strichpunkte... Manchmal auch Rechtschreibfehler.
Also wenn ihr richtig übersetzt habt, geht zurück ins Hauptfenster und klickt mit der rechten Maustaste auf die Klasse. Als erstes sollte im Menü dort stehen "new Person()". Wen ihr darauf klickt, betätigt ihr den Kunstruktor. Ihr müsst den Namen der Instanz - des Objektes - eingeben. Nimmt am besten "person1", was eh schon da steht. Und tatsächlich erscheint unten ein kleines rotes Kästchen. Wenn ihr darauf mit der rechten Maustaste klickt, steht höchstwahrscheinlich da: "(keine zugreifebaren Methoden)". Logisch, wir haben ja noch keine Methoden geschrieben. Darunter steht "Inspizieren" und "Entfernen". Wenn ihr auf Inspizieren geht öffnet sich ein kleines Fenster:

Hier werden alle Attribute der Klasse "Person" und deren aktuellen Werte angezeigt. Wie wir sehen, wurde tatsächlich allen Attributen im Konstruktor ein passender Wert zugewiesen. Dies müsste eigentlich nicht umbedingt sein. Man könnte auch so einen Konstruktor schreiben:
public Person ()
{
}

(es würde das gleiche sein, wie wenn man keinen Konstrukot schreiben würde - ich glaube es gäbe trotzdem einen automatisch)
Dann würde auch ein Objekt erscheinen:

In Java werden den Attributen dann schon Werte gegeben, aber in anderen Sprachen ist das nicht so und es kann zu Fehlern führen, wenn man den Attributen nicht selber einen Wert zuweißt.
Übrigens: Beim Namen steht null ohne Anführungzeichen. Was das bedeutet, möchte ich jetzt nicht erklären, da dass jetzt zu kompliziert wär.

Also bis jetzt sollte euer Quellcode in der Klasse "Person" so aussehen:

/**
* Beschreiben Sie hier die Klasse Person.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Person
{
    private String name;
    private int alter;
    private boolean verheiratet;

    public Person ()
    {
      name = "Johannes";
      alter = 38;
      verheiratet = true;

    }

}


Die Methoden machen wir ein anderes mal, aber nur wenn ihr wollt.
Spi sUchmich Offline

Admin


Beiträge: 526

05.12.2008 19:22
#2 Methoden, return, Übergabeparameter... Thread geschlossen
jaja ich weiß das es niemanden interessiert, aber da mir grad langweilig ist...

Also kommen wir jetzt zu den Methoden, also die Sachen die man mit dem Objekt machen können soll.
Die erste war: getName
Diese soll den Namen der Person, der in der Variable "name" gespeicher ist zurückgeben.
Schreibt also unter den Konstruktor:
    public String getName ()
    {
      return name;

    }


Es sieht ähnlich aus wie der Konstruktor. Kein Wunder - Der Kunstruktor ist ja selber eine Art von Methode.
also... als erstes steht da "public String getName ()"
"public" sagt, wie wir schon wissen, dass jeder von außen auf die Methode zugreifen kann.
Bei Methoden muss man "public" nicht dazuschreiben, da wenn man nichts dazuschreibt sie automatisch public sind, anders als bei Variablen die automatisch private sind.
Auch Methoden haben so etwas wie Datentypen. Natürlich ist die Methode trotz des "String" keine Zeichenkette. Nein sie soll nur eine zurückgeben... das heißt sie MUSS eine zurückgeben, ansonsten gibts ne Fehlermeldung.
"getName" ist der Name der Methode. "get" ist KEINE FUNKTION von Java, es ist nur ein guter Name... man könnte genau so gut "gibName" schreiben, aber so klingts besser^^.

In der Klammer steht "return name;"
Die "return"-Funktion gibt etwas zurück. In unserem Niveau heißt das, dass sich ein kleines Fenster öffnet wo was drinnen steht.
Dahinter steht "name". Also gibt die Methode "name" (also Johannes) zurück.
Wenn wir jetzt nochmal ein Objekt erzeugen (rechtsklick auf das Klassensymbol → "new Person ()"), und dort mit der rechten Maustaste draufklicken, erscheint wieder ein kleines Menü. Aber jetzt steht dort unsere Methode: getName (). Wenn wir daraufklicken, erscheint ein kleines Fenster wo tatsächlich "Johannes" drinnensteht^^.

Zu return:
return kann immer nur den Datentyp zurückgeben, der vor dem Klassennamens steht; In unserem Fall String.
Das heißt es könnte nicht "return alter;" drinnen stehen, da Alter vom Typ INT ist.
Man muss außerdem nicht eine Variable angeben, man kann auch schreiben "return "Johannes";".

Die nächste Methode ist setName.
Sie soll dem User erlauben, einen eigenen Wert einzuegben, der dann in "name" steht.
Dies funktioniert so (unter die letzte Methode schreiben):
    public void setName (String neuerName)
    {
      name = neuerName;

    }


"void" ist KEIN Datentyp wie int oder boolean oder so... auch keine eigene Klasse wie String. Es bedeutet, dass in dieser Methode nicht zurückgegeben werden darf - also keine Return-Anweisungen.
"setName" ist der Name der Methode.
Diesmal steht etwas in den Klammern drinnen: "String neuerName".
"neuerName" ist ein sogenannter Übergabeparamter. Diese Art von Variable ist nur in der Methode gültig. Bei Aufruf der Methode wird dem Übergabeparameter ein Wert vom User zugewiesen.

In den geschwungenen Klammern steht "name = neuerName;".
Das heißt, dass name den Wert von neuerName bekommt.

Probiern wirs aus. Erstellt wieder ein Objekt (davor bitte Klasse übersetzen) und klickt auf die Methode "setName". Ihr werdet aufgefordert etwas einzugeben. Gebt den gewünschten Namen IN ANFÜHRUNGSZEICHEN ein. z.B. "Tim". Wenn ihr jetzt die "getName"-Methode aufruft wird "Tim" zurückgegeben - es hat funktioniert.

Durch diese beiden Anleitungen solltet ihr auch die restlichen Methoden (getAlter, setAlter, getVerheiratet, setVerheiratet) selber schaffen können.
Wenn ihrs doch nicht schafft: so sollte euer gesamter Quelltext zum Schluss aussehen:


Thema geschlossen, da es eh niemanden interessierte
 Sprung  
Xobor Forum Software von Xobor.de
Einfach ein Forum erstellen
Datenschutz