InstagramTwitterSnapChat


 
وصف

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


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

[شرح][CPCS 203] أفهم الطرق والبيانات الساكنة (static Methods and Data)

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

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

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

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

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


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

-=-=-=-=-=-=-=-

* الدين نصيحة : نعمة البصر *

قال الله تعالى : ( قُلْ لِلْمُؤْمِنِينَ يَغُضُّوا مِنْ أَبْصَارِهِمْ وَيَحْفَظُوا فُرُوجَهُمْ ذَلِكَ أَزْكَى لَهُمْ إِنَّ اللَّهَ خَبِيرٌ بِمَا يَصْنَعُونَ * وَقُلْ لِلْمُؤْمِنَاتِ يَغْضُضْنَ مِنْ أَبْصَارِهِنَّ وَيَحْفَظْنَ فُرُوجَهُنَّ ) الآية (النور:30-31) . ـ

تذكروا أخواني أن البصر نعمة من نعم الله علينا .

وقال تعالى : ( وَهُوَ الَّذِي أَنْشَأَ لَكُمُ السَّمْعَ وَالْأَبْصَارَ وَالْأَفْئِدَةَ قَلِيلاً مَا تَشْكُرُونَ) (المؤمنون:78) ـ

فيجب أن نستحي جميعاً من صاحب هذه النعمة ، وأن نراقبه فيها فلا ننظر إلى ما حرّم الله ، وأن نسخرها فيما يرضي الله عنا ، ونعلم أننا غداً سوف نُسئل عما رأيناه بأبصارنا قال تعالى : ( إِنَّ السَّمْعَ وَالْبَصَرَ وَالْفُؤَادَ كُلُّ أُولَئِكَ كَانَ عَنْهُ مَسْؤُولاً ) (الإسراء: من الآية36) . ـ

كل الحوادث مبداهـا من النظـر * ومعظم النّار من مستصغر الشررِ
كـم نظرةٍ بلغت من قلبِ صاحبها * كمبلغ السهم بـلا قوسٍ ولا وترِ
والعبـد ما دام ذا طـرفٍ يُقلّبـه * في أعين الغيدِ موقوفٌ على الخطرِ
يسـرُ مقلتَه مـا ضـرَّ مُهجتـَه لا مرحبًا بسـرورٍ عاد بالضررِ
__________________________________________________ ______________________________


[شرح][CPCS 203] أفهم الطرق والبيانات الساكنة (static Methods and Data)

الدروس السابقة :
[شرح][CPCS 203] أفهم تحميل الطرق تحميلاً زائداً (Overloaded)
[شرح][CPCS 203] أفهم المُشيدات أو دالة البناء (Constructor)
[شرح][CPCS 203] أفهم مفهوم الـ global و local و المدى (Scope) !
[شرح][CPCS 203] أفهم الكلمة الأساسية public و private .
[شرح][ CPCS 203 - برمجة 2 ] أفهم عمل الكلمة الأساسية new عند إنشاء كائن (Object) !
[شرح][ CPCS 203 - برمجة 2 ] أفهم مفهوم الفئة (Class) والعناصر (Objects) بكلمات بسيطة
[جافا - Java] شرح صنع ملف تنفيذي (exe) من برامجك المبرمجة بالجافا !


مرحباً بكم أخواني في هذا اللقاء الجديد الذي سنتعلم فيه مفهوم الطرق والبيانات الساكنة (static Methods and Data) .

- المفهوم الرابع : الطرق والبيانات الساكنة (static Methods and Data) –

شاهد المثال التالي :



في المثال السابق , استعملنا الطريقة pow و sqrt التابعة للفئة Math , وأيضاً استخدمنا الثابت PI التابع لفة Math . إذ فكرت بالسابق ستجد أن الوسيلة التي استدعيت بها الطريقتين وكذلك استخدام الثابت مميزة قليلاً. لقد استدعيت الطريقة واستخدمت الثابت على الفئة نفسها ( فئة Math) وليس على كائن نوعه Math. إذاً , ما الذي يجري وكيف يعمل هذا ! ؟

ملاحظة : ستجد في الشرح جملة (“تواجد للفئة”) , تعني هذه الجملة : أي إنشاء كائن من الفئة بواسـطة الكلـمة الأساســية (new) , وسبب إطلاق جملة “تواجد للفئة” على المعنى السابق هو لأن عندما ننشئ كائن من الفئة باستخدام الكلمة new سيتكون كائن مثيل للفئة في الذاكرة , لذلك فهو يعتبر تواجد للفئة .

ستجد في كثير من الأحيان أنه ليست كل الطرق تنتمي إلى تواجد للفئة. إنها طُرق خدماتية بمقدار ما تزود خدمة مفيدة مستقلة عن أي تواجد فئة محددة . والطرقة sqrt و pow هما مثالان على ذلك , فلو كانت sqrt أو pow طريقة تواجد للفئة Math , لكان عليك إنشاء كائن Math من أجل استدعاء الطريقة sqrt أو pow أو استخدام الثابت PI عليه :



سيكون هذا مرهقاً . لن يلعب كائن Math دوراً في احتساب الجذر التربيعي أو حساب القوة , فكل بيانات الإدخال التي تحتاج إليها الطريقة sqrt و pow مزودة في لائحة البارامترات (أي نحن ندخل القيم حال استدعاء الطريقة) , وتتم إعادة النتيجة الوحيدة إلى المستدعي باستعمال قيمة إعادة الطريقة (وهنا قيمة الإعادة للطرق السابقة هي double) . تحتوي الفئة Math كذلك على عدة طرق خدماتية أخرى كـ sin , cos , tan و log . كما تحتوي الفئة Math على حقلين خدماتية هم PI و E ومخزنة داخلهم أرقام ثوابت رياضية, ونوع الحقلين double .

ملاحظة : الكود السابق خاطئ , لأن الفئة Math لا تملك مشيداً مُعلم كعمومي (public) والمشيد الافتراضي مُعلم كـخصوصي (private) ، لذلك لا يمكن إنشاء كائن منها من خارج فئة Math .

إليك كيف يتم تصريح الحقل PI و الطريقة pow و sqrt في الفئة Math الحقيقية :




إنشاء حقل مشترك (Shared Field) :

كما رأينا سابقاُ , يمكننا استعمال الكلية الأساسية static (ساكن) عند تعريف حقل ، هذا يتيح لك إنشاء حقل واحد مشترك بين كل الكائنات المنشأة من فئة واحدة ، أي تعتبر الحقول الساكنة العمومية كـ ((Global variable . أما الحقول الغير ساكنة هي محلية لكل تواجد للكائن .

في المثال التالي ، تتم زيادة الحقل الساكن NumStruden في الفئة Student بواسطة مشيد الفئة Student كلما تم إنشاء كائن Student جديد :





وهذه صورة توضيحية عما يحدث في الذاكرة :



تشارك كل الكائنات من نوع Student نفس الحقل NumStruden لذا فالجملة ++NumStruden تزيد نفس البيانات كلما تم إنشاء تواجد جديد . تستطيع الوصول إلى الحقل NumStruden بتحديد اسم الفئة بدلاً من تحديد تواجد (كائن) , مثلاً : Student.NumStruden , ولا توجد مشكلة إن وصلت له عن طريق تواجد لكائن لأنه يؤشر على نفس الحقل , مثلاً : s1.NumStruden .


إنشاء حقل ثابت ساكن بواسطة الكلمة الأساسية final :
يمكنك تصريح حقل كساكن وثابت , أي سيكون حقل مشترك ولكن قيمته لن تتغير لأنه ثابت ببدء أسمه بالكلمة الأساسية final. مثلما رأينا سابقاُ في الحقل PI في فئة Math :



بهذا الشكل سيكون الحقل مشترك وثابت , أي يمكن استخدام قيمة الحقل PI بكتابة Math.PI ولكن عندما تحاول تغيير قيمته يظهر لك خطأ (مثل : Math.PI = 123) , لأن في تعريف الحقل PI أتبعناه بكلمة final التي تجعل الحقل ثابت لا يمكن تغيير قيمته بعد كتابتها في تعريفه .

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

أي تخيل في الكود السابق لو كان الحقل الثابت PI معرف كـ (public final double) في فئة Math , ولدينا ثلاث تواجدات لهذه الفئة (أي أنشئنا ثلاث كائنات من نوع Math) , تخيل كيف تكون في الذاكرة :



لاحظ أنه في كائن من Math تم إنشاء له حقل PI الثابت ، ولا فائدة من أن يملك كل كائن ثابت خاص به لأنه سيكون لي قيمة واحدة لا تتغير في جميع الكائنات , وبالتالي فإن عمل كهذا يضيع بعض مساحات الذاكرة من غير فائدة .

أما تخيل لو كان الحقل الثابت PI معرف كـ (public static final double) في فئة Math , ثلاث تواجدات لهذه الفئة (أي أنشئنا ثلاث كائنات من نوع Math) , تخيل كيف تكون في الذاكرة :



في هذا الكود ، نرى أنه تم إنشاء حقل PI الثابت مرة واحدة فقط , وكل الكائنات تتشارك فيه ولا يتم إنشاء لكل كائن حقل PI خاص به . حل كهذا سيحافظ بقدر الإمكان على مساحة الذاكرة .

وكذلك , كما تلاحظ في كلتا الرسمتين التوضحيتين , أن الطريقة pow و sqrt تم تعريفهما كـ static , ورمزنا لهما في رسمة الكائن بالرمز “@” لتوضيح انهم ساكنين وكذلك أنه لا يتم إنشاء طُرق جديدة منهما لكل كائن , بل يتم إنشاء نسخة واحدة فقط من كل طريقة ساكنة تتشارك فيها جميع الكائنات .

تلميح : تسى الطرق الساكنة أيضاً طرق الفئة . لكن الحقول الساكنة لا تميل إلى أن تُسمى حقول الفئة , إنها تسمى فقط الحقول الساكنة أو المتغيرات الساكنة أحياناً .

لنأخذ مثال تطبيقي لتثبيت ما سبق من الشرح :
في هذا المثال ، قمنا بعمل فئة أسمها Student , ولها أربع حقول , وهي :
حقل private static String SchoolName : نخزن فيه اسم المدرسة أو الكلية التي ينتمي إليها الطلاب ,, وأفترضنا أن جميع الطلاب من مدرسة واحدة لذلك وضعناها كحقل ساكن ليكون مشترك لجميع الكائنات.
حقل private int IDofStudent : نخزن فيه رقم الطالب .
حقل private static int NumStudent : نخزن فيها عدد الطلاب الجديد , أي عدد الكئانات التي تم إنشائها من نوع هذه الفئة , وتم وضعه كساكن ليكون مشترك لجميع الكائنات .
حقل public static final int Phone : نخزن فيه رقم هاتف المدرسة , وبما أن رقم الهاتف في الغالب سيكون ثابت لذلك وضعناها كحقل ثابت وساكن ليكون مشترك لجميع الكئانات .
وبعد ذلك تم كتابة مشيدان للفئة وثلاث طرق , أطلع عليها وأفهمها .



نتيجة الكود السابق :



إن كنت فهمت ما تم شرحه في هذا الدرس ستفهم هذا البرنامج بإذن الله وكيف ظهرت نتيجة البرنامج كهذه .

ملاحظة : الطرق والحقول الساكنة لا تنتمي إلى أي تواجد للفئة , أي أن الطريقة الساكنة لا تُستدعى على كائن . فعندما تعرف طريقة ساكنة , لن تملك وصولاً إلى أي حقول أو طرق تواجد – أي التي غير معرفة كساكنة (static) - معرفة للفئة . يمكنها فقط أن تستعمل الحقول و الطرق المُعلمة كساكنة (static) .

ملاحظة : الحقول والطرق الغير ساكنة – تواجد الفئة – تتطلب إنشاء كائن لاستعمالها واستدعائها عليه اولاً .

مثال :




الكود السابق خطأ , لأن الطريقة main هي طريقة ساكنة , لذلك لا يمكن استخدام و الطرق الغير ساكنة المعرفة داخل الفئة ، والسبب في ذلك كما ذكرنا في الملاحظات , أن الحقول والطرق الساكنة لا تنتمي إلى تواجد للفئة , لذلك لا يمكن استخدام الحقول والطرق التي تتطلب تواجد للفئة وهي الغير ساكنة .

أما الكود التالي صحيح , لأننا أستخدمنا حقل ساكن وطريقة ساكنة في طريقة ساكنة , فيجمعها لا تنتمي لتواجد لفئة لأنها جميعها ساكنة :



أنتهى الشرح .
والحمدلله الذي تتم بنعمته الصالحات .
__________________________________________________ ______________________________


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

 


توقيع Mr.Ahmad  

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

 

رد مع اقتباس

 

منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 28-04-2010, 12:35 PM   #2

أميرالظلام

rayan511

الصورة الرمزية أميرالظلام

 
تاريخ التسجيل: Jul 2009
التخصص: تقنية معلومات (IT)
نوع الدراسة: إنتظام
المستوى: السابع
الجنس: ذكر
المشاركات: 647
افتراضي رد: [شرح][CPCS 203] أفهم الطرق والبيانات الساكنة (static Methods and Data)

يعطيك العافيه اخوي احمد

 

توقيع أميرالظلام  

 

 

أميرالظلام غير متواجد حالياً   رد مع اقتباس
 

منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 29-04-2010, 08:40 PM   #3

HaMo0oDy303

^_^

الصورة الرمزية HaMo0oDy303

 
تاريخ التسجيل: Sep 2008
التخصص: IT :)
نوع الدراسة: إنتظام
المستوى: السابع
الجنس: ذكر
المشاركات: 148
افتراضي رد: [شرح][CPCS 203] أفهم الطرق والبيانات الساكنة (static Methods and Data)

مشكور وما قصرت
والله يعطيك العافية
وشكرا :)

 

توقيع HaMo0oDy303  

 





 

HaMo0oDy303 غير متواجد حالياً   رد مع اقتباس
 

إضافة رد


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

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

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

 


الساعة الآن 07:31 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