类设计

来源:互联网 发布:美工设计网站大全 编辑:程序博客网 时间:2024/06/07 00:09



 enum  GroundObjectType
  {
  TrafficSign,
  Board,
  ProtectiveBarrier,
  BridgeOverPass,
  Tunnel,
  Gantry,
  TollBooth,
  VarMessgeSign,
  PerDelineators,
  Ditch,
  Poles,
  OtherObj
};

//地物类 ,实现地物的共性接口   by tianjihui
 // 原来准备写一个父类,让子类继承,但继承会产生很多类,和相关的方法 ,产生代码较多
 // 现抽象成地物类,概括所有属性和方式。
class cGroundObject
{
public:
  cGroundObject(void);
 ~cGroundObject(void);
public:
  //地物名称
  QString  m_Name;
  //地物类型
  GroundObjectType m_ObjectType;
  //地物ID
   unsigned int  m_ID;
 //地物的中心点
 CCVector3d  m_centerPoint;
 // 存储地物的采集点列表
 vector<CCVector3d>  m_CollectPoints;
 // 存储地物的长度
 double m_Length;
 // 存储地物的高度
 double m_Heigth;

public:
  bool getGroundName(QString GroundName);
  GroundObjectType getGroundtype();
public:
 // 纯虚函数 在地物子类中实现
    virtual bool getLength()=0;
    virtual bool getHeigth()=0;
 virtual bool getCenterPoint()=0;
 virtual bool computeAtrribute()=0;

public:

 friend GroundObjectType getGroundtype(QString GroundName);
};


#pragma once
#include <cGroundObject.h>

class CTrafficSign:public cGroundObject
{
 public:
  CTrafficSign(void);
 ~CTrafficSign(void);
public:
 unsigned int  m_Type; //标识的类型 0_其它设施  1_红绿灯
 unsigned int  m_Shape; //0_圆形 2_矩形 3_其它
 unsigned int  m_Time;  //0_无倒计时   1_有倒计时
 unsigned int  m_Pattern; // 0_圆形  1_方向箭头 2_车形 3_人形
 unsigned int  m_Num;   // 1_1个灯 2_2个灯 3_3个灯
 unsigned int  m_Rank;  //0_竖排 1_横排

public:
 virtual bool getLength();
 virtual bool getHeigth();
 virtual bool getCenterPoint();
 virtual bool computeAtrribute();
public:
 friend bool ReadGround(QString fileName,const vector<CTrafficSign>& TrafficSigns);
 friend bool WriteGround(QString fileName,const CTrafficSign & TrafficSign);
 friend bool WriteGround(QString fileName,const vector<CTrafficSign> & TrafficSigns);
 friend bool DeleteGround(const CTrafficSign & TrafficSign);

};

0 0
原创粉丝点击