首页 > 其他分享 >10.1

10.1

时间:2025-01-02 15:32:11浏览次数:1  
标签:10.1 Leaf name AddComponent component void Component

软件设计                  石家庄铁道大学信息学院

 

实验10:组合模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解组合模式的动机,掌握该模式的结构;

2、能够利用组合模式解决实际问题。

 
   

 


[实验任务一]:组合模式

用透明组合模式实现教材中的“文件夹浏览”这个例子。

实验要求:

1.

 

2.提交源代码;

#include <iostream>

#include <string>

#include <list>

using namespace std;

 

class Component

{

protected:

string name;

public:

Component(string name)

:name(name)

{ }

virtual void AddComponent(Component *component) { }

virtual void RemoveComponent(Component *component) { }

virtual void GetChild(int depth) { }

};

 

class Leaf: public Component

{

public:

Leaf(string name)

:Component(name)

{ }

void AddComponent(Component *component)

{

cout<<"can't add"<<endl;

}

void RemoveComponent(Component *component)

{

cout<<"can't remove"<<endl;

}

void GetChild(int depth)

{

string _tmpstring(depth, '-');

cout<<_tmpstring<<name<<endl;

}

};

 

class Composite:public Component

{

private:

list<Component*> _componets;

 

public:

Composite(string name)

:Component(name)

{ }

void AddComponent(Component *component)

{

_componets.push_back(component);

}

void RemoveComponent(Component *component)

{

_componets.remove(component);

}

void GetChild(int depth)

{

string tmpstring (depth, '-');

cout<<tmpstring<<name<<endl;

list<Component*>::iterator iter = _componets.begin();

for(; iter != _componets.end(); iter++)

{

(*iter)->GetChild(depth + 2);

}

}

};

 

main()

{

Composite *root = new Composite("root");

Leaf *leaf1 = new Leaf("A");

Leaf *leaf2 = new Leaf("B");

root->AddComponent(leaf1);

root->AddComponent(leaf2);

 

Composite *lay2 = new Composite("AA");

Leaf *leaf4 = new Leaf("BB");

lay2->AddComponent(leaf4);

 

Composite *lay1 = new Composite("CC");

Leaf *leaf3 = new Leaf("C");

lay1->AddComponent(leaf3);

lay1->AddComponent(lay2);

 

root->AddComponent(lay1);

 

root->GetChild(1);

cout<<endl;

lay1->GetChild(1);

cout<<endl;

lay2->GetChild(1);

 

delete root;

delete lay1;

delete lay2;

delete leaf1;

delete leaf2;

delete leaf3;

delete leaf4;

}

 

3.注意编程规范。

 

 

标签:10.1,Leaf,name,AddComponent,component,void,Component
From: https://www.cnblogs.com/jais/p/18647857

相关文章

  • java.sql.SQLException: CLI-specific condition, message from server: "Host '10.1
    您遇到的错误信息表明,MySQL服务器由于检测到来自主机'10.11.xxx.xx'的多次连接错误而自动封锁了该主机的连接请求。这是一种数据库安全机制,旨在防止潜在的恶意攻击或配置不当导致的资源滥用。要解决这个问题,您可以采取以下步骤:检查网络连接:确保客户端和服务器之间的网络稳定,并......
  • Spire.PDF for .NET 10.12.4
    Spire.PDFfor.NETisaprofessionalPDFAPIappliedtocreating,writing,editing,handlingandreadingPDFfileswithoutanyexternaldependencieswithin.NET(C#,VB.NET,ASP.NET,.NETCore,.NET5.0,.NET6.0,.NET7.0,MonoAndroidandXamarin.iOS)ap......
  • 10.14
    新的一周开始了,今天的课表排得满满的。软件设计课上,老师讲的那些复杂的软件架构和设计模式,让我感觉像是在走迷宫,晕头转向的,好多概念一时半会儿都消化不了,看来课后得花不少时间去钻研了。软件需求分析也不轻松,要从用户的角度去考虑各种需求和场景,一不小心就容易忽略一些细节。形势......
  • 10.17
    今天没课,终于可以好好放松一下了。我睡了个懒觉,起来后慢悠悠地洗漱,然后给自己做了一份简单的早餐,煎了个鸡蛋,烤了片面包,冲了杯咖啡,坐在阳台上,享受着温暖的阳光和宁静的时光。吃完早餐后,我打开电脑,浏览了一些自己感兴趣的网站,看看最新的科技动态和娱乐新闻,感觉自己和外面的世界又重......
  • 10.1(学号:3025)
    importnumpyasnpimportstatsmodels.apiassmimportpylabaspltdefcheck(d):x0=d[0];y0=d[1];d={'x':x0,'y':y0}re=sm.formula.ols('y~x',d).fit()#拟合线性回归模型print(re.summary())print(re.outlier_test())#输出已知数据的野......
  • 习题10.1
    importnumpyasnpimportstatsmodels.apiassmimportmatplotlib.pyplotaspltdefcheck(data):#提取数据的第一列和第二列x=data[:,0]y=data[:,1]#使用statsmodels进行线性回归分析model=sm.OLS(y,sm.add_constant(x)).fit()#添......
  • 2024.10.11(周三)
    1、    (1)候选类:用户、会议室、会议中心、会议、会议人数、会议时间、邮寄、电子邮件、开会人员、代表证、预订、系统(2)系统类:①用户:系统的使用者,具有预订、修改、取消会议的行为。②会议中心:系统的主要服务实体,负责管理所有会议和相关操作。③会议室:提供会议场所资源......
  • 易基因:Genome Biol/IF10.1:WGBS等揭示生菜驯化和分化过程中的DNA甲基化变异机制
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。生菜(LactucasativaL.,莴苣属)是世界范围内重要的菊科(Asteraceae)蔬菜作物,全球广泛种植,也是人类植物营养素的重要来源。现代生菜品种根据形态特征被分为多个不同的园艺类型,包括奶油生菜、脆叶生菜、cos(也称为罗马生......
  • 好文总结(一)2024.10.1-10.2
    2024.10.11.时间序列预测给研一录的时间序列这个up主的思路挺好的,可以按照这个准备赚外快,结合几个平台一起赚钱把自己学习的东西分出来打造人设2.RAG在MetaKDDCup中的比赛RAG前沿进展:粗看MetaKDDCupRAG竞赛获胜方案有代码和介绍书可以使用3.Single-Agent新进......
  • ex10.1_1
    点击查看代码importnumpyasnpimportstatsmodels.apiassmimportpylabaspltdefcheck(d):x0=d[0];y0=d[1];d={'x':x0,'y':y0}re=sm.formula.ols('y~x',d).fit()#拟合线性回归模型print(re.summary())print(re.ou......