Senf
-
Gesamte Inhalte
20 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Senf
-
-
Ok
Hier ist die Hilfsklasse für die m:n Klasse:
public class ARTIKELZEITUNG { private ARTIKEL artikel; private ZEITUNG zeitung; public ARTIKELZEITUNG(ARTIKEL art, ZEITUNG zeit) { artikel = art; zeitung = zeit; } }
und hier die Assoziationsklasse:public class ABGEDRUCKT { private ARTIKELZEITUNG[] artzei; public ABGEDRUCKT() { artzei= new ARTIKELZEITUNG [1000]; } }
In welcher Klasse muss ich die Methode programmieren?
-
Nein, das hast Du nicht...
Außerdem entspricht dies nicht der Aufgabenstellung, die Aufgabenstellung lässt keine n:m Beziehung vermuten.
Doch habe ich. Natürlich habe hier nicht das ganze Projekt gepostet, da sie für diese Aufgabe nicht erforderlich sind
Du hast die Methode hier falsch angegeben, denn sie entspricht nicht der Aufgabenstellung.
Tut mir leid. es sollte die Methode artikelErstellen() sein. Der Parameter im Quellcode soll bitte ignoriert werden!
Nein, diese brauchst Du hier nicht.
Sondern?
-
Hallo
Ich habe folgende Klassen mithilfe einer n:m Beziehung verbunden:
Klasse ARTIKEL:
public class ARTIKEL { private String thema; private String ueberschrift; private int laenge; public ARTIKEL(){ laenge= 2; } public void verfassen (String t,String u) { ueberschrift = u; thema= t; } public int gibLaenge(){ return laenge; } public void themaAendern( String th ){ thema= th; } }
und Klasse ZEITUNG:public class ZEITUNG { private String name; private String typ; private String adresse; public ZEITUNG() { name = "Süddeutsche Heizung"; typ = "Newspaper"; adresse = "Straße"; } public void artikelErstellen(ZEITUNG ar){ } public void umsortieren(){ } }
Nun lautet die Fragestellung: Schreibe die Mehtode "Artikel erstellen()" der Klasse Zeitung, die folgendes bewirkt: der eingegebene Artikel wird benutzt und ein neues Artikel-Zeitungs-Paar eingetragen. Dann wird der Verlagsname abgefragt sowie die Länge des Artikels.
Ich weiß zwar, dass ich irgendwie die Punktnotation verwenden muss, habe aber keine Ahnung wie das funktionieren soll.
Kann mir jemand helfen?
-
Hallo
ich versuche gerade n:m Beziehungen mit Hilfe von Assoziationsklassen herzustellen.
Mein Projekt : Schule
Ich arbeite mit BLUEJ
Klasse der Schulklasse:
public class SCHULKLASSE { private String name; private int Klassenzimmer; private String zweig; public SCHULKLASSE(String n) { name = n; } }
Lehrerklasse:public class LEHRER { private int persnr; private String nachname; private String amtsbezeichung; public LEHRER(int nr ) { persnr= nr; } }
Hilfsklasse der Assoziationsklasse(LEHRERKLASSE):public class LEHRERKLASSE { private SCHULKLASSE klasse; private LEHRER person; public LEHRERKLASSE(SCHULKLASSE kla, LEHRER per) { klasse=kla; person= per; } }
Beziehung UNTERRICHTET:public class UNTERRICHTET { private LEHRERKLASSE[] klehrer; public UNTERRICHTET() { klehrer = new LEHRERKLASSE[100]; } public void Lehrer_zuordnen(SCHULKLASSE sklasse, LEHRER person){ klehrer= new LEHRERKLASSE(sklasse, person); } }
Mein Problem ist Folgendes: Beim Übersetzen der Klasse UNTERRICHTET erscheint folgende Fehlermeldung in der Zeile
" klehrer= new LEHRERKLASSE(sklasse, person);"
incompatible types-found LEHRERKLASSE but expected LEHRERKLASSE[]
Was hab ich falsch gemacht? Wie kann ich den Fehler beheben?
-
Hallo
ich versuche gerade n:m Beziehungen mit Hilfe von Assoziationsklassen herzustellen.
Mein Projekt : Schule
Klasse der Schulklasse:
[java]
public class SCHULKLASSE
{
private String name;
private int Klassenzimmer;
private String zweig;
public SCHULKLASSE(String n)
{
name = n;
}
}
[/java]
Lehrerklasse:
[java]
public class LEHRER
{
private int persnr;
private String nachname;
private String amtsbezeichung;
public LEHRER(int nr )
{
persnr= nr;
}
}
[/java]
Hilfsklasse der Assoziationsklasse(LEHRERKLASSE):
[java]
public class LEHRERKLASSE
{
private SCHULKLASSE klasse;
private LEHRER person;
public LEHRERKLASSE(SCHULKLASSE kla, LEHRER per)
{ klasse=kla;
person= per;
}
}
[/java]
Beziehung UNTERRICHTET:
[java]
public class UNTERRICHTET
{
private LEHRERKLASSE[] klehrer;
public UNTERRICHTET()
{
klehrer = new LEHRERKLASSE[100];
}
public void Lehrer_zuordnen(SCHULKLASSE sklasse, LEHRER person){
klehrer= new LEHRERKLASSE(sklasse, person);
}
}
[/java]
Mein Problem ist Folgendes: Beim Übersetzen der Klasse UNTERRICHTET erscheint folgende Fehlermeldung in der Zeile " klehrer= new LEHRERKLASSE(sklasse, person);"
incompatible types-found LEHRERKLASSE but expected LEHRERKLASSE[]
Was hab ich falsch gemacht? Wie kann ich den Fehler beheben?
-
Vielen Dank Klotzkopp dass sie sich für mich Zeit genommen haben. Ohne Sie hätte ich das nie geschafft.
-
Der Automat hat zu jedem Zeitpunkt genau einen Zustand. Er kann nicht alle drei Zustände gleichzeitig annehmen. Darum reicht auch eine Variable, die je nach aktuellem Zustand einen anderen Wert annimmt.
Wo und wie gebe ich der Varible verschiedene Werte? Koennten Sie mir dies bitte bei meinem Beispiel erklaeren?
Nachtrag:
Ich glaube so ist es richtig: Der Automat funktioniert einwandfrei, koennten Sie trozdem nochmal einen Blick drauf werfen?
public class Geldautomat { private int guthaben ; private int neuesGuthaben ; private int Geldbetrag ; private int maxBetrag ; private String PIN ; private String zustand ; public Geldautomat() { guthaben = 10000 ; PIN = "123"; zustand = "standby" ; maxBetrag = 1000 ; } public void karte_einwerfen (){ System.out.println("Ihre Karte wurde eingegeben.") ; zustand = "bereit" ; } public void pin_eingeben (String PIN ){ if (zustand.equals("bereit")) if (PIN.equals("123")) { System.out.println("PIN ist korrekt. Nun koennen sie ihr Geld abheben"); zustand = "verfuegbar" ; } else { System.out.println("PIN ist falsch. Der Vorgang wird abgebrochen. Ihre Karte wird ausgegeben."); zustand = "standby" ; } if (zustand.equals ("standby")) { System.out.println("Bitte Karte einwerfen!"); } } public void betrag_abheben (int Geldbetrag) { if (zustand.equals ("verfuegbar") ) { if (Geldbetrag <= maxBetrag){ neuesGuthaben = guthaben - Geldbetrag ; guthaben = neuesGuthaben ; System.out.println("Der Geldbetrag wurde abgehoben. Wollen sie noch mehr Geld abheben?"); } else { System.out.println("Der eingegebene Betrag überschreitet das Maximale!") ; } } else { System.out.println("Bitte Karte bzw. PIN eingeben.") ; } } public void karte_ausgeben () { if (zustand.equals ("bereit")) { zustand = "standby" ; System.out.println("Vorgang beendet. Ihre Karte wird ausgegeben"); } if (zustand.equals("verfuegbar")) { zustand = "standby" ; System.out.println("Vorgang beendet. Ihre Karte wird ausgegeben"); } } }
-
Nein.
Was willst du immer mit den zusätzlichen Variablen? Soll dein Automat 3 Zustände gleichzeitig annehmen, dass du 3 Variablen brauchst?
Nein ich will das der Automat 3 verschiedene Zustaende annehemn kann. Können sie mir sagen wie ich das machen muss?
-
Welchen Zustand hat dein Automat denn am Anfang?
1.Zustand
Zu Beginn ist der automat auf Standby also keine Karte ist eingworfen
2.Zustand
>>>Karte einwerfen
Dann sollte es den Zustand wechseln wenn man die Karte eingeworfen hat.
3 Zustand
>>>>PIN eingeben
Als nächstes sollte der Zustand wechseln wenn der PIN eingebene ist und man das Geld abheben kann.
Wäre es denn so richtig:
Attribute und Konstruktor:
public class Geldautomat { private int guthaben ; private int neuesGuthaben ; private int Geldbetrag ; private int maxBetrag ; private String PIN ; private String zustand1 ; private String zustand2 ; private String zustand3 ; public Geldautomat() { guthaben = 10000 ; PIN = "123"; zustand1 = "standby" ; zustand2 = "bereit" ; // bereit = Karte wurde eingeworfen => PIN kann eingegeben werden. zustand3 = "verfuegbar" ; //verfuegbar= Karte eingeworfen+richtiger PIN => Geld kann abgehoben werden maxBetrag = 1000 ; }
-
Das ist völlig sinnfrei, denn Du setzt den Zustand drei Mal und nachdem die Klasse instanziert wurde, ist der Automat im Zustand "verfuegbar". Die beiden vorhergehenden Zeilen sind überflüssig.
Was soll ich stattdessen machen?
Weiterhin enthält die Methode "karte_einwerfen" keine Zustandsprüfung. Ein dea muss immer in einem Zustand sein, d.h. Du musst sicherstellen, in welchem Zustand Du Dich befindest.Sieht es so richtig aus:
public void karte_einwerfen (){ if (zustand.equals("standby")){ System.out.println("Karte erhalten. Automat ist startbereit.") ; zustand = "bereit" ; } }
-
Ich habe bereits ein Zustandsübergangsdiagramm gemacht.
Meine Programmierung sieht nun folgendermasen aus und ich denke sie ist vollstaendig und korrekt :
public class Geldautomat { private int guthaben ; private int neuesGuthaben ; private int Geldbetrag ; private int maxBetrag ; private String PIN ; private String zustand ; public Geldautomat() { guthaben = 10000 ; PIN = "123"; zustand = "standby" ; zustand = "bereit" ; // bereit = Karte wurde eingeworfen => PIN kann eingegeben werden. zustand = "verfuegbar" ; //verfuegbar= Karte eingeworfen+richtiger PIN => Geld kann abgehoben werden maxBetrag = 1000 ; } public void karte_einwerfen (){ System.out.println("Karte erhalten. Automat ist startbereit.") ; zustand = "bereit" ; } public void pin_eingeben (String PIN ){ if (zustand.equals("bereit")) if (PIN.equals("123")) { System.out.println("PIN ist korrekt. Nun koennen sie ihr Geld abheben"); zustand = "verfuegbar" ; } else { System.out.println("PIN ist falsch. Der Vorgang wird abgebrochen. Ihre Karte wird ausgegeben."); zustand = "standby" ; } if (zustand.equals ("standby")) { System.out.println("Bitte Karte einwerfen!"); } } public void betrag_abheben (int Geldbetrag) { if (zustand.equals ("verfuegbar") ) { if (Geldbetrag <= maxBetrag){ neuesGuthaben = guthaben - Geldbetrag ; guthaben = neuesGuthaben ; System.out.println("Der Geldbetrag wurde abgehoben. Wollen sie noch mehr Geld abheben?"); } else { System.out.println("Der eingegebene Betrag überschreitet das Maximale!") ; } } else { System.out.println("Bitte Karte bzw. PIN eingeben.") ; } } public void karte_ausgeben () { if (zustand.equals ("bereit")) { zustand = "standby" ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); } if (zustand.equals("verfuegbar")) { zustand = "standby" ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); } } }
-
Warum hast du zusätzliche Variablen für zwei der drei Zustände?
Was repräsentiert die Variable zustand? Antwort: Den Zustand des Automaten.
Was repräsentiert die Variable bereiterZustand? Antwort: ?
Was repräsentiert die Variable verfuegbarerZustand? Antwort: ?
Ich habe mir dabei folgendes gedacht.
zustand beschreibt den Zustand des Automaten, wenn die Karte noch nicht eingeworfen ist.
bereiterZustand beschreibt den Zustand des Automaten, wenn die Karte eingeworfen wurde und der PIN eingegeben werden kann.
verfuegbarerZustand beschreibt den Zustand des Automaten, wenn die Karte eingeworfen wurde und die PIN korrekt eingegeben wurde. Dann kann nämlich das Geld abgehoben werden.
Für mich kling es logisch, aber womöglich ist es voelliger Schwachsinn.
Sollte ich etwa im Konstruktor folgendes schreiben:
zustand="standby"
zustand="bereit"
zustand="verfuegbar"?
Aber das wäre doch völlig verkehrt oder?
Vielen Dank dass Sie mir helfen
-
Koennen Sie mir erklaeren wie ich es mit einem Zustand programmieren kann? Das Geld soll nämlich nicht abgehoben werden, bevor die Karte eingeworfen und der PIN eingegben ist.
Andererseits fehlt hier eine Zuweisung an zustandWas muss ich hier tun?
public void karte_ausgeben () { if (zustand.equals ("bereit")) { bereiterZustand = zustand ; zustand = "standby" ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); } if (zustand.equals("verfuegbar")) { verfuegbarerZustand = zustand ; zustand = "standby" ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); }
Ist das korrekt?
Sollte ich zb verfuegbarerZustand = zustand ; schon in den Konstruktor mit einbringen?
-
OK ich habe die Fehler beheben koennen, nun sieht es so aus
public class Geldautomat { private int guthaben ; private int neuesGuthaben ; private int Geldbetrag ; private int maxBetrag ; private String PIN ; private String zustand ; private String verfuegbarerZustand ; private String bereiterZustand ; public Geldautomat() { guthaben = 10000 ; PIN = "123"; zustand = "standby" ; bereiterZustand = "bereit" ; //bereiterZustand = PIN kann eingegeben werden (d.h. Karte erhalten) verfuegbarerZustand = "verfuegbar"; // verfuegbarerZuatand = Geld kann abgehoben werden.(d.h PIN wurde korrekt eingegebe maxBetrag = 1000 ; } public void karte_einwerfen (){ zustand = bereiterZustand ; System.out.println("Karte erhalten. Automat ist startbereit.") ; } public void pin_eingeben (String PIN ){ if (zustand.equals("bereit")) if (PIN.equals("123")) { zustand = verfuegbarerZustand ; System.out.println("PIN ist korrekt. Nun koennen sie ihr Geld abheben"); } else { bereiterZustand = zustand ; System.out.println("PIN ist falsch. Der Vorgang wird abgebrochen. Ihre Karte wird ausgegeben."); } if (zustand.equals ("standby")) { System.out.println("Bitte Karte einwerfen!"); } } public void abzuhebendenBetrag_waehlen (int Geldbetrag) { if (zustand.equals ("verfuegbar") ) { if (Geldbetrag <= maxBetrag){ neuesGuthaben = guthaben - Geldbetrag ; guthaben = neuesGuthaben ; System.out.println("Der Geldbetrag wurde abgehoben. Wollen sie noch mehr Geld abheben? ."); } else { System.out.println("Der eingegebene Betrag überschreitet das Maximale!") ; } } else { System.out.println("Bitte Karte bzw. PIN eingeben.") ; } } public void karte_ausgeben () { if (zustand.equals ("bereit")) { bereiterZustand = zustand ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); } if (zustand.equals("verfuegbar")) { verfuegbarerZustand = zustand ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); } } }
-
Vielen Dank fuer diesen Link.
Nur glaube ich nicht das mir das etwas bringen wird.Wir haben bis jetzt noch nie mit dem Typ Enum gearbeitet. Unser Thema lautet "Zustandsuebergaenge mit Bedingungen". Die Zustaende sollte irgendwie automatisch wechseln.
Können Sie mir noch ein paar Tips geben bitte?
-
Verwende bitte das nächste Mal die Code-Tags. Die Zustände sollten, da sie eindeutig sind, als Enum abgelegt werden und nicht als Strings
Und wie sollte dies an Aussehen? ich kenne den Typ Enum nicht
-
Das heißt, dein Automat ist gleichzeitig in drei Zuständen? Oder warum machst du das mit drei Variablen?
Nein, mein Automat soll die Zustaende wechseln. Hab ich da etwas falsch gemacht?
-
Warum hast du mehrere Zustandsvariablen?
Der Zustand "zustand" soll bedeuten dass der Automat noch keine Karte erhalten hat , und somit keine Aktion durchfueren kann
Zustand "bereiterZustand bedeutet dass er die Karte erhalten hat und jetzt der PIN eingegeben werden kann.
Zustand "verfuegbarer Zustand heisst dass der PIN richtig eingegeben wurde und somit Geld abgehoben werden kann.
Kann ich das auch alles mit einem Zustand machen?
-
Hallo, ich muss einen Geldautomaten programmieren.
Mit diesem Automaten sollte man eine Karte einschieben, den PIN eingeben und Geld abheben koennen. Die Karte soll mit der Methode "karte_ausgeben" ausgegeben werden koennen und somit sollte der ganze Vorgang abgebrochen werden. (d.h.Zustand wieder auf Standby) Ausserdem sollte bei der ersten falsch eingegebenen PIN der Vorgang abgebrochen werden.
Meine Probleme liegen hier: Geld kann ohne Karte bzw PIN abgehoben werden.
Ausserdem kann ohne Karte der Falsche PIN eingegeben werden und dann erscheint die Nachricht "Falsche PIN. Vorgang wird abgebrochen.Karte wird ausgegeben. Bitte Karte einwerfen.
Ich hoffe es kann mir jemand helfen: Das ist meine Programmierung
public class Geldautomat { private int guthaben ; private int neuesGuthaben ; private int Geldbetrag ; private int maxBetrag ; private String PIN ; private String zustand ; private String verfuegbarerZustand ; private String bereiterZustand ; public Geldautomat() { guthaben = 10000 ; PIN = "123"; zustand = "standby" ; bereiterZustand = "bereit" ; //Bereiter Zustand = PIN kann eingegeben werden (d.h. Karte erhalten) verfuegbarerZustand = "verfuegbar"; // verfuegbarer Zuatand = Geld kann abgehoben werden( d.h. PIN korrekt) maxBetrag = 1000 ; } public void karte_einwerfen (){ zustand = bereiterZustand ; System.out.println("Karte erhalten. Automat ist startbereit.") ; } public void pin_eingeben (String PIN ){ if (zustand == "bereit") if (PIN =="123") { bereiterZustand = verfuegbarerZustand ; System.out.println("PIN ist korrekt. Nun koennen sie ihr Geld abheben"); } if (PIN !="123") { bereiterZustand = zustand ; System.out.println("PIN ist falsch. Der Vorgang wird abgebrochen. Ihre Karte wird ausgegeben."); } if (zustand == "standby") { System.out.println("Bitte Karte einwerfen!"); } } public void abzuhebendenBetrag_waehlen (int Geldbetrag) { int maxBetrag = 1000; if (verfuegbarerZustand == "verfuegbar" ) { if (Geldbetrag <= maxBetrag){ neuesGuthaben = guthaben - Geldbetrag ; guthaben = neuesGuthaben ; System.out.println("Der Geldbetrag wurde abgehoben. Wollen sie noch mehr Geld abheben? ."); } else { System.out.println("Der eingegebene Betrag überschreitet das Maximale!") ; } } else { System.out.println("Bitte Karte bzw. PIN eingeben.") ; } } public void karte_ausgeben () { if (zustand == "bereit") { bereiterZustand = zustand ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); } if (zustand == "verfuegbar") { verfuegbarerZustand = zustand ; System.out.println("Vorgang abgebrochen. Ihre Karte wird ausgegeben"); } } }
Problem mit Methode, BlueJ
in Java
Geschrieben
Hmm, das hilft mir leider nicht weiter. Könntest du mir noch eine andere Möglichkeit zeigen, wie ich die Aufgabe erfüllen kann?