如何从对象内部修改对象的组成

时间:2019-03-22 00:18:17

标签: oop object design-patterns

如果您有一个由其他子类组成的类,那么如何进行修改,以便如果您修改该子类的属性,则该更改会反映在组合类中? (很抱歉,这是一个基本问题,我对对象不是很好)

例如,假设我有一个由两个三明治对象组成的餐。餐点和三明治都具有卡路里变量,但是如果我在其中一个三明治对象中添加一些奶酪,我希望以此方式更新餐点中的卡路里数量。有什么好的方法可以做到这一点吗?

例如,在以下(C ++)代码中,在主菜中添加奶酪不会更新餐时的卡路里。 (顺便说一句,我不知道实际食物中有多少卡路里)

#include <iostream>

struct Sandwich
{
    int calories = 0;

    Sandwich(int calories): calories {calories} {}

    void AddCheese() { calories += 50; }
};

struct Meal
{
    Sandwich entree;
    Sandwich main;
    int calories = 0;

    Meal(const Sandwich& entree, const Sandwich& main)
    : entree {entree}, main {main}, calories {entree.calories + main.calories}  {}
};

int main()
{
    Sandwich toastie(500);
    Sandwich hoagie(1500);

    Meal lunch(toastie, hoagie);

    lunch.main.AddCheese();

    std::cout << "lunch.entree.calories = " << lunch.entree.calories << std::endl;     
    std::cout << "lunch.main.calories = " << lunch.main.calories << std::endl; 
    std::cout << "lunch.calories = " << lunch.calories << std::endl; 

    return 0;
}

输出:

lunch.entree.calories = 500
lunch.main.calories = 1550
lunch.calories = 2000

0 个答案:

没有答案