YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Arabic subtitles

Inheriting Behavior

Get Embed Code
13 Languages

Showing Revision 2 created 10/30/2015 by Darren Bridenbeck (Amara Staff).

  1. JustJava لنعد لتطبيق
    .للحظة فقط
  2. MainActivity لنلق نظرة على فئة
    .أسلوب عرض الرسالة
  3. .بدأت الأمور تبدو مفهومة هنا
  4. أدركنا سابقًا أننا ننشئء متغيّرًا يسمى
    .order Summary Text View
  5. نوع البيانات في هذا المتغير
    .TextView هو
  6. بالرغم من أننا لم نفهم
    .هذا القسم بعد
  7. في السطر الثاني،سنلجأ لطريقة
    .text view object فيما يخص
  8. سنقوم باستعمال نفس اسم المتغير
    .كما هو موضح هنا
  9. .orderSummaryTextView.setText إذن نستدعي
  10. .ثم نضع سلسلة كمدخل للأسلوب
  11. رسالة السلسلة هاته
    جاءت كمَعلمة إدخال
  12. .display message لأسلوب
  13. الآن، لنتعمق في هذا القسم
    .من الرمز الذي لا نفهمه بعد
  14. findViewById يبدو وكأن
    .هو أسلوب إستدعاء رغم ذلك
  15. لأنها تسبق هذه الأقواس
    .بما يشبه وسيطة الإدخال
  16. لكن، ما هو غريب أن هذا الأسلوب
    .لم يتم تحديده في أي مكان في هذه الفئة
  17. إذا قمت بنقر مزدوج على هذا الإسم
    أو،F وبعد ذلك نقرت على أمر
  18. إذا كنت تستخدم نظام الويندوز F التحكم
    .وبالتالي يمكننا البحث عن هذا الملف
  19. أرى فقط تكرارين
    و ،findViewByIdلـ
  20. .وقد تم استعمالهما بأساليب متشابهة
  21. لكنني لا أرى أي أسلوب
    .findViewById استدعى
  22. وكما تم الإشارة له من قبل
    ،main activity في فئة
  23. setContentViewنرى استدعاءً لـ
    ولكن إذا بحثت عن
  24. هذا في الملف، فهو أيضًا
    .main acitivity لم يتم تحديده في
  25. إذن، أين تم تحديد هذه الأساليب؟
  26. هو MainAcitivity ،حسنًا
    في الواقع ملف صغير
  27. ،وطوله حوالي 90 سطرًا
  28. ولكن هناك في الواقع ما هو أهم
    .في هذه الفئة
  29. ،يقول الرمز
    .AppCompatActivityامتداد لـ
  30. MainAcitivity وهذا يعني أن
    .هو ملحق
  31. .AppCompatActivity الوظيفة في فئة
  32. action bar activity إذا رأيت
    هنا على حاسوبك، فلا بأس في ذلك
  33. .فذلك فقط مجرد نسخة قديمة
  34. النسخة الأخيرة التي ينبغي أن تسنعملها
    .AppCompatActivity هي
  35. AppCompatActivity تمنحنا
    دعمًا للتوافق السابق
  36. .على أجهزة أندرويد السابقة
  37. AppCompatActivity تعتبر
    .جزءً من مكتبة دعم الأندرويد
  38. وهي تسمح لنا باستخدام آخر ميزات
    ،واجهة المستخدم على الأندرويد
  39. كما أنها لا تزال تعمل
    .على أجهزة الأندرويد القديمة
  40. عبر تمديد فئة
    ،AppCompatActivity
  41. نحن نحصل على جميع الوظائف
    وجميع الحالات، و
  42. الأساليب من خلال
    .بالمجّان MainActivity
  43. .لا نحتاج لنسخ ولصق كل رمز من هنا
  44. يمكننا ببساطة تمديد تلك الفئة
  45. ،إذا كنت مهتمًا
  46. يمكن العثور على المزيد من المعلومات حول
    .عبر البحث عنها في غوغل AppCompatActivity
  47. لفئة doc هذا هو المرجع
    .AppCompatActivity
  48. وبما أن لدي ملحق كروم
    ،متبثًا
  49. .يمكنني عرض المصدر كذلك
  50. وهذا هو الرمز الذي تم فيه تحديد
    .AppCompatActivity فئة
  51. يمكنك رؤية وجود
    العديد من الوظائف هنا، ولكن
  52. الرسالة الأساسية أنه لا ينبغي عليك
    .فهم كيف تم تنفيذ ذلك
  53. كل ما عليك معرفته هو أنه عندما
    .AppCompatActivity تُمدّد
  54. فستحصل على جميع الوظائف
    .بالمجان
  55. ،وفي مستوى عالٍ
    .إظهارها على هذا النحو
  56. هذا تحديد الفئة لـ
    .MainActivity
  57. وكما لديك هنا بعض الأساليب
    .التي تم تحديدها هنا
  58. AppCompatActivity عندما تمدّد
    فيمكنك الوصول للحالة، و
  59. والأساليب بعد ذلك
    .AppCompatActivity من خلال
  60. الآن، لم يتم إضافتهم فعليًا
    ولكن،main activity لفئة
  61. ،يمكن أن تتصور أنهم هناك
  62. لأنه يمكنك الرجوع للحالة
    .وجميع الأساليب كذلك
  63. وبذلك يمكن لرمزنا الإحالة
    أو،setContentViewلبعض العناصر مثل
  64. findViewById.
  65. لأنه قد اكتسبنا تلك الأساليب
    .MainActivity ولم نحددها في
  66. MainActivity يتم إظهار
    كشاشة على الجهاز، ولكن
  67. MainActivity لم نكتب رمز ذلك في
    .بل إكتسبنا ذلك أيضًا
  68. ليس لدبنا الحالة والأساليب
    AppCompatActivity مباشرة من
  69. في الفئة، ولكننا نعرف
    .أنهم هناك، ويمكننا الإحالة إليهم
  70. ،وبالحديث عن إكتساب الأشياء
    .هناك جوانب جيدة وسيئة في ذلك
  71. أحيانًا، نريد إكتساب
    سلوك، ولكن
  72. .وأحيانًا، نريد تعديله قليلاً
  73. إذا أردت تغيير بعض السلوك
    ،من هذه الفئة المكتسبة
  74. .يمكنك تجاوز العديد من الأساليب
  75. في أعلى الأسلوب @override text يمكنك إضافة
    حتى يعرف الحاسوب
  76. بأنك لا تريد نسخة الأسلوب
    .AppCompatActivity من
  77. ولكن بدلاً من ذلك، تريد النسخة التي
    .قمت بتحديدها هنا
  78. هذا موضوع معقد، و
    .يتطلب الكثير من الممارسة
  79. لكننا قد رأينا مثالاً واحدًا
    على تجاوز أسلوب
  80. .AppCompatActivity من خلال فئة
  81. .on create وذلك الأسلوب هو الأسلوب
  82. on create عبر تجاوز أسلوب
    فنحن نُخصّص ،MainActivity في
  83. التنفيذ الخاص بنا لما ينبغي أن يحدث
    .عندما يتم إستدعاء ذلك الأسلوب
  84. .لا تقلق إذا لم تفهم هذا الآن
  85. فأنا فقط أقدم لمحة عامة
    للعديد من مفاهيم
  86. .البرامج الموجهة
  87. من المتوقع تمامًا أن يكون لديك
    .بعض الأسئلة العالقة
  88. ولا تزال تحتاج لقراءة المزيد من
    هذه المواضيع لتفهم ذلك
  89. .بشكل كامل
  90. وهناك طريقة أخرى لإظهار العلاقة
    MainActivity بين
  91. AppCompatActivity و فئات
    .هو أن ترسم فئة مخطط تسلسل هرمي
  92. وهذا مختلف عن عرض
    مخطط التسلسل الهرمي لأن
  93. يظهر عرض مخطط التسلسل الهرمي شجرة
    .طرق عرض تظهر على الشاشة
  94. تُظهر فئة مخطط التسلس الهرمي
    العلاقة
  95. .بين مختلف فئات الجافا
  96. .كفئة عليا AppCompatActivity لدينا
  97. تمتد من MainActivity بما أن
    AppCompatActivity،
  98. .إذن فهذا ما يسمى بالفئة الفرعية
  99. إذن، فأينما رأيت تحديد هذه الفئة
    فمهما قمت بتمديدها، فذلك يسمى
  100. .بالفئة العليا
  101. .وهذه ستكون فئة فرعية
  102. أخرى تسمى activity إذا أنشأت
    و detail activity
  103. AppCompatActivity ومدّدت
    فهذه ستكون الفئة الفرعية و
  104. .هذه ستكون الفئة العليا
  105. وهذا مثال آخر
    .Java عن اكتساب الفئات الخاص بـ
  106. إذا فكرت في الأمر، فإن طريقة
    عرض النص والصورة
  107. .والأزرار لها ميزات مشتركة
  108. كل طرق العرض تلك لها عرض
    .وارتفاع على الشاشة
  109. لم ندرس ذلك بعد، ولكن تلك الطرق لديها
    .أيضا وضع للرؤية
  110. إذًا يمكن أن نجعلها ظاهرةً
    .أو مخفيةً
  111. وهناك العديد من الخصائص التي تعد
    .مشتركة بينها أيضًا
  112. عوض كتابة الرمز لتلك الخصائص
    ،في فئة طريقة عرض النص
  113. وثم نسخه في فئتي طريقة
    .عرض الصورة والأزرار
  114. .يمكننا القيام بشيء ذكي قليلًا
  115. .يمكننا إنشاء فئة لطريقة العرض
  116. يمكننا أن نستخرج الخصائص المشتركة
    في كل طرق العرض ونضعها
  117. في داخل فئة طريقة العرض، وبهذه الطريقة
    .لن يتوجب علينا كتابة الرمز سوى مرة واحدة
  118. ولكن كيف يمكننا القيام بالربط بين
    فئة طريقة عرض النص و
  119. فئة طريقة العرض؟
  120. .إذا كنت تفكر في الاكتساب، فأنت محق
  121. سنقوم بتحديد فئة طريقة عرض النص
    .TextView java داخل ملف
  122. وبهذه الطريقة ستُكتسب جميع البيانات
    .والأساليب من فئة طريقة العرض
  123. وبعد ذلك لن يتوجب علينا كتابة
    .TextView الرمز كاملًا في فئة
  124. لأن جزءًا من الوظيفة تمت كتابته
    .سابقًا في فئة طريقة العرض
  125. ImageView الأمر نفسه ينطبق على فئات
  126. والأزرار، إذاً لا يتوجب علينا كتابة
    .الرمز بأكمله
  127. في هذه الملفات، يتوجب علينا
    كتابة ما هو مختلف فقط
  128. ImageView بين
    View وفئة
  129. ،أفكر في الأمر كتحديد لدلتا
    تحتاج ImageView إذًا ففئة
  130. ImageView لتحديد ما هو مختلف بين
    .View وفئة
  131. إذا لم نرغب في اكتساب سلوك معين
    ،View من فئة
  132. يمكننا تحديد السلوك المحدّث
    أو ،ImageView داخل فئة
  133. .أي من هذه الفئات
  134. ،لتذكيرك بالمصطلحات
    ،في هذه الحالة
  135. فئة فرعية TextView سيكون
    .فئة عليا View و
  136. إذا عدنا إلى وثائق
  137. ،TextView فئة
    .فسنفهم ذلك الجزء الآن
  138. .view امتداد لـ TextView وهي تقول
  139. والآن نعلم أن ذلك يعني اكتساب
    الوضع و
  140. .ViewClass الأساليب من
  141. وهنا في فئة
    .مخطط التسلسل الهرمي
  142. TextView ويظهر أن فئة
    .ViewClass تكتسب من طرف
  143. View وبدورها فئة
    .Object تكتسب من طرف فئة
  144. وإذا قمت بالبحث في الجوار، ستجد
    ،فئات أخرى
  145. التي هي في الواقع EditText مثل فئة
    .TextView امتداد لفئة
  146. إذا فهي تأخذ السلوك
    و TextView من فئة
  147. ثم تضيف وظيفة محددة
    .لها
  148. .TextView هي امتداد لـ EditText إذًا
  149. View هي امتداد لـ TextView و
    .Object هي امتداد لـ View و
  150. وهذه هي فئة مخطط
    .التسلسل الهرمي
  151. هناك المزيد والمزيد، ويمكنك أن
    .تمضي ساعات في تفقده
  152. ولكن دعني أريك شيئًا واحدًا
    .TextView في صفحة وثائق
  153. أريد أن أريك الطريقة الخاصة
    .SetVisibility بـ
  154. SetVisibility للقيام بـ Java ها هو أسلوب
    .TextView داخل فئة
  155. view وهذا يغير وضع
    .لتكون ظاهرة أو مخفية
  156. ،إذا نقرتُ على هذا الأسلوب
    .View فسينقلني في الواقع إلى فئة
  157. وهي تصف العمل الذي
    .يقوم به هذا الأسلوب
  158. TextView object ويمكنك أن تلاحظ أن
    .set visibility لديه أسلوب
  159. ولكنها في الواقع تكتسب من
    .View فئة
  160. إذن حصلنا علي هذه الوظيفة بالمجان
    .View من فئة
  161. حسنًا، لقد غطينا العديد
    .من المفاهيم
  162. عمومًا، هذه التفاصيل يمكن التوسع فيها
    .من خلال كورس فصل علوم الحاسوب
  163. سنقوم الآن بالقليل
    من الممارسة و
  164. نتمنى أن تكون الأمور واضحة
    .بالنسبة لك
  165. ولكن عليك أن تعلم أن ذلك سيتطلب
    الكثير من الوقت و
  166. الممارسة حتى تتمكن من فهم
    .هذه المفاهيم بشكل تام
  167. حسنًا، التمرين الأول، أريد منك أن
    ،تُنشئ تطبيق أندرويد جديد آخر
  168. لأننا لا نريد أن نفسد
    .Java تطبيق الـ
  169. ،عندما تنشئ المشروع
    .قم بتشغيل التطبيق
  170. ،عندما تنشئ التطبيق الخاص بك
    .MainActivity سوف ترى ملف
  171. .AppCompatActivity ذلك الملف سيمتد من
  172. الخاصة بك Android Studio في نسخة
    يمتد من MainActivity إذا كان
  173. ،عوضًا عن ذلك ActionBarActivity
    .فذلك جيد أيضًا
  174. لأنه يعتبر نسخة قديمة من
    .AppCompatActivity
  175. ،وعبر إزالة أسلوب التجاوز
    سنرجع إلى
  176. onCreate الطريقة التي ظهرت بها فئة
    .AppCompatActivity في فئة
  177. إن تواجد هذا الأسلوب يُبين أننا نريد
    MainActivity سلوكًا مختلفًا في
  178. .onCreate لـ
  179. إذا قمنا بحذفها فسيعيدنا ذلك إلى
    السلوك الأصلى في
  180. .AppCompatActivity فئة
  181. ،عندما تشغل التطبيق
  182. ما هو الاختلاف الذي تلاحظه بالمقارنة
    مع المرة الأولى التي شغلت فيها التطبيق؟
  183. .أكتب إجابتك في خانة النص التالية