WEBVTT 00:00:00.920 --> 00:00:03.410 JustJava لنعد لتطبيق .للحظة فقط 00:00:03.410 --> 00:00:07.260 MainActivity لنلق نظرة على فئة .أسلوب عرض الرسالة 00:00:07.260 --> 00:00:09.950 .بدأت الأمور تبدو مفهومة هنا 00:00:09.950 --> 00:00:14.350 أدركنا سابقًا أننا ننشئء متغيّرًا يسمى .order Summary Text View 00:00:14.350 --> 00:00:16.760 نوع البيانات في هذا المتغير .TextView هو 00:00:17.790 --> 00:00:19.610 بالرغم من أننا لم نفهم .هذا القسم بعد 00:00:20.740 --> 00:00:23.290 في السطر الثاني،سنلجأ لطريقة .text view object فيما يخص 00:00:24.650 --> 00:00:28.070 سنقوم باستعمال نفس اسم المتغير .كما هو موضح هنا 00:00:28.070 --> 00:00:31.830 .orderSummaryTextView.setText إذن نستدعي 00:00:31.830 --> 00:00:34.290 .ثم نضع سلسلة كمدخل للأسلوب 00:00:35.300 --> 00:00:38.790 رسالة السلسلة هاته جاءت كمَعلمة إدخال 00:00:38.790 --> 00:00:40.200 .display message لأسلوب 00:00:41.720 --> 00:00:45.250 الآن، لنتعمق في هذا القسم .من الرمز الذي لا نفهمه بعد 00:00:45.250 --> 00:00:48.210 findViewById يبدو وكأن .هو أسلوب إستدعاء رغم ذلك 00:00:48.210 --> 00:00:53.530 لأنها تسبق هذه الأقواس .بما يشبه وسيطة الإدخال 00:00:53.530 --> 00:00:57.458 لكن، ما هو غريب أن هذا الأسلوب .لم يتم تحديده في أي مكان في هذه الفئة 00:00:57.458 --> 00:01:02.355 إذا قمت بنقر مزدوج على هذا الإسم أو،F وبعد ذلك نقرت على أمر 00:01:02.355 --> 00:01:07.560 إذا كنت تستخدم نظام الويندوز F التحكم .وبالتالي يمكننا البحث عن هذا الملف 00:01:07.560 --> 00:01:10.780 أرى فقط تكرارين و ،findViewByIdلـ 00:01:10.780 --> 00:01:12.790 .وقد تم استعمالهما بأساليب متشابهة 00:01:12.790 --> 00:01:15.160 لكنني لا أرى أي أسلوب .findViewById استدعى 00:01:16.190 --> 00:01:19.640 وكما تم الإشارة له من قبل ،main activity في فئة 00:01:19.640 --> 00:01:23.450 setContentViewنرى استدعاءً لـ ولكن إذا بحثت عن 00:01:23.450 --> 00:01:26.280 هذا في الملف، فهو أيضًا .main acitivity لم يتم تحديده في 00:01:27.820 --> 00:01:29.620 إذن، أين تم تحديد هذه الأساليب؟ 00:01:30.620 --> 00:01:33.610 هو MainAcitivity ،حسنًا في الواقع ملف صغير 00:01:33.610 --> 00:01:35.150 ،وطوله حوالي 90 سطرًا 00:01:35.150 --> 00:01:38.790 ولكن هناك في الواقع ما هو أهم .في هذه الفئة 00:01:38.790 --> 00:01:42.200 ،يقول الرمز .AppCompatActivityامتداد لـ 00:01:42.200 --> 00:01:45.710 MainAcitivity وهذا يعني أن .هو ملحق 00:01:45.710 --> 00:01:49.290 .AppCompatActivity الوظيفة في فئة 00:01:49.290 --> 00:01:52.790 action bar activity إذا رأيت هنا على حاسوبك، فلا بأس في ذلك 00:01:52.790 --> 00:01:55.450 .فذلك فقط مجرد نسخة قديمة 00:01:55.450 --> 00:01:58.770 النسخة الأخيرة التي ينبغي أن تسنعملها .AppCompatActivity هي 00:01:58.770 --> 00:02:02.420 AppCompatActivity تمنحنا دعمًا للتوافق السابق 00:02:02.420 --> 00:02:04.460 .على أجهزة أندرويد السابقة 00:02:04.460 --> 00:02:07.980 AppCompatActivity تعتبر .جزءً من مكتبة دعم الأندرويد 00:02:07.980 --> 00:02:11.740 وهي تسمح لنا باستخدام آخر ميزات ،واجهة المستخدم على الأندرويد 00:02:11.740 --> 00:02:15.420 كما أنها لا تزال تعمل .على أجهزة الأندرويد القديمة 00:02:15.420 --> 00:02:17.940 عبر تمديد فئة ،AppCompatActivity 00:02:17.940 --> 00:02:20.620 نحن نحصل على جميع الوظائف وجميع الحالات، و 00:02:20.620 --> 00:02:24.490 الأساليب من خلال .بالمجّان MainActivity 00:02:24.490 --> 00:02:26.980 .لا نحتاج لنسخ ولصق كل رمز من هنا 00:02:26.980 --> 00:02:28.800 يمكننا ببساطة تمديد تلك الفئة 00:02:30.090 --> 00:02:31.020 ،إذا كنت مهتمًا 00:02:31.020 --> 00:02:35.880 يمكن العثور على المزيد من المعلومات حول .عبر البحث عنها في غوغل AppCompatActivity 00:02:35.880 --> 00:02:39.700 لفئة doc هذا هو المرجع .AppCompatActivity 00:02:39.700 --> 00:02:41.920 وبما أن لدي ملحق كروم ،متبثًا 00:02:41.920 --> 00:02:43.120 .يمكنني عرض المصدر كذلك 00:02:43.120 --> 00:02:47.890 وهذا هو الرمز الذي تم فيه تحديد .AppCompatActivity فئة 00:02:47.890 --> 00:02:50.360 يمكنك رؤية وجود العديد من الوظائف هنا، ولكن 00:02:50.360 --> 00:02:54.510 الرسالة الأساسية أنه لا ينبغي عليك .فهم كيف تم تنفيذ ذلك 00:02:54.510 --> 00:02:58.350 كل ما عليك معرفته هو أنه عندما .AppCompatActivity تُمدّد 00:02:58.350 --> 00:03:01.010 فستحصل على جميع الوظائف .بالمجان 00:03:01.010 --> 00:03:03.580 ،وفي مستوى عالٍ .إظهارها على هذا النحو 00:03:03.580 --> 00:03:05.900 هذا تحديد الفئة لـ .MainActivity 00:03:05.900 --> 00:03:08.000 وكما لديك هنا بعض الأساليب .التي تم تحديدها هنا 00:03:08.000 --> 00:03:12.350 AppCompatActivity عندما تمدّد فيمكنك الوصول للحالة، و 00:03:12.350 --> 00:03:14.200 والأساليب بعد ذلك .AppCompatActivity من خلال 00:03:14.200 --> 00:03:17.870 الآن، لم يتم إضافتهم فعليًا ولكن،main activity لفئة 00:03:17.870 --> 00:03:19.280 ،يمكن أن تتصور أنهم هناك 00:03:19.280 --> 00:03:22.930 لأنه يمكنك الرجوع للحالة .وجميع الأساليب كذلك 00:03:22.930 --> 00:03:26.540 وبذلك يمكن لرمزنا الإحالة أو،setContentViewلبعض العناصر مثل 00:03:26.540 --> 00:03:27.840 findViewById. 00:03:27.840 --> 00:03:32.240 لأنه قد اكتسبنا تلك الأساليب .MainActivity ولم نحددها في 00:03:32.240 --> 00:03:35.110 MainActivity يتم إظهار كشاشة على الجهاز، ولكن 00:03:35.110 --> 00:03:39.520 MainActivity لم نكتب رمز ذلك في .بل إكتسبنا ذلك أيضًا 00:03:39.520 --> 00:03:42.750 ليس لدبنا الحالة والأساليب AppCompatActivity مباشرة من 00:03:42.750 --> 00:03:46.840 في الفئة، ولكننا نعرف .أنهم هناك، ويمكننا الإحالة إليهم 00:03:46.840 --> 00:03:50.260 ،وبالحديث عن إكتساب الأشياء .هناك جوانب جيدة وسيئة في ذلك 00:03:50.260 --> 00:03:52.540 أحيانًا، نريد إكتساب سلوك، ولكن 00:03:52.540 --> 00:03:54.980 .وأحيانًا، نريد تعديله قليلاً 00:03:55.980 --> 00:03:59.900 إذا أردت تغيير بعض السلوك ،من هذه الفئة المكتسبة 00:03:59.900 --> 00:04:02.230 .يمكنك تجاوز العديد من الأساليب 00:04:02.230 --> 00:04:07.360 في أعلى الأسلوب @override text يمكنك إضافة حتى يعرف الحاسوب 00:04:07.360 --> 00:04:12.100 بأنك لا تريد نسخة الأسلوب .AppCompatActivity من 00:04:12.100 --> 00:04:15.830 ولكن بدلاً من ذلك، تريد النسخة التي .قمت بتحديدها هنا 00:04:15.830 --> 00:04:18.620 هذا موضوع معقد، و .يتطلب الكثير من الممارسة 00:04:18.620 --> 00:04:21.660 لكننا قد رأينا مثالاً واحدًا على تجاوز أسلوب 00:04:21.660 --> 00:04:23.640 .AppCompatActivity من خلال فئة 00:04:23.640 --> 00:04:26.380 .on create وذلك الأسلوب هو الأسلوب 00:04:26.380 --> 00:04:31.170 on create عبر تجاوز أسلوب فنحن نُخصّص ،MainActivity في 00:04:31.170 --> 00:04:35.380 التنفيذ الخاص بنا لما ينبغي أن يحدث .عندما يتم إستدعاء ذلك الأسلوب 00:04:35.380 --> 00:04:37.180 .لا تقلق إذا لم تفهم هذا الآن 00:04:37.180 --> 00:04:40.534 فأنا فقط أقدم لمحة عامة للعديد من مفاهيم 00:04:40.534 --> 00:04:42.350 .البرامج الموجهة 00:04:42.350 --> 00:04:46.160 من المتوقع تمامًا أن يكون لديك .بعض الأسئلة العالقة 00:04:46.160 --> 00:04:49.370 ولا تزال تحتاج لقراءة المزيد من هذه المواضيع لتفهم ذلك 00:04:49.370 --> 00:04:50.860 .بشكل كامل 00:04:50.860 --> 00:04:53.771 وهناك طريقة أخرى لإظهار العلاقة MainActivity بين 00:04:53.771 --> 00:04:58.220 AppCompatActivity و فئات .هو أن ترسم فئة مخطط تسلسل هرمي 00:04:58.220 --> 00:05:00.930 وهذا مختلف عن عرض مخطط التسلسل الهرمي لأن 00:05:00.930 --> 00:05:05.340 يظهر عرض مخطط التسلسل الهرمي شجرة .طرق عرض تظهر على الشاشة 00:05:05.340 --> 00:05:07.810 تُظهر فئة مخطط التسلس الهرمي العلاقة 00:05:07.810 --> 00:05:09.990 .بين مختلف فئات الجافا 00:05:09.990 --> 00:05:12.860 .كفئة عليا AppCompatActivity لدينا 00:05:12.860 --> 00:05:15.868 تمتد من MainActivity بما أن AppCompatActivity، 00:05:15.868 --> 00:05:18.560 .إذن فهذا ما يسمى بالفئة الفرعية 00:05:18.560 --> 00:05:22.200 إذن، فأينما رأيت تحديد هذه الفئة فمهما قمت بتمديدها، فذلك يسمى 00:05:22.200 --> 00:05:23.970 .بالفئة العليا 00:05:23.970 --> 00:05:25.770 .وهذه ستكون فئة فرعية 00:05:25.770 --> 00:05:29.070 أخرى تسمى activity إذا أنشأت و detail activity 00:05:29.070 --> 00:05:32.340 AppCompatActivity ومدّدت فهذه ستكون الفئة الفرعية و 00:05:32.340 --> 00:05:33.409 .هذه ستكون الفئة العليا 00:05:34.720 --> 00:05:37.840 وهذا مثال آخر .Java عن اكتساب الفئات الخاص بـ 00:05:37.840 --> 00:05:40.520 إذا فكرت في الأمر، فإن طريقة عرض النص والصورة 00:05:40.520 --> 00:05:44.460 .والأزرار لها ميزات مشتركة 00:05:44.460 --> 00:05:48.070 كل طرق العرض تلك لها عرض .وارتفاع على الشاشة 00:05:48.070 --> 00:05:51.330 لم ندرس ذلك بعد، ولكن تلك الطرق لديها .أيضا وضع للرؤية 00:05:51.330 --> 00:05:54.400 إذًا يمكن أن نجعلها ظاهرةً .أو مخفيةً 00:05:54.400 --> 00:05:58.650 وهناك العديد من الخصائص التي تعد .مشتركة بينها أيضًا 00:05:58.650 --> 00:06:02.370 عوض كتابة الرمز لتلك الخصائص ،في فئة طريقة عرض النص 00:06:02.370 --> 00:06:05.590 وثم نسخه في فئتي طريقة .عرض الصورة والأزرار 00:06:05.590 --> 00:06:07.610 .يمكننا القيام بشيء ذكي قليلًا 00:06:07.610 --> 00:06:09.980 .يمكننا إنشاء فئة لطريقة العرض 00:06:09.980 --> 00:06:14.110 يمكننا أن نستخرج الخصائص المشتركة في كل طرق العرض ونضعها 00:06:14.110 --> 00:06:19.730 في داخل فئة طريقة العرض، وبهذه الطريقة .لن يتوجب علينا كتابة الرمز سوى مرة واحدة 00:06:19.730 --> 00:06:22.610 ولكن كيف يمكننا القيام بالربط بين فئة طريقة عرض النص و 00:06:22.610 --> 00:06:24.000 فئة طريقة العرض؟ 00:06:24.000 --> 00:06:26.548 .إذا كنت تفكر في الاكتساب، فأنت محق 00:06:26.548 --> 00:06:30.080 سنقوم بتحديد فئة طريقة عرض النص .TextView java داخل ملف 00:06:30.080 --> 00:06:33.240 وبهذه الطريقة ستُكتسب جميع البيانات .والأساليب من فئة طريقة العرض 00:06:34.270 --> 00:06:37.520 وبعد ذلك لن يتوجب علينا كتابة .TextView الرمز كاملًا في فئة 00:06:37.520 --> 00:06:41.860 لأن جزءًا من الوظيفة تمت كتابته .سابقًا في فئة طريقة العرض 00:06:41.860 --> 00:06:43.730 ImageView الأمر نفسه ينطبق على فئات 00:06:43.730 --> 00:06:46.800 والأزرار، إذاً لا يتوجب علينا كتابة .الرمز بأكمله 00:06:46.800 --> 00:06:49.690 في هذه الملفات، يتوجب علينا كتابة ما هو مختلف فقط 00:06:49.690 --> 00:06:53.090 ImageView بين View وفئة 00:06:53.090 --> 00:06:57.720 ،أفكر في الأمر كتحديد لدلتا تحتاج ImageView إذًا ففئة 00:06:57.720 --> 00:07:01.890 ImageView لتحديد ما هو مختلف بين .View وفئة 00:07:03.840 --> 00:07:06.960 إذا لم نرغب في اكتساب سلوك معين ،View من فئة 00:07:06.960 --> 00:07:11.760 يمكننا تحديد السلوك المحدّث أو ،ImageView داخل فئة 00:07:11.760 --> 00:07:12.820 .أي من هذه الفئات 00:07:14.070 --> 00:07:16.680 ،لتذكيرك بالمصطلحات ،في هذه الحالة 00:07:16.680 --> 00:07:20.039 فئة فرعية TextView سيكون .فئة عليا View و 00:07:21.430 --> 00:07:23.280 إذا عدنا إلى وثائق 00:07:23.280 --> 00:07:27.310 ،TextView فئة .فسنفهم ذلك الجزء الآن 00:07:27.310 --> 00:07:30.000 .view امتداد لـ TextView وهي تقول 00:07:30.000 --> 00:07:33.330 والآن نعلم أن ذلك يعني اكتساب الوضع و 00:07:33.330 --> 00:07:35.280 .ViewClass الأساليب من 00:07:35.280 --> 00:07:38.330 وهنا في فئة .مخطط التسلسل الهرمي 00:07:38.330 --> 00:07:41.884 TextView ويظهر أن فئة .ViewClass تكتسب من طرف 00:07:43.730 --> 00:07:46.530 View وبدورها فئة .Object تكتسب من طرف فئة 00:07:47.650 --> 00:07:50.060 وإذا قمت بالبحث في الجوار، ستجد ،فئات أخرى 00:07:50.060 --> 00:07:54.780 التي هي في الواقع EditText مثل فئة .TextView امتداد لفئة 00:07:54.780 --> 00:07:57.570 إذا فهي تأخذ السلوك و TextView من فئة 00:07:57.570 --> 00:08:00.120 ثم تضيف وظيفة محددة .لها 00:08:01.290 --> 00:08:03.590 .TextView هي امتداد لـ EditText إذًا 00:08:03.590 --> 00:08:06.720 View هي امتداد لـ TextView و .Object هي امتداد لـ View و 00:08:06.720 --> 00:08:09.830 وهذه هي فئة مخطط .التسلسل الهرمي 00:08:11.370 --> 00:08:13.950 هناك المزيد والمزيد، ويمكنك أن .تمضي ساعات في تفقده 00:08:13.950 --> 00:08:17.010 ولكن دعني أريك شيئًا واحدًا .TextView في صفحة وثائق 00:08:17.010 --> 00:08:20.820 أريد أن أريك الطريقة الخاصة .SetVisibility بـ 00:08:20.820 --> 00:08:24.350 SetVisibility للقيام بـ Java ها هو أسلوب .TextView داخل فئة 00:08:24.350 --> 00:08:26.860 view وهذا يغير وضع .لتكون ظاهرة أو مخفية 00:08:28.000 --> 00:08:33.240 ،إذا نقرتُ على هذا الأسلوب .View فسينقلني في الواقع إلى فئة 00:08:33.240 --> 00:08:36.010 وهي تصف العمل الذي .يقوم به هذا الأسلوب 00:08:36.010 --> 00:08:39.860 TextView object ويمكنك أن تلاحظ أن .set visibility لديه أسلوب 00:08:39.860 --> 00:08:43.659 ولكنها في الواقع تكتسب من .View فئة 00:08:43.659 --> 00:08:47.470 إذن حصلنا علي هذه الوظيفة بالمجان .View من فئة 00:08:47.470 --> 00:08:50.930 حسنًا، لقد غطينا العديد .من المفاهيم 00:08:50.930 --> 00:08:56.040 عمومًا، هذه التفاصيل يمكن التوسع فيها .من خلال كورس فصل علوم الحاسوب 00:08:56.040 --> 00:08:58.260 سنقوم الآن بالقليل من الممارسة و 00:08:58.260 --> 00:09:01.170 نتمنى أن تكون الأمور واضحة .بالنسبة لك 00:09:01.170 --> 00:09:03.010 ولكن عليك أن تعلم أن ذلك سيتطلب الكثير من الوقت و 00:09:03.010 --> 00:09:06.610 الممارسة حتى تتمكن من فهم .هذه المفاهيم بشكل تام 00:09:06.610 --> 00:09:09.700 حسنًا، التمرين الأول، أريد منك أن ،تُنشئ تطبيق أندرويد جديد آخر 00:09:09.700 --> 00:09:11.530 لأننا لا نريد أن نفسد .Java تطبيق الـ 00:09:13.070 --> 00:09:14.640 ،عندما تنشئ المشروع .قم بتشغيل التطبيق 00:09:15.790 --> 00:09:18.630 ،عندما تنشئ التطبيق الخاص بك .MainActivity سوف ترى ملف 00:09:18.630 --> 00:09:22.530 .AppCompatActivity ذلك الملف سيمتد من 00:09:22.530 --> 00:09:26.060 الخاصة بك Android Studio في نسخة يمتد من MainActivity إذا كان 00:09:26.060 --> 00:09:28.760 ،عوضًا عن ذلك ActionBarActivity .فذلك جيد أيضًا 00:09:28.760 --> 00:09:32.200 لأنه يعتبر نسخة قديمة من .AppCompatActivity 00:09:32.200 --> 00:09:35.650 ،وعبر إزالة أسلوب التجاوز سنرجع إلى 00:09:35.650 --> 00:09:40.280 onCreate الطريقة التي ظهرت بها فئة .AppCompatActivity في فئة 00:09:40.280 --> 00:09:44.540 إن تواجد هذا الأسلوب يُبين أننا نريد MainActivity سلوكًا مختلفًا في 00:09:44.540 --> 00:09:46.230 .onCreate لـ 00:09:46.230 --> 00:09:49.540 إذا قمنا بحذفها فسيعيدنا ذلك إلى السلوك الأصلى في 00:09:49.540 --> 00:09:52.040 .AppCompatActivity فئة 00:09:52.040 --> 00:09:53.380 ،عندما تشغل التطبيق 00:09:53.380 --> 00:09:57.250 ما هو الاختلاف الذي تلاحظه بالمقارنة مع المرة الأولى التي شغلت فيها التطبيق؟ 00:09:57.250 --> 00:09:58.510 .أكتب إجابتك في خانة النص التالية