Zum Inhalt springen

Methode Implementieren


MMazi

Empfohlene Beiträge

Hallo Alle zusammen,

ich hoffe kann ich hier eine lösung für meine Aufgabe bekommen.

d) Implementieren Sie die folgende Methode:

 

public bool macheKaffee(double menge, double verhaeltnisWasserBohnen);

 

Es soll nun ein Kaffee zubereitet werden.

Die Gesamtmenge an produziertem Kaffee wird über den Parameter menge (in kg) angegeben.

 

Der Parameter verhaeltnisWasserBohnen gibt an, in welchem Verhältnis Wasser und Bohnen für die Zubereitung des Kaffees verwendet werden:

 

 

1 bedeutet, dass gleich viel Wasser und Bohnen verwendet werden

2 bedeutet, dass doppelt soviel Wasser wie Bohnen verwenden werden

0,5 bedeutet, dass halb soviel Wasser wie Bohnen verwendet werden

 

Beispiel: Als Menge wird 0,15 angegeben, als Verhältnis 2. Dann soll der Kaffee aus 0,1 kg Wasser und 0,05 kg Bohnen produziert werden.

 

 

 

 

Prüfen Sie zunächst, ob noch genügend Wasser und Bohnen für die vollständige Zubereitung der gewünschten Menge vorhanden sind.

 

Nur wenn das der Fall ist, passen Sie den Füllstand von Wasser und Bohnen entsprechend an. Zudem soll der Parameter gesamtMengeKaffeProduziert um die produzierte Menge vergrößert werden.

 

Wenn nicht genügend Wasser oder Bohnen für die vollständige Zubereitung vorhanden sind, soll kein Kaffee zubereitet werden, d.h. die Füllstände sollen auch nicht geändert werden.

 

Der Rückgabewert soll angeben, ob der Kaffee zubereitet wurde (true) oder nicht (false).

 

ich würde dankbar sein für eure Lösungvorschläge..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok hier ist meinen Lösungvorschlag:

 

using System;
using System.Collections.Generic;
using System.Text;

namespace Kaffemaschine
{
    class Kaffeemachine
    {
        // Eigenschaften von Klasse Kaffemaschine
        public double Wasser
        { get; private set; }
        public double Bohnen
        { get; private set; }
        public double GesamtMengeKaffeeProduziert
        { get; private set; }


        // statische private Attribute von Klasse Kaffemaschine

        private static readonly double maxWasser = 2.5;

        private static readonly double maxBohnen = 2.5;
        private double verhaeltnisWasserBohnen;

        // Konstruktor Initialisierung

        public Kaffeemachine()
        {
            Wasser = 0;
            Bohnen = 0;
            GesamtMengeKaffeeProduziert = 0;


        }
        public Kaffeemachine(double wasser)
        {
            Wasser = wasser;
            Bohnen = 0;


        }

        public Kaffeemachine(double wasser, double bohnen)
        {
            Wasser = wasser;
            Bohnen = bohnen;
        }


        public string GetBohnenKG()
        {
            return Bohnen + " kg";
        }
        public string GetWasserKG()
        {
            return Wasser + " kg";
        }


        public double WasserAuffuellen(double menge)
        {
         

            if (menge <= 0) return 0;
           

            if (Wasser + menge <= maxWasser)
            {
                Wasser += menge;// Wasser = Wasser + menge
                return menge;

            }
            else
            {
                double result = menge - ((Wasser + menge) - maxWasser);
                Wasser = maxWasser;
                return result;
            }

           

        }


        public double BohnenAuffuellen(double menge)
        {
           

            if (menge <= 0) return 0;
          

            if (Bohnen + menge <= maxBohnen)
            {
                Wasser += menge;// Wasser = Wasser + menge 
                return menge;

            }
            else
            {
                double result = menge - ((Bohnen + menge) - maxBohnen);
                Bohnen = maxBohnen;
                return result;
            }
        }

 

 

 

Public bool machkaffee(double menge, double verhaeltnisWasserBohnen)

{ if ( menge <=o || verhaeltnisWasserBohnen <=0 )

return false;

double bohnenAntei = menge / verhaeltnisWasserBohnen ;

double WasserAntei = menge -bohnenAnteil;

if (bohnenAnteil > bohnen || WasserAnteil > Wasser )

return false;

 

bohnen -= bohnenAnteil;

Wasser -= WasserAnteil;

GesamtMengeKaffeeProduzieret += menge;

return true;

}

 

Bearbeitet von MMazi
Link zu diesem Kommentar
Auf anderen Seiten teilen

Etwas abseits der Aufgabenstellung, den Unterschied zwischen einer statischen Variable und einer Konstante kennst du?

Ich verwende kein C# aber ich würde fast behaupten, dass Bezeichner von Variablen wahrscheinlich auch in C# per Konvention immer klein anfangen. Korrigiert mich wenn dem so nicht ist.

Bitte Quellcode immer in die Code-tags setzen, für die Lesbarkeit.

 

Und wo hapert es jetzt?

Bearbeitet von Def_Con
Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antworten. die hier habe von anderes Forum :

Hallo

Objekte, also die Instanzen von einer Klasse, fangen immer mit einer
kleinen Wortgruppe an, Bsp:

Klasse meineKlasse = new Klasse();

Also im Prinzip auch Kamelschreibweise, nur dass klein angefangen
wird.
Klassennamen fangen groß an, genau wie Methoden oder Properties. Aber
auch hier gilt immer die Kamelschreibweise. Bei Properties macht man
das dann so:

private string _customerID;

public string CustomerID
{
 get
 {
  return this._customerID;
 }
 get
 {
  this._customerID = value;
 }
}

Also die geschützten Felder, für die es eine Eigenschaft gibt,
sollten immer mit einem Unterstrich anfangen.

MfG

 

nun in der Aufgabe gibt es einen teil welche mit If definiert werden könnte :

((

d) Implementieren Sie die folgende Methode:

 

public bool macheKaffee(double menge, double verhaeltnisWasserBohnen);

 

Es soll nun ein Kaffee zubereitet werden. Die Gesamtmenge an produziertem Kaffee wird über den Parameter menge (in kg) angegeben.

 

Der Parameter verhaeltnisWasserBohnen gibt an, in welchem Verhältnis Wasser und Bohnen für die Zubereitung des Kaffees verwendet werden:

 

1 bedeutet, dass gleich viel Wasser und Bohnen verwendet werden

2 bedeutet, dass doppelt soviel Wasser wie Bohnen verwenden werden

0,5 bedeutet, dass halb soviel Wasser wie Bohnen verwendet werden

 

Beispiel: Als Menge wird 0,15 angegeben, als Verhältnis 2. Dann soll der Kaffee aus 0,1 kg Wasser und 0,05 kg Bohnen produziert werden. ))

ich würde mit If jede von die Wasser und Kaffee verhältnisse abfragen bzw definieren..

wie würdet Ihr vorgehen ?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

beim Bohnen auffüllen ist auch noch ein Fehler drin.

        public double BohnenAuffuellen(double menge)
        {
           
            if (menge <= 0) return 0;
          
            if (Bohnen + menge <= maxBohnen)
            {
                Wasser += menge;// Wasser = Wasser + menge 
                return menge;
            }
            else
            {
                double result = menge - ((Bohnen + menge) - maxBohnen);
                Bohnen = maxBohnen;
                return result;
            }
        } 

Wenn du beim Schreiben von Posts im Editor auf den Button "<>" drückst bekommst du ein extra Eingabefeld für deinen Code. Dann lässt sich das ganze besser lesen.

vor 22 Stunden schrieb MMazi:

wie würdet Ihr vorgehen ?

Anhand des Verhältnisses und der Menge berechnen welche Mengen an Bohnen und Wasser benötigt werden.

Dann prüfen, ob genug Bohnen und Wasser vorhanden sind. Der Rest läuft dann eigentlich so wie du es schon gemacht hast.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin

Danke für die schnelle Antwort

habe der code mit hilfe meinen Ausbilder korrigiert , so sieht nun aus .

using System;
using System.Collections.Generic;
using System.Reflection.Metadata.Ecma335;
using System.Text;

namespace Kaffemaschine
{
    public class Kaffeemaschine
    {
        // Eigenschaften von Klasse Kaffemaschine
        public double Wasser
        { get; private set; }
        public double Bohnen
        { get; private set; }
        public double GesamtMengeKaffeeProduziert
        { get; private set; }


        // statische private Attribute von Klasse Kaffemaschine

        private static readonly double maxWasser = 2.5;

        private static readonly double maxBohnen = 2.5;
        private double verhaeltnisWasserBohnen;

        // Konstruktor Initialisierung

        public Kaffeemaschine()
        {
            Wasser = 0;
            Bohnen = 0;
            GesamtMengeKaffeeProduziert = 0;


        }
        public Kaffeemaschine(double wasser)
        {
            Wasser = wasser;
            Bohnen = 0;


        }

        public Kaffeemaschine(double wasser, double bohnen)
        {
            Wasser = wasser;
            Bohnen = bohnen;
        }


        // Konkatenation   , Es soll nun ein Kaffee zubereitet werden. Die Gesamtmenge an produziertem Kaffee wird über den Parameter menge (in kg) angegeben. 
        public string GetBohnenKG()
        {
            return Bohnen + " kg";
        }
        public string GetWasserKG()
        {
            return Wasser + " kg";
        }


        public double WasserAuffuellen(double menge)
        {
            // prüfen ob die Behälter leer sind ( return in if statment )

            if (menge <= 0) return 0;
            //Die Methoden sollen jeweils den Wasserfüllstand und die Menge der enthaltenen Kaffeebohnen gemäß des übergebenen Parameters anpassen.

            if (Wasser + menge <= maxWasser) // (WENN) Wasser(was in Behälter drin ist) menge ( nachgefüllt ) zusammen  weniger sind als maxWasser= 2.5 kg
            {
                Wasser += menge;// Wasser = Wasser + menge  // (DANN) Wasser und Menge sind gesamt Wasser dann wird die menge zurück gegeben
                return menge;

            }
            else
            {
                double result = menge - ((Wasser + menge) - maxWasser);
                Wasser = maxWasser;
                return result;
            }

            //Zurückgegeben werden soll jeweils die tatsächliche Menge, um die das Wasser bzw. die Kaffeebohnen aufgefüllt wurden.
            //double tatsaechlichemenge = maxWasser - Wasser; // vermitteln wieviel drin ist( tatsächliches Wasser )
            // berechnet sich dadurch, dass maxWasser(behälter Kapazität=2.5) von das Wasser( was nachgefüllt würde) abgezogen wird, 
            // denn Wasser = maxWasser ( 
            // return tatsaechlichemenge;

        }


        public double BohnenAuffuellen(double menge)
        {
            // prüfen ob die Behälter leer sind ( return in if statment )

            if (menge <= 0) return 0;
            //Die Methoden sollen jeweils den Wasserfüllstand und die Menge der enthaltenen Kaffeebohnen gemäß des übergebenen Parameters anpassen.

            if (Bohnen + menge <= maxBohnen) // (WENN) Wasser(was in Behälter drin ist) menge ( nachgefüllt ) zusammen  weniger sind als maxWasser= 2.5 kg
            {
                Bohnen += menge;// Wasser = Wasser + menge  // (DANN) Wasser und Menge sind gesamt Wasser dann wird die menge zurück gegeben
                return menge;

            }
            else
            {
                double result = menge - ((Bohnen + menge) - maxBohnen);
                Bohnen = maxBohnen;
                return result;
            }
        }



        public bool macheKaffee(double menge, double verhaeltnisWasserBohnen)

        /* gesamt menge an produzierten Kaffee 
        double menge =
        // Der Parameter verhaeltnisWasserBohnen gibt an, in welchem Verhältnis Wasser und Bohnen für die Zubereitung des Kaffees verwendet werden
        double verhaeltnisWasserBohnen = */


        {
            double benoetigtesWasser = 0;
            double benoetigterBohnen = 0;
            if (menge <= 0 || verhaeltnisWasserBohnen <= 0)
            {
                return false;

                // bohnen und Wasser anteil bestimmen: 
            }
            // 
            else {
                if(verhaeltnisWasserBohnen == 1)
                {
                    benoetigtesWasser = menge / 2;
                    benoetigterBohnen = menge / 2;
                }else if (verhaeltnisWasserBohnen == 2)
                {
                    benoetigtesWasser = 2 * (menge / 3);
                    benoetigterBohnen = 1 * (menge / 3);
                }else if (verhaeltnisWasserBohnen == 0.5)
                {
                    benoetigtesWasser = 1 * (menge / 3);
                    benoetigterBohnen = 2 * (menge / 3);
                }

                if (benoetigtesWasser > Wasser || benoetigterBohnen > Bohnen)
                {
                    return false;
                } else
                {
                    GesamtMengeKaffeeProduziert += menge;
                    Wasser = Wasser - benoetigtesWasser;
                    Bohnen = Bohnen - benoetigterBohnen;

                    return true;
                }

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 8 Minuten schrieb patrick89:

Vergleich das nochmal mit dem was du da getippt hast.

Ich sehe da auf den ersten Blick ehrlich gesagt keine Diskrepanz zwischen Aufgabenstellung und der Methode, die der TO erstellt hat.

Kannst du vielleicht genauer sagen, was du meinst?

Allerdings finde ich die ganze Aufgabenstellung ein wenig merkwürdig. Letzten Endes ist es doch in der Realität so, dass die produzierte Menge Kaffee fast 1:1 mit der verwendeten Menge Wasser übereinstimmt. Oder trinkt hier irgendwer Kaffee inkl. Bohnenschrot? 😅 Von den Mengenverhältnissen mal ganz zu schweigen. XD

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Minuten schrieb Rienne:

Ich sehe da auf den ersten Blick ehrlich gesagt keine Diskrepanz zwischen Aufgabenstellung und der Methode, die der TO erstellt hat.

Du hast recht, die Methode passt. Ich hab mich in der Zeile vertan, sorry. Hab es gelöscht.

Zitat

Allerdings finde ich die ganze Aufgabenstellung ein wenig merkwürdig. Letzten Endes ist es doch in der Realität so, dass die produzierte Menge Kaffee fast 1:1 mit der verwendeten Menge Wasser übereinstimmt. Oder trinkt hier irgendwer Kaffee inkl. Bohnenschrot? 😅 Von den Mengenverhältnissen mal ganz zu schweigen. XD

Allein die Einheiten triggern schon so hart :) Von den gewählten Datentypen ganz zu schweigen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 16.9.2020 um 13:29 schrieb MMazi:

habe der code mit hilfe meinen Ausbilder korrigiert , so sieht nun aus .

Noch ein paar Anmerkungen:

if (statement) {
  return foo;
}
else
{
  if (another statement) {
    ...
  }
}

 

Ist schöner:

if (statement) {
  return foo;
}

if (another statement) {
  ...
}

 

Am 16.9.2020 um 13:29 schrieb MMazi:

public double BohnenAuffuellen(double menge) { // prüfen ob die Behälter leer sind ( return in if statment ) if (menge <= 0) return 0;

Würde hier eine Exception werfen (Stichwort: Ausnahmebehandlung). Man kann logischerweise nicht "minus X Bohnen" auffüllen (außer es würde bedeuten, dass man Bohnen heraus nimmt, was durch "return 0" aber nicht gewollt ist). So Wird ein Ein Entwickler, der (ausversehen) tatsächlich kaffeemaschine.BohnenAuffüllen(-123) aufruft dazu aufgefordert, die Exception zu behandeln (zB einen Fehler anzuzeigen) oder diese Logik erst gar nicht erst zu ermöglichen. 

Klammersetzung:

Manchmal machst du

if (...) {
  ...
}

aber manchmal auch:

if (...)
{
  ...
}

Ich weiß, dass C#-Entwickler zu letzterem tendieren, im Grunde ist es aber egal. Viel wichtiger ist, dass es konsistent ist, also komplett nach einem Stil eingehalten wird. Ein Linter schafft hier Abhilfe.

Kommentare sind schön und gut, aber

/* hier steht ein Kommentar
123*/
// Noch mehr Kommentar

ist einfach nicht schön. Entweder eines von beiden oder keines. 

Auch ist viel zu viel kommentiert. Wenn da steht "private static readonly double ..." dann muss man nicht noch in einem Kommentar dazu schreiben, dass es "statische private Attribute" sind. Steht ja schon im Code ;) 

Dont repeat yourself (DRY): die Methoden "WasserAuffuellen" und "BohnenAuffuellen" sind von der Logik her das Selbe in grün. Sowas möchte man eigentlich verhindern. (ok an dieser Stelle nicht ganz einfach für einen Anfänger).

Deutsche Variablennamen... OK naja kann man drüber streiten. Wenn ihr das in der Firma so macht dann ok, ich finds immer eher nicht optimal, da man häufig in internationalen Teams arbeitet.

 

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