С академической точки зрения, конечно, фактические файлы являются объектами . У них есть атрибуты, и вы можете выполнять над ними действия. Не означает, что FILE является классом , просто говоря, что существуют степени OO-сущности, о которых следует подумать.
Проблема с попыткой сказать, что интерфейс FILE stdio квалифицируется как OO, однако, заключается в том, что интерфейс FILE stdio не очень хорошо представляет «объектность» файла. Вы могли бы использовать ФАЙЛЫ под простым старым C ОО способом, но, конечно, вы утратили синтаксическую ясность, обеспечиваемую Java или C ++.
Вероятно, следует дополнительно добавить, что, хотя вы не можете сгенерировать «наследование» из FILE, это дополнительно дисквалифицирует его как OO, но вы можете утверждать, что это скорее ошибка его среды (простой C), чем абстрактная идея сам файл как объект.
На самом деле .. вы могли бы , вероятно, обосновать, что FILE - это что-то вроде интерфейса Java. В мире Linux вы можете управлять практически любым устройством ввода-вывода с помощью вызовов open / close / read / write / ioctl; функции FILE - это просто обложки над ними; следовательно, в FILE у вас есть что-то вроде абстрактного класса, который определяет основные операции (open / read / etc) на «устройстве ввода-вывода abstact», оставляя его на усмотрение различных видов производных типов для flesh те с типо-специфическим поведением.
Конечно, очень трудно увидеть ОО в куче кода на Си и очень легко разбить абстракции, поэтому настоящие языки ОО гораздо более популярны в наши дни.