.


:




:

































 

 

 

 





- (). - , -- . , -- , , -, .

, , C . , , . , Window (). , , , . C, , . Item, Shape, Box Circle:

struct ItemClass

{

char* class_name;

void(* cut)();

void(* move)();

Boolean(* pick)();

void(* ungroup)();

};

struct ShapeClass

{

char* class_name;

void(* cut)();

void(* move)();

Boolean(* pick)();

void(* ungroup)();

void(* write)();

};

struct BoxClass

{

char* class_name;

void(* cut)();

void(* move)();

Boolean(* pick)();

void(* ungroup)();

void(* write)();

};

struct CircleClass

{

char* class_name;

void(* cut)();

void(* move)();

Boolean(* pick)();

void(* ungroup)();

void(* write)();

};

, , : , , (, Box move Shape, pick write :

struct BoxClass BoxClass =

{

Box,

Shape__cut,

Shape__move,

Box__pick,

Shape__ungroup,

Box__write,

};

struct CircleClass CircleClass =

{

Circle,

Shape__cut,

Shape__move,

Circle__pick,

Shape__ungroup,

Circle__write,

};

, . , - .

, (, Shape). , Class , :

struct Circle * create_circle(x0,y0,radius0)

Length x0,y0,radius0;

{

struct Circle * new_circle;

new_circle =

(struct Circle*)malloc(sizeof(struct Circle));

new_circle->class = &CircleClass;

new_circle->x = x0;

new_circle->y = y0;

new_circle-> radius = radius0;

return new_circle;

};

, . , pick (Shape), , :

struct Shape* shape;

Length x,y;

Boolean status;

status = (*shape->class->pick)(shape,x,y);

.

, - : () .

( ), (), - ; ( ), , ( STL) . , , .

, (, ).

( ) Item Group:

struct Item

{

struct ItemClass* class;

struct Group* group;

};

struct Group

{

struct GroupClass* class;

int item_count;

struct Item** items;

};





:


: 2016-10-06; !; : 386 |


:

:

, .
==> ...

2015 - | 1875 -


© 2015-2024 lektsii.org - -

: 0.014 .