Hi,
Undzwar habe ich eine Artikelklasse mit den Attributen:
artikelNr
artikelBezeichnung
artikelBestand.
Unsere Methoden lauten:
Bestandszugang (also eine Menge wird auf den artikelBestand draufgerechnet)
Bestandsabgang (also eine Menge wird vom artikelBestand abgerechnet)
Die Artikelklasse an sich ist fertig und funktioniert soweit auch.
Jetzt haben wir eine zweite Klasse erstellt, mit der wir die Artikelklasse über eine Schnittstelle testen wollen. Soweit so gut, es funktioniert auch alles außer der Bestandszugang.
Unser Plan ist, die Methode des Bestandzugangs aus der Artikelklasse aufzurufen.
Soweit sieht das ganze so aus:
Artikelklasse:
Jetzt der Code unserer sogenannten "ArtikelDialog"
Das Übersicht halber, habe ich euch das wichtige in ArtikelTest mal mit Strichen markiert, damit ihr besser zurecht kommt.
Meine Problem ist nun:
Wenn ich via Terminal alles eingeben will, also zuerst ein Artikel erstelle (funktioniert), dann die Eigenschaften abfrage (funktioniert auch) anschließend aber einen Bestandszugang buchen will, fragt er ganz normal um wie viel ich erhöhen will, aber er bucht es auf den aktuellen artikelBestand nicht drauf.
Was hab ich falsch gemacht?
Undzwar habe ich eine Artikelklasse mit den Attributen:
artikelNr
artikelBezeichnung
artikelBestand.
Unsere Methoden lauten:
Bestandszugang (also eine Menge wird auf den artikelBestand draufgerechnet)
Bestandsabgang (also eine Menge wird vom artikelBestand abgerechnet)
Die Artikelklasse an sich ist fertig und funktioniert soweit auch.
Jetzt haben wir eine zweite Klasse erstellt, mit der wir die Artikelklasse über eine Schnittstelle testen wollen. Soweit so gut, es funktioniert auch alles außer der Bestandszugang.
Unser Plan ist, die Methode des Bestandzugangs aus der Artikelklasse aufzurufen.
Soweit sieht das ganze so aus:
Artikelklasse:
Java:
public class Artikel
{
private int artikelNr; // Artikelnummer
private String artikelBezeichnung; // Artikelbezeichnung
private int artikelBestand; //Artikelbestand
/**
* Konstruktor mit allen Parametern
*
* @param artikelNr - Die Nummer des Artikels
* @param artikelBezeichnung - Die Bezeichnung des Artikels
* @param artikelBestand - Der Bestand an Artikeln
*/
public Artikel(int artikelNr, String artikelBezeichnung, int artikelBestand) {
assert artikelNr >= 1000 && artikelNr <=9999:
"Die Artikelnummer muss vierstellig und positiv sein!";
assert artikelBezeichnung != null:
"Die Artikelbezeichnung darf nicht null sein !";
assert artikelBestand >= 0:
"Der Artikelbestand darf nicht kleiner als 0 sein!";
this.artikelNr = artikelNr;
this.artikelBezeichnung = artikelBezeichnung;
this.artikelBestand = artikelBestand;
}
/**
* Konstruktor mit den Parametern Artikelnummer und Artikelbezeichnung
* @param artikelNr - Die Artikelnummer
* @param artikelBezeichnung - Die Bezeichnung des Artikels
*/
public Artikel (int artikelNr, String artikelBezeichnung){
this(artikelNr, artikelBezeichnung, 0);
}
/**
* Konstruktor mit den Parametern Artikelnummer und Artikelbestand
* @param artikelNr - Die Artikelnummer
* @param artikelBestand - Der aktuelle Artikelbestand
*/
public Artikel (int artikelNr, int artikelBestand) {
this(artikelNr, "", artikelBestand);
}
/**
* Der Bestand wird erhöht
* @param zugang - die Menge, um die der Bestand erhöht wird
*/
public void bestandsZugang(int zugang){
artikelBestand = artikelBestand + zugang;
assert zugang > 0: "Der Bestandszugang muss größer als 0 sein!";
}
/**
* Der Bestand wird vermindert
* @param abgang - die Menge, um die der Bestand vermindert wird
*/
public void bestandsAbgang(int abgang){
artikelBestand = artikelBestand - abgang;
assert abgang > 0: "Der Bestandsabgang muss größer als 0 sein!";
}
/**
* Ausgabe des Objekts mit den Eigenschaften Artikelnummer, Artikelbezeichnung und Artikelbestand
*/
public String toString() { // Ausgabe des Objekts mit den Eigenschaften Artikelnummer, Artikelbezeichnung und Artikelbestand
return "Artikel: " + artikelNr + " artikelBezeichnung: " + artikelBezeichnung + " artikelBestand: " + artikelBestand;
}
/**
* Zur Abfrage des Attributs "Artikelnummer"
*/
public int getArtikelNr() {
return artikelNr;
}
/**
* Zur Abfrage des Attributs "Artikelbezeichnung"
*/
public String getArtikelBezeichnung() {
return artikelBezeichnung;
}
/**
* Zur Abfrage des Attributs "Artikelbestand"
*/
public int getArtikelBestand() {
return artikelBestand;
}
// Set-methoden zum verändern von Variablen
/**
* Zum Verändern der aktuellen Artikelnummer
* @param neueArtikelNr - die neue Artikelnummer
*/
public void setArtikelNr (int neueArtikelNr){
neueArtikelNr = neueArtikelNr;
assert neueArtikelNr >= 1000 && artikelNr <=9999: "Die Artikelnummer muss vierstellig und positiv sein!";
}
/**
* Zum Verändern der aktuellen Artikelbezeichnung
* @param neueArtikelBezeichnung - die neue Artikelbezeichnung
*/
public void setArtikelBezeichnung (String neueArtikelBezeichnung){
artikelBezeichnung = neueArtikelBezeichnung;
assert neueArtikelBezeichnung != null: "Die Artikelbezeichnung darf nicht null sein !";
}
/**
* Zum Verändern des aktuellen Artikelbestands
* @param neuerArtikelBestand - der neue Artikelbestand
*/
public void setArtikelBestand (int neuerArtikelBestand){
neuerArtikelBestand = neuerArtikelBestand;
assert neuerArtikelBestand >= 0: "Der Artikelbestand darf nicht kleiner als 0 sein!";
}
}
Jetzt der Code unserer sogenannten "ArtikelDialog"
Java:
import java.util.Scanner;
public class ArtikelDialog
{
private Artikel artikel1;
private Scanner input = new Scanner(System.in);
private static final int ANLEGEN = 1;
private static final int ANZEIGEN = 2;
private static final int ZUGANG = 3;
private static final int ABGANG = 4;
private static final int SET_ARTIKELBEZEICHNUNG = 5;
private static final int SET_ARTIKELBESTAND = 6;
private static final int ENDE = 0;
public static void main (String[] args){
new ArtikelDialog().Start();
}
private void Start(){
int funktion = -1;
while (funktion != ENDE){
try{
funktion = einlesenFunktion();
ausführenFunktion(funktion);
}
catch (Exception e){
System.out.println(e);
}
catch (AssertionError e){
System.out.println(e);
}
}
}
private int einlesenFunktion() {
System.out.print("\n" + ANLEGEN + " : anlegen; "+
"\n" + ANZEIGEN + " : anzeigen; "+
"\n" + ZUGANG + " : erhöhen; " +
"\n" + ABGANG + " : vermindern; " +
"\n" + SET_ARTIKELBEZEICHNUNG + " : setArtikelBezeichnung; " +
"\n" + SET_ARTIKELBESTAND + " : setArtikelBestand; " +
"\n" + ENDE + " : beenden -> ");
return input.nextInt();
}
public void createArtikel()
{
int artikelnr;
String artikelBezeichnung;
int artikelBestand;
int menge;
System.out.print("Artikelnummer: ");
artikelnr = input.nextInt();
System.out.print("Artikelbezeichnung: ");
artikelBezeichnung = input.next();
System.out.print("Artikelbestand: ");
artikelBestand = input.nextInt();
artikel1= new Artikel(artikelnr, artikelBezeichnung, artikelBestand);
}
public void showArtikel(){
System.out.println(this.artikel1.toString());
}
________________________________________________________________
public void artikelZugang (){
int artikelBestand;
int menge;
System.out.print("Bestandszugang: ");
menge = input.nextInt();
_________________________________________________________
}
public void ausführenFunktion( int funktion) {
switch (funktion)
{
case ANLEGEN: createArtikel();
break;
case ANZEIGEN: showArtikel();
break; ___________________________________________________
case ZUGANG: artikelZugang();
break;
_________________________________________________________
}
}
}
Das Übersicht halber, habe ich euch das wichtige in ArtikelTest mal mit Strichen markiert, damit ihr besser zurecht kommt.
Meine Problem ist nun:
Wenn ich via Terminal alles eingeben will, also zuerst ein Artikel erstelle (funktioniert), dann die Eigenschaften abfrage (funktioniert auch) anschließend aber einen Bestandszugang buchen will, fragt er ganz normal um wie viel ich erhöhen will, aber er bucht es auf den aktuellen artikelBestand nicht drauf.
Was hab ich falsch gemacht?