ملخص: Point Manager
جزء من قسم البرمجة كائنية التوجه في رحلة C على Coddy. الدرس 11 من 61.
التحدي
سهللنبنِ وحدة Point كاملة تدير إحداثيًا ثنائي الأبعاد. يجمع هذا التحدي التلخيصي كل ما تعلمته عن التعامل مع البُنى باعتبارها كائنات: using المؤشرات لتعديل الحالة وconst pointers لعمليات القراءة فقط.
ستنشئ ثلاثة ملفات:
point.h: Declare بنيةPointتحتوي على two integer members:xوy. كذلك Declare two functions تعملان كطرائق:point_move: Takes a pointer to Point along with two integers (dxوdy)، ويحرّك position النقطة بإضافة هذه values إلىxوypoint_print: Takes aconstpointer إلى Point ويعرض coordinates الخاصة بها (يجب ألا تقوم هذه function بتعديل النقطة)
POINT_H.point.c: Implement كلتا الدالتين. فكّر بعناية في أي function تحتاج إلى regular pointer (لتعديل النقطة) وأيّها تستخدمconstpointer (للقراءة بأمان دون تعديل).main.c: Create كائن Point، وحرّكه، واعرض position الخاصة به في مراحل مختلفة.
ستتلقى four integer inputs: initial x، وinitial y، وdx value (مقدار الحركة أفقيًا)، وdy value (مقدار الحركة عموديًا).
في ملف main، قم بتهيئة Point باستخدام starting coordinates، وPrint position الأولية، ثم حرّكه بالمقادير المعطاة، وبعد ذلك Print position الجديدة.
يجب أن تُخرج function point_print النتيجة بهذا format:
Point: ({x}, {y})على سبيل المثال، عند استخدام inputs 3 و5 و2 و-1، سيكون Output كما يلي:
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;
}
جميع دروس البرمجة كائنية التوجه
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مشروع: رسّام الأشكال
نظرة عامة على المشروعتنفيذ الدائرةتنفيذ المستطيلاستخدام تعدد الأشكالحاوية الأشكالتدرّب بنفسك: مترجم C عبر الإنترنت