首页 > 其他分享 >12.1每日总结

12.1每日总结

时间:2023-12-01 21:33:05浏览次数:40  
标签:总结 cout Visitor void Visit public 12.1 每日 class

今日完成代码200

时间5h

学习内容:看了看阅读数目《软工》,写了阅读笔记。写了大数据的hbase作业,写了软件构造的作业调用接口给图片加特效

写了高飞作业2

 

 

实验 25:访问者模式

 

[实验任务一]:打包员

在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。

实验要求:

 

#include <iostream>

#include <string>

#include <list>

using namespace std;

 

class Product;

class Book;

class Apple;

 

class Visitor

{

protected:

string name;

public:

void SetName(string name) {

this->name = name;

}

virtual void Visit(Apple* apple) {};

virtual void Visit(Book* book) {};

};

 

 

class Product

{

public:

// Methods

virtual void Accept(Visitor* visitor) {};

};

 

 

// "ConcreteElement"

class Apple : public Product {

public:

 

void Accept(Visitor* visitor) {

visitor->Visit(this);

}

};

 

class Book :public Product {

public:

void Accept(Visitor* visitor) {

visitor->Visit(this);

}

};

 

class Customer : public Visitor {

public:

void Visit(Book* book) {

cout << "顾客" << name << "买书" << endl;

}

 

void Visit(Apple* apple) {

cout << "顾客" << name << "选苹果" << endl;

}

};

 

class Saler : public Visitor {

public:

void Visit(Book* book) {

cout << "收银员" << name << "直接计算书的价格" << endl;

}

 

void Visit(Apple* apple) {

cout << "收银员" << name << "给苹果过秤,然后计算其价格" << endl;

}

};

 

class Packer : public Visitor {

public:

void Visit(Book* book) {

cout << "打包员" << name << "给书打包" << endl;

}

 

void Visit(Apple* apple) {

cout << "打包员" << name << "给苹果打包" << endl;

}

};

 

 

// "ObjectStructure"

class BuyBasket

{

private:

list<Product*> products;

 

public:

 

void Attach(Product* product)

{

products.push_back(product);

}

 

void Detach(Product* product)

{

products.remove(product);

}

 

void Accept(Visitor* visitor)

{

for (std::list<Product*>::iterator it = products.begin(); it != products.end(); ++it)

(*it)->Accept(visitor);

}

};

 

int main()

{

BuyBasket* buybasket = new BuyBasket();

 

Product* apple = new Apple();

Product* book = new Book();

 

buybasket->Attach(apple);

buybasket->Attach(book);

 

Customer* customer = new Customer();

customer->SetName("张三");

Saler* saler = new Saler();

saler->SetName("李四");

Packer* packer = new Packer();

packer->SetName("王五");

 

// Employees are visited

cout << "----customer----" << endl;

buybasket->Accept(customer);

 

cout << "----saler----" << endl;

buybasket->Accept(saler);

 

cout << "----packer----" << endl;

buybasket->Accept(packer);

}

 

 

 

 

标签:总结,cout,Visitor,void,Visit,public,12.1,每日,class
From: https://www.cnblogs.com/zhaoshengfu/p/17870910.html

相关文章

  • 2023-2024 20231313《计算机基础与程序设计》第十周学习总结
    2023-202420231313《计算机基础与程序设计》第十周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十周学习总结作业内容计算机科学概论第12,13,14章《C语言程序设计》第9章并完成云班课测试,信息系统、数据库与SQL、人工智能与专家系统、人工神经......
  • 每日博客
    实验24:模板方法模式packagerjsj.no24; publicabstractclassOperator{    publicabstractvoidconnDB();     publicvoidopenDB(){        System.out.println("---打开数据库---");    }     publicvoiduseDB(){       ......
  • linux源码趣读总结
    总结linux源码趣读花了半个月左右,看完了闪客的linux源码趣读。感觉之前上的操作系统原理课程只能给你一个模糊的印象,啊,有这个概念来着,有这个算法来着。比起从理论到实践的文字游戏,我还是更喜欢从实践讲理论的脚踏实地。从阅读linux-0.11源码,了解操作系统的构成。所谓的总结......
  • 第5次软工任务_实现与项目总结_10组虎纠吃游实评
    github源码链接:https://github.com/prettyKuromi/hujiu/tree/master微信小程序测试链接提供测试账号:demouser,密码:1231231,也可自行注册新账号(由于小程序类目个人开发者受限及无法通过认证,无法通过审核并发布小程序,扫码进入体验版后请点击右上角…,选择开发调试-打开调试,即可测试......
  • 12.01每日总结
    packageorg.example;importjavax.swing.*;importjava.awt.*;publicclassMainextendsJFrame{publicstaticJFramejFrame;publicstaticJPaneljPanel=newJPanel();publicstaticJScrollPanejScrollPane=newJScrollPane(jPanel,ScrollPaneConstant......
  • Hadoop 一些脚本总结
    1.各个模板分开启动/停止1.整体启动/停止HDFSstart-dfs.sh/stop-dfs.sh2.整体启动/停止YARNstart-yarn.sh/stop-yarn.sh2.各个服务组件逐一启动/停止1.分别启动/停止HDFS组件hdfs--daemonstart/stopnamenode/datanode/secondarynamenode2.分别启动/停止YARN......
  • 2023.12.1日报
    今日继续开发ERP但是今日需要反思为什么呢因为今天犯了一个致命的错误老师上课其实总是强调重新写一个页面的效率要高于修改原来的页面今天算是亲自体会了一把之前写的一个原材料的页面感觉已经很完善了树形结构检索排序分页等等于是想基于这个页面进行修改实现发票......
  • 12.1日记
    令牌桶算法这里使用Redis实现令牌桶算法,令牌桶算法具体细节可参考其他博客,这里不赘述,大致就是在一个时间段内,存在一定数量的令牌,我们需要拿到令牌才可以继续操作。所以实现思路大致就是:   Redis中记录上次拿取令牌的时间,以及令牌数,每个手机号对应一个桶   每次拿令牌时......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.1)
    一、百度网盘SVIP超级会员共享账号可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答。我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免了U盘的物理载体,直接在网上就实现文件传输。百度网盘SVIP会员可以让自己百度账......
  • 12.1
    打字练习P5587打字练习-洛谷|计算机科学教育新生态(luogu.com.cn)#include<iostream>#include<algorithm>#include<stack>#include<vector>#include<deque>usingnamespacestd;longlongans=0;vector<string>a,b;deque<char>s,m......