Zum Inhalt springen

Senf

Mitglieder
  • Gesamte Inhalte

    20
  • Benutzer seit

  • Letzter Besuch

Beiträge von Senf

  1. 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?

  2. 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?

  3. 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?

  4. 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?

  5. 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?

  6. 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");
    
               }
    
    
    
            }
    
        }

  7. 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 ;                                       
    
            }

  8. 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" ;
    
               }
    
            } 

  9. 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");
    
               }
    
            }
    
    
    
    }
    
    

  10. 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 :)

  11. 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 zustand

    Was 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?

  12. 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");
    
               }
    
            }
    
    
    }

  13. 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?

  14. 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");
    
               }
    
            }
    
    
    }
    
    

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...