التصنيفات
البومات الصور
فيديوهات
الهاشتاجات
لايوجد بيانات لعرضها
روابط ذات صله
Posted in أبحاث علمية تقنية, أخبار التكنولوجيا والتقنية on نوفمبر 03, 2024
البرمجة الكائنية: تنظيم الكود باستخدام الكلاسات والكائنات
مقدمة عن البرمجة الكائنية وأهمية الكلاسات والدوال الأعضاء
تعد البرمجة الكائنية (Object-Oriented Programming) من أهم أساليب البرمجة الحديثة، حيث تسمح بتقسيم البرنامج إلى وحدات قابلة لإعادة الاستخدام تعرف بالكائنات (Objects).
الكلاسات (Classes) التي تمثل قوالب يمكن من خلالها إنشاء كائنات متعددة، وكل كائن منها يتميز بخصائصه وسلوكياته التي تحددها الكلاس.
الكلاس هو قالب أو مخطط يصف مجموعة من البيانات والدوال التي يمكن تطبيقها على الكائنات المشتقة منه. كما تحتوي الكلاسات عادة على متغيرات بيانات تمثل خصائص الكائنات، ودوال أعضاء تمثل السلوكيات التي يمكن تنفيذها على تلك الكائنات.
دوال الأعضاء :هي الدوال التي تعرف داخل الكلاس وتستخدم للتعامل مع البيانات الخاصة به. من بين هذه الدوال، توجد دالة خاصة تسمى دالة الباني (Constructor) والتي يتم استدعاؤها تلقائيًا عند إنشاء الكائن، بهدف تهيئته وإعطائه قيمًا ابتدائية.
أهمية الأكواد
- إدخال وإخراج البيانات: كما في الكود الأول، هذا يساعد على تصميم كلاسات بسيطة لتخزين وعرض البيانات، وهو مفيد في العديد من التطبيقات التي تتطلب تخزين بيانات أساسية وعرضها.
- تخزين وعرض تفاصيل معقدة: الكود الثاني يوضح كيفية التعامل مع تفاصيل أكثر تعقيدًا، حيث يمكن استخدام الكلاسات لإدارة عدة خصائص لمكون معين في النظام، مثل الأجزاء في نظام إدارة المخزون.
- التعامل مع الرسومات: الكود الثالث يوضح كيفية تصميم كائنات رسومية لرسم أشكال مختلفة باستخدام الخصائص والألوان، مما يكون مفيدًا في التطبيقات التي تحتاج إلى واجهات رسومية.
- التعامل مع وحدات قياس محددة: الكود الرابع يقدم كلاسًا لإدخال وإخراج مسافات، وهو مثال على كيفية استخدام الكلاسات للتعامل مع بيانات بتنسيقات معينة.
هذه الأمثلة توضح قوة البرمجة الكائنية في تنظيم الكود وتسهيل عملية إنشاء كائنات ذات سلوكيات محددة، كما تسهم في تحسين تنظيم البرامج الكبيرة وتسهيل صيانتها وتطويرها.
1) كلاس يعمل على إدخال وإخراج عناصر
هذا الكود يعرّف كلاس بسيط يدعى smallobj يحتوي على متغير بيانات واحد فقط somedata، ويقوم بتعيين قيمته وعرضها.
#include
using namespace std;
class smallobj {
private:
int somedata; // بيانات خاصة بالكلاس
public:
void setdata(int d) { // دالة لتعيين القيمة
somedata = d;
}
void showdata() { // دالة لعرض القيمة
cout << "Data is " << somedata << endl;
}
};
int main() {
smallobj s1, s2; // تعريف كائنين من الكلاس
s1.setdata(1066); // تعيين قيمة لـ s1
s2.setdata(1776); // تعيين قيمة لـ s2
s1.showdata(); // عرض قيمة s1
s2.showdata(); // عرض قيمة s2
return 0;
}
التنفيذ
Data is 1066
Data is 1776
الفائدة: الكود يسمح بتعيين وعرض قيمتين مختلفتين من خلال كائنين.
الوظيفة: مفيد للتدريب على كيفية استخدام الكلاسات في إدخال وإخراج البيانات الأساسية
2) كلاس يعمل على تعيين قيم إلى مجموعة من البيانات وطباعتها
يعرض كلاس part لتخزين بيانات خاصة بقطعة معينة مثل رقم النموذج، رقم القطعة، والتكلفة
#include
using namespace std;
class part {
private:
int modelnumber;
int partnumber;
float cost;
public:
void setpart(int mn, int pn, float c) {
modelnumber = mn;
partnumber = pn;
cost = c;
}
void showpart() {
cout << "Model " << modelnumber;
cout << ", part " << partnumber;
cout << ", costs $" << cost << endl;
}
};
int main() {
part part1; // تعريف كائن من الكلاس
part1.setpart(6244, 373, 217.55F); // تعيين القيم للكائن
part1.showpart(); // عرض القيم
return 0;
}
التنفيذ
Model 6244, part 373, costs $217.55
الفائدة: يسمح بإدارة وتخزين بيانات متعددة لقطعة معينة.
الوظيفة: يستخدم لتخزين وعرض بيانات القطع في نظام المخزون أو التصنيع.
3) كلاس يرسم دائرة
يستخدم كلاس circle لرسم دوائر بمواصفات مختلفة باستخدام مكتبة الرسومات msoftcon.h.
#include "msoftcon.h"
class circle {
protected:
int xCo, yCo; // إحداثيات مركز الدائرة
int radius;
color fillcolor; // لون التعبئة
fstyle fillstyle; // نمط التعبئة
public:
void set(int x, int y, int r, color fc, fstyle fs) {
xCo = x;
yCo = y;
radius = r;
fillcolor = fc;
fillstyle = fs;
}
void draw() {
set_color(fillcolor);
set_fill_style(fillstyle);
draw_circle(xCo, yCo, radius);
}
};
int main() {
init_graphics();
circle c1, c2, c3;
c1.set(15, 7, 5, cBLUE, X_FILL);
c2.set(41, 12, 7, cRED, O_FILL);
c3.set(65, 18, 4, cGREEN, MEDIUM_FILL);
c1.draw();
c2.draw();
c3.draw();
set_cursor_pos(1, 25);
return 0;
}
التنفيذ
الفائدة: يسمح برسم دوائر ملونة بأنماط تعبئة مختلفة على الشاشة.
الوظيفة: مفيد لإنشاء رسومات تعليمية، أو في برامج واجهات المستخدم التي تحتاج إلى أشكال رسومية.
4) كلاس لإدخال وإخراج المسافة
هذا الكود يعرّف كلاس Distance لإدخال وإخراج المسافة بالقدم والبوصات
#include
using namespace std;
class Distance {
private:
int feet;
float inches;
public:
void setdist(int ft, float in) { // تعيين المسافة
feet = ft;
inches = in;
}
void getdist() { // إدخال المسافة من المستخدم
cout << "\nEnter feet: "; cin >> feet;
cout << "Enter inches: "; cin >> inches;
}
void showdist() { // عرض المسافة
cout << feet << "'-" << inches << "\"";
}
};
int main() {
Distance dist1, dist2; // تعريف كائنين من الكلاس
dist1.setdist(11, 6.25); // تعيين المسافة للكائن الأول
dist2.getdist(); // إدخال المسافة للكائن الثاني من المستخدم
cout << "\ndist1 = "; dist1.showdist();
cout << "\ndist2 = "; dist2.showdist();
cout << endl;
return 0;
}
التنفيذ
dist1 = 11'-6.25"
Enter feet: [إدخال المستخدم]
Enter inches: [إدخال المستخدم]
dist2 = [feet]'-[inches]"
الفائدة: مفيد لحساب المسافات بالتنسيق البريطاني (قدم، بوصة).
الوظيفة: يُستخدم في التطبيقات التي تتطلب القياسات بالقدم والبوصة، مثل تطبيقات البناء أو الهندسة
5) كلاس يشرح عمل دالة الباني
يشرح دالة الباني (constructor)،
#include
using namespace std;
class MyClass {
private:
int number;
public:
MyClass(int n) { // دالة الباني
number = n;
cout << "Object created with number = " << number << endl;
}
void display() {
cout << "Number is: " << number << endl;
}
};
int main() {
MyClass obj1(10); // إنشاء كائن بدالة الباني، تعيين القيمة 10
obj1.display();
return 0;
}
التنفيذ
Object created with number = 10
Number is: 10
الفائدة: دالة الباني تسمح بتهيئة الكائن مباشرةً عند إنشائه دون الحاجة لاستدعاء دالة تعيين القيم يدويًا.
الوظيفة: تساعد في تحسين الكود وتقليل الأخطاء، وتُستخدم بشكل شائع في البرمجة الكائنية
Tags # مشاريع تقنية # ابحاث علمية تقنية