myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Code-Reviews » Stimmt der Weg zum OOP Code? Was lege ich wo hin?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Stimmt der Weg zum OOP Code? Was lege ich wo hin?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Cplusplusler
myCSharp.de-Mitglied

Dabei seit: 11.06.2020
Beiträge: 3


Cplusplusler ist offline

Stimmt der Weg zum OOP Code? Was lege ich wo hin?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Kaum zu glauben, das ich hier doch mal ein Beitrag verfasse. vor zwei Jahren hab ich eure Beitrage still und heimlich gelesen, und hab mich gefragt was ihr für Kryptische Sachen Postet Augenzwinkern

Nu bin ich mal dran, denn für meinen Problem habe ich kein Beitrag gesehen oder ich bin zu speziell Zunge raus

Ich hab vorher mit C++ Angefangen, leider hab ich bei dem Buch von Jürgen Wolf eine Kriese bekommen , SCHEIß buch!!

Nu hab ich doch wieder mit dem Programmieren angefangen, da es wirklich spaß macht und ich auch dafür ein kleines Händchen dafür habe, aber leider aber auch mit Fehlern , wie ihr gleich sehen wird.

Ich bin bei der Objekt Orientierung Programmierung angekommen, also bei Klassen usw.

Da die Übungen ausschließlich nur in der Main Methode gemacht wurden. weiß ich jetzt überhaupt nicht was ich in den Klassen packe und was ich in der Main Packe. genauso weiß ich nicht was ich alles in den Methoden der klasse packe.

Ich weiß was mit Objekt Orientiert arbeiten ist. also Beispiel eine Person, Person hat ein Name alter usw. aber wendet das mal auf ein Konsolen Projekt an. das finde ich gleich viel schwerer.

Mein Quelltext ist noch nicht Fertig. der Login fehlt noch. genauso das der Betreiber selbst die preise setzen kann. ich hab das erstmal Manuell gemacht. Probleme beim denken gibt es auch bei (get, set ). Kommt die switch Auswahl in die Main, oder doch in die Klasse so wie ich das gemacht habe. genauso die eingaben , kommen die in die Main oder so wie ich das in den klasse gemacht habe.

Mein Erstes Projekt, vorher hatte ich nur Theorie smile Fehlt mir mal bitte.

ganz wichtig ist, bin ich auf dem richtigen weg, oder sollte ich das Programmieren lassen?
manchmal denke ich auch zu Kompliziert großes Grinsen
Editiert:
Was gehört in den Klassen und was gehört in die Main Methode, sollte das Willkommen s logo in die main oder in die Klasse. wie sehe ich wo was rein kommt?

Abgesehen von den Namenskonvention und mein Schreibfehlern . bin ich auf dem richtigen weg?
Das ist mein erster Quelltext, und natürlich noch nicht fertig.
Hier Mein Quelltext

C#-Code:
using System;

namespace Kaffeautomat
{
    class Program
    {
        static void Main(string[] args)
        {
            Kaffeautomat meinCaffo = new Kaffeautomat(15);

            //Willkllcome logo
            Console.WriteLine("Willkommen bei Caffo..................");
            Console.WriteLine(".........Ihr Kaffe .Service...........");
            Console.WriteLine("......................................");
            Console.WriteLine("..............By Steven...............");
            Console.WriteLine("......................................");
            Console.WriteLine("......................................");
            Console.Write("Bennden mit ESC ..Weiter mit ENTER/Login\n\n");
            Console.ReadLine();
            Console.Clear();


            meinCaffo.KaffePreiseInfo();

            meinCaffo.KaffeAuswahl();






        }
    }
}
[\CSHARP]

[CSHARP]ä

[CSHARP] using System;
using System.Collections.Generic;
using System.Text;

namespace Kaffeautomat
{
    class Kaffeautomat
    {
        //Kontostand in dem Automat
        //Die Maximal Summe
        private double _kontostand;
        private double _einzahlung;
        //Faffesorten
        enum KAFFESORTEN { KaExcelsa, Arabica, Robusta, Maragogype, Liberia, Kopi, Luwak }

        //Mit einem Wert initialisieren.
        public Kaffeautomat(double kontostand)
        {
            _kontostand = 0;

        }
        //Kaffesorten
        //Etgegengenommenen Euro,s
        public double Eeinzahlung
        {
            get { return _einzahlung; }
            set { _einzahlung = value; }


        }

        //Die auswahl Der Kaffesorte
        private int kaffeAusswahl;
        internal void KaffeAuswahl()
        {

            do
            {

                //Auswahl der kaffe
                //Dabei Kontollerien das die eingabe Richtig ist              


                try
                {
                    Console.WriteLine("Bitte wählen sie:");
                    kaffeAusswahl = Convert.ToInt32(Console.ReadLine());

                }
                catch (FormatException)//Format ist falsch
                {
                    Console.WriteLine("bitte geben geben sie ein Richtigen Wert ein");


                }
                catch (OverflowException)
                {
                    Console.WriteLine("Der eingegebene Wert ist zu Groß.");
                }


                //Die eingabe zu ordnen
                switch (kaffeAusswahl)
                {
                    case 1:
                        Console.WriteLine("Bitteschön ihre auswahl {0}", KAFFESORTEN.Arabica);
                        break;
                    case 2:
                        Console.WriteLine("Bitteshön Ihre Auswahl {0}", KAFFESORTEN.KaExcelsa);
                        break;
                    case 3:
                        Console.WriteLine("Bitteschön ihre auswahl {0}", KAFFESORTEN.Kopi);
                        break;
                    case 4:
                        Console.WriteLine("Bitteschön ihre auswahl {0}", KAFFESORTEN.Liberia);
                        break;
                    case 5:
                        Console.WriteLine("Bitteschön ihre auswahl {0}", KAFFESORTEN.Luwak);
                        break;
                    case 6:
                        Console.WriteLine("Bitteschön ihre auswahl {0}", KAFFESORTEN.Maragogype);
                        break;
                    case 7:
                        Console.WriteLine("Bitteschön ihre auswahl {0}", KAFFESORTEN.Robusta);
                        break;

                    default:

                        Console.WriteLine("Keine auswahl getroffen, oder falsche sich vertippt?!");
                        kaffeAusswahl = 99;
                        break;
                }







            } while (kaffeAusswahl != 99);


        }
        internal double Einzahlung(double einzahlung)
        {
            this._einzahlung = einzahlung;
            return einzahlung;

        }

        //Preise die von Betreiber festgelegt werden
        private double _preisKaExcelsa = 1.20;
        private double _preisArabica =1.10;
        private double _preisRobusta = 1.50;
        private double _preisMaragogype = 1.10;
        private double _preisLiberia = 2.10;
        private double  _preisKopi = 2.90;
        private double _preisLuwak = 0.99;

        //Preise Ausgeben die der Benutzer sehen kann ,die von Betreiber Festgelegt wurden
        internal void KaffePreiseInfo()
        {

            Console.WriteLine("1 KaExcelsa {0} Euro ", _preisKaExcelsa);
            Console.WriteLine("2 Arabica   {0} Euro", _preisArabica);
            Console.WriteLine("3 Robusta   {0} Euro", _preisRobusta);
            Console.WriteLine("4 Maragogyp {0} Euro", _preisMaragogype);
            Console.WriteLine("5 Liberia   {0} Euro", _preisLiberia);
            Console.WriteLine("6 Kobi      {0} Euro", _preisKopi);
            Console.WriteLine("7 Luwak     {0} Euro", _preisLuwak);
        }
        internal void Menu()
        {

            //Willkllcome logo
            Console.WriteLine("Willkommen bei SRATO..................");
            Console.WriteLine(".........Ihr Kaffe .Service...........");
            Console.WriteLine("......................................");
            Console.WriteLine("..............By Steven...............");
            Console.WriteLine("......................................");
            Console.WriteLine("......................................");
            Console.Write("Bennden mit ESC .. ENTER zu Login\n\n");

        }


    }
}
[\CSHARP]


mycsharp.de  Moderationshinweis von Abt (11.06.2020 09:54):

Du suchst Hilfe im Forum, dann wäre es auch toll, wenn Du  [Hinweis] Wie poste ich richtig? beachten würdest.
Stell Dir vor jeder nennt sein Thread hier "Brauche Hilfe"....

Beachte auch dass ein Helfer halt nur helfen kann, wenn Du auch Fragen stellst.
Leider muss man raten, was Deine Frage ist.

Eventuell ist es auch ein Review, dann biste im komplett falschen Forenbereich.

 

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Cplusplusler am 11.06.2020 12:10.

11.06.2020 07:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
chilic
myCSharp.de-Poweruser/ Experte

Dabei seit: 12.02.2010
Beiträge: 2.056


chilic ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ganz schön viel Text, ich versuche deine Fragen zu erraten. (Da stecken gleich zwei Hinweise drin Augenzwinkern )

Du definierst Kaffeesorten und Preise fest im Programm. Ein produktiv genutztes Programm würde sich diese Daten aus einer Datei oder Datenbank einlesen und in eine Liste stecken, die variabel viele Elemente aufnehmen kann. Siehe List<> oder was es eben alles gibt.

Dazu könntest du also eine Klasse namens "Kaffee" nutzen, die den Namen der Sorte und den Preis enthält. Es gibt dann so viele Objete vom Typ "Kaffee", wie das Programm eben gerade findet.
Das Programm hat dann kein switch auf feste Werte, sondern durchsucht diese Liste und schaut ob es was passendes findet.

Wäre dann so:
if (eingegebeneZahl < 1 || eingegebeneZahl > Anzahl Elemente in der Liste) dann Fehler.
else nimm Listenelement [eingegebener Wert -1] -1 denn die Zahl 1 entspricht dem Index 0!

Der Bezahlvorgang könnte in eine eigene Klasse kommen. Die merkt sich wie viel eingezahlt wurde und tut alles was mit Geld zu tun hat. Wechselgeld rausgeben, man kann sie fragen ob jemand den gewählten Kaffee bekommen darf usw.

Schöner wäre es, eine Klasse "Kaffeesortenliste" oder gern auch mit besserem Namen zu nutzen. Diese Klasse enthält die Liste der Kaffeesorten und kann die Kaffeeliste von irgendwo her laden und auch nach einem bestimmten Kaffee durchsuchen.
Damit hast du alles was sich auf die Kaffeeliste bezieht, sauber in eine eigene Klasse gepackt, für dich heißt das der ganze Code der diese Liste bearbeitet, steckt in einer eigenen Datei.


Dein throw nach dem continue wird übrigens nicht ausgeführt, denn continue springt ja von dieser Stelle weg. Ich nehme an du willst an dieser Stelle auch keine Exception auslösen.

Jetzt stellst du am besten die nächste Frage die dich bewegt.

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von chilic am 11.06.2020 09:28.

11.06.2020 09:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Cplusplusler
myCSharp.de-Mitglied

Dabei seit: 11.06.2020
Beiträge: 3

Themenstarter Thema begonnen von Cplusplusler

Cplusplusler ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sorry, kommt nicht nochmal vor.
Danke für dein großen Text Zunge raus
Ich bin zwar noch nicht so weit, also ich weiß noch nicht wie man das in einer Datei oder Datenbank Speichert. Wenn ich mein wissen festigen konnte was Klassen angeht, dann werde ich mich Mit Datenbanken beschäftigen.

Ich werde mir das nachher mal in mein Notiz Buch Schreiben Bitte schau in die SDK-/MSDN-Doku , und mein Caffooo Automat Editieren Augenzwinkern . Also ich melde mich dann nochmal großes Grinsen

von <list> nur von gehört, aber ich denke es sollte wie bei C++ wie der <vector> sein oder? Ich guck nachher mal in die Reference . danke

Hab meine Frage Editiert Sorry nochmal


mycsharp.de  Moderationshinweis von Abt (11.06.2020 12:51):

Keine Full Quotes
 [Hinweis] Wie poste ich richtig?

 
11.06.2020 12:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.242
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

bitte zitiere keine Vollbeiträge.

Ansonsten: Du musst im ersten Schritt die Kaffeesorten ja nicht in einer Datenbank speichern. Du kannst sie auch erst mal im Code festlegen und später die Datenquelle anpassen.
11.06.2020 12:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.280
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Erneut der Hinweis auf  [Hinweis] Wie poste ich richtig?
Bitte beachten, sonst funktioniert das hier nicht.
Du suchst hier schließlich Hilfe.
11.06.2020 12:51 Beiträge des Benutzers | zu Buddylist hinzufügen
KroaX KroaX ist männlich
myCSharp.de-Mitglied

avatar-4080.jpg


Dabei seit: 31.08.2009
Beiträge: 301
Herkunft: Köln


KroaX ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich hätte ein paar generelle Tipps für dich:

- Programmieren ist zum allergrößten Teil Erfahrung. Erfahrung erlernt man nicht aus Büchern (die sind aber natürlich trotzdem wichtig) und man muss viel Zeit mitbringen. Das Programmieren sein zu lassen würde ich dir also nur dann raten wenn es dir keinen Spaß macht. Ansonsten gilt: Bleib dran auch wenn es stellenweise frustrierend sein kann.

- Du glaubst Objektorientierung verstanden zu haben. Aber das ganze geht weit über die Verwendung von Objekten hinaus. Und auch die OOP ist kein Allheilmittel. Ich habe das Gefühl das dir ein Buch über Entwurfsmuster einen großen Schritt ermöglichen würde. Buchempfehlung hier: "Head first design patterns" ( wenn du es magst das Dinge wirklich einfach und verbildlicht erklärt sind ) oder "Design Patterns. Elements of Reusable Object-Oriented Software" ( mehr text aber eigentlich die bessere Lektüre ).

- Es ist gut wenn du fragst was andere über deinen Code denken. Das zeigt das du selbst reflektiert bist und Kritik zulässt. Das ist ein sehr wichtiger Faktor in der Softwareentwicklung. Bleib dabei von anderen etwas zu lernen und gib weiter was du selbst verstanden hast.

- Es gibt nur ganz selten den einen richtigen Weg. Gewöhne dir an darüber nachzudenken was für deinen Anwendungsfall gerade die beste Lösung zu sein scheint ( unter den dir wichtigsten Gesichtspunkten ). Du wirst merken, dass man nicht immer alle Vorteile eines Weges bekommen kann ohne andere Nachteile mit zu ziehen. Daher ist es wichtig sich zu überlegen was man erreichen will.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von KroaX am 12.06.2020 09:10.

12.06.2020 09:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
M.L.
myCSharp.de-Mitglied

Dabei seit: 26.09.2006
Beiträge: 233
Entwicklungsumgebung: VS Community '19


M.L. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zusätzlich:

Zitat:
von <list> nur von gehört, aber ich denke es sollte wie bei C++ wie der <vector> sein oder?

Das könnte sogar passen, vgl.  Vector & C++ sowie  List & C#
Der gepostete Code scheint auch teilweise von C++-Richtlinien (Stichwort: Unterstriche, Ungarische Notation) beeinflusst zu sein ? Diese hat(te) in C/C++ durchaus Sinn, sollte in C# aber vermieden werden:  https://stackoverflow.com/questions/4502...is-the-question
Was Architektur und Software-Design angeht, siehe den kurzen Beitrag unter  java-forum.org
12.06.2020 15:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 5 Monate.
Der letzte Beitrag ist älter als 5 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 23.11.2020 17:17