InstagramTwitterSnapChat


 
وصف

العودة   منتديات سكاو > الكليات الجامعية > منتدى كلية الحاسبات وتقنية المعلومات > المنتدى العام لكلية الحاسبات وتقنية المعلومات
التسجيل مشاركات اليوم البحث
   
   


المنتدى العام لكلية الحاسبات وتقنية المعلومات قسم خاص بالمواد العامة و الطلاب غير المتخصصين بكلية الحاسبات وتقنية المعلومات

[شرح][CPCS 203] أفهم الكلمة الأساسية public و private .

المنتدى العام لكلية الحاسبات وتقنية المعلومات

 
 
أدوات الموضوع إبحث في الموضوع انواع عرض الموضوع
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
  #1  
قديم 03-04-2010, 12:49 AM
الصورة الرمزية Mr.Ahmad

Mr.Ahmad Mr.Ahmad غير متواجد حالياً

عضو هيئة تدريس

 
تاريخ التسجيل: Jul 2008
الكلية: كلية الحاسبات وتقنية المعلومات
التخصص: IT
نوع الدراسة: عضو هيئة تدريس
المستوى: متخرج
البلد: جــــدة
الجنس: ذكر
المشاركات: 2,477
Skaau.com (11) [شرح][CPCS 203] أفهم الكلمة الأساسية public و private .


بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
__________________________________________________ ______________________________

* مــا شاء الله تبارك الله *
الحمد لله عدد ما خلق , الحمد لله ملء ما خلق , الحمد لله عدد ما في السموات وما في الأرض , الحمد لله عدد ما أحصى كتابه ، والحمد لله على ما أحصى كتابه ، والحمد لله عدد كل شيء والحمد لله ملء كل شيء .
اللهم صل على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد . اللهم بارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد.
لا إله إلا الله وحده لا شريك له الملك وله الحمد وهو على كل شيء قدير .
سبحـــــــان الله وبحمده … سبحــان الله العظيم
__________________________________________________ ______________________________

[شرح][ CPCS 203 - برمجة 2 ] أفهم الكلمة الأساسية public و private

أهدي هذا الشرح إلى اخونا وزميلنا على الزهراني خاصة وإلى كل الطلاب عامة . بارك الله فيهم .
كود:
[ null 4C 4F 6F 4F 6F 4F 6F 4C 59 ]


الدروس السابقة :
[CPCS 203] أفهم عمل الكلمة الأساسية new عند إنشاء كائن !
[CPCS 203] أفهم مفهوم الفئة (Class) والعناصر (Objects) بكلمات بسيطة

مرحباً بكم أخواني في هذا اللقاء الجديد , الذي سنتعلم فيه – بإذن الله – مفاهيم عدة أمور تتعلق بالبرمجة كائنية المنحنى بلغة الجافا , وهي مفهوم الـ public و private ومفهوم الـ global و local ومفهوم الـ Constructor ومفهوم الـ static .
[سيتم شرحها على عدة دروس مستقلة إن شاء الله ]

لنستذكر ما تم تعلمه في اللقاء السابق , وهو فهم ما تفعله عمل الكلمة الأساسية new عند إنشاء كائن . وذكرنا أنه عند تعريف كائن (Object) من فئة (Class) فإن المتغير المُعرف من الفئة كـكائن فإنه يحمل مرجع للكائن في الذاكرة. وكذلك تعلمنا أنه عندما يتم إنشاء الكائن بواسطة الكلمة الأساسية new فإنه يتم إنشاء نسخة مثيلة من الفئة التي ينتمي إليها الكائن .

- المفهوم الأول : الـ public و الـ private -

والآن لنتعلم مفهوم جديد , وهو مفهوم الكلمة الأساسية public (العمومية) و الكلمة الأساسية private (الخصوصية) :

في البداية , شاهد الكود التالي :





عرفنا في الكود السابق أثنين class , وهمـا :

class Student : وعرفنا فيه متغير اسمه ID نوعه integer وهو public (عمومي) ومتغير آخر من نفس النوع أسمه Age وهو private (خصوصي) .

class Main : ووضعنا فيه الطريقة الرئيسية للبرنامج main .

لنجرب الآن إنشاء كائن من الفئة Student وإسناد له قيمة الـ ID و Age :







إذاً من خلال التجربة السابقة عرفنا أنه لا يمكن الوصول مباشرة إلى المتغيرات المعرفة كـ private من خارج فئتها التي مُعرفة داخلها . وكذلك الأمر ينطبق على الطرق (Methods) – الطُرق هي اسم مرادف للـ Function – . فعند تعريف الطرق كـ public فإنه يمكنك استدعاء الطريقة خارج فئتها , وإن عرفناها كـ private فلا يمكن استدعاء الطريقة إلا داخل الفئة المُعرفة داخلها .

وعلى ذلك فإنه يمكننا الوصول والتعامل مع المتغيرات المعرفة كـ private من خارج فئتها بواسطة الطُرق العمومية (public Methods) أي الطُرق المعرفة كـ public , وكذلك الأمر ينطبق على الطُرق الخصوصية (private Methods) فإننا نستطيع استدعاء الطُرق المعرفة كـ private من خارج فئتها عن طريق الُطرق العمومية , أي استدعاء الطرق الخصوصية داخل الطُرق العمومية , أي أنه استدعاء غير مباشر للطرق الخصوصية خارج فئتها .

استكمالاً للكود السابق , سنطبق الآن طريقتين عموميتين (أي معرفة كـ public) لتعامل مع المتغير Age , بحيث طريقة تغير قيمته وطريقة أخرى تُرجع لنا (تعطينا) قيمته المخزنة , ولنعطي تسمية للطريقة التي تخزن أو تغير قيمة متغير الـ Age اسم SetAge ونعطي للطريقة الأخرى التي تُرجع لنا قيمة الـ Age اسم GetAge :

ملاحظة : لك حرية اختيار أسامي الطُرق , وليس بشرط أن نبدأ التسمية بـ Set للطريقة التي تخزن قيمة و Get للطريقة التي تُرجع قيمة . ولكن جرت العادة أو العُرف على التسمية تلك .



والآن لنجرب الكود , ونحاول إسناد قيمة للمتغير Age وكذلك نحاول أخذ قيمته بواسطة الطرق العمومية التي كتبناها :



بعد تعلم السابق , قد يدور إلى أذهانكم إذاً هذا السؤال :
لماذا لا نُعرف كل المتغيرات كعمومية (public) بدل هذا التعب من تعريف طريقة تسند قيمة وطريقة تستخرج قيمة المتغير الخصوصي (private) ؟

من أهدف البرمجة كائنية المنحنى (OOP) هو هدف أو مبدأ التغليف (Encapsulation) . يهدف هذا المبدأ إلى إخفاء التفاصيل البرمجية عن مستخدم الفئة .

مثلاً : كلنا استخدمنا الطريقة printLn الموجود داخل فئة System.out التي تطبع سلسلة نصية على الشاشة. ولكن هل تعرف تفاصيل عمل –أكواد- هذه الفئة أو تعرف كيف تظهر هذه الطريقة النص على الشاشة ؟!
بالطبع لا , وربما أنت لا تستطيع برمجة مثل هذه الفئة لتعقيدها . لذلك أنت عندما تستخدم طُرق فئة System.out كطريقة printLn فإنك لا يهمك تفاصيل أو أكواد أو كيف تعمل هذه الطريقة ولكن يهمك الوظيفة التي تقدمها لك وهي طباعة سلسة نصية على الشاشة .

لنأخذ مثال من الواقع , مثلاً في أجسامنا نحن فئة البشر , هل عندما تأكل شي ما , هل يهمك كيف يتم هضمه داخل معدتك أو كيف يتم امتصاص الغذاء عند مرورها إلى الأمعاء الدقيقة ؟! بالطبع لا . فنشكر الله ونحمده على نعمه الكثيرة التي لا نستطيع أن نحصيها .

ولنأخذ مثال آخر , عندما تشتري جهاز كهربائي كالثلاجة مثلاً , هل يهمك كيف تعمل الثلاجة وكيف تبرد ؟! بالطبع , فقط أنت يهمك وظيفتها وهي تبريد الطعام .


هذا هو مبدأ ومفهوم التغليف (Encapsulation) , لذلك أحرص على أن تكون فئتك مغلفة , بحيث لا تُعَرف متغيرات عمومية , وأجعلها خصوصية , وتحكم فيها عن طريق الطرق العمومية التي تعتبر كأزرار لوحة التحكم في الأجهزة الكهربائية .



لنأخذ تطبيق أخير , وهو تكملة للبرنامج السابق , بحيث سنُعرف طريقة خصوصية تقوم بالتحقق من عمر الطالب , بحيث إن تم إدخال عمر الطالب فوق الـ 50 سنة يطبع رسالة معينة ويغير قيمة العمر إلى أقصى قيمة ممكنة وهي 50 سنة .

مثال : إن تم إدخال العمر كـ 55 سنة يطبع رسالة خطأ , ولا يحفظ في متغير الـ Age القيمة 55 بل يحفظ القيمة 50 التي افترضناها كأكبر قيمة ممكنة :





بهذا نختم شرح مفهوم العمومية (public) و الخصوصية (private) .

__________________________________________________ ______________________________

لا تنسونا من دعائكم .
وتمنياتي لي و لكم بالتوفيق,,,

 


توقيع Mr.Ahmad  

سبحان الله وبحمد ,,, سبحان الله العظيم
الحمد لله كما ينبغي لجلال وجهه وعظيم سلطانه .
اللهم صل على محمد وعلى آل محمد كما صليت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد . اللهم بارك على محمد وعلى آل محمد كما باركت على إبراهيم وعلى آل إبراهيم إنك حميد مجيد.

 


التعديل الأخير تم بواسطة Mr.Ahmad ; 03-04-2010 الساعة 01:01 AM.
رد مع اقتباس

 

 


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

 


الساعة الآن 07:09 PM


Powered by vBulletin® Version 3.8.9 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Ads Organizer 3.0.3 by Analytics - Distance Education

أن كل ما ينشر في المنتدى لا يمثل رأي الإدارة وانما يمثل رأي أصحابها

جميع الحقوق محفوظة لشبكة سكاو

2003-2023