Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Design für eine Klasse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.09.2006, 11:22 Uhr
masterblume



Hallo,

ich habe ein Problem mit einem Klassen-Design

Ich soll eine Eventklasse für ein Kassensystem designen.

Leider fällt mir dazu nichts richtiges ein.

Das ist die Aufgabenstellung:

Zitat:

Aufgabenstellung
Die Firma entwickelte in den letzten Monaten eine neue Kassensoftware für ihre Filialen.
Eine Besonderheit ist dabei die Aufteilung in zwei getrennte Prozesse,
ein Verwaltungsprozess für die Kassenperipherie (KassenClient in C) und
ein Hardware unabhängiger Prozess für die Geschäftslogik (Kasse in C++).
Unter Linux gibt es mehrere Techniken für die Interprozesskommunikation
( Sockets, Shared Memory, Named Pipes, Message Queues, ... ).
In unserer Software verwenden wir Message Queues.

D.h. Befehle (Kasse -> KassenClient) und Nachrichten (KassenClient -> Kasse)
werden durch Messages dargestellt und im jeweiligen Prozess interpretiert bzw. ausgewertet.

ein paar Nachrichten sind z.B.
- Taste '1' wurde gedrückt
- Druckerabdeckung ist offen
- Scannerdaten sind vorhanden
- Schublade ist offen/zu
- Schublade ist gerade auf/zu gegangen

ein paar Befehle sind z.B.
- öffne Schublade
- drucke eine Zeile "ich bin eine Druckerzeile" auf den Bondrucker
- zeige "ich bin eine Displayzeile" auf dem Kundendisplay

Da die Geschäftslogik in C++ geschrieben wurde wird eine Message aus der Queue
gelesen und in ein Objekt einer Klasse POSEvent umgewandelt.

wie könnte die Klasse POSEvent definiert sein?



Es ist auch nur eine Testaufgabe.

Was ich bis jetzt hab sind solche Sachen wie:


C++:
//Klassendefinition
class POSEvent
{
public:
   POSEvent();
  
   double GibGesamtBetrag();
   double GibRestgeld();
   ZahlungPerEC();
   ZahlungPerBar();
   ZahlungPerKreditkarte();
   ZahlungErhalten();
   ECKarteUngueltig();
   KreditkarteUngueltig();



Ich weiß einfach nicht, ob ich mich auf dem richtigen Weg befinde!

Klar ist mir natürlich auch, dass ihr mir jetzt hier keine Super Klasse hinzaubert.
Das erwarte ich auch nicht, mir wären Tipps, Denkanstöße, Hinweise oder Quellenangaben wo ich so etwas nachlesen könnte hilfreich.

Ich hoffe, ich habe im richtigen Bereich gepostet.

Über jeder Hilfe bin ich dankbar.

Gruss Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.09.2006, 11:55 Uhr
Spacelord
Hoffnungsloser Fall


www.ddj.com/dept/cpp/184429055

Um die Brücke von ner C Nachrichtenstruktur zu ner C++ Klasse zu schlagen würde sich imho ne Factory anbieten.

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.09.2006, 15:14 Uhr
masterblume



Das habe ich geschrieben um die Message in C zu behandeln.


C++:
#define ERROR               0
#define TIMEOUT             1
#define NOWAIT                2
...


/*Grundlegende Struktur einer Message*/
struct message_pos_Reno
{
    int mess_type;  /* Message Typ*/
    long    mess_size; /* Länge der Message*/
    char *buffer;   /* Text der Message*/
};

/*Erweiterte Struktur einer Message*/
struct message_pos_Reno
{
    int mess_type;    /* Message Typ*/
    int sender;           /* ID des Senders*/
    int receiver;       /* ID des Empfengers*/
    struct info data; /* Beispiel: Länge und Inhalt der Message */
};


/*Funktionen*/
/*msgflag = Bezieht sich auf die Waitrichtlinien z.B. TIMEOUT oder NOWAIT*/
/*Rückgabewert = Message ID*/
int createMessage(int msgflag);

/*Rückgabewert = Könnte eine Statusmeldung sein*/
int sendMessage(int messID, struct message_pos_Reno *mymess, int messsize);
int receMessage(int messID, struct message_pos_Reno *mymess, int messsize);
/*Schliesst den Message Queue*/
int closeMessage(int messID);



Die Frage ist, bin ich auf dem richtigen Weg und wie könnte ich das Message Handling von Dr. Dobb's bei einbauen. Um das Ausfüllen der Methoden mit Programmcode, geht es mir in erster Linie eigentlich überhaupt nicht. Es soll nur ein "oberflächliches" Design sein.

Ich muss zu meiner "Schande" gestehen ich hab schon länger nicht mehr mit C/C++ gearbeitet und wenn dann nur mit VC++ oder Borland C++ Compailer

Ich kann es mir einfach nicht richtig vorstellen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: