# Bekomme das nicht hin (set / get Methoden)



## dj3nk (1. Nov 2008)

Hallo, ich bin neu hier und sag nun erstmal Hallo ;P
Wie kam ich hier her ? Ich habe eine Platform gesucht auf der ich Hilfe für Jave Programmierung finden kann. Ich studiere praktische Informatik im ersten Semester. Wir hatten bisher nur ein paar Vorlesungsstunden und leider konnte ich wegen Krankheit von bisher 5 Stunden nur 2 besuchen. Ich habe aber aus der Gymnasialzeit noch ein wenig programmiererfahrung mir pascal, so das mir programmieren nicht ganz fremd ist. Ich habe mich mitteln Skript und dem Buch "java2 - Grundlagen und Einführung" versucht schlauer zu machen, komme aber nicht drauf was mein Prof hier von mir will. Leider ist am Montag abgabetermin für diese Übung und ich versteh nich was der genau von mir will. Ich weiss zwar das ihr hier keine hausaufgaben löst, aber ich möchte ja das "Wissen" und nich euch meine Aufgaben machen lassen. Ich poste einfach mal die Aufgabenstellung:


1. Übung zu Programmierung 1
----------------------------
Abgabe:  KW 45

1. Aufgabe
-----------
Entwerfen Sie eine Klasse Artikel für eine einfache Bestandsführung mit den 
folgenden Attributen und Methoden:

Attribute:
  int    artikelNr	Artikelnummer
  String bezeichnung    Artikelbezeichnung
  int    bestand        aktueller Artikelbestand 

Methoden:
  void bucheZugang(int menge)   Zugang aufbuchen
  void bucheAbgang(int menge)   Abgang abbuche
  String toString()             Artikel-Objekt als Zeichenkette aufbereiten

       	Beispielausgabe:
          Artikel: 4711 Bezeichnung: Staubsauger Bestand: 100 

  get-Methoden zu allen Attributen
  set-Methoden nur zu den Attributen, für die eine set-Methode Sinn macht. 

Konstruktoren:
- Es werden Konstruktoren benötigt für das Konstruieren eines Artikel-Objekts
  mit 2 oder 3 Argumenten. Warum macht ein Standardkonstruktor keinen Sinn?

Folgende Bedingungen sind zu beachten:
- Die Artikelnummer muss eine 4-stellige positive Zahl sein.
- Die Bezeichnung darf nicht null sein.
- Der Bestand darf nie kleiner als 0 werden.
- die bei bucheAbgang und bucheZugang übergebenen Werte müssen auf > 0 über-
  prüft werden.

Vorgehensweise:
---------------
-> Erstellen Sie die eigentliche Klasse mit dem Entwicklungswerkzeug BlueJ
-> Zu einem professionellen Quellcode gehören natürlich sinnvolle 
   Kommentierungen, eine selbsterklärende Namensgebung für Attribute, 
   Variablen und Konstanten, sowie eine Strukturierung des Programmtextes.
-> Testen Sie ihre Klasse, indem sie reale Objekte in BlueJ erzeugen und 
   deren Schnittstelle bedienen. 



Soll ich nun nur Konstruktoren erstellen, dessen Variable 'menge' ist und diese wird eben zu 'bestand' addiert oder subtrahiert ?! Wie kann ich unterscheiden welcher ArtikelNr ich etwas auf oder abbuche ?!?! 

PLEASE HELP ! ;D

Was ich bisher "erarbeitet" habe:


```
/**
 * Klasse Artikel zur einfachen Bestandsführung
 * 
 * @author Andreas Jenkuhn
 * @version 0.01
 */
import de.htw.saarland.stl.Stdin;       // fuer Eingabe
public class Artikel                    // Klasse Artikel erstellen
{
   int bestand;                         // Variablen definieren
  
 public Artikel() {}                    // Standardkonstruktor

 public void bucheZugang(int menge)     // Methode zum Aufbuchen des Bestandes
 { 
    bestand = bestand + menge;
 }
 
 public void bucheAbgang(int menge)     // Methode zum Abbuchen des Bestandes
 { 
    if (bestand < menge)                // Pruefen ob Bestand kleiner 0 wird
     bestand = 0;
    else
     bestand = bestand - menge;         // ansonsten Menge abbuchen
 }

 public static void main(String[] args) // Main Methode
 {
    int artikelNr;
    System.out.println("----------------------------------");
    System.out.println("Willkommen in der Bestandsfuehrung");
    System.out.println("----------------------------------");
    System.out.println("");
    char weitermachen=' ';                      // Abfrage ob Programm wiederholt wird
    while (weitermachen != 'n')
    {
        artikelNr = Stdin.readlnInt("ArtikelNr angeben: ");
        System.out.println ("");
        System.out.println (artikelNr);
        
        System.out.print ("Weitermachen (j/n) ?  ");    // Wiederholungsabfrage
        weitermachen = Stdin.readChar();
    }
    
 }
 
 
}
```

Stdin ist eine Klasse zum eingeben von Werten die ich fertig von der Uni habe. Das funzt auch soweit.


----------



## Gast (1. Nov 2008)

Er schreibt doch extra in der Aufgabenstellung warum ein Standardkonstruktor keinen Sinn macht ;-) warum machst du dann einen hin?? 
Der Konstruktor soll 3 Argumente bekommen d.h. beim erstellen des Objektes werden die Variablen der Klasse direkt mit Werten belegt. Der Konstruktor könnte wie folgt aussehen:

public Artikel (int artikelNr, String bezeichnung, int bestand){
     this.artikelNr = artikelNr;
     this.bezeichnung = bezeichnung;
     this.bestand = bestand;
}


----------



## dj3nk (1. Nov 2008)

Danke für deine Hilfe. Also den Standardkontruktor einfach weglassen? Ich habe zu Stanardkosntruktier folgendes gefunden:

Der Standardkonstruktor macht, wenn er verwendet wird, eine ganze Menge "hinter den Kulissen". Er arbeitet mit dem Betriebssystem, um Hauptspeicher für das Objekt zu finden, den Speicher für das Objekt einzurichten, stellt die Variablen und die in der Klassendefinition spezifizierten Methoden hinein und gibt eine Objektreferenz an Ihr Programm zurück. All das ist ganz schön kompliziert, und Sie haben Glück, dass Sie es nicht schreiben müssen. 


Also das heisst für mich das ich keinen Standardkonstruktor brauche wenn die erstellte Klasse keinen "eigenen" Platz im Speicher brauch. kann man das so sagen?


"this" haben wir bisher noch nicht durchgenommen. Ich werde mal suchen wie ich das ersetzen kann.

Die Bedingungen werde ich wohl versuchen mit einfachen if else anweisungen oÄ zu realisieren.

Etwas Verwirrung sorgt bei auch in der Aufgabenstellung das die Konstruktoren bucheZugang und bucheAbgang heissen, ich aber get und set methoden erstellen soll. Oder heisst "get und set methoden" nur das die auf und abbuchen per extra klasse geregelt wird. Oder muss ich irgendeinen get und set befehl nutzen ?


----------



## dj3nk (1. Nov 2008)

wenn ich versuche das hier zu kompilieren bekomme ich die fehlermeldung:

cannot find symbol - variable artikelNr

Aber die wurde doch im Konstruktor definiert ?! 

```
import de.htw.saarland.stl.Stdin;
class Artikel
{
    int artikelNr, bestand;
    String bezeichnung;

    public void showArtikel()
    {
        System.out.println("Artikel: " + artikelNr + "  Bezeichnung: " + bezeichnung + "  Bestand: " + bestand);
    }

    public static void newArtikel(int artNr)
    {   
        Artikel art1 = new Artikel();
        art1.artikelNr = artNr;
        art1.bezeichnung = Stdin.readString("Bezeichnung eingeben: ");
        art1.bestand = Stdin.readInt("Bestand eingeben: ");
        art1.showArtikel();
    }
    
    public void bucheZugang(int menge)     // Methode zum Aufbuchen des Bestandes
    {
        bestand = bestand + menge;
    }

    public void bucheAbgang(int menge)     // Methode zum Abbuchen des Bestandes
    {
        if (bestand < menge)                // Pruefen ob Bestand kleiner 0 wird
        bestand = 0;
        else
        bestand = bestand - menge;         // ansonsten Menge abbuchen
    } 
    
    public static void main (String[] args)
    {
		int nr;
		nr = Stdin.readInt("ArtikelNummer eingeben: ");
		newArtikel(nr);
    }
}
```

?! help :/


----------



## Landei (1. Nov 2008)

Du musst die Membervariable, auf die sich this.artikelNr bezieht, auch anlegen:


```
public class Artikel                    // Klasse Artikel erstellen
{
  private final int artikelNr;
  private final String bezeichnung;
  private int bestand;  

  public Artikel (int artikelNr, String bezeichnung, int bestand) 
  {
    this.artikelNr = artikelNr;
    this.bezeichnung = bezeichnung;
    this.bestand = bestand;
  }
  ...
}
```


----------



## Fu3L (1. Nov 2008)

dj3nk hat gesagt.:
			
		

> wenn ich versuche das hier zu kompilieren bekomme ich die fehlermeldung:
> 
> cannot find symbol - variable artikelNr



Du hast einmal die Methodenvariable artikelNr und mit this.artikelNr greifst du auf das Feld artikelNr zu, d.h. du musst die Variable auch in der Klasse vorher deklarieren. Und anstatt von this kannst du einfach die Parameter im Kontruktor anders benennen, wobei this eigentlich das schönere Vorgehen ist...


```
public class Artikel                    // Klasse Artikel erstellen
{

int artikelNr;
String bezeichnung;
int bestand;

public Artikel (int art, String bez, int bes)
{
    artikelNr = art;
    bezeichnung = bez;
    bestand = bes;
}
```


----------



## Gast (2. Nov 2008)

Du bringst da oben alles durcheinander ;-)
Also bucheAbgang und bucheZugang sind Methoden keine Konstruktoren. Getter und Setter Methoden brauchst du um deine Variablen nachträglich auszulesen oder neu zu setzen. Du brauchst also Getter und Setter für die artikelNr, bezeichnung und bestand. Allerdings macht das nur Sinn wenn du deine Variablen dann auch private deklarierst.
Du solltest auch deine main Methode nicht in die Artikel Klasse reindonnern. Mach am Besten zwei getrennte Klassen dann kommst du auch nicht durcheinander und vor allem macht dann erst die Objektorientierung Sinn. 

Gruß
Matze


----------



## dj3nk (3. Nov 2008)

Oki, das mit der main methode werde ich gleich mal machen.

Die exakten unterschiede wegen private public bla bla muss ich gleich auch nomma anschauen. Ich würde jetzt aber noch gerne wissen, wie ich beim erstellen eines Artikel Objektes dessen Name via Tastatureingabe bestimmen kann. Wenn ich den Variablenname bei " ..... = new Artikel " auf der linken Seite hinschreibe, kommt die Fehlermeldung das diese variable schon vergeben ist. Irgendwie logisch, aber wie bekomm ich das hin "art1" durch eine eingegebene Zahl zu ersetzen bzw zu ergänzen.

Ansonsten bin ich bisher so weit gekommen:


```
import de.htw.saarland.stl.Stdin;
class Artikel
{
    int artikelNr, bestand;
    String bezeichnung;

    public void showArtikel()
    {
        System.out.println("Artikel: " + artikelNr + "  Bezeichnung: " + bezeichnung + "  Bestand: " + bestand);
    }

    public static void newArtikel(int artNr)
    {   
        Artikel art1 = new Artikel();
        art1.artikelNr = artNr;
        art1.bezeichnung = Stdin.readString("Bezeichnung eingeben: ");
        art1.bestand = Stdin.readInt("Bestand eingeben: ");
        art1.showArtikel();
    }
    
    public void bucheZugang(int menge)     // Methode zum Aufbuchen des Bestandes
    {
        bestand = bestand + menge;
    }

    public void bucheAbgang(int menge)     // Methode zum Abbuchen des Bestandes
    {
        if (bestand < menge)                // Pruefen ob Bestand kleiner 0 wird
        bestand = 0;
        else
        bestand = bestand - menge;         // ansonsten Menge abbuchen
    } 
    
    public static void main (String[] args)
    {
		int nr;
		nr = Stdin.readInt("ArtikelNummer eingeben: ");
		newArtikel(nr);
    }
}
```


grüsse ;D


----------



## Fu3L (3. Nov 2008)

Die ganzen Artikel in einzelene Variablen zu speichern is nich gut... Benutze ein Array oder (wenn du schon darfst) eine Liste aus java.util. Da kannst du dann (beliebig) viele Objekte reinspeichern und sparst dir die Namensgebung. Und die Artikelnummern kannst du ja schon einlesen, die kannst du ja immer in der selben int-variablen speichern und die dann nach dem Erstellen eines neuen Objekts wieder überschreiben, um damit das nächste Objekt zu versorgen....

Edit, nochma etwas deutlicher: Variablennamen zusammenbauen, wie in PHP, ist in Java nicht möglich und brauch auch nich....


----------



## Ariol (3. Nov 2008)

Oh, noch ein HTW-PIler ^^

Du solltest bei der Aufgabe ganz einfach Schritt für Schritt vorgehen:

1. Entwerfen Sie eine Klasse Artikel...

```
public class Artikel{

}
```

2. Attribute:
int artikelNr Artikelnummer
String bezeichnung Artikelbezeichnung
int bestand aktueller Artikelbestand 

```
public class Artikel{

     int artikelNr = 0; //Artikelnummer
     String bezeichnung = ""; //Artikelbezeichnung
     int bestand = 0; //aktueller Artikelbestand

}
```

3. Methoden:
void bucheZugang(int menge) Zugang aufbuchen
void bucheAbgang(int menge) Abgang abbuche
String toString() Artikel-Objekt als Zeichenkette aufbereiten

```
public class Artikel{

     int artikelNr = 0; //Artikelnummer
     String bezeichnung = ""; //Artikelbezeichnung
     int bestand = 0; //aktueller Artikelbestand

     /**
     ** Zugang aufbuchen
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheZugang(int menge){
          this.bestand = this.bestand + menge;
     }

     /**
     ** Abgang abbuche
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheAbgang(int menge){
          this.bestand = this.bestand - menge;
     }

     /**
     ** Artikel-Objekt als Zeichenkette aufbereiten
     **/
     String toString() {
         return "Artikel: " + artikelNr + "  Bezeichnung: " + bezeichnung + "  Bestand: " + bestand;
     }
}
```


4.get-Methoden zu allen Attributen
set-Methoden nur zu den Attributen, für die eine set-Methode Sinn macht. 
--> Macht meiner Meinung nach überall Sinn

```
public class Artikel{

     int artikelNr = 0; //Artikelnummer
     String bezeichnung = ""; //Artikelbezeichnung
     int bestand = 0; //aktueller Artikelbestand


     /**
     ** Gibt die Artikelnummer zurück
     **/
     void getArtikelNr(){
          return this.artikelNr;
     }


    /**
     ** Gibt die Artikelbezeichnung zurück
     **/
     void getBezeichnung(){
          return this.bezeichnung;
     }

    /**
     ** Gibt den aktuellen Artikelbestand zurück
     **/
     void getBestand(){
          return this.bestand;
     }

    /**
     ** Setzt die Artikelnummer
     **
     **@param artikelNr - die neue Artikelnummer
     **/
     void setArtikelNr(int artikelNr){
          this.artikelNr = artikelNr;
     }

    /**
     ** Setzt die Artikelbezeichnung
     **
     **@param bezeichnung - die neue Artikelbezeichnung
     **/
     void setBezeichnung(String bezeichnung){
          this.bezeichnung = bezeichnung;
     }

    /**
     ** Setzt den aktuellen Artikelbestand
     **
     **@param bestand - der neue Artikelbestand
     **/
     void setBestand(int bestand){
          this.bestand = bestand;
     }

     /**
     ** Zugang aufbuchen
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheZugang(int menge){
          this.bestand = this.bestand + menge;
     }

     /**
     ** Abgang abbuche
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheAbgang(int menge){
          this.bestand = this.bestand - menge;
     }

     /**
     ** Artikel-Objekt als Zeichenkette aufbereiten
     **/
     String toString() {
         return "Artikel: " + artikelNr + "  Bezeichnung: " + bezeichnung + "  Bestand: " + bestand;
     }
}
```

5. Konstruktoren:
- Es werden Konstruktoren benötigt für das Konstruieren eines Artikel-Objekts
mit 2 oder 3 Argumenten. Warum macht ein Standardkonstruktor keinen Sinn? 
--> weil man mindestens eine Artikelnummer haben sollte.

```
public class Artikel{

     int artikelNr = 0; //Artikelnummer
     String bezeichnung = ""; //Artikelbezeichnung
     int bestand = 0; //aktueller Artikelbestand

     /**
     ** Konstruktor nur mit artikelNr
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **/
     public Artikel(int artikelNr){
          this(artikelNr, "", 0);
     }

     /**
     ** Konstruktor mit artikelNr und bezeichnung
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bezeichnung - die Bezeichnung des Artikels
     **/
     public Artikel(int artikelNr, String bezeichnung){
          this(artikelNr, bestand, 0);
     }

     /**
     ** Konstruktor mit artikelNr und bestand
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bestand - der Anfangsbestand des Artikels
     **/
     public Artikel(int artikelNr, int bestand){
          this(artikelNr, "", bestand);
     }

     /**
     ** Konstruktor mit allen Attributen als Parameter
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bezeichnung - die Bezeichnung des Artikels
     **@param bestand - der Anfangsbestand des Artikels
     **/
     public Artikel(int artikelNr, String bezeichnung, int bestand){
          setArtikelNr(artikelNr);
          setBezeichnung(bezeichnung);
	  setBestand(bestand);
     }

     /**
     ** Gibt die Artikelnummer zurück
     **/
     void getArtikelNr(){
          return this.artikelNr;
     }


    /**
     ** Gibt die Artikelbezeichnung zurück
     **/
     void getBezeichnung(){
          return this.bezeichnung;
     }

    /**
     ** Gibt den aktuellen Artikelbestand zurück
     **/
     void getBestand(){
          return this.bestand;
     }

    /**
     ** Setzt die Artikelnummer
     **
     **@param artikelNr - die neue Artikelnummer
     **/
     void setArtikelNr(int artikelNr){
          this.artikelNr = artikelNr;
     }

    /**
     ** Setzt die Artikelbezeichnung
     **
     **@param bezeichnung - die neue Artikelbezeichnung
     **/
     void setBezeichnung(String bezeichnung){
          this.bezeichnung = bezeichnung;
     }

    /**
     ** Setzt den aktuellen Artikelbestand
     **
     **@param bestand - der neue Artikelbestand
     **/
     void setBestand(int bestand){
          this.bestand = bestand;
     }

     /**
     ** Zugang aufbuchen
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheZugang(int menge){
          this.bestand = this.bestand + menge;
     }

     /**
     ** Abgang abbuche
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheAbgang(int menge){
          this.bestand = this.bestand - menge;
     }

     /**
     ** Artikel-Objekt als Zeichenkette aufbereiten
     **/
     String toString() {
         return "Artikel: " + artikelNr + "  Bezeichnung: " + bezeichnung + "  Bestand: " + bestand;
     }
}
```

6. Folgende Bedingungen sind zu beachten:
- Die Artikelnummer muss eine 4-stellige positive Zahl sein.
- Die Bezeichnung darf nicht null sein.
- Der Bestand darf nie kleiner als 0 werden.
- die bei bucheAbgang und bucheZugang übergebenen Werte müssen auf > 0 überprüft werden. 

```
/**
** Eine Klasse zur Verwaltung eines Artikels
**/
public class Artikel{

     int artikelNr = 0; //Artikelnummer
     String bezeichnung = ""; //Artikelbezeichnung
     int bestand = 0; //aktueller Artikelbestand

     /**
     ** Konstruktor nur mit artikelNr
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **/
     public Artikel(int artikelNr){
          this(artikelNr, "", 0);
     }

     /**
     ** Konstruktor mit artikelNr und bezeichnung
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bezeichnung - die Bezeichnung des Artikels
     **/
     public Artikel(int artikelNr, String bezeichnung){
          this(artikelNr, bestand, 0);
     }

     /**
     ** Konstruktor mit artikelNr und bestand
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bestand - der Anfangsbestand des Artikels
     **/
     public Artikel(int artikelNr, int bestand){
          this(artikelNr, "", bestand);
     }

     /**
     ** Konstruktor mit allen Attributen als Parameter
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bezeichnung - die Bezeichnung des Artikels
     **@param bestand - der Anfangsbestand des Artikels
     **/
     public Artikel(int artikelNr, String bezeichnung, int bestand){
          setArtikelNr(artikelNr);
          setBezeichnung(bezeichnung);
	  setBestand(bestand);
     }

     /**
     ** Gibt die Artikelnummer zurück
     **/
     void getArtikelNr(){
          return this.artikelNr;
     }


    /**
     ** Gibt die Artikelbezeichnung zurück
     **/
     void getBezeichnung(){
          return this.bezeichnung;
     }

    /**
     ** Gibt den aktuellen Artikelbestand zurück
     **/
     void getBestand(){
          return this.bestand;
     }

    /**
     ** Setzt die Artikelnummer
     **
     **@param artikelNr - die neue Artikelnummer
     **/
     void setArtikelNr(int artikelNr){
  	  if(artikelNr >= 1000 && artikelNr <= 9999)
	  {
               this.artikelNr = artikelNr;
          }
     }

    /**
     ** Setzt die Artikelbezeichnung
     **
     **@param bezeichnung - die neue Artikelbezeichnung
     **/
     void setBezeichnung(String bezeichnung){
          if(bezeichnung != null)
          {
               this.bezeichnung = bezeichnung;
          }
     }

    /**
     ** Setzt den aktuellen Artikelbestand
     **
     **@param bestand - der neue Artikelbestand
     **/
     void setBestand(int bestand){
          if(bestand >= 0)
          {
               this.bestand = bestand;
          }
     }

     /**
     ** Zugang aufbuchen
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheZugang(int menge){
          if(menge > 0)
          {
               setBestand(this.bestand + menge);
          }
     }

     /**
     ** Abgang abbuche
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheAbgang(int menge){
          if(menge > 0)
          {
               setBestand(this.bestand - menge);
          }
     }

     /**
     ** Artikel-Objekt als Zeichenkette aufbereiten
     **/
     String toString() {
         return "Artikel: " + artikelNr + "  Bezeichnung: " + bezeichnung + "  Bestand: " + bestand;
     }
}
```

Achtung, bem letzten Schritt wurden bucheAbgang und bucheZugang verändert und auf setBestand umgeleitet und ein Kommentar für die Klasse eingeführt.

P.S.: Ich bin aach aus Dengmaad.
Aber ich bin auch schon im 5. bzw. 9. Semester (wie mans rechnet :-/ )

Ist also schon etwas her, seit ich die Übungen machen musste...


----------



## dj3nk (3. Nov 2008)

Jo Ariol ;P Da könntest du Recht haben. Und ich bin sogar aus Dingmadd.  
Hast du die Aufgabe gelöst bekommen ? Ich war leider die ganze Woche krank
und hab nich wirklich viel mitbekommen und musste mich mit Herr google,
Skript und dem Java Buch unterhalten ;P
Ist die Abgabe heute abend oder erst am Mittwoch abend ? Habe das aus den
Infos der htw seite nich so ganz erkennen können. Muss noch den ssl und so
einrichten gleich, damit ich zumindest was ich habe hochladen kann.

Grüsse


----------



## Ariol (3. Nov 2008)

So, hab meinen vorigen Post berichtigt.
s.o.

Ich bin eben etwas zu früh auf Absenden gekommen.

Der Code ist ohne Gewähr, weil mitm Texteditor geschrieben und ungetestet...


----------



## dj3nk (3. Nov 2008)

woohhaaaaa, dickes danke  muss ich direkt mal intensiv reinschauen ^^ Hast du das alleine oder mit jmd zusammen gemacht ?

Weisst du ob noch mehr aus igb dort sind ?

Ich test ma ;P


----------



## Ariol (3. Nov 2008)

Alleine...^^

mittlerweile ist sowas nur noch Schreibarbeit. Hat mich grad eben ca. 30Minuten gebraucht.


----------



## dj3nk (3. Nov 2008)

Joa. ich muss mich bissl an das objektorientierte gewöhnen, auch wenns eigentlich recht logisch is. Die Übungen sind ja eigentlich von 2 Leuten zu bearbeiten. Können wir das grad "zusammen" abgeben? Ich würds ja auch nur "abschreiben" und "mitdenken"  . Oder hat der gesagt das wir das auch alleine machen sollen/können ?

Muss öfter da sein ^^

Man, wie komm ich auf den server ? mit  name / user_matrikelNr  komm ich nich drauf :/ Und die fingerprints kann ich auch nich laden für ne ssh verbindung


----------



## dj3nk (3. Nov 2008)

habs ma getestet, der bringt fehler


----------



## Ariol (3. Nov 2008)

dj3nk hat gesagt.:
			
		

> Joa. ich muss mich bissl an das objektorientierte gewöhnen, auch wenns eigentlich recht logisch is. Die Übungen sind ja eigentlich von 2 Leuten zu bearbeiten. Können wir das grad "zusammen" abgeben? Ich würds ja auch nur "abschreiben" und "mitdenken"  . Oder hat der gesagt das wir das auch alleine machen sollen/können ?


Ich muss das nicht mehr machen, ich hab diese Übungen schon vor Jahren abgegeben.



			
				dj3nk hat gesagt.:
			
		

> Man, wie komm ich auf den server ? mit  name / user_matrikelNr  komm ich nich drauf :/ Und die fingerprints kann ich auch nich laden für ne ssh verbindung



ssh benutzername@stl-s-stud.htw-saarland.de
der fingerprint wird dann normalerweise automatisch geladen.


----------



## Ariol (3. Nov 2008)

dj3nk hat gesagt.:
			
		

> habs ma getestet, der bringt fehler


jo, war wie gesagt nur mit gedit geschrieben...


bitteschön:

```
/**
** Eine Klasse zur Verwaltung eines Artikels
**/
public class Artikel{

     int artikelNr = 0; //Artikelnummer
     String bezeichnung = ""; //Artikelbezeichnung
     int bestand = 0; //aktueller Artikelbestand

     /**
     ** Konstruktor nur mit artikelNr
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **/
     public Artikel(int artikelNr){
          this(artikelNr, "", 0);
     }

     /**
     ** Konstruktor mit artikelNr und bezeichnung
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bezeichnung - die Bezeichnung des Artikels
     **/
     public Artikel(int artikelNr, String bezeichnung){
          this(artikelNr, bezeichnung, 0);
     }

     /**
     ** Konstruktor mit artikelNr und bestand
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bestand - der Anfangsbestand des Artikels
     **/
     public Artikel(int artikelNr, int bestand){
          this(artikelNr, "", bestand);
     }

     /**
     ** Konstruktor mit allen Attributen als Parameter
     **
     **@param artikelNr - die Artikelnummer des Artikels
     **@param bezeichnung - die Bezeichnung des Artikels
     **@param bestand - der Anfangsbestand des Artikels
     **/
     public Artikel(int artikelNr, String bezeichnung, int bestand){
          setArtikelNr(artikelNr);
          setBezeichnung(bezeichnung);
     setBestand(bestand);
     }

     /**
     ** Gibt die Artikelnummer zurück
     * @return 
     **/
     int getArtikelNr(){
          return this.artikelNr;
     }


    /**
     ** Gibt die Artikelbezeichnung zurück
     **/
     String getBezeichnung(){
          return this.bezeichnung;
     }

    /**
     ** Gibt den aktuellen Artikelbestand zurück
     **/
     int getBestand(){
          return this.bestand;
     }

    /**
     ** Setzt die Artikelnummer
     **
     **@param artikelNr - die neue Artikelnummer
     **/
     void setArtikelNr(int artikelNr){
       if(artikelNr >= 1000 && artikelNr <= 9999)
     {
               this.artikelNr = artikelNr;
          }
     }

    /**
     ** Setzt die Artikelbezeichnung
     **
     **@param bezeichnung - die neue Artikelbezeichnung
     **/
     void setBezeichnung(String bezeichnung){
          if(bezeichnung != null)
          {
               this.bezeichnung = bezeichnung;
          }
     }

    /**
     ** Setzt den aktuellen Artikelbestand
     **
     **@param bestand - der neue Artikelbestand
     **/
     void setBestand(int bestand){
          if(bestand >= 0)
          {
               this.bestand = bestand;
          }
     }

     /**
     ** Zugang aufbuchen
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheZugang(int menge){
          if(menge > 0)
          {
               setBestand(this.bestand + menge);
          }
     }

     /**
     ** Abgang abbuche
     **
     **@param menge - die zuzubuchende Menge
     **/
     void bucheAbgang(int menge){
          if(menge > 0)
          {
               setBestand(this.bestand - menge);
          }
     }

     /**
     ** Artikel-Objekt als Zeichenkette aufbereiten
     **/
     public String toString() {
         return "Artikel: " + artikelNr + "  Bezeichnung: " + bezeichnung + "  Bestand: " + bestand;
     }
}
```

Du solltest evtl. noch die Attribute private und die Methoden public machen...


----------



## dj3nk (3. Nov 2008)

Was genau ist der benutzername ? user+matrikelnummer oder das namensgedöns ? der nimmt keine kombi an.


----------



## Ariol (3. Nov 2008)

Der mit dem du dich auch im STL anmeldest.

i.d.R der erste Buchstabe vom Vornamen + der Nachname

evtl. sinds auch mehrere Buchstaben vom Vornamen, wenn der andere Benutzername schon vergeben ist.


----------



## dj3nk (3. Nov 2008)

geht nicht. Kanns sein das mein Benutzer noch nich freigeschaltet ist weil ich über Nachrückverfahren gekommen bin ? Auf dem Schreiben mit den Internetzugangsdaten steht das drauf. Ich denke ja mal das es sich um die selben daten für den stl server handelt.

Danke für deine Hilfe !!!!


----------



## Ariol (3. Nov 2008)

Packs doch einfach aufn USB-Stick und nimms mit


----------



## dj3nk (3. Nov 2008)

joa, wäre nich um 23:30 heute abgabeschluss und ich mich nich auf die technik verlassen hätte 

edit: nunja, ich habs mal per mail versendet ( ;P ). mal besser als gar nicht. Danke für deine nette Hilfe, jetzt habe ich erst erkannt wie man die Kommentare richtig macht für Doku und vieles mehr für nen guten Einstieg  
Ich beende den Fred mal wörtlich, da meine Klasee jetzt funktioniert (mit TestKlasse erprobt ^^)
bye


----------

