当前位置: 首页 > news >正文

外国酷炫网站昆明新闻最新消息今天

外国酷炫网站,昆明新闻最新消息今天,wordpress调用标签软件,网站栏目结构1. 好大一棵树 路飞在德雷斯罗萨打败多弗朗明哥之后#xff0c;一些被路飞解救的海贼团自愿加入路飞麾下#xff0c;自此组成了草帽大船团#xff0c;旗下有7为船长#xff0c;分别是#xff1a; 俊美海贼团75人 巴托俱乐部56人 八宝水军1000人 艾迪欧海贼团4人 咚塔塔海…1. 好大一棵树 路飞在德雷斯罗萨打败多弗朗明哥之后一些被路飞解救的海贼团自愿加入路飞麾下自此组成了草帽大船团旗下有7为船长分别是 俊美海贼团75人 巴托俱乐部56人 八宝水军1000人 艾迪欧海贼团4人 咚塔塔海贼团200人 巨兵海贼团5人 约塔玛利亚大船团4300人 小弟数量总计5640人。 对于草帽大船团的结构组成很像一棵树路飞是这棵树的根节点旗下的七个船长是路飞的子节点。在这七个船长的旗下可能还有若干个船长。。。 像草帽大船团这样能将多个对象组成一个树状结构用以描述部分—整体的层次关系使得用户对单个对象和组合对象的使用具有一致性这样的结构性设计模式叫做组合模式。 现实生活中能够和组合模式对应的场景也有很多下面举例说明 Linux 的树状目录结构国家的行政区划分省级、地级、县级、乡级解放军编制军、师、旅、团、营、连、排、班公司的组织结构树状 2. 大决战 在海贼中大家都预测路飞的对手应该是同为四皇的黑胡子黑胡子手下也有很多海贼船双方一旦开战必定死伤无数最后的赢家就可以得到罗杰所留下的大秘宝ONE PIECE并成为新的海贼王。 为了让路飞成为海贼王我决定使用组合模式为路飞写一个管理草帽大船团的程序其对应的主要操作是这样的扩充船员、战斗减员、显示各船队信息、加入战斗等。 2.1 团队管理 对于组合模式来说操作这个集合中的任意一个节点的方式都是相同的所以必须要先定义出单个节点的抽象在这个抽象类中定义出节点的行为。 // 抽象节点 class AbstractTeam { public:AbstractTeam(string name) :m_name(name) {}// 设置父节点void setParent(AbstractTeam* node){m_parent node;}AbstractTeam* getParent(){return m_parent;}string getName(){return m_name;}virtual bool hasChild(){return false;}virtual void add(AbstractTeam* node) {}virtual void remove(AbstractTeam* node) {}virtual void fight() 0;virtual void display() 0;virtual ~AbstractTeam() {} protected:string m_name;AbstractTeam* m_parent nullptr; };草帽大船团中有若干个番队这个抽象类对应的就是以船为单位的一个团队一艘船就是一个节点它内部定义了如下方法: 设置和获得当前船队的名字 设置名字构造函数获得名字getName() 设置和得到当前船队节点的父节点 设置父节点setParent(AbstractTeam* node)得到父节点getParent() 给当前番队添加一个子船队节点add(AbstractTeam* node)跟当前番队删除一个子船队节点remove(AbstractTeam* node)当前番队和敌人战斗fight()显示当前番队的信息display() 2.2 叶子节点 草帽大船团是一种组合模式也就是一种树状结构在最末端的节点就没有子节点了这种节点可以将其称之为叶子节点。叶子节点也是一个船队所以它肯定是需要继承抽象节点类的。 // 叶子节点的小队 class LeafTeam : public AbstractTeam { public:using AbstractTeam::AbstractTeam;void fight() override{cout m_parent-getName() m_name 与黑胡子的船员进行近距离肉搏战... endl;}void display() override{cout 我是 m_parent-getName() 下属的 m_name endl;}~LeafTeam(){cout 我是 m_parent-getName() 下属的 m_name , 战斗已经结束, 拜拜... endl;} };叶子节点对应的番队由于没有子节点所以在其对应的类中就不需要重写父类的add(AbstractTeam* node)和remove(AbstractTeam* node)方法了这也是基类中为什么不把这两个虚函数指定为纯虚函数的原因。 2.3 管理者节点 所谓的管理者节点其实就是非叶子节点。这种节点还拥有子节点它的实现肯定是需要继承抽象节点类的。 // 管理者节点 class ManagerTeam : public AbstractTeam { public:using AbstractTeam::AbstractTeam;void fight() override{cout m_name 和黑胡子的恶魔果实能力者战斗!!! endl;}void add(AbstractTeam* node) override{node-setParent(this);m_children.push_back(node);}void remove(AbstractTeam* node) override{node-setParent(nullptr);m_children.remove(node);}bool hasChild(){return true;}listAbstractTeam* getChildren(){return m_children;}void display(){string info string();for (const auto item : m_children){if (item m_children.back()){info item-getName();}else{// 优先级: info item-getName() , ;}}cout m_name 的船队是【 info 】 endl;}~ManagerTeam(){cout 我是【 m_name 】战斗结束, 拜拜... endl;} private:listAbstractTeam* m_children; };在管理者节点类的内部有一个容器list容器内存储的就是它的子节点对象 通过add(AbstractTeam* node)把当前番队的子节点存储到list中 通过remove(AbstractTeam* node)把某一个子节点从当前番队的list中删除 通过display()来遍历这个list容器中的节点 2.4 战斗 最后把测试程序写一下: // 内存释放 void gameover(AbstractTeam* root) {if (root nullptr){return;}if (root root-hasChild()){ManagerTeam* team dynamic_castManagerTeam*(root);listAbstractTeam* children team-getChildren();for (const auto item : children){gameover(item);}}delete root; }// 和黑胡子战斗 void fighting() {vectorstring nameList {俊美海贼团, 巴托俱乐部, 八宝水军, 艾迪欧海贼团,咚塔塔海贼团, 巨兵海贼团, 约塔玛利亚大船团};// 根节点ManagerTeam* root new ManagerTeam(草帽海贼团);for (int i 0; i nameList.size(); i){ManagerTeam* child new ManagerTeam(nameList.at(i));root-add(child);if (i nameList.size() - 1){// 给最后一个番队添加子船队for (int j 0; j 9; j){LeafTeam* leaf new LeafTeam(第 to_string(j 1) 番队);child-add(leaf);leaf-fight();leaf-display();}child-fight();child-display();}}root-fight();root-display();cout endl;gameover(root); }int main() {fighting();return 0; }输出的结果为: 约塔玛利亚大船团第1番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第1番队 约塔玛利亚大船团第2番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第2番队 约塔玛利亚大船团第3番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第3番队 约塔玛利亚大船团第4番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第4番队 约塔玛利亚大船团第5番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第5番队 约塔玛利亚大船团第6番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第6番队 约塔玛利亚大船团第7番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第7番队 约塔玛利亚大船团第8番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第8番队 约塔玛利亚大船团第9番队与黑胡子的船员进行近距离肉搏战... 我是约塔玛利亚大船团下属的第9番队 约塔玛利亚大船团和黑胡子的恶魔果实能力者战斗!!! 约塔玛利亚大船团的船队是【第1番队, 第2番队, 第3番队, 第4番队, 第5番队, 第6番队, 第7番队, 第8番队, 第9番队】 草帽海贼团和黑胡子的恶魔果实能力者战斗!!! 草帽海贼团的船队是【俊美海贼团, 巴托俱乐部, 八宝水军, 艾迪欧海贼团, 咚塔塔海贼团, 巨兵海贼团, 约塔玛利亚大船团】我是【俊美海贼团】战斗结束, 拜拜... 我是【巴托俱乐部】战斗结束, 拜拜... 我是【八宝水军】战斗结束, 拜拜... 我是【艾迪欧海贼团】战斗结束, 拜拜... 我是【咚塔塔海贼团】战斗结束, 拜拜... 我是【巨兵海贼团】战斗结束, 拜拜... 我是约塔玛利亚大船团下属的第1番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第2番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第3番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第4番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第5番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第6番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第7番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第8番队, 战斗已经结束, 拜拜... 我是约塔玛利亚大船团下属的第9番队, 战斗已经结束, 拜拜... 我是【约塔玛利亚大船团】战斗结束, 拜拜... 我是【草帽海贼团】战斗结束, 拜拜...由于草帽大船团对应的设计模式是组合模式它对应的是一个树模型并且每个节点的操作方式都形同所以在释放节点的时候就可以使用递归了gameover()函数就是一个递归函数。 3. 结构图 学完了组合模式根据上面的例子把对应的UML类图画一下学会之后就得先画类图再写程序了 为了能够更加清楚地描述出设计模式中的组合关系不是UML中的组合关系在AbstractTeam和ManagerTeam之间画了两条线 继承关系对节点的操作使用的是抽象类中提供的接口以保证操作的一致性聚合关系ManagerTeam类型的节点还可以有子节点父节点和子节点的之间的关系需要具体问题具体分析 子节点跟随父节点一起销毁二者就是组合关系UML中的组合关系子节点不跟随父节点一起销毁二者就是聚合关系上面的程序中在父节点的析构函数中没有销毁它管理的子节点所以在上图中标记的是聚合关系
http://www.zqtcl.cn/news/897997/

相关文章:

  • 自建站英文公司网站制作银川
  • 顺德网站建设公司信息全网推广软件
  • 网站全屏视频怎么做电子商务网站规划的原则是什么
  • 网站建设行业发展史做网站主页上主要放哪些内容
  • 成都成华网站建设小程序开发网上商城
  • 企业网站建设的重要性和必要性深圳设计网站排行
  • 山西省网站建设河南省考生服务平台官网
  • 做水产的都用什么网站wordpress 前端登陆
  • 商务网站建设网站开发一个软件开发的流程
  • 网站建设电脑和手机有区别吗公众号登录微信入口
  • 天津市建设监理协会网站三亚网络网站建设
  • 义乌进货网平台北京网优化seo优化公司
  • 在网站上放广告网站建设流程效果
  • 腾讯云学生机做网站济南网站改版
  • 开封市做网站的公司wordpress无法映射
  • 网站构建工具wordpress 主题授权
  • 大型网站开发 赚钱宁夏网站建设优化
  • 通过ip访问网站需要怎么做博客的网站页面设计
  • 高明做网站软件开发工程师是前端还是后端
  • 利用html5 监控网站性能如何能快速搜到新做网站链接
  • 做网站需要看那几点seo是什么职业岗位
  • 做游戏网站需要哪些许可100个免费推广网站下载
  • 网站管理系统是什么马鞍山网站建设制作公司
  • 设计学网站网络工程专业毕业生设计
  • 成都网站建设有名的国外优质设计网站
  • seo基础培训教程seo百度关键词优化软件
  • 西安响应式网站青岛网站制作哪里有
  • 政务服务网站建设合肥seo排名扣费
  • 郑州做网站的大公司无锡网站程序
  • 打开网站是空白页面营销型网站建设应该考虑哪些因素