Apr 27

注:这个程序是在软件设计师教程上看到,并做了一点点修改得到。。

在一个简化的绘图程序中,支持点(point)和圆(circle)两种图形,在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),

并定义类型shape_t、point_t、circle_t分别表示基本图形、点和圆,点和圆自然具有基本图形的所有特征。

下面是利用C语言,通过函数指针和可变参数机制实现上面的类层次关系:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
 
// 程序中的两个图形:点和圆
typedef enum {point,circle}shape_type;
// 基本图形类型
typedef struct {
    shape_type type;
    void (*destroy)();
    void (*draw)();
}shape_t;
// 点类
typedef struct {
    shape_t common;
    int x,y;
}point_t;
// 圆类
typedef struct {
    shape_t common;
    point_t *center;
    int radius;
}circle_t;
/*