【说明】
在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape t、 point t和circle t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。
【C代码】
typedef enum point,circle shape type; /* 程序中的两种图形:点和圆 */
typedef struct /* 基本的图形类型 */
shape_type type; /* 图形中类标识:点或者圆*/
void (*destroy) ( ); /* 销毁图形操作的函数指针*/
void (*draw) ( ); /* 绘制图形操作的函数指针*/
shape_t;
typedef struct shape_t common; int x; iht y; point_t; /* 定义点类
型, x, y为点坐标*/
void destroyPoint (point_t* this) free (this); printf ("Point destoryed!
/n"); ) /* 销毁点对象*/
void drawPoint(point_t* this) printf("P(%d,%d)", this->x, this->y);
/* 绘制点对象*/
shape_t* createPoint (va_list* ap) (/* 创建点对象,并设置其属性*/
point_t* p_point;
if ( (p_point= (point_t*)malloc (sizeof (point_t)) ) ==NULL) returnNULL;
p_point->common, type = point; p_point->common, destroy = destroyPoint;
p_point
一个简化的高铁售票系统的规格说明如下:
●乘客未使用系统前系统处于“等待”状态,屏幕显示沿线各车站的站名。
●乘客选择了到达站并按下[购票]键之后,系统进入“待付款”状态,屏幕显示票价,等待乘客付款。
●如果乘客在限时之内付款,系统进入“出票”状态,打印并吐出相应车票,同时找回余额,然后系统重置回到“等待”状态。
●如果乘客在限时之内未付款之前按下[取消]键取消购票,系统进入“等待”状态。
●如果乘客在限时之内没有付款,系统进入“超时”状态,显示“超时”“取消购票”等信息,然后系统重置回到“等待”状态。
●如果乘客在拿到车票后要求退票,在“等待”状态下按下[退票]键,系统进入“查证”状态。
●如果查证成功,系统进入“退票”状态。回收车票,退回票款,然后系统重置回到“等待”状态;如果查证不成功,系统进入“警告”状态,屏幕显示“车票无效”信息,然后系统重置回到“等待”状态。
我来回答: