oop_in_c/main.c

46 lines
1.0 KiB
C
Raw Normal View History

2012-04-30 18:59:30 +04:00
#include <stdio.h>
#include <stdlib.h>
#include "ColoredSquare.h"
int main (int argc, char *argv[])
{
2012-04-30 19:31:40 +04:00
int i = 0;
Figure *fig[3];
2012-04-30 18:59:30 +04:00
fig[0] = Square_new ();
fig[1] = ColoredSquare_new ();
((ColoredSquare *) fig[1])->vtable->set_color (fig[1], 5);
((Square *) fig[0])->vtable->resize (fig[0], 2);
((Square *) fig[1])->vtable->resize (fig[0], 3);
2012-04-30 19:31:40 +04:00
fig[2] = fig[1]->vtable->clone (fig[1]);
((ColoredSquare *) fig[2])->vtable->set_color (fig[2], 3);
2012-04-30 18:59:30 +04:00
2012-04-30 19:31:40 +04:00
for (i = 0; i < sizeof (fig) / sizeof (Figure *); i++)
{
printf ("--- type = %s ---\n", fig[i]->vtable->type (fig[i]));
2012-04-30 18:59:30 +04:00
2012-04-30 19:31:40 +04:00
fig[i]->vtable->draw (fig[i]);
printf ("area(%lu) = %f\n",
(unsigned long) fig[i],
fig[i]->vtable->area (fig[i]));
printf ("diag_length(%lu) = %f\n",
(unsigned long) fig[i],
((Square *) fig[i])->vtable->diag_length (fig[i]));
puts ("---\n");
}
2012-04-30 18:59:30 +04:00
/*goto end;
err:
end:*/
fig[0]->vtable->destroy (fig[0]);
fig[1]->vtable->destroy (fig[1]);
return 0;
}