Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملفات الـ Header وملفات الـ Source

جزء من قسم Object Oriented Programming في رحلة C++ على Coddy — الدرس 3 من 104.

في لغة C++، يتم تقسيم الكود إلى ملفات ترويسة (.h) للتصريحات وملفات مصدر (.cpp) للتنفيذات.

ملف ترويسة مع حواجز الترويسة (helpers.h)

#ifndef HELPERS_H
#define HELPERS_H

#include <string>

std::string greet(std::string name);
int addNumbers(int a, int b);

#endif

ملف المصدر الذي يحتوي على التنفيذات (helpers.cpp)

#include "helpers.h"

std::string greet(std::string name) {
    return "Hello, " + name + "!";
}

int addNumbers(int a, int b) {
    return a + b;
}

استخدامها في main

#include <iostream>
#include "helpers.h"

int main() {
    std::cout << greet("Alice") << std::endl;
    std::cout << addNumbers(5, 3) << std::endl;
    return 0;
}

المخرجات:

Hello, Alice!
8

تمنع حراس الترويسة (#ifndef، #define، #endif) تضمين ملف الترويسة أكثر من مرة. يصرح ملف .h عما هو موجود (النماذج الأولية - prototypes)، بينما يحدد ملف .cpp كيفية عملها (التنفيذ - implementations).

challenge icon

التحدي

متوسط

قم بإنشاء ثلاث دوال مساعدة موزعة بين ملف رأس وملف مصدر:

  • helpers.h — تصريحات الدوال مع حواجز الرأس (header guards)
  • helpers.cpp — تنفيذات الدوال

الدوال المطلوب إنشاؤها:

  • greet(name) — تعيد "Hello, <name>!"
  • ageInTenYears(age) — تعيد age + 10
  • checkAdult(name, age) — تعيد "<name> is an adult" إذا كان age >= 18، وإلا "<name> is a minor"

ورقة مرجعية

يتم تنظيم كود C++ في ملفات ترويسة (.h) للتصريحات وملفات مصدر (.cpp) للتنفيذات.

تمنع **حارسات الترويسة** (Header guards) التضمين المتكرر:

#ifndef HELPERS_H
#define HELPERS_H
// التصريحات هنا
#endif

يحتوي **ملف الترويسة** (helpers.h) على تصريحات الدوال:

#ifndef HELPERS_H
#define HELPERS_H

#include <string>

std::string greet(std::string name);
int addNumbers(int a, int b);

#endif

يحتوي **ملف المصدر** (helpers.cpp) على التنفيذات:

#include "helpers.h"

std::string greet(std::string name) {
    return "Hello, " + name + "!";
}

int addNumbers(int a, int b) {
    return a + b;
}

**استخدام الدوال** في main:

#include <iostream>
#include "helpers.h"

int main() {
    std::cout << greet("Alice") << std::endl;
    std::cout << addNumbers(5, 3) << std::endl;
    return 0;
}

جرّب بنفسك

#include <iostream>
#include "helpers.h"

int main() {
    std::string name;
    int age;
    std::getline(std::cin, name);
    std::cin >> age;
    
    std::cout << greet(name) << std::endl;
    std::cout << "In 10 years you will be " << ageInTenYears(age) << std::endl;
    std::cout << checkAdult(name, age) << std::endl;
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming