首页 > 解决方案 > 关于如何使用面向对象编程来简化程序的任何想法

问题描述

这是我的任务:为菜单计划创建类。在课程的帮助下,应该可以为酒店的餐厅创建菜单卡。

为此目的,应该有一个“MenuCard”类。这应该包括卡片的日期和一个或多个课程菜单。在 Python 中使用适当的数据类型作为日期。应该可以使用 add_course 方法将课程一个接一个地添加到菜单卡中。课程菜单应该有一个“课程”类。这有一个名称(例如 starter 或 first course)。此外,每道菜都有一个或多个菜肴,可以使用“add_dish”方法添加。为此,要组装'Dish'班,这是食品管理局的名称,是否是素食主义者。在所有类中使用str函数在屏幕上显示菜单卡。

附加任务:为三道菜菜单 ThreeCourseMenuCard 创建一个类,其中现有的类序列。在这门课上,你必须确保课程不超过(或正好)三门。

通过控制类中的实例来创建您自己的个人地图。

我已经对此进行了编程,但是对于我认识的某些用户来说,这太复杂了。有人可以给我关于如何简化这个程序的任何想法。先感谢您。

这是我的代码:

#! /usr/bin/python3

import datetime, locale

class Dish():
    def __init__(self, name, veggy):
        self.__name = name
        self.__veggy = veggy
    def __str__(self):
        if self.__veggy == bool(1):
            return "{} (vegetarisch)".format(self.__name)
        else:
            return "{}".format(self.__name)

class Course():
    def __init__(self, name):
        self.__name = name
    def add_dish(self):
        for i in range(len(self.__name[1])):
            print(Dish(self.__name[1][i][0], self.__name[1][i][1]))
            if i < len(self.__name[1])-1:
                print("oder")
    def __str__(self):
        return "\n\n{}\n".format(self.__name[0][0])
  

class MenuCard():
    def __init__(self, date):
        self.__date = date.strftime('%A, %d.%m.%Y')
    def add_course(self, new_course):
        print(Course(new_course))
        Course(new_course).add_dish()
    def __str__(self):
        return "\n\nMenukarte fuer {}".format(self.__date)

vorspeise =     [["Vorspeise"],[
                ["Carpaggio vom Rind auf knackigem Blattsalat", 0],
                ["Honigmelone mit hausgemachtem Speck vom Hängebauchschwein", 0]
                ]]

suppe =         [["Suppe"],[
                ["Kräftige Rindssuppe mit Eiertörtchen", 1]
                ]]

erster_gang =   [["1. Gang"],[
                ["Salat vom Buffet", 0]
                ]]

zweiter_gang =  [["2. Gang"],[
                ["Wiener Schnitzel mit Kartoffelsalat", 0],
                ["Wildsaibling an Herbstgemüse auf Safranrisotto", 0],
                ["Saftiges Hirschgulasch mit Kastanienrotkraut und Semmelknödel", 0],
                ["Spinatlasagne mit frischen Tomaten", 1]
                ]]

nachspeise =    [["Nachspeise"],[
                ["Vanilleparfait auf Himbeerspiegel", 1],
                ["Luftige Topfenknödel mit roter Grütze", 0]
                ]]

            
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
menu = MenuCard(datetime.datetime(2020, 11, 9))
print(menu)

gaenge = [vorspeise, suppe, erster_gang, zweiter_gang, nachspeise]

for gang in gaenge:
    menu.add_course(gang)

标签: pythonoopobject

解决方案


推荐阅读