JustJava لنعد لتطبيق
.للحظة فقط
MainActivity لنلق نظرة على فئة
.أسلوب عرض الرسالة
.بدأت الأمور تبدو مفهومة هنا
أدركنا سابقًا أننا ننشئء متغيّرًا يسمى
.order Summary Text View
نوع البيانات في هذا المتغير
.TextView هو
بالرغم من أننا لم نفهم
.هذا القسم بعد
في السطر الثاني،سنلجأ لطريقة
.text view object فيما يخص
سنقوم باستعمال نفس اسم المتغير
.كما هو موضح هنا
.orderSummaryTextView.setText إذن نستدعي
.ثم نضع سلسلة كمدخل للأسلوب
رسالة السلسلة هاته
جاءت كمَعلمة إدخال
.display message لأسلوب
الآن، لنتعمق في هذا القسم
.من الرمز الذي لا نفهمه بعد
findViewById يبدو وكأن
.هو أسلوب إستدعاء رغم ذلك
لأنها تسبق هذه الأقواس
.بما يشبه وسيطة الإدخال
لكن، ما هو غريب أن هذا الأسلوب
.لم يتم تحديده في أي مكان في هذه الفئة
إذا قمت بنقر مزدوج على هذا الإسم
أو،F وبعد ذلك نقرت على أمر
إذا كنت تستخدم نظام الويندوز F التحكم
.وبالتالي يمكننا البحث عن هذا الملف
أرى فقط تكرارين
و ،findViewByIdلـ
.وقد تم استعمالهما بأساليب متشابهة
لكنني لا أرى أي أسلوب
.findViewById استدعى
وكما تم الإشارة له من قبل
،main activity في فئة
setContentViewنرى استدعاءً لـ
ولكن إذا بحثت عن
هذا في الملف، فهو أيضًا
.main acitivity لم يتم تحديده في
إذن، أين تم تحديد هذه الأساليب؟
هو MainAcitivity ،حسنًا
في الواقع ملف صغير
،وطوله حوالي 90 سطرًا
ولكن هناك في الواقع ما هو أهم
.في هذه الفئة
،يقول الرمز
.AppCompatActivityامتداد لـ
MainAcitivity وهذا يعني أن
.هو ملحق
.AppCompatActivity الوظيفة في فئة
action bar activity إذا رأيت
هنا على حاسوبك، فلا بأس في ذلك
.فذلك فقط مجرد نسخة قديمة
النسخة الأخيرة التي ينبغي أن تسنعملها
.AppCompatActivity هي
AppCompatActivity تمنحنا
دعمًا للتوافق السابق
.على أجهزة أندرويد السابقة
AppCompatActivity تعتبر
.جزءً من مكتبة دعم الأندرويد
وهي تسمح لنا باستخدام آخر ميزات
،واجهة المستخدم على الأندرويد
كما أنها لا تزال تعمل
.على أجهزة الأندرويد القديمة
عبر تمديد فئة
،AppCompatActivity
نحن نحصل على جميع الوظائف
وجميع الحالات، و
الأساليب من خلال
.بالمجّان MainActivity
.لا نحتاج لنسخ ولصق كل رمز من هنا
يمكننا ببساطة تمديد تلك الفئة
،إذا كنت مهتمًا
يمكن العثور على المزيد من المعلومات حول
.عبر البحث عنها في غوغل AppCompatActivity
لفئة doc هذا هو المرجع
.AppCompatActivity
وبما أن لدي ملحق كروم
،متبثًا
.يمكنني عرض المصدر كذلك
وهذا هو الرمز الذي تم فيه تحديد
.AppCompatActivity فئة
يمكنك رؤية وجود
العديد من الوظائف هنا، ولكن
الرسالة الأساسية أنه لا ينبغي عليك
.فهم كيف تم تنفيذ ذلك
كل ما عليك معرفته هو أنه عندما
.AppCompatActivity تُمدّد
فستحصل على جميع الوظائف
.بالمجان
،وفي مستوى عالٍ
.إظهارها على هذا النحو
هذا تحديد الفئة لـ
.MainActivity
وكما لديك هنا بعض الأساليب
.التي تم تحديدها هنا
AppCompatActivity عندما تمدّد
فيمكنك الوصول للحالة، و
والأساليب بعد ذلك
.AppCompatActivity من خلال
الآن، لم يتم إضافتهم فعليًا
ولكن،main activity لفئة
،يمكن أن تتصور أنهم هناك
لأنه يمكنك الرجوع للحالة
.وجميع الأساليب كذلك
وبذلك يمكن لرمزنا الإحالة
أو،setContentViewلبعض العناصر مثل
findViewById.
لأنه قد اكتسبنا تلك الأساليب
.MainActivity ولم نحددها في
MainActivity يتم إظهار
كشاشة على الجهاز، ولكن
MainActivity لم نكتب رمز ذلك في
.بل إكتسبنا ذلك أيضًا
ليس لدبنا الحالة والأساليب
AppCompatActivity مباشرة من
في الفئة، ولكننا نعرف
.أنهم هناك، ويمكننا الإحالة إليهم
،وبالحديث عن إكتساب الأشياء
.هناك جوانب جيدة وسيئة في ذلك
أحيانًا، نريد إكتساب
سلوك، ولكن
.وأحيانًا، نريد تعديله قليلاً
إذا أردت تغيير بعض السلوك
،من هذه الفئة المكتسبة
.يمكنك تجاوز العديد من الأساليب
في أعلى الأسلوب @override text يمكنك إضافة
حتى يعرف الحاسوب
بأنك لا تريد نسخة الأسلوب
.AppCompatActivity من
ولكن بدلاً من ذلك، تريد النسخة التي
.قمت بتحديدها هنا
هذا موضوع معقد، و
.يتطلب الكثير من الممارسة
لكننا قد رأينا مثالاً واحدًا
على تجاوز أسلوب
.AppCompatActivity من خلال فئة
.on create وذلك الأسلوب هو الأسلوب
on create عبر تجاوز أسلوب
فنحن نُخصّص ،MainActivity في
التنفيذ الخاص بنا لما ينبغي أن يحدث
.عندما يتم إستدعاء ذلك الأسلوب
.لا تقلق إذا لم تفهم هذا الآن
فأنا فقط أقدم لمحة عامة
للعديد من مفاهيم
.البرامج الموجهة
من المتوقع تمامًا أن يكون لديك
.بعض الأسئلة العالقة
ولا تزال تحتاج لقراءة المزيد من
هذه المواضيع لتفهم ذلك
.بشكل كامل
وهناك طريقة أخرى لإظهار العلاقة
MainActivity بين
AppCompatActivity و فئات
.هو أن ترسم فئة مخطط تسلسل هرمي
وهذا مختلف عن عرض
مخطط التسلسل الهرمي لأن
يظهر عرض مخطط التسلسل الهرمي شجرة
.طرق عرض تظهر على الشاشة
تُظهر فئة مخطط التسلس الهرمي
العلاقة
.بين مختلف فئات الجافا
.كفئة عليا AppCompatActivity لدينا
تمتد من MainActivity بما أن
AppCompatActivity،
.إذن فهذا ما يسمى بالفئة الفرعية
إذن، فأينما رأيت تحديد هذه الفئة
فمهما قمت بتمديدها، فذلك يسمى
.بالفئة العليا
.وهذه ستكون فئة فرعية
أخرى تسمى activity إذا أنشأت
و detail activity
AppCompatActivity ومدّدت
فهذه ستكون الفئة الفرعية و
.هذه ستكون الفئة العليا
وهذا مثال آخر
.Java عن اكتساب الفئات الخاص بـ
إذا فكرت في الأمر، فإن طريقة
عرض النص والصورة
.والأزرار لها ميزات مشتركة
كل طرق العرض تلك لها عرض
.وارتفاع على الشاشة
لم ندرس ذلك بعد، ولكن تلك الطرق لديها
.أيضا وضع للرؤية
إذًا يمكن أن نجعلها ظاهرةً
.أو مخفيةً
وهناك العديد من الخصائص التي تعد
.مشتركة بينها أيضًا
عوض كتابة الرمز لتلك الخصائص
،في فئة طريقة عرض النص
وثم نسخه في فئتي طريقة
.عرض الصورة والأزرار
.يمكننا القيام بشيء ذكي قليلًا
.يمكننا إنشاء فئة لطريقة العرض
يمكننا أن نستخرج الخصائص المشتركة
في كل طرق العرض ونضعها
في داخل فئة طريقة العرض، وبهذه الطريقة
.لن يتوجب علينا كتابة الرمز سوى مرة واحدة
ولكن كيف يمكننا القيام بالربط بين
فئة طريقة عرض النص و
فئة طريقة العرض؟
.إذا كنت تفكر في الاكتساب، فأنت محق
سنقوم بتحديد فئة طريقة عرض النص
.TextView java داخل ملف
وبهذه الطريقة ستُكتسب جميع البيانات
.والأساليب من فئة طريقة العرض
وبعد ذلك لن يتوجب علينا كتابة
.TextView الرمز كاملًا في فئة
لأن جزءًا من الوظيفة تمت كتابته
.سابقًا في فئة طريقة العرض
ImageView الأمر نفسه ينطبق على فئات
والأزرار، إذاً لا يتوجب علينا كتابة
.الرمز بأكمله
في هذه الملفات، يتوجب علينا
كتابة ما هو مختلف فقط
ImageView بين
View وفئة
،أفكر في الأمر كتحديد لدلتا
تحتاج ImageView إذًا ففئة
ImageView لتحديد ما هو مختلف بين
.View وفئة
إذا لم نرغب في اكتساب سلوك معين
،View من فئة
يمكننا تحديد السلوك المحدّث
أو ،ImageView داخل فئة
.أي من هذه الفئات
،لتذكيرك بالمصطلحات
،في هذه الحالة
فئة فرعية TextView سيكون
.فئة عليا View و
إذا عدنا إلى وثائق
،TextView فئة
.فسنفهم ذلك الجزء الآن
.view امتداد لـ TextView وهي تقول
والآن نعلم أن ذلك يعني اكتساب
الوضع و
.ViewClass الأساليب من
وهنا في فئة
.مخطط التسلسل الهرمي
TextView ويظهر أن فئة
.ViewClass تكتسب من طرف
View وبدورها فئة
.Object تكتسب من طرف فئة
وإذا قمت بالبحث في الجوار، ستجد
،فئات أخرى
التي هي في الواقع EditText مثل فئة
.TextView امتداد لفئة
إذا فهي تأخذ السلوك
و TextView من فئة
ثم تضيف وظيفة محددة
.لها
.TextView هي امتداد لـ EditText إذًا
View هي امتداد لـ TextView و
.Object هي امتداد لـ View و
وهذه هي فئة مخطط
.التسلسل الهرمي
هناك المزيد والمزيد، ويمكنك أن
.تمضي ساعات في تفقده
ولكن دعني أريك شيئًا واحدًا
.TextView في صفحة وثائق
أريد أن أريك الطريقة الخاصة
.SetVisibility بـ
SetVisibility للقيام بـ Java ها هو أسلوب
.TextView داخل فئة
view وهذا يغير وضع
.لتكون ظاهرة أو مخفية
،إذا نقرتُ على هذا الأسلوب
.View فسينقلني في الواقع إلى فئة
وهي تصف العمل الذي
.يقوم به هذا الأسلوب
TextView object ويمكنك أن تلاحظ أن
.set visibility لديه أسلوب
ولكنها في الواقع تكتسب من
.View فئة
إذن حصلنا علي هذه الوظيفة بالمجان
.View من فئة
حسنًا، لقد غطينا العديد
.من المفاهيم
عمومًا، هذه التفاصيل يمكن التوسع فيها
.من خلال كورس فصل علوم الحاسوب
سنقوم الآن بالقليل
من الممارسة و
نتمنى أن تكون الأمور واضحة
.بالنسبة لك
ولكن عليك أن تعلم أن ذلك سيتطلب
الكثير من الوقت و
الممارسة حتى تتمكن من فهم
.هذه المفاهيم بشكل تام
حسنًا، التمرين الأول، أريد منك أن
،تُنشئ تطبيق أندرويد جديد آخر
لأننا لا نريد أن نفسد
.Java تطبيق الـ
،عندما تنشئ المشروع
.قم بتشغيل التطبيق
،عندما تنشئ التطبيق الخاص بك
.MainActivity سوف ترى ملف
.AppCompatActivity ذلك الملف سيمتد من
الخاصة بك Android Studio في نسخة
يمتد من MainActivity إذا كان
،عوضًا عن ذلك ActionBarActivity
.فذلك جيد أيضًا
لأنه يعتبر نسخة قديمة من
.AppCompatActivity
،وعبر إزالة أسلوب التجاوز
سنرجع إلى
onCreate الطريقة التي ظهرت بها فئة
.AppCompatActivity في فئة
إن تواجد هذا الأسلوب يُبين أننا نريد
MainActivity سلوكًا مختلفًا في
.onCreate لـ
إذا قمنا بحذفها فسيعيدنا ذلك إلى
السلوك الأصلى في
.AppCompatActivity فئة
،عندما تشغل التطبيق
ما هو الاختلاف الذي تلاحظه بالمقارنة
مع المرة الأولى التي شغلت فيها التطبيق؟
.أكتب إجابتك في خانة النص التالية