1 00:00:00,920 --> 00:00:03,410 JustJava لنعد لتطبيق .للحظة فقط 2 00:00:03,410 --> 00:00:07,260 MainActivity لنلق نظرة على فئة .أسلوب عرض الرسالة 3 00:00:07,260 --> 00:00:09,950 .بدأت الأمور تبدو مفهومة هنا 4 00:00:09,950 --> 00:00:14,350 أدركنا سابقًا أننا ننشئء متغيّرًا يسمى .order Summary Text View 5 00:00:14,350 --> 00:00:16,760 نوع البيانات في هذا المتغير .TextView هو 6 00:00:17,790 --> 00:00:19,610 بالرغم من أننا لم نفهم .هذا القسم بعد 7 00:00:20,740 --> 00:00:23,290 في السطر الثاني،سنلجأ لطريقة .text view object فيما يخص 8 00:00:24,650 --> 00:00:28,070 سنقوم باستعمال نفس اسم المتغير .كما هو موضح هنا 9 00:00:28,070 --> 00:00:31,830 .orderSummaryTextView.setText إذن نستدعي 10 00:00:31,830 --> 00:00:34,290 .ثم نضع سلسلة كمدخل للأسلوب 11 00:00:35,300 --> 00:00:38,790 رسالة السلسلة هاته جاءت كمَعلمة إدخال 12 00:00:38,790 --> 00:00:40,200 .display message لأسلوب 13 00:00:41,720 --> 00:00:45,250 الآن، لنتعمق في هذا القسم .من الرمز الذي لا نفهمه بعد 14 00:00:45,250 --> 00:00:48,210 findViewById يبدو وكأن .هو أسلوب إستدعاء رغم ذلك 15 00:00:48,210 --> 00:00:53,530 لأنها تسبق هذه الأقواس .بما يشبه وسيطة الإدخال 16 00:00:53,530 --> 00:00:57,458 لكن، ما هو غريب أن هذا الأسلوب .لم يتم تحديده في أي مكان في هذه الفئة 17 00:00:57,458 --> 00:01:02,355 إذا قمت بنقر مزدوج على هذا الإسم أو،F وبعد ذلك نقرت على أمر 18 00:01:02,355 --> 00:01:07,560 إذا كنت تستخدم نظام الويندوز F التحكم .وبالتالي يمكننا البحث عن هذا الملف 19 00:01:07,560 --> 00:01:10,780 أرى فقط تكرارين و ،findViewByIdلـ 20 00:01:10,780 --> 00:01:12,790 .وقد تم استعمالهما بأساليب متشابهة 21 00:01:12,790 --> 00:01:15,160 لكنني لا أرى أي أسلوب .findViewById استدعى 22 00:01:16,190 --> 00:01:19,640 وكما تم الإشارة له من قبل ،main activity في فئة 23 00:01:19,640 --> 00:01:23,450 setContentViewنرى استدعاءً لـ ولكن إذا بحثت عن 24 00:01:23,450 --> 00:01:26,280 هذا في الملف، فهو أيضًا .main acitivity لم يتم تحديده في 25 00:01:27,820 --> 00:01:29,620 إذن، أين تم تحديد هذه الأساليب؟ 26 00:01:30,620 --> 00:01:33,610 هو MainAcitivity ،حسنًا في الواقع ملف صغير 27 00:01:33,610 --> 00:01:35,150 ،وطوله حوالي 90 سطرًا 28 00:01:35,150 --> 00:01:38,790 ولكن هناك في الواقع ما هو أهم .في هذه الفئة 29 00:01:38,790 --> 00:01:42,200 ،يقول الرمز .AppCompatActivityامتداد لـ 30 00:01:42,200 --> 00:01:45,710 MainAcitivity وهذا يعني أن .هو ملحق 31 00:01:45,710 --> 00:01:49,290 .AppCompatActivity الوظيفة في فئة 32 00:01:49,290 --> 00:01:52,790 action bar activity إذا رأيت هنا على حاسوبك، فلا بأس في ذلك 33 00:01:52,790 --> 00:01:55,450 .فذلك فقط مجرد نسخة قديمة 34 00:01:55,450 --> 00:01:58,770 النسخة الأخيرة التي ينبغي أن تسنعملها .AppCompatActivity هي 35 00:01:58,770 --> 00:02:02,420 AppCompatActivity تمنحنا دعمًا للتوافق السابق 36 00:02:02,420 --> 00:02:04,460 .على أجهزة أندرويد السابقة 37 00:02:04,460 --> 00:02:07,980 AppCompatActivity تعتبر .جزءً من مكتبة دعم الأندرويد 38 00:02:07,980 --> 00:02:11,740 وهي تسمح لنا باستخدام آخر ميزات ،واجهة المستخدم على الأندرويد 39 00:02:11,740 --> 00:02:15,420 كما أنها لا تزال تعمل .على أجهزة الأندرويد القديمة 40 00:02:15,420 --> 00:02:17,940 عبر تمديد فئة ،AppCompatActivity 41 00:02:17,940 --> 00:02:20,620 نحن نحصل على جميع الوظائف وجميع الحالات، و 42 00:02:20,620 --> 00:02:24,490 الأساليب من خلال .بالمجّان MainActivity 43 00:02:24,490 --> 00:02:26,980 .لا نحتاج لنسخ ولصق كل رمز من هنا 44 00:02:26,980 --> 00:02:28,800 يمكننا ببساطة تمديد تلك الفئة 45 00:02:30,090 --> 00:02:31,020 ،إذا كنت مهتمًا 46 00:02:31,020 --> 00:02:35,880 يمكن العثور على المزيد من المعلومات حول .عبر البحث عنها في غوغل AppCompatActivity 47 00:02:35,880 --> 00:02:39,700 لفئة doc هذا هو المرجع .AppCompatActivity 48 00:02:39,700 --> 00:02:41,920 وبما أن لدي ملحق كروم ،متبثًا 49 00:02:41,920 --> 00:02:43,120 .يمكنني عرض المصدر كذلك 50 00:02:43,120 --> 00:02:47,890 وهذا هو الرمز الذي تم فيه تحديد .AppCompatActivity فئة 51 00:02:47,890 --> 00:02:50,360 يمكنك رؤية وجود العديد من الوظائف هنا، ولكن 52 00:02:50,360 --> 00:02:54,510 الرسالة الأساسية أنه لا ينبغي عليك .فهم كيف تم تنفيذ ذلك 53 00:02:54,510 --> 00:02:58,350 كل ما عليك معرفته هو أنه عندما .AppCompatActivity تُمدّد 54 00:02:58,350 --> 00:03:01,010 فستحصل على جميع الوظائف .بالمجان 55 00:03:01,010 --> 00:03:03,580 ،وفي مستوى عالٍ .إظهارها على هذا النحو 56 00:03:03,580 --> 00:03:05,900 هذا تحديد الفئة لـ .MainActivity 57 00:03:05,900 --> 00:03:08,000 وكما لديك هنا بعض الأساليب .التي تم تحديدها هنا 58 00:03:08,000 --> 00:03:12,350 AppCompatActivity عندما تمدّد فيمكنك الوصول للحالة، و 59 00:03:12,350 --> 00:03:14,200 والأساليب بعد ذلك .AppCompatActivity من خلال 60 00:03:14,200 --> 00:03:17,870 الآن، لم يتم إضافتهم فعليًا ولكن،main activity لفئة 61 00:03:17,870 --> 00:03:19,280 ،يمكن أن تتصور أنهم هناك 62 00:03:19,280 --> 00:03:22,930 لأنه يمكنك الرجوع للحالة .وجميع الأساليب كذلك 63 00:03:22,930 --> 00:03:26,540 وبذلك يمكن لرمزنا الإحالة أو،setContentViewلبعض العناصر مثل 64 00:03:26,540 --> 00:03:27,840 findViewById. 65 00:03:27,840 --> 00:03:32,240 لأنه قد اكتسبنا تلك الأساليب .MainActivity ولم نحددها في 66 00:03:32,240 --> 00:03:35,110 MainActivity يتم إظهار كشاشة على الجهاز، ولكن 67 00:03:35,110 --> 00:03:39,520 MainActivity لم نكتب رمز ذلك في .بل إكتسبنا ذلك أيضًا 68 00:03:39,520 --> 00:03:42,750 ليس لدبنا الحالة والأساليب AppCompatActivity مباشرة من 69 00:03:42,750 --> 00:03:46,840 في الفئة، ولكننا نعرف .أنهم هناك، ويمكننا الإحالة إليهم 70 00:03:46,840 --> 00:03:50,260 ،وبالحديث عن إكتساب الأشياء .هناك جوانب جيدة وسيئة في ذلك 71 00:03:50,260 --> 00:03:52,540 أحيانًا، نريد إكتساب سلوك، ولكن 72 00:03:52,540 --> 00:03:54,980 .وأحيانًا، نريد تعديله قليلاً 73 00:03:55,980 --> 00:03:59,900 إذا أردت تغيير بعض السلوك ،من هذه الفئة المكتسبة 74 00:03:59,900 --> 00:04:02,230 .يمكنك تجاوز العديد من الأساليب 75 00:04:02,230 --> 00:04:07,360 في أعلى الأسلوب @override text يمكنك إضافة حتى يعرف الحاسوب 76 00:04:07,360 --> 00:04:12,100 بأنك لا تريد نسخة الأسلوب .AppCompatActivity من 77 00:04:12,100 --> 00:04:15,830 ولكن بدلاً من ذلك، تريد النسخة التي .قمت بتحديدها هنا 78 00:04:15,830 --> 00:04:18,620 هذا موضوع معقد، و .يتطلب الكثير من الممارسة 79 00:04:18,620 --> 00:04:21,660 لكننا قد رأينا مثالاً واحدًا على تجاوز أسلوب 80 00:04:21,660 --> 00:04:23,640 .AppCompatActivity من خلال فئة 81 00:04:23,640 --> 00:04:26,380 .on create وذلك الأسلوب هو الأسلوب 82 00:04:26,380 --> 00:04:31,170 on create عبر تجاوز أسلوب فنحن نُخصّص ،MainActivity في 83 00:04:31,170 --> 00:04:35,380 التنفيذ الخاص بنا لما ينبغي أن يحدث .عندما يتم إستدعاء ذلك الأسلوب 84 00:04:35,380 --> 00:04:37,180 .لا تقلق إذا لم تفهم هذا الآن 85 00:04:37,180 --> 00:04:40,534 فأنا فقط أقدم لمحة عامة للعديد من مفاهيم 86 00:04:40,534 --> 00:04:42,350 .البرامج الموجهة 87 00:04:42,350 --> 00:04:46,160 من المتوقع تمامًا أن يكون لديك .بعض الأسئلة العالقة 88 00:04:46,160 --> 00:04:49,370 ولا تزال تحتاج لقراءة المزيد من هذه المواضيع لتفهم ذلك 89 00:04:49,370 --> 00:04:50,860 .بشكل كامل 90 00:04:50,860 --> 00:04:53,771 وهناك طريقة أخرى لإظهار العلاقة MainActivity بين 91 00:04:53,771 --> 00:04:58,220 AppCompatActivity و فئات .هو أن ترسم فئة مخطط تسلسل هرمي 92 00:04:58,220 --> 00:05:00,930 وهذا مختلف عن عرض مخطط التسلسل الهرمي لأن 93 00:05:00,930 --> 00:05:05,340 يظهر عرض مخطط التسلسل الهرمي شجرة .طرق عرض تظهر على الشاشة 94 00:05:05,340 --> 00:05:07,810 تُظهر فئة مخطط التسلس الهرمي العلاقة 95 00:05:07,810 --> 00:05:09,990 .بين مختلف فئات الجافا 96 00:05:09,990 --> 00:05:12,860 .كفئة عليا AppCompatActivity لدينا 97 00:05:12,860 --> 00:05:15,868 تمتد من MainActivity بما أن AppCompatActivity، 98 00:05:15,868 --> 00:05:18,560 .إذن فهذا ما يسمى بالفئة الفرعية 99 00:05:18,560 --> 00:05:22,200 إذن، فأينما رأيت تحديد هذه الفئة فمهما قمت بتمديدها، فذلك يسمى 100 00:05:22,200 --> 00:05:23,970 .بالفئة العليا 101 00:05:23,970 --> 00:05:25,770 .وهذه ستكون فئة فرعية 102 00:05:25,770 --> 00:05:29,070 أخرى تسمى activity إذا أنشأت و detail activity 103 00:05:29,070 --> 00:05:32,340 AppCompatActivity ومدّدت فهذه ستكون الفئة الفرعية و 104 00:05:32,340 --> 00:05:33,409 .هذه ستكون الفئة العليا 105 00:05:34,720 --> 00:05:37,840 وهذا مثال آخر .Java عن اكتساب الفئات الخاص بـ 106 00:05:37,840 --> 00:05:40,520 إذا فكرت في الأمر، فإن طريقة عرض النص والصورة 107 00:05:40,520 --> 00:05:44,460 .والأزرار لها ميزات مشتركة 108 00:05:44,460 --> 00:05:48,070 كل طرق العرض تلك لها عرض .وارتفاع على الشاشة 109 00:05:48,070 --> 00:05:51,330 لم ندرس ذلك بعد، ولكن تلك الطرق لديها .أيضا وضع للرؤية 110 00:05:51,330 --> 00:05:54,400 إذًا يمكن أن نجعلها ظاهرةً .أو مخفيةً 111 00:05:54,400 --> 00:05:58,650 وهناك العديد من الخصائص التي تعد .مشتركة بينها أيضًا 112 00:05:58,650 --> 00:06:02,370 عوض كتابة الرمز لتلك الخصائص ،في فئة طريقة عرض النص 113 00:06:02,370 --> 00:06:05,590 وثم نسخه في فئتي طريقة .عرض الصورة والأزرار 114 00:06:05,590 --> 00:06:07,610 .يمكننا القيام بشيء ذكي قليلًا 115 00:06:07,610 --> 00:06:09,980 .يمكننا إنشاء فئة لطريقة العرض 116 00:06:09,980 --> 00:06:14,110 يمكننا أن نستخرج الخصائص المشتركة في كل طرق العرض ونضعها 117 00:06:14,110 --> 00:06:19,730 في داخل فئة طريقة العرض، وبهذه الطريقة .لن يتوجب علينا كتابة الرمز سوى مرة واحدة 118 00:06:19,730 --> 00:06:22,610 ولكن كيف يمكننا القيام بالربط بين فئة طريقة عرض النص و 119 00:06:22,610 --> 00:06:24,000 فئة طريقة العرض؟ 120 00:06:24,000 --> 00:06:26,548 .إذا كنت تفكر في الاكتساب، فأنت محق 121 00:06:26,548 --> 00:06:30,080 سنقوم بتحديد فئة طريقة عرض النص .TextView java داخل ملف 122 00:06:30,080 --> 00:06:33,240 وبهذه الطريقة ستُكتسب جميع البيانات .والأساليب من فئة طريقة العرض 123 00:06:34,270 --> 00:06:37,520 وبعد ذلك لن يتوجب علينا كتابة .TextView الرمز كاملًا في فئة 124 00:06:37,520 --> 00:06:41,860 لأن جزءًا من الوظيفة تمت كتابته .سابقًا في فئة طريقة العرض 125 00:06:41,860 --> 00:06:43,730 ImageView الأمر نفسه ينطبق على فئات 126 00:06:43,730 --> 00:06:46,800 والأزرار، إذاً لا يتوجب علينا كتابة .الرمز بأكمله 127 00:06:46,800 --> 00:06:49,690 في هذه الملفات، يتوجب علينا كتابة ما هو مختلف فقط 128 00:06:49,690 --> 00:06:53,090 ImageView بين View وفئة 129 00:06:53,090 --> 00:06:57,720 ،أفكر في الأمر كتحديد لدلتا تحتاج ImageView إذًا ففئة 130 00:06:57,720 --> 00:07:01,890 ImageView لتحديد ما هو مختلف بين .View وفئة 131 00:07:03,840 --> 00:07:06,960 إذا لم نرغب في اكتساب سلوك معين ،View من فئة 132 00:07:06,960 --> 00:07:11,760 يمكننا تحديد السلوك المحدّث أو ،ImageView داخل فئة 133 00:07:11,760 --> 00:07:12,820 .أي من هذه الفئات 134 00:07:14,070 --> 00:07:16,680 ،لتذكيرك بالمصطلحات ،في هذه الحالة 135 00:07:16,680 --> 00:07:20,039 فئة فرعية TextView سيكون .فئة عليا View و 136 00:07:21,430 --> 00:07:23,280 إذا عدنا إلى وثائق 137 00:07:23,280 --> 00:07:27,310 ،TextView فئة .فسنفهم ذلك الجزء الآن 138 00:07:27,310 --> 00:07:30,000 .view امتداد لـ TextView وهي تقول 139 00:07:30,000 --> 00:07:33,330 والآن نعلم أن ذلك يعني اكتساب الوضع و 140 00:07:33,330 --> 00:07:35,280 .ViewClass الأساليب من 141 00:07:35,280 --> 00:07:38,330 وهنا في فئة .مخطط التسلسل الهرمي 142 00:07:38,330 --> 00:07:41,884 TextView ويظهر أن فئة .ViewClass تكتسب من طرف 143 00:07:43,730 --> 00:07:46,530 View وبدورها فئة .Object تكتسب من طرف فئة 144 00:07:47,650 --> 00:07:50,060 وإذا قمت بالبحث في الجوار، ستجد ،فئات أخرى 145 00:07:50,060 --> 00:07:54,780 التي هي في الواقع EditText مثل فئة .TextView امتداد لفئة 146 00:07:54,780 --> 00:07:57,570 إذا فهي تأخذ السلوك و TextView من فئة 147 00:07:57,570 --> 00:08:00,120 ثم تضيف وظيفة محددة .لها 148 00:08:01,290 --> 00:08:03,590 .TextView هي امتداد لـ EditText إذًا 149 00:08:03,590 --> 00:08:06,720 View هي امتداد لـ TextView و .Object هي امتداد لـ View و 150 00:08:06,720 --> 00:08:09,830 وهذه هي فئة مخطط .التسلسل الهرمي 151 00:08:11,370 --> 00:08:13,950 هناك المزيد والمزيد، ويمكنك أن .تمضي ساعات في تفقده 152 00:08:13,950 --> 00:08:17,010 ولكن دعني أريك شيئًا واحدًا .TextView في صفحة وثائق 153 00:08:17,010 --> 00:08:20,820 أريد أن أريك الطريقة الخاصة .SetVisibility بـ 154 00:08:20,820 --> 00:08:24,350 SetVisibility للقيام بـ Java ها هو أسلوب .TextView داخل فئة 155 00:08:24,350 --> 00:08:26,860 view وهذا يغير وضع .لتكون ظاهرة أو مخفية 156 00:08:28,000 --> 00:08:33,240 ،إذا نقرتُ على هذا الأسلوب .View فسينقلني في الواقع إلى فئة 157 00:08:33,240 --> 00:08:36,010 وهي تصف العمل الذي .يقوم به هذا الأسلوب 158 00:08:36,010 --> 00:08:39,860 TextView object ويمكنك أن تلاحظ أن .set visibility لديه أسلوب 159 00:08:39,860 --> 00:08:43,659 ولكنها في الواقع تكتسب من .View فئة 160 00:08:43,659 --> 00:08:47,470 إذن حصلنا علي هذه الوظيفة بالمجان .View من فئة 161 00:08:47,470 --> 00:08:50,930 حسنًا، لقد غطينا العديد .من المفاهيم 162 00:08:50,930 --> 00:08:56,040 عمومًا، هذه التفاصيل يمكن التوسع فيها .من خلال كورس فصل علوم الحاسوب 163 00:08:56,040 --> 00:08:58,260 سنقوم الآن بالقليل من الممارسة و 164 00:08:58,260 --> 00:09:01,170 نتمنى أن تكون الأمور واضحة .بالنسبة لك 165 00:09:01,170 --> 00:09:03,010 ولكن عليك أن تعلم أن ذلك سيتطلب الكثير من الوقت و 166 00:09:03,010 --> 00:09:06,610 الممارسة حتى تتمكن من فهم .هذه المفاهيم بشكل تام 167 00:09:06,610 --> 00:09:09,700 حسنًا، التمرين الأول، أريد منك أن ،تُنشئ تطبيق أندرويد جديد آخر 168 00:09:09,700 --> 00:09:11,530 لأننا لا نريد أن نفسد .Java تطبيق الـ 169 00:09:13,070 --> 00:09:14,640 ،عندما تنشئ المشروع .قم بتشغيل التطبيق 170 00:09:15,790 --> 00:09:18,630 ،عندما تنشئ التطبيق الخاص بك .MainActivity سوف ترى ملف 171 00:09:18,630 --> 00:09:22,530 .AppCompatActivity ذلك الملف سيمتد من 172 00:09:22,530 --> 00:09:26,060 الخاصة بك Android Studio في نسخة يمتد من MainActivity إذا كان 173 00:09:26,060 --> 00:09:28,760 ،عوضًا عن ذلك ActionBarActivity .فذلك جيد أيضًا 174 00:09:28,760 --> 00:09:32,200 لأنه يعتبر نسخة قديمة من .AppCompatActivity 175 00:09:32,200 --> 00:09:35,650 ،وعبر إزالة أسلوب التجاوز سنرجع إلى 176 00:09:35,650 --> 00:09:40,280 onCreate الطريقة التي ظهرت بها فئة .AppCompatActivity في فئة 177 00:09:40,280 --> 00:09:44,540 إن تواجد هذا الأسلوب يُبين أننا نريد MainActivity سلوكًا مختلفًا في 178 00:09:44,540 --> 00:09:46,230 .onCreate لـ 179 00:09:46,230 --> 00:09:49,540 إذا قمنا بحذفها فسيعيدنا ذلك إلى السلوك الأصلى في 180 00:09:49,540 --> 00:09:52,040 .AppCompatActivity فئة 181 00:09:52,040 --> 00:09:53,380 ،عندما تشغل التطبيق 182 00:09:53,380 --> 00:09:57,250 ما هو الاختلاف الذي تلاحظه بالمقارنة مع المرة الأولى التي شغلت فيها التطبيق؟ 183 00:09:57,250 --> 00:09:58,510 .أكتب إجابتك في خانة النص التالية