首页 > 其他分享 >11.20软件设计实验二

11.20软件设计实验二

时间:2023-11-20 09:13:04浏览次数:34  
标签:index object return 软件设计 11.20 virtual agg objects 实验

实验18:迭代器模式

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

1、理解迭代器模式的动机,掌握该模式的结构;

2、能够利用迭代器模式解决实际问题。

 

[实验任务一]:JAVA和C++常见数据结构迭代器的使用

信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。

实验要求:

1. 搜集并掌握JAVA和C++中常见的数据结构和迭代器的使用方法,例如,vector, list, map和set等;

2. 提交源代码;

#include <iostream>  

#include<string>

#include <sstream>

#include <vector>  

using namespace std;

 

/* object可以是任意类型的变量 */

typedef int object;

 

class Iterator

{

public:

    virtual object begin() = 0;

    virtual void   next() = 0;

    virtual object end() = 0;

    virtual object current() = 0;

    virtual bool   IsDone() = 0;

};

 

class ConcreteAggregate

{

private:

    vector<object> _objects;

 

public:

    void AddObject(object obj)

    {

        _objects.push_back(obj);

    }

 

    object& operator[](int index)

    {

        return _objects[index];

    }

    int size()

    {

        return _objects.size();

    }

};

 

class ConcreteIterator :public Iterator

{

public:

    ConcreteAggregate* agg;

    int _index;

public:

    ConcreteIterator(ConcreteAggregate* agg)

    {

        this->agg = agg;

        _index = 0;

    }

    virtual object begin()

    {

        return (*agg)[0];

    }

    virtual void next()

    {

        _index++;

    }

    virtual void preious()

    {

        _index--;

    }

 

    virtual object end()

    {

        _index = agg->size();

        return (*agg)[_index - 1];

    }

 

    virtual object current()

    {

        return (*agg)[_index];

    }

 

    virtual bool IsDone()

    {

        return (_index == agg->size());

    }

    virtual bool IsFirst()

    {

        return (_index == 0);

    }

};

 

int main()

{

    ConcreteAggregate* objects = new ConcreteAggregate();

    cout << "信1305班同学:" << endl;

    for (int i = 1; i <= 44; i++)

    {

        int m = 20130000 + i;

        objects->AddObject(m);

        m = 0;

    }

 

    ConcreteIterator* iter = new ConcreteIterator(objects);

    ConcreteIterator* iter1 = new ConcreteIterator(objects);

 

    object tmp_begin = iter->begin();

    cout << "从小到大输出:" << endl;

    while (!iter->IsDone())

    {

        cout << iter->current() << endl;

        iter->next();

    }

    cout << endl;

 

    object tmp_begin1 = iter1->end();

    cout << "从大到小输出:" << endl;

    while (!iter1->IsFirst())

    {

        iter1->preious();

        cout << iter1->current() << endl;

    }

    cout << endl;

 

    delete objects;

    delete iter;

 

    system("pause");

    return 0;

}

3. 注意编程规范。

 

 

 

 

标签:index,object,return,软件设计,11.20,virtual,agg,objects,实验
From: https://www.cnblogs.com/zhaoshengfu/p/17843161.html

相关文章

  • 实验十八
    [实验任务一]:JAVA和C++常见数据结构迭代器的使用信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代器和C++中标准模板库(STL)实现对同学信息的遍历,要求按照学号从小到大和从大到小两种次序输出学生信息。实验要求:1.搜集并掌握JAVA和C++中常见的数据结构......
  • 11.20实验18
    实验18:迭代器模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解迭代器模式的动机,掌握该模式的结构;2、能够利用迭代器模式解决实际问题。[实验任务一]:JAVA和C++常见数据结构迭代器的使用信1305班共44名同学,每名同学都有姓名,学号和年龄等属性,分别使用JAVA内置迭代......
  • s实验4
    #include<stdio.h>#defineN4voidtest1(){inta[N]={1,9,8,4};inti;//输出数组a占用的内存字节数printf("sizeof(a)=%d\n",sizeof(a));//输出int类型数组a中每个元素的地址、值for(i=0;i<N;++i)pr......
  • COM病毒实验原理
    0×01实验内容编译生成com病毒,用com病毒对测试文件进行感染。0×02实验目的了解COM病毒的原理,掌握COM病毒的分析及其修改过程。0×03实验原理COM文件是一种单段执行结构的文件,其执行文件代码和执行时内存映像完全相同,起始执行偏移地址为100H,对应于文件的偏移00H(文件头)......
  • 实验四
    task1.1#include<stdio.h>#defineN4voidtest1(){inta[N]={1,9,8,4};inti;//输出数组a占用的内存字节数printf("sizeof(a)=%d\n",sizeof(a));//输出int类型数组a中每个元素的地址、值for(i=0;i<N;++i)......
  • 软件设计模式学习每日总结-第七天
    第七天学习结构型模式:描述如何将对象或类组合成更大的结构。类结构型模式:类的组合对象结构模式:类与对象的组合适配器模式:使接口不兼容的类可以一起工作。  ......
  • 51时钟实验——DS1302芯片
    关于DS1302芯片:1、引脚说明: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2VVcc2>Vcc1+0.2VVcc2>Vcc1+0.2VVcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2<Vcc1时,由Vcc1向DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期......
  • 23-1 MSTP实验理解
    拓扑配置多实例生成树,使同VLAN之间采用最优路径通信且不环路TRUNK,ACCESS基础配置LSW1#interfaceGigabitEthernet0/0/1portlink-typetrunkporttrunkallow-passvlan8to9#interfaceGigabitEthernet0/0/2portlink-typetrunkporttrunkallow-passvlan......
  • 大型数据库实验七
    ......
  • 番外-软件设计(12)
    某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。实验要求:1. 提交类图;......