ملخص: Point Manager
جزء من قسم Object Oriented Programming في رحلة C على Coddy — الدرس 11 من 61.
التحدي
سهللنقم ببناء وحدة Point كاملة تدير إحداثيات ثنائية الأبعاد. يجمع هذا التحدي التلخيصي كل ما تعلمته حول التعامل مع الهياكل (structs) ككائنات — باستخدام المؤشرات لتعديل الحالة ومؤشرات const لعمليات القراءة فقط.
ستقوم بإنشاء ثلاثة ملفات:
point.h: صرح عن هيكلPointيحتوي على عضوين صحيحين:xوy. صرح أيضاً عن دالتين تعملان كطرق (methods):point_move— تأخذ مؤشراً إلى Point بالإضافة إلى عددين صحيحين (dxوdy)، وتقوم بإزاحة موضع النقطة عن طريق إضافة هذه القيم إلىxوypoint_print— تأخذ مؤشرconstإلى Point وتعرض إحداثياتها (يجب ألا تقوم هذه الدالة بتعديل النقطة)
POINT_H.point.c: قم بتنفيذ كلتا الدالتين. فكر جيداً في أي دالة تحتاج إلى مؤشر عادي (لتعديل النقطة) وأيها تستخدم مؤشرconst(للقراءة بأمان دون تعديل).main.c: قم بإنشاء Point، وحركها، واعرض موضعها في مراحل مختلفة.
ستتلقى أربعة مدخلات صحيحة: x الأولية، و y الأولية، وقيمة dx (مقدار التحرك أفقياً)، وقيمة dy (مقدار التحرك رأسياً).
في ملفك الرئيسي، قم بتهيئة Point بالإحداثيات الأولية، واطبع موضعها الأولي، ثم حركها بالمقادير المعطاة، ثم اطبع موضعها الجديد.
يجب أن تقوم الدالة point_print بالإخراج بهذا التنسيق:
Point: ({x}, {y})على سبيل المثال، مع المدخلات 3، 5، 2، و -1، سيكون المخرج:
Point: (3, 5)
Point: (5, 4)جرّب بنفسك
#include <stdio.h>
#include "point.h"
int main() {
// قراءة قيم المدخلات
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: إنشاء نقطة (Point) بالإحداثيات الأولية (x, y)
// TODO: طباعة الموقع الأولي باستخدام point_print
// TODO: تحريك النقطة بمقدار (dx, dy) باستخدام point_move
// TODO: طباعة الموقع الجديد باستخدام point_print
return 0;
}
جميع دروس Object Oriented Programming
1أساسيات البرمجة التركيبية
ملفات الترويسةحواجز التضمينملفات المصدرالدوال الساكنةمراجعة: آلة حاسبة تركيبية4التغليف (Encapsulation)
مفهوم الـ Opaque Pointersتعريف الـ Opaque Structsالـ Getters والـ Settersالتحقق من البيانات في الـ Settersملخص: الصندوق السري2الكائنات والأساليب
الـ Structs ككائناتمؤشر 'Self'صحة استخدام Constالمؤشر مقابل القيمةالأساليب المساعدةملخص: Point Manager5مشروع: حساب بنكي بسيط
إعداد المشروعتنفيذ الحساب3دورة حياة الكائن
نمط المنشئ (Constructor Pattern)نمط الهادم (Destructor Pattern)تهيئة الـ Stackالنسخ العميق (Deep Copy)مراجعة: String Wrapper6الوراثة عبر التركيب
تضمين الـ Structقاعدة العضو الأولالوصول إلى أعضاء الأبعملية الـ Upcastingمراجعة: هرمية الأشكال9مشروع: رسّام الأشكال
نظرة عامة على المشروعتنفيذ الدائرة