Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Kochrezepte (Objekte und Klassen)

Modellieren Sie ein Kochrezept. Ein solches besteht aus 3 Teilen. Im ersten Teil steht
die Anzahl der Portionen und eine Kurzbeschreibung mit Menuvorschlag. Im zweiten Teil sind die Zutaten vermerkt. Jede Zutat hat einen Namen und eine Menge. Die Menge ist entweder eine einfache Anzahl oder aber es handelt sich um eine Maßangabe zusammen mit einer Maßeinheit (z. B. "2.5 kg"). Im dritten Teil folgt eine Aufzählung der Zubereitungsschritte. Leiten Sie die Maßangabe von der Menge ab und verwenden Sie dadurch das Prinzip des Polymorphismus.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

1 Lösung(en)

// NET 8.x | C# 12.x | VS-2022

using System;
using System.Collections.Generic;

namespace MeineRezepte {
    public class Programm {
        static void Main() {
            var rezeptbuch = new Rezeptbuch([
                // 1. Beispielrezept
                new Rezept {
                    Name = "Indische Hackröllchen",
                    AnzahlPersonen = 4,
                    Zutaten = [
                        new ("Hackfleich", MassEinheit.gr, 400),
                        new ("Linsen", MassEinheit.gr, 400),
                        new ("Tomaten gehackt", MassEinheit.gr, 400),
                        new ("Kokosmilch", MassEinheit.ml, 400),
                        new ("Honig", MassEinheit.EL, 1),
                        new ("Chilischote", MassEinheit.Stk, 1),
                        new ("Currypaste", MassEinheit.EL, 2),
                        new ("Koriander", MassEinheit.Bd, 1),
                        new ("Salz", MassEinheit.Pr, 1),
                        new ("Pfeffer", MassEinheit.Pr, 1),
                        new ("Garam Masala", MassEinheit.TL, 2),
                        new ("Knoblauchzehe", MassEinheit.Stk, 3),
                        new ("Lauchzwiebel", MassEinheit.Stg, 3)
                        ],
                    Schritte = [
                        new(1, "Mach als erstes..."),
                        new(2, "Mache dann..."),
                        new(3, "Als letztes..."),
                        ],
                    Menuevorschlag = "Hier der Menüvorschlag...",
                    Bilder = []
                },

                // 2. Beispielrezept
                new Rezept{
                    Name = "Rouladen wie bei Muddern",
                    AnzahlPersonen = 8,
                    Zutaten = [
                        new("Rouladen", MassEinheit.Stk, 8),
                        new("Senf", MassEinheit.EL, 8),
                        new("Gewürzgurken", MassEinheit.Stk, 3),
                        new("Schwarzwälder Schinkenscheiben", MassEinheit.Stk, 8),
                        new("Zwiebel", MassEinheit.Stk, 3),
                        new("Möhrenstreifen",MassEinheit.Stk, 8),
                        new("Selleriestreifen", MassEinheit.Stk, 8),
                        new("Salz", MassEinheit.Pr, 16),
                        new("Pfeffer", MassEinheit.Pr, 16)
                        ],
                    Schritte = [
                        new(1, "Mach dies..."),
                        new(2, "Mach das..."),
                        new(3, "Als nächstes..."),
                        ],
                    Menuevorschlag = "Hier der Menüvorschlag...",
                    Bilder = []
                }
            ]);

            // Ausgabe Standardrezept
            Console.WriteLine(rezeptbuch);

            // Ausgabe gem. geänderter Anzahl Personen
            rezeptbuch.FuerAnzahlPersonen = 6;
            Console.WriteLine(rezeptbuch);
        }
    }

    public enum MassEinheit { Stk, ml, ltr, gr, kg, EL, TL, Msp, Bd, Pr, Stg }

    public record struct Bild { } // Platzhalter für Bilder

    public record struct Zutat(string Bezeichnung, MassEinheit Einheit, uint Anzahl);

    public record struct Schritt(uint Nummer, string Beschreibung);

    public record struct Rezept(string Name, uint AnzahlPersonen, List<Zutat> Zutaten, List<Schritt> Schritte, string Menuevorschlag, List<Bild> Bilder);
        
    public class Rezeptbuch(List<Rezept> Rezepte) {
        public uint FuerAnzahlPersonen { private get; set; }

        public override string ToString() {
            string rezeptAusgabe = "";

            foreach (var (name, anzahlPersonen, zutaten, schritte, menuevorschlag, _) in Rezepte) {
                var korrekturPersonen = FuerAnzahlPersonen == 0 ? anzahlPersonen : FuerAnzahlPersonen;

                rezeptAusgabe += $"\n{name} für {korrekturPersonen} Person{(korrekturPersonen == 1 ? "" : "en")}\n";

                rezeptAusgabe += $"  Zutaten:\n";
                foreach (var (bezeichnung, einheit, anzahl) in zutaten) {
                    var korrekturAnzahlZutat = Math.Ceiling(anzahl/ (double)anzahlPersonen * korrekturPersonen / 0.5) * 0.5;
                    rezeptAusgabe += $"    {korrekturAnzahlZutat} {Enum.GetName(typeof(MassEinheit), einheit)} {bezeichnung}\n";
                }

                rezeptAusgabe += $"  Schritte:\n";
                foreach (var (nummer, beschreibung) in schritte) {
                    rezeptAusgabe += $"    {nummer}. {beschreibung}\n";
                }

                rezeptAusgabe += $"  Menüvorschlag:\n    {menuevorschlag}\n";
                // und ggf. die Bilder ausgeben
            }
            return rezeptAusgabe;
        }
    }
}

                

Lösung von: Jens Kelm (@JKooP)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 2-4
Schwierigkeit: k.A.
Webcode: h77o-a589
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen