Файлдар модуль ретінде


.h файлы программаның басқа бөліктері қолданатын интерфейс болып табылады; .c файлы жүзеге асыруды білдіреді. Мұндай обьектілерді көбіне модуль деп атайды. Қолданушыға қажетті атауларға ғана рұқсат болады, ал қалған атаулар жасырынған. Бұл қасиетті көбіне берілгендерді жасыру деп атайды. Модульдердің мұндай түрі жұмсақ болады. Мысалы, жүзеге асыру бір немесе бірнеше .c файлдардан тұруы мүмкін және .h файл түрінде бірнеше интерфейс ұсынылуы мүмкін. Қолданушыға қажет емес ақпараттар жасырынған. Егер қолданушы .c файлында не жасырынғанын білмеу керек болса, оларға рұқасат бермеу керек.  Оларға компилятордың эквивалентті шығатын файлдары да жеткілікті.

Кейде келесілерден тұратын қиындықтар туады, мұндай жұмсақтық формалдық құрылымсыз жүзеге асырылады. Тілдің өзі объект сияқты модульдерді танымайды және компиляторда басқа (экспортталатын) модулдар қолдануы қажет атауларды анықтайтын .h файлдарын, басқа (импортталатын) модульдерден атауларды сипаттайтын .h файлдарынан ажырата алатын мүмкіндігі жоқ. 

Басқа жағдайларда сол мәселе туындауы мүмкін, яғни модуль жаңа типті емес объектілер жиынын анықтайды. Мысалы, table модульі бір кестені анықтайды, ал егер сізге екі кесте керек болса, онда модуль анықтамасының көмегімен екінші кестені берудің қарапайым тәсілі жоқ.

Әр статистикалық үнсіздік бойынша енгізілген объект нолмен инициализирленеді, программист басқа (константты) мәндер бере алады. Бұл инициализацияның тек өте примитивті түрі. Модуль қандай да түрде қолданылар алдында кластар көмегімен инициализация үшін орындалатын код құруға болады, және/немесе коды, соңғы қолданылған модульден кейін тазарту үшін қолданылады.