Поскольку OO - это шаблон программирования, а не неотъемлемое свойство языка, он должен быть применим и к C. Как пишут ОО-код в C, когда это нужно и когда нельзя задействовать C++?
Ответ
Ну, суть сказали - использовать структуры для хранения контекста конкретных объектов. И передавать соответствующую структуру аргументом в функции. Которые уже будут работать с этой структурой как с классом =3
Пример:
typedef struct { // контекст объекта с чем угодно внутри
int x;
int y;
} nya;
typedef nya * pnya;
void nya_construct (pnya this) // конструктор
{
this->x = 0;
this->y = 0;
}
void nya_incx (pnya this) // метод 1
{
this->x++;
}
void nya_decy (pnya this) // метод 2
{
this->y--;
}
int main (void) // использование
{
pnya first = (pnya)malloc(sizeof(nya)); // объект 1
pnya second = (pnya)malloc(sizeof(nya)); // объект 2
nya_construct(first); // конструируем
nya_construct(second);
nya_incx(first); // исполняем метод в контексте объекта 1
free(first); // удаляем. Деструктора нет, его не вызываем
free(second);
}
Ну, в таком духе.
Комментариев нет:
Отправить комментарий