Exercise Requirements

一、GIS地理实体系统(C++版)

  1. 设计基类GeographicEntity,需要实现一个地理实体的基类,包含以下要素:
  2. 设计派生类Point,需要实现一个点实体类继承自GeographicEntity
  3. 设计派生类LineString,需要实现一个线实体类继承自GeographicEntity
  4. 设计派生类Polygon,需要实现一个面实体类继承自GeographicEntity
  5. 测试任务
    1. 创建测试程序main.cpp
      • 使用基类指针数组或vector<GeographicEntity*>存储不同类型的派生类对象
      • 创建3个Point对象,3个LineString对象,3个Polygon对象
      • 通过基类指针调用函数
      • 输出所有地理实体的信息(类型、坐标、计算结果等)
    2. 内存管理与对象生命周期追踪
      • 正确使用newdelete动态分配和释放对象
      • 在析构函数中输出析构信息,验证销毁顺序
      • 观察构造与析构的执行顺序,理解派生类对象的生命周期
    3. 演示派生类成员重写
      • 展示不同派生类对calculateArea()render()的不同实现
      • 调用派生类特有的成员函数(如getElevation(), getLength(), getPerimeter()
      • 验证访问控制的正确性(尝试访问私有成员应产生编译错误)

二、GIS地理实体系统(Java版)

  1. 设计基类GeographicEntity,需要实现一个地理实体的基类,包含以下要素:
  2. 设计派生类Point,需要实现一个点实体类继承自GeographicEntity
  3. 设计派生类LineString,需要实现一个线实体类继承自GeographicEntity
  4. 设计派生类Polygon,需要实现一个面实体类继承自GeographicEntity
  5. 测试任务
    1. 创建测试程序Main.java
      • 创建List<GeographicEntity>存储不同类型的派生类对象
      • 创建3个Point对象,3个LineString对象,3个Polygon对象
      • 输出所有地理实体的信息
    2. 演示继承
      • 遍历集合,调用getEntityType()calculateArea(),观察多态行为
      • 对不同类型的对象进行类型转换并调用派生类特有方法
      • 使用instanceof进行类型检查
    3. 演示派生类成员重写
      • 实现集合统计功能:计算所有实体的总面积、平均坐标等
      • 调用派生类特有的成员函数(如getElevation(), getLength(), getPerimeter()