Якщо припустити, що я повинен використовувати C (немає C ++ або об'єктно-орієнтованих компіляторів) і у мене немає динамічного розподілу пам’яті, які методи можна використовувати для реалізації класу чи хорошого наближення до класу? Чи завжди гарна ідея виділити "клас" в окремий файл? Припустимо, що ми можемо попередньо розподілити пам'ять, прийнявши фіксовану кількість екземплярів або навіть визначивши посилання на кожен об'єкт як константи до часу компіляції. Не соромтеся робити припущення щодо того, яку концепцію OOP мені потрібно буде впровадити (вона буде різною) та запропонувати найкращий метод для кожного.
Обмеження:
- Мені потрібно використовувати C, а не OOP, оскільки я пишу код для вбудованої системи, а компілятор і попередня база коду знаходиться в C.
- Не існує динамічного розподілу пам'яті, оскільки у нас недостатньо пам'яті, щоб обгрунтовано припустити, що ми не закінчимося, якщо почнемо динамічно розподіляти її.
- Компілятори, з якими ми працюємо, не мають проблем з функціональними покажчиками
apr_
та префікси GLIb з ними g_
для створення простору імен) та інших організаційних факторів без OOP. Якщо ви все одно будете реструктурувати додаток, я б подумав витратити якийсь час, намагаючись придумати більш доцільну процедурну структуру.