信息专家原则

信息专家原则(Information Expert)
Information Expert的本质指的是我们应该将职责委托给哪一个对象,这个职责可以是一个方法,也可以是一个算法或者其他内容。它是面向过程设计过程中最基本的原则。

委托原则:我们在设计对象的时候,如果某个对象拥有完成某个职责所需要的所有信息,那么这个职责就分配给这个对象实现。这个时候,这个类就是相对于这个职责的信息专家。

举例:计算订单的总价

分三个类:1.商品类:提供商品的单价 

 1 #include <iostream>
 2 #include <string>
 3 
 4 using namespace std;
 5 
 6 class Product{
 7 private:
 8     string name;
 9     double price;
10 public:
11     Product() {
12         cout << "输入商品名称:";
13         cin >> name;
14         cout << "输入商品价格:";
15         cin >> price;
16 
17     }
18 public:
19     double getPrice() {
20         return price;
21     }
22 };

                  2.销售单个商品条目类:提供购买商品的数量,并计算每类商品的总价

 1 #include "Product.h"
 2 
 3 class SaleLineItem {
 4 private:
 5     int num;
 6     double SumItemPrice;
 7     Product p;
 8 public:
 9     SaleLineItem() {
10         cout << "输入购买商品数量";
11         cin >> num;
12     }
13 public:
14     double getSumItemPrice() {
15         SumItemPrice = p.getPrice() * num;
16         return SumItemPrice;
17     }
18 };

     3.结算类:将每类商品的总价汇总

 1 #include "SaleLineItem.h"
 2 #include <vector>
 3 
 4 class Sale
 5 {
 6 private:
 7     double SumTotal;
 8     vector<SaleLineItem> Items;
 9 public:
10     void inputItem(SaleLineItem s) {
11         Items.push_back(s);
12     }
13 public:
14     void getSumTotal() {
15         SumTotal = 0;
16         for (int i = 0; i < Items.size(); i++)
17         {
18             SumTotal += Items[i].getSumItemPrice();
19         }
20     }
21 public:
22     void outputItem() {
23         cout << "总价:"<<SumTotal << endl;
24     }
25 };

                  4.main类

 1 #include <iostream>
 2 #include "Sale.h"
 3 
 4 
 5 void main()
 6 {
 7     SaleLineItem s1;
 8     SaleLineItem s2;
 9 
10     Sale sale;
11 
12     sale.inputItem(s1);
13     sale.inputItem(s2);
14 
15     sale.getSumTotal();
16     sale.outputItem();
17 }

学习笔记,仅供参考。

猜你喜欢

转载自www.cnblogs.com/carrywl/p/12563045.html