Zum Inhalt springen

Menü mit Unermenü als Klasse?


Cesse14

Empfohlene Beiträge

Hallo Leute,

da ich mich noch nicht so gut mit C# auskenne habe ich mal ne Frage,

und zwar:

Ich wollte mal aus Spaß ein Menü erstellen mit Untermenü und kauf Funktion.

Es sieht momentan so aus:

Console.WriteLine("<1> Shop");

Ich weis das ist jetzt garnichts aber jetzt muss ich es erstmal Fertig erklären.

Also wenn ich jetzt die Taste "1" drücke sollte ein Untermenü aufgehen wie folgt:

<1>Apfel 50Cent,

<2>Banane 50Cent,

<3>Wasser 25Cent,

So ich wollte es dan so machen.

if(eingabe == 1)

{

Anweisung.

}

Dan bin ich aber auf die Idee gekommen es mit Klassen zu machen.

Würde das Theoretisch gehen?

Kann man bei diesem Part:

<1> Shop -> <1> Apfel die 1 2 mal für die jeweilige Aufgabe benutzen?

Wie könnte so etwas aussehen.

MFG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, ich weiß nicht ob ich dich richtig verstanden habe, aber ich versuch's mal:

1. vll wäre es sinnvoll statt if switch-case zu verwenden, falls dein Menü mehr als 2 Kategorien haben soll, aber jeder wie er mag

2. zu den Klassen:

Du könntest eine Klasse "Shop" erstellen und eine Klasse "Ware" oder sowas.

Ware könnte die Attribute Name (zb Apfel) und Preis haben und evtl eine überschriebene toString- bzw Ausgabe-Methode, welche als String den Namen und den Preis zurückliefern

Shop enthält eine Liste vom Typ Ware, in der verschiedene Ware-Objekte gespeichert werden (Apfel, Birne, Handschuh, etc.) und eine Methode "Ausgabe", welche einen string zurückliefert, zusammengesetzt aus den Waren-Ausgaben.

Oder du sche*** auf Kapselung und rufst dann gleich von der Main-Methode die Liste von Shop auf, gehst dort jedes Element von da durch und gibst deren Ausgabe in der Konsole wider.

Hoffe ich hab verstanden was du willst, und du kannst mit oben Genanntem etwas anfangen (ich seh's schon kommen, dass es wieder eine viel leichtere Lösung gibt...)

Good luck

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey danke für die Antwort=D.

Also erstmal ich finde das diese Methode gut zum üben mit dem Umgang von Klassen ist.

Also wenn ich es richtig verstanden habe soll ich Methoden erstellen.

Die erste heißt dan z.B Ware/ware wo dan Apfel,Birne, usw mit Preis steht.

Die zweite ist dan z.B Kaufen/buy das man diese Sachen auch kaufen kann?.

MFG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein, so meinte ich das eigentlich nicht. Du hast gesagt du wolltest es mit Klassen machen, nicht mit Methoden, vielleicht habe ich falsch verstanden wie du das meinst. Ich dachte an Objektorientierung... (bist du schon so weit?)

So habe ich mir das vorgestellt:

Klasse Ware

- privaten string name

- privaten double preis

- public Konstruktor, an denen der gewünschte Name und Preis übergeben und in den privaten variablen gespeichert werden

- public methode Ausgabe gibt den string zusammengesetzt aus Name und Preis zurück (z.B. Apfel: 0.50 Euro)

Klasse Shop

- private Liste vom Typ Ware

- public Konstruktor, in dem neue Ware-Objekte zur Liste hinzugefügt werden

(z.B. Liste.Add(new Ware("Apfel", 0.50)); )

- public Methode Ausgabe gibt einen string zurück:

dabei am besten in einer For-Schleife jedes Objekt in der Liste durchgehen und zum string hinzufügen:

ausgabestring += "<" + (i + 1) + "> " + ware.Ausgabe() + Environment.NewLine (sorgt für neue Zeile in der Konsole)

Wenn alle Objekte in der Liste durchgegangen wurden, wird der komplette string zurückgegeben

- public methode kaufen (int eingegebeneZahl)

durch Liste[eingegebene Zahl - 1] kannst du dann die gekaufte Ware bestimmen

in der Main-Methode wird dann beispielsweise ein neues Objekt vom Typ shop erstellt und dann über Console.WriteLine(shop.Ausgabe()); alle Waren und Preise angezeigt.

Dort könnte dann auch die Eingabe des Nutzers abgefangen und in int-Konvertiert und an die shop.Kaufen-methode weitergeleitet werden

Soo, hoffe ich hab nix vergessen und dich nicht verwirrt. Falls du dir was anderes vorgestellt hast, sag das bitte :) Ich kann leider nicht genau einschätzen auf welchem Level du bist, man kann das auch sicher ein wenig simpler aufbauen.

Good luck

Link zu diesem Kommentar
Auf anderen Seiten teilen

class Program
{
public enum Stages:int {Start=0, Warenauswahl, Einkaufskorb, Kasse, Bezahlen, Ende}

static void Main(string[] args)
{

...

while (Einkaufsablauf != Stages.Ende)
{
Menu.PrintMenu(Einkaufsablauf);
char Eingabe = Console.ReadKey().KeyChar;
Shop.Bearbeite(Eingabe, Einkaufsablauf);
}

...

}
}
[/PHP]

Wäre ja quasi das, worauf Du hinaus möchtest?

Du hast während des Einkaufens verschiedene Stadien, die mit [i]public enum Stages:int {Start=0, Warenauswahl, Einkaufskorb, Kasse, Bezahlen, Ende}[/i] definiert werden.

Solange Dein Einkauf noch nicht beendet ist

[PHP]while (Einkaufsablauf != Stages.Ende)

soll die Menuklasse die passende Ausgabe (Menu.PrintMenu(Einkaufsablauf)) liefern. Und entsprechend der Eingabe und des derzeitigen Zustandes, wird die Anfrage bearbeitet (Shop.Bearbeite(Eingabe, Einkaufsablauf);)

Bearbeitet von lilith2k3
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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