קובצי מקור
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 3 מתוך 61.
עד כה, הצבנו הצהרות פונקציה בקובצי כותרת, אבל קוד הפונקציה בפועל (ההגדרה) נמצא בקובץ הראשי. השלב הבא בתכנות מודולרי הוא להעביר את ההגדרות האלה אל קובצי מקור משלהם (קובצי .c).
כך נוצרת מבנה נקי בן שלושה חלקים: קובץ הכותרת מצהיר על פונקציות, קובץ מקור נפרד מגדיר אותן, ו־main פשוט משתמש בהן. כך זה נראה:
// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);
#endif
// math_utils.c
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
// main.c
#include <stdio.h>
#include "math_utils.h"
int main() {
printf("%d\n", add(5, 3));
return 0;
}
שימו לב ש־math_utils.c כולל את קובץ הכותרת שלו. כך מובטח שהגדרת הפונקציה תואמת להצהרה; אם הן אינן תואמות, המהדר יזהה את השגיאה. הקובץ הראשי צריך לכלול רק את קובץ הכותרת כדי להשתמש בפונקציה; הוא אינו צריך לדעת כיצד add פועלת באופן פנימי.
ההפרדה הזאת מסתירה את פרטי המימוש ומאפשרת לך לשנות את הלוגיקה של הפונקציה בלי לגעת בקבצים שמשתמשים בפונקציות האלה.
אתגר
קלבואו נבנה כלי מתמטי פשוט באמצעות ארגון הקוד במבנה הנכון של שלושה קבצים: קובץ כותרת להצהרות, קובץ מקור למימושים וקובץ ראשי שמשתמש בהם.
תיצרו שלושה קבצים:
math_ops.h: קובץ הכותרת שמכיל הצהרות על שתי פונקציות:multiplyו-subtract. שתי הפונקציות מקבלות שני מספרים שלמים ומחזירות מספר שלם. אל תשכחו להוסיף guards באמצעות הסמלMATH_OPS_H.math_ops.c: קובץ המקור שמכיל את המימושים בפועל שלmultiplyו-subtract. קובץ זה צריך לכלול את קובץ הכותרת שלו כדי לוודא שההצהרות תואמות להגדרות.main.c: הקובץ הראשי שכולל את קובץ הכותרת ומשתמש בשתי הפונקציות לביצוע חישובים.
הפונקציה multiply צריכה להחזיר את המכפלה של שני מספרים שלמים, ו-subtract צריכה להחזיר את המספר השלם הראשון פחות השני.
תקבלו שני קלטים של מספרים שלמים: a ו-b.
בפונקציה הראשית, הדפיסו את התוצאות של שתי הפעולות בשורות נפרדות:
Product: {result of multiply}
Difference: {result of subtract}לדוגמה, עבור הקלטים 8 ו-3, הפלט יהיה:
Product: 24
Difference: 5נסו בעצמכם
#include <stdio.h>
#include "math_ops.h"
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
// TODO: קראו לפונקציה multiply עם a ו-b ושמרו את התוצאה
// TODO: קראו לפונקציה subtract עם a ו-b ושמרו את התוצאה
// TODO: הדפיסו את התוצאות בפורמט הבא:
// Product: {התוצאה של multiply}
// Difference: {התוצאה של subtract}
return 0;
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
4כימוס
המושג של מצביעים אטומיםהגדרת מבנים אטומיםפונקציות Get ו-Setאימות ב-Settersסיכום: הקופסה הסודית2אובייקטים ומתודות
מבנים כאובייקטיםמצביע 'Self'נכונות constמצביע לעומת ערךמתודות עזרחזרה: מנהל נקודות5פרויקט: חשבון בנק פשוט
הגדרת הפרויקטמימוש החשבוןתרגלו בעצמכם: קומפיילר C אונליין