Site Tools


c_linker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

c_linker [2013/03/03 03:54] (current)
konovalov created
Line 1: Line 1:
 +    #include <​QtCore/​QCoreApplication>​
 +    #include "​menu.h"​
 +    ​
 +    int main(int argc, char *argv[])
 +    {
 +        QCoreApplication a(argc, argv);
 +    ​
 +        MenuComponent *houseMenu = new Menu("​PANCAKE HOUSE MENU", "​Breakfast"​);​
 +        MenuComponent *dinerMenu = new Menu("​DINER MENU", "​Lunch"​);​
 +        MenuComponent *cafeMenu = new Menu("​CAFE MENU", "​Dinner"​);​
 +        MenuComponent *allMenus = new Menu("​ALL MENUS",​ "​..."​);​
 +    ​
 +        allMenus->​add(houseMenu);​
 +        allMenus->​add(dinerMenu);​
 +        allMenus->​add(cafeMenu);​
 +    ​
 +        houseMenu->​add(new MenuItem("​Пельмени",​ "​оч.вкусные",​ false, 2.50));
 +        dinerMenu->​add(new MenuItem("​Pasta",​ "​Spaghetti with Marinara",​ true, 3.89));
 +        dinerMenu->​add(cafeMenu);​
 +        cafeMenu->​add(new MenuItem("​Coffee",​ "Black with sugar",​ true, 1.22));
 +    ​
 +        Waitress *waitress = new Waitress(allMenus);​
 +        waitress->​printMenu();​
 +    ​
 +        return 1;
 +    }
  
 +
 +    #ifndef MENU_H
 +    #define MENU_H
 +    ​
 +    #include <​vector>​
 +    ​
 +    class MenuComponent{
 +    public:
 +        MenuComponent(){};​
 +        virtual char* getName();
 +        virtual char* getDescription();​
 +        virtual double getPrice();
 +        virtual bool isVegetarian();​
 +        virtual void print();
 +        virtual void add(MenuComponent*);​
 +        virtual void remove(MenuComponent*);​
 +        virtual MenuComponent* getChild(int);​
 +    };
 +    ​
 +    class Menu : public MenuComponent{
 +        std::​vector<​MenuComponent*>​ menuComponents;​
 +        char* name;
 +        char* description;​
 +    public:
 +        Menu(char*, char*);
 +        char* getName();
 +        char* getDescription();​
 +        void print();
 +        void add(MenuComponent*);​
 +        void remove(MenuComponent*);​
 +        MenuComponent* getChild(int);​
 +    };
 +    ​
 +    class MenuItem : public MenuComponent{
 +        char* name;
 +        char* description;​
 +        bool vegetarian;
 +        double price;
 +    ​
 +    public:
 +        MenuItem(char*,​ char*, bool, double);
 +        char* getName();
 +        char* getDescription();​
 +        double getPrice();
 +        bool isVegetarian();​
 +        void print();
 +    };
 +    ​
 +    class Waitress{
 +        MenuComponent* allMenus;
 +    public:
 +        Waitress(MenuComponent*);​
 +        void printMenu();​
 +    };
 +    ​
 +    #endif // MENU_H
 +
 +
 +    #include <​iostream>​
 +    #include <​vector>​
 +    #include "​menu.h"​
 +    ​
 +    using namespace std;
 +    ​
 +    void MenuComponent::​add(MenuComponent* inComponent){
 +        cerr << "​Error:​ " << endl;
 +    }
 +    ​
 +    char* MenuComponent::​getName(){
 +        cerr << "​Error:​ " << endl;
 +    }
 +    ​
 +    char* MenuComponent::​getDescription(){
 +        cerr << "​Error:​ " << endl;
 +    };
 +    ​
 +    double MenuComponent::​getPrice(){
 +        cerr << "​Error:​ " << endl;
 +    };
 +    ​
 +    bool MenuComponent::​isVegetarian(){
 +        cerr << "​Error:​ " << endl;
 +    };
 +    ​
 +    void MenuComponent::​print(){
 +        cerr << "​Error:​ " << endl;
 +    };
 +    ​
 +    void MenuComponent::​remove(MenuComponent* inComponent){
 +        cerr << "​Error:​ " << endl;
 +    };
 +    ​
 +    MenuComponent* MenuComponent::​getChild(int){
 +        cerr << "​Error:​ " << endl;
 +    };
 +    ​
 +    MenuItem::​MenuItem(char* inName, char* inDescription,​ bool inVega, double inPrice) : MenuComponent(){
 +        name = inName;
 +        description = inDescription;​
 +        vegetarian = inVega;
 +        price = inPrice;
 +    }
 +    ​
 +    char* MenuItem::​getName(){
 +        return name;
 +    }
 +    ​
 +    char* MenuItem::​getDescription(){
 +        return description;​
 +    }
 +    ​
 +    double MenuItem::​getPrice(){
 +        return price;
 +    }
 +    ​
 +    bool MenuItem::​isVegetarian(){
 +        return vegetarian;
 +    }
 +    ​
 +    void MenuItem::​print(){
 +        cout << " " << getName();
 +        if(isVegetarian()){
 +            cout << "​(v)";​
 +        }
 +        cout << ", " << getPrice()
 +                << " ​  -- " << getDescription() << endl;
 +    }
 +    ​
 +    ​
 +    Menu::​Menu(char* inName, char* inDescript){
 +        std::​vector<​MenuComponent*>​ menuComponents;​
 +        name = inName;
 +        description = inDescript;
 +    }
 +    ​
 +    char* Menu::​getName(){
 +        return name;
 +    }
 +    ​
 +    char* Menu::​getDescription(){
 +        return description;​
 +    }
 +    ​
 +    void Menu::​print(){
 +        cout << endl << getName() << ", " << getDescription()
 +                << endl << "​-----------------------"​ << endl;
 +        std::​vector<​MenuComponent*>::​iterator itr;
 +        for(itr = menuComponents.begin();​ itr != menuComponents.end();​ ++itr){
 +            (*itr)->​print();​
 +        }
 +    ​
 +    }
 +    ​
 +    void Menu::​add(MenuComponent* inComponent){
 +        menuComponents.push_back(inComponent);​
 +    };
 +    ​
 +    void Menu::​remove(MenuComponent* inComponent){
 +    //    menuComponents.clear(inComponent);​
 +        cerr << "​реализуйте"​ << endl;
 +    }
 +    ​
 +    MenuComponent* Menu::​getChild(int inInt){
 +        return menuComponents[inInt];​
 +    }
 +    ​
 +    Waitress::​Waitress(MenuComponent* inAllMenus){
 +        allMenus = inAllMenus;
 +    }
 +    ​
 +    void Waitress::​printMenu(){
 +        allMenus->​print();​
 +    }
 +
 +вывод
 +  ALL MENUS, ...
 +  -----------------------
 +  ​
 +  PANCAKE HOUSE MENU, Breakfast
 +  -----------------------
 +   ​Пельмени,​ 2.5   -- оч.вкусные
 +  ​
 +  DINER MENU, Lunch
 +  -----------------------
 +   ​Pasta(v),​ 3.89   -- Spaghetti with Marinara
 +  ​
 +  CAFE MENU, Dinner
 +  -----------------------
 +   ​Coffee(v),​ 1.22   -- Black with sugar
 +  ​
 +  CAFE MENU, Dinner
 +  -----------------------
 +   ​Coffee(v),​ 1.22   -- Black with sugar
c_linker.txt · Last modified: 2013/03/03 03:54 by konovalov

Page Tools