- C не является объектно ориентированным в строгом смысле слова, поскольку он не имеет встроенного синтаксиса, поддерживающего объектно-ориентированную возможность, такую как класс, наследование и т. Д.
Но если вы знаете трюк, вы можете легко добавить к нему объектно-ориентированную возможность, просто используя struct, function pointer, & self-pointer. DirectFB - такая C-библиотека, написанная объектно-ориентированным способом. Плохо, что это больше подвержено ошибкам, поскольку оно не регулируется синтаксисом и проверкой типа компиляции. Вместо этого он основан на соглашении о кодировании.
например.
IDirectFB/*a typedef of a struct*/ *dfb = NULL;
IDirectFBSurface/*another typedef of a struct*/ *primary = NULL;
DirectFBCreate (&dfb); /*factory method to create a struct (e.g. dfb) with
pointers to function and data. This struct is
like an object/instance of a class in a language with build-in
syntax support for object oriented capability */
dfb->SetCooperativeLevel/*function pointer*/
(dfb/*self pointer to the object dfb*/,
DFSCL_FULLSCREEN);
dsc.flags = DSDESC_CAPS;
dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;
dfb->CreateSurface/*function pointer, also a factory method
to create another object/instance */
(dfb/*self pointer to the object dfb*/,
&dsc,
&primary/*another struct work as object of another class created*/);
primary->GetSize/*function pointer*/
(primary/*self pointer to the object primary*/,
&screen_width,
&screen_height);
2. C++ является объектно-ориентированным, поскольку он имеет встроенную поддержку объектно-ориентированных возможностей, таких как класс и наследование. Но есть аргумент, что это не полный или чистый объектно-ориентированный язык, поскольку он допускает синтаксис Си (синтаксис структурного программирования). Я также помню, что C++ не хватает нескольких объектно-ориентированных возможностей, но не помню каждый точно.
Попросите всех согласиться с определением Object Oriented, и тогда я смогу ответить на вопрос. – Yacoby
Объектно-ориентированное программирование (ООП) - это парадигма программирования, которая использует «объекты» - структуры данных, состоящие из полей данных и методов вместе с их взаимодействиями - для разработки приложений и компьютерных программ. Методы программирования могут включать такие функции, как абстракция данных, инкапсуляция, модульность, полиморфизм и наследование. Он не был широко использован в разработке основного программного обеспечения до начала 1990-х. [Править] Многие современные языки программирования теперь поддерживают ООП. –
Это просто одно определение. Должен любить '[править]' btw;) –