Zum Menü springen Zum Inhalt springen

iamBlog

Java: VHS-Kurs

15.01 2009 20:29

Da vermehrt der Wunsch geäußert wurde, auch für die Aufgabe 9 einen kleinen Blog-Eintrag zu schreiben, wird dieser nun (leider etwas verspätet) nachgereicht. In der Aufgabe 9 geht es darum, aus zwei Klassen (Kurs & Person) eine kleine "Kursverwaltung" zu programmieren - natürlich schön objektorientiert ;)

Klasse Person

Aus der Aufgabenstellung lässt sich entnehmen, dass wir für unsere Klasse Person einen Konstruktor definieren sollen, mit dem wir den Namen, Nachnamen und das Alter der Person übergeben können. Diese Eigenschaften sollen dann an die Klasse übergeben und nicht mehr verändert (final!) werden.

Konstruktor

Zuerst erstellen wir unsere Klasse Person, die drei Klassenvariablen mit dem Schlüsselbegriff final und der Sichtbarkeit private bekommt: name und nachname, (beide vom Typ String) sowie alter (Typ: int)



public class Person {
    private final String name;
    private final String vorname;
    private final int alter;
}

Dann noch den Konstruktor schreiben, der seine Übergabeparameter den eben erstellten Klassenvariablen zuweist:



public class Person {
    private final String name;
    private final String vorname;
    private final int alter;
    
    public Person(String name, String vorname, int alter){
        this.name = name;
        this.vorname = vorname;
        this.alter = alter;
    }
}

Und fertig ist der erste Schritt ;)

Methode, die den Namen zurückgibt

Nun sollen wir eine kleine Methode schreiben, die den Namen der Person zurückliefert. Erste Überlegung: Wenn man die Methode später aufruft, soll man eine Zeichenkette erhalten --> Rückgabewert = String! Zweite Überlegung: Was ist mit Name gemeint? Nur die Variable name oder etwa Vor- und Nachname der Person? --> Interpretationssache ;) wir nehmen einfach mal eine Zeichenkette aus Name und Vorname.


    public String getName(){
        return name + " " + vorname;
    }

Methode, die die Personendaten anzeigt

Hier haben wir eine Methode, die uns die ganzen Personendaten in der Konsole ausspucken soll:


    public void getInfo(){
        System.out.println ("Name: " + name + "\r\n" + "Vorname: " + vorname + "\r\n" + "Alter: " + alter);
    }

Natürlich müssen diese Methoden schön in unsere Klasse Person geschrieben werden ;)

Klasse Kurs

Hier erstellen wir einen Konstruktor wie in der Klasse Person, nur dass dieser nun die Eigenschaften Kursnummer (Typ: int), Name (Typ: String) und maximaleAnzahlTeilnehmer (Typ: int) an die Klasse Kurs übergeben muss.

Konstruktor



public class Kurs {
    private int kursnummer;
    private String name;
    private int maximaleAnzahlTeilnehmer;
    private Person[] teilnehmer;
    private Person kursleiter;
    
    public Kurs(int kursnummer, String name, int maximaleAnzahlTeilnehmer){
        this.kursnummer = kursnummer;
        this.name = name;
        this. maximaleAnzahlTeilnehmer = maximaleAnzahlTeilnehmer;
        teilnehmer = new Person[maximaleAnzahlTeilnehmer];
    }
}

Methode anmeldenZuKurs

Dieser Methode wird eine Person neuerTeilnehmer übergeben. In der Methode wird anschließend überprüft, ob noch Plätze im Kurs vorhanden sind, und ob diese Person schon angemeldet ist. (Jede Person soll sich nur einmal anmelden können)

Hierzu gehen wir unser Teilnehmer-Array von 0 beginnend durch und überprüfen, welches Element an der Stelle i versteckt ist ;) Is es null, so können wir unseren neuen Teilnehmer bedenkenlos an dieser Stelle in das Array einfügen. Entspricht dieses Element allerdings der Person neuerTeilnehmer wird die Methode mit einer Meldung abgebrochen, dass diese Person schon im Kurs angemeldet ist.

Hinweis: == ist an dieser Stelle nicht optimal. equals wäre besser, wenn man es noch in der Klasse Person überschreibt und z. B. true zurückgibt, wenn name, nachname und alter mit der zu vergleichenden Person übereinstimmt.


    public void anmeldenZuKurs(Person neuerTeilnehmer){
        for(int i = 0; i < teilnehmer.length; i++){
            if(teilnehmer[ i ] == null){
                teilnehmer[ i ] = neuerTeilnehmer;
                return;
            } else if(teilnehmer[ i ] == neuerTeilnehmer){
                System.out.println(neuerTeilnehmer.getName() + " ist schon angemeldet!");
                return;
            }
        }
        System.out.println("Kurs schon voll");
    }

Methode setKursLeiter

Nun schreiben wir noch eine Methode, mit der der Kursleiter des Kurses bestimmt werden kann.


    public void setKursLeiter(Person kursleiter){
        this.kursleiter = kursleiter;
    }

Und fertig ;)

Testen

Hier zum Testen mal ein Java-Kurs in dem maximal 2 Personen Teilnehmen können. Da nur 2 Personen Teilnehmen können, wird unser Hans nicht an dem Kurs teilnehmen können. Damit er aber nicht traurig ist, darf er einfach mal den Kurs leiten ;)


public class test {
    public static void main(String[] args) {
        Kurs Java = new Kurs(1, "Java-Kurs", 2);
        
        Person hans = new Person("Hans", "Hinterhuber", 54);
        Person fritz = new Person("Fritz", "Hinterhuber", 34);
        Person susi = new Person("Susi", "Hinterhuber", 25);


        Java.anmeldenZuKurs(fritz);
        Java.anmeldenZuKurs(susi);
        Java.anmeldenZuKurs(hans);
        Java.anmeldenZuKurs(hans);

        Java.setKursLeiter(hans);
    }
}

Kommentare

  1. Noch keine Kommentare vorhanden.
  2. Dieser Eintrag kann nicht mehr kommentiert werden.

Nächster Eintrag: Böses Baby!

Vorheriger Eintrag: Java: Auto-Simulator

Über den iamBlog

Der iamBlog ist von und für Studenten der FH Augsburg und alle Leute die sich für Design, Medien und Multimedia interessieren.

Namensgebend war der Studiengang InterAktive Medien an der FH Augsburg.

Der Blog befindet sich Moment noch im Aufbau. Wir entschuldigen uns für eventuell fehlende Funktionen und den ein oder anderen Fehler im System.

Die neuesten Links

Kategorien

Das neueste Design

Avant von pichfl

Zum Auswählen eines Designs einfach oben links auf den Button Hintergrund ändern klicken.

Feeds

Die Einträge im Blog lassen sich als Atom-Feed abonnieren. Außerdem gibt es einen kombinierten Atom-Feed, der Blogeinträge und Links enthält.
Diese Feeds werden z.B. von Browsern wie Safari oder Mozilla Firefox, Newsreadern wie NetNewsWire oder Feadreader oder Onlinediensten wie Google Reader unterstützt und werden automatisch aktualisiert, wenn neue Einträge im iamBlog vorhanden sind.

Werbung

Disclaimer

This page will never work with Internet Explorer. If you use Internet Explorer to view this page, all styles and features are deactivated. Use Firefox, Safari or Opera to see all the beautiful colours of the internet.