Menu
Coddy logo textTech

המושג של מצביעים אטומים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 17 מתוך 61.

עד כה, כאשר אנחנו מגדירים מבנה בקובץ כותרת, כל מי שכולל את קובץ הכותרת הזה יכול לראות ולגשת ישירות לכל האיברים שלו. הדבר מפר את עקרון הכימוס: הסתרת פרטים פנימיים מקוד חיצוני.

‏C מספקת טכניקה עוצמתית שנקראת מצביעים אטומים כדי לפתור את הבעיה. הרעיון פשוט: מצהירים ש־struct קיים בקובץ הכותרת, אבל לא חושפים מה יש בתוכו. עושים זאת באמצעות טיפוס לא שלם:

// wallet.h
typedef struct Wallet Wallet;  // הכרזה בלבד - ללא גוף!

Wallet *create_wallet(int initial_balance);
void free_wallet(Wallet *w);

שימו לב שאין סוגריים מסולסלים. אנחנו אף פעם לא מגדירים מה מכיל Wallet. המהדר יודע שהטיפוס קיים, אבל לא את הגודל שלו או את החברים שלו. משמעות הדבר היא שקוד שכולל את קובץ הכותרת הזה יכול לעבוד רק עם מצביעים אל Wallet, ולעולם לא עם המבנה עצמו ישירות.

למה זה חשוב? מכיוון שההגדרה בפועל של המבנה מוסתרת בקובץ .c, שום קוד שמשתמש בקובץ הכותרת שלך לא יכול לכתוב w->balance או sizeof(Wallet). הוא חייב להשתמש בפונקציות שאתה מספק. כך אתה שולט בכל הגישה לנתונים, ותוכל לשנות את המבנה הפנימי בהמשך בלי לשבור קוד שתלוי בקובץ הכותרת שלך.

בשיעור הבא תתרגלו להגדיר את גוף ה-struct עצמו בתוך קובץ המקור, וכך תשלים את תבנית המצביע האטום.

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C אונליין