الفصل 1: الفصول والأشياء (الجزء 1)
- CS111: لغة البرمجة II
مواضيع
- مقدمة عن الفصول والأشياء
- تعريف الفصل
- إنشاء الأشياء
- معدلات الوصول
- التمويه وإخفاء البيانات
- الدوال المساعدة
في جافا
- كل شيء يجب أن يكون في فصل. لا توجد دوال عالمية أو بيانات عالمية. حتى Main هو فصل.
ما هو الفصل؟
دعنا نبدأ بمثال:
- الخصائص:
- الاسم
- العمر
- السلالة
- الطعام المفضل
- السلوكيات:
- إصدار صوت مواء
- اللعب
- الغسل
- الأكل
- الصيد
الفصل يُستخدم لوصف شيء في العالم.
يُوصف غالبًا بأنه نموذج أو وصف عام أو قوالب أو تخطيط لكائن.
يصف خصائص الكائن (أنواع البيانات / السمات) وسلوكياته (العمليات / الأساليب).
يُستخدم لإنشاء نماذج (مقتنيات) كائنات.
إنشاء نماذج جديدة من مخطط
كائنات من الفصل:
- خصائص:
- الاسم
- العمر
- الطعام المفضل
- سلوكيات:
- مواء
- لعب
- أكل
- أمثلة على الكائنات:
- cat1: "Opal", العمر: 11, الطعام: "مكافآت"
- cat2: "Misty", العمر: 5, الطعام: "دجاج"
- cat3: "Tiger", العمر: 15, الطعام: "BlueJ"
النموذج هو تعريف مجموعة من العناصر، في حين أن الكائن هو حالة معينة من هذا النموذج.
يمتلك الكائن هوية فريدة وحالة وسلوكيات. الحالة تتكون من مجموعة من حقول البيانات.
البرمجة الكائنية
- البرمجة الكائنية تشتمل على برمجة باستخدام الفصول والكائنات.
- تتضمن تفاعل الكائنات ولا تتطلب ترتيبًا محددًا.
نمذجة الخصائص والسلوكيات (UML)
UML: لغة النمذجة الموحدة.
تُستخدم UМL لتوثيق الجوانب المعمارية والسلوكية والهيكلية للنظام.
توضح مخططات الفصول الكائنات في النظام والعلاقات بينها.
تتكون مخططات الفصول من مستطيل مقسم إلى ثلاث أجزاء:
- الجزء العلوي: اسم الفصل
- الجزء الأوسط: قائمة الخصائص
- الجزء السفلي: قائمة العمليات (الدوال)
يُمثل حقل البيانات بالصيغة: dataFieldName: dataFieldType.
يُمثل المُنشئ بالصيغة: ClassName(parameterName: parameterType).
تُعتبر الدالة بالصيغة: methodName(parameterName: parameterType): returnType.
علامات لمعدلات الوصول مدعومة في UML
- + العامة
- # المحمية
- - الخاصة
- ~ الحزمة
كيفية تعريف فصل
- تصميم الكائنات
- إعلان وإنشاء الكائنات
التعريف
- لإنشاء فصل، استخدم الكلمة الرئيسية class.
- تختلف فئة Cat عن باقي الفصول لأنها لا تحتوي على دالة main ولا يمكن تشغيلها.
- الفصل الذي يحتوي على دالة main سيكون في فصل آخر.
الإعلان عن الكائنات وإنشاؤها
- يجب تعريف الفصل قبل أن تتمكن من إعلان الكائن.
- اسم الكائن يختلف عن اسم الفصل.
الوصول إلى بيانات الكائن وطرقها
- بعد إنشاء كائن، يتم الوصول إلى بياناته وطرقه باستخدام عامل النقطة (.).
- للرجوع إلى بيانات الكائن: objectRefVar.data (مثل: Cat1.name)
- لاستدعاء دالة الكائن: objectRefVar.methodName(arguments) (مثل: Cat1.play()).
الشيفرة التتبعية
- مثال: إعلان Cat1
- Cat Cat1 = new Cat();
- Cat1 لا يحتوي على قيمة.
مثال: فئة الزبون
- الخصائص والسلوكيات:
- الخصائص:
- الاسم
- العنوان
- العمر
- رقم الطلب
- رقم الزبون
- السلوكيات:
- التسوق
- تعيين العنوان
- إضافة عنصر إلى العربة
- طلب الخصم
- عرض تفاصيل الزبون
فئة الزبون
- الإعلان:
- public class Customer {
- String name = "Junior Duke";
- String address;
- int orderNum;
- int age;
- public void displayCustomer() {…}
- }**
القيم الافتراضية للحقول
- إذا لم يتم تهيئة الحقول، فإنها تأخذ قيمة افتراضية.
- تقدم جافا القيم الافتراضية التالية:
- النوع: boolean القيمة الافتراضية: false
- byte, short, int, long القيمة الافتراضية: 0
- float, double القيمة الافتراضية: 0.0
- char القيمة الافتراضية: '\u0000'
- النوع المرجعي القيمة الافتراضية: null
المنشئات
- يُعتبر المنشيء دالة خاصة.
- هدفه هو "إنشاء" كائن من خلال ضبط القيم الأولية.
- يتم استدعاء منشئ الكائن مرة واحدة أثناء إنشاء الكائن.
- يتم استدعاؤه باستخدام الكلمة الجديدة.
المنشئات الافتراضية
- جافا توفر منشئًا تلقائيًا لكل فصل.
- يُعرف بالمنشئ الافتراضي وهو يعتبر منشئًا بدون حجج.
كتابة منشئ
- يمكنك استبدال المنشئ الافتراضي بمنشئ كتبته بنفسك.
- إذا قمت بإعلان أي منشئات لفصل، فلن تنشئ مدمجة جافا منشئًا افتراضيًا لهذا الفصل.
- تُكتب المنشئات مثل أي دالة أخرى، ولكن:
- ليس لديهم نوع عائد (ولا حتى void).
- سُميت بنفس اسم الفصل.
استخدام معلمات بنفس اسم الحقول
- في بعض الأحيان، تكون المعلمة تحمل نفس اسم الحقل.
- تستخدم المعلمة داخل المنشئ أو الدالة، وليس الحقل.
- المتغيرات ضمن النطاق الأكثر حصرية تأخذ الأولوية.
استخدام الكلمة this
- استخدم this للإشارة إلى حقل الكائن الحالي (الكائن الذي ينفذ المنشئ أو الدالة).
- يوفر this الوصول إلى حقول الكائن وطرقه.
تحميل المنشئات
- يمكنك كتابة أكثر من منشئ في فصل.
- يُعرف هذا بتحميل المنشئين ويُمكن أن يحتوي الفصل على عدد غير محدود من المنشئين.
فرق بين المتغيرات من الأنواع الأولية وأنواع الكائنات
- النوع الأولي: int i = 1; (يخزن i القيمة 1).
- نوع الكائن: Circle c; (c هو مرجع يتم إنشاؤه باستخدام new Circle()).
تأثيرات البيانات الخاصة
- لا يمكن الوصول إلى الحقول الخاصة خارج فئة Cat.
- يستخدم دوال الحصول والتعديل كحل.
دوال الحصول
- تُعرف دوال الحصول أيضًا بالمستفيدين.
- عادةً ما تكون دوال الحصول عامة وتقبل لا معلمات.
- تُعيد القيمة لمتغير معين.
دوال التعديل
- تُعرف دوال التعديل أيضًا بالمرتبين.
- عادةً ما تكون دوال التعديل عامة وتقبل معلمات.
دراسة حالة
- أنشئ فئة تسمى Book بناءً على رسم UML.
- قم بإعلان جميع السمات باستخدام معدلات الوصول الموضحة في رسم UML.
- تنفيذ دوال الحصول والتعديل والطرق الأخرى.
نهاية الجزء 1
- يُطلب من الطلاب الرجوع إلى كتاب "مقدمة في برمجة جافا، النسخة الشاملة" للكاتب Y. Daniel Liang، الفصل 9: الكائنات والفصول للتعلم وحل التمارين.