@Neusoon

Возможно ли в процедурном программирование, имитировать ООП?

Сейчас я изучаю Си, программируя простую игру. Поскольку много пособий написано для С++, хочешь не хочешь, а смотреть приходится. Из ООП мне действительно кажется удобным создать класс который вмещает N функций или данных. Например класс сцена с функциями А и Б. Но в Си и процедурном программирование я не понимаю как это сделать. На ум пришла глупая идея сделать дополнительный параметр метку и через условия разделить. Есть ли более элегантный способ?

Мне нравится С и процедурный стиль. Но вот когда дело доходит до объектов в прямом смысле слова. Начал задуматься, а не стоит ли изучить С++. Поэтому решил спросить тут о простой вещи. Которая будет ключевой в моей программе. На себе ощутил смысл фразы "программист на Си с классами".
  • Вопрос задан
  • 192 просмотра
Решения вопроса 2
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
До C++ в чистом С классы реализовывали структурами. Методы имитировались включением указателя на функцию в поле структуры, а наследование включением указателя на наследуемую структуру.
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега C
Седой и строгий
Погуглите "GObject"
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Mercury13
Программист на «си с крестами» и не только
Можно, и я бы посоветовал посмотреть на две вещи.
1. MiniZip. Настоящие виртуальные потоки, написанные на чистом Си!
Кстати, у нас на работе есть библиотека MiniZipPort, представляющая собой тупой перевод MiniZip на виртуальные потоки и шаблонные контейнеры — две строчки Си превращались в одну строчку на «крестах». К тому же для хранения каталога я использовал уже имевшийся самописный AccuStream (что-то вроде std::deque, только в виде потока).
2. Doom. Самый первый, 1993–94 года. Там тоже ухитрились делать объектно — правда, другими методами.
Ответ написан
gbg
@gbg
Любые ответы на любые вопросы
На C++ можно писать объектно, процедурно и функционально. Просто надо хорошо знать std и поведение классов.

Когда id создавала свои шедевры (написанные как раз на C c классами), с хорошими оптимизирующими компиляторами C++ было туго. Сейчас ситуация уже изменилась в лучшую сторону - современные компиляторы прекрасно проходят тест Степанова.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы