الفصل 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: الكائنات والفصول للتعلم وحل التمارين.