Можно ли реализовать все 4 принципа объектно-ориентированного программирования, используя только процедуры и глобальные переменные? - PullRequest
1 голос
/ 29 мая 2011

Это вопрос, который преследовал меня долгое время.

Можно ли реализовать принципы ООП, такие как Полиморфизм и Наследование, в не-ОО языке, таком как С, используя только процедуры и глобальные переменные? Нужен ли для этого особый подход из абстракций более низкого уровня?

Имеет ли этот вопрос какой-либо смысл?!

Ответы [ 3 ]

1 голос
/ 29 мая 2011

Возможно ли реализовать принципы ООП, такие как полиморфизм и наследование, на языке без ОО, таком как C?

Да, но для того, чтобы сделать это правильно, требуется некоторая работа и библиотеки, которые делают это вC может быть довольно громоздким в использовании из-за того, что все указатели на Foo передаются в качестве аргументов указателям на функции в Foo экземплярах.Проверьте Беркли DB и GTK +.(Должен признать, что я никогда не программировал на GTK +.)

В общем, процедурные языки могут выполнять OO;те, у которых есть закрытия, делают это особенно.легко, поскольку объекты - это замыкания бедного человека .

1 голос
/ 29 мая 2011

Конечно, можно использовать язык, подобный C, в форме OO. Полиморфизм можно эмулировать с помощью указателей на функции (но не ожидайте, что таким способом можно получить простой в управлении код). Возможно это обсуждение

http://ootips.org/oop-in-c.html

поможет вам узнать больше.

0 голосов
/ 29 мая 2011

Это определенно возможно. Оформите эту статью Марка Доминуса на ту же тему. Марк показывает, как базовые принципы объектно-ориентированного программирования можно эмулировать только с помощью Си.

Теоретически, должна быть возможность эмулировать ОО, используя любой полный язык Тьюринга. Количество усилий, которое потребуется для этого, может зависеть от возможностей языка. Учитывая, что мы все еще используем C в космических кораблях и некоторых других критических системах, эмуляция ОО представляется довольно тривиальной проблемой.

...