محاضرة 7,6: مفهوم مصفوفـة من الكائنات

Slides:



Advertisements
Similar presentations
Event Handling in flash Event: is an instantaneous occurrence usually triggered by user. هو احداث تقع فورا وتطلق عادة باستخدام المستخدم Event: is an instantaneous.
Advertisements

Arrays in Flash What is an Array: What is an Array: Array is a list of cells, each cell in the list has a number to identify it (index or position). هي
Conjunctions الروابـــــــــط.
Question-Tags الأسئلة المذيلة
تعريب لوحة المفاتيح والشاشة
Prepared By: Manal Mobarez hotmail.com.
إدارة وتنمية مصادر المعلومات Information Resource Management (IRM)4.
كيفية عرض المكونات Hit Counter: يجب تخزينها ونشرها على موقع الويب (الخادم) Hover Button: يجب تخزينها وعرضها من الأمر Preview on Browser من قائمة File.
الفصل الحادي عشر الطوارئ الإشعاعية
بسم الله الرحمن الرحيم.
EMSA EXTERNAL MEASUREMENT of STUDENT ACHIEVEMENT.
Data Structures & Algorithms Week1. Contents Textbook Grade Software.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 1 Databases and Database Users Hour1 Presented & Modified by Mahmoud.
JavaScript JavaScript Introduction. Q. What is JavaScript? Ans. JavaScript was designed to add interactivity to HTML pages. JavaScript is a scripting.
تقسيم الشبكات Subnetting
Computer Programming 2 Lecture 9: Object Oriented Programming Array Of Objects Prepared & Presented by: Mahmoud Rafeek Alfarra MINISTRY OF EDUCATION &
Dr. Al-Mothana Gasaymeh. Software Software : is a collection of programs, data, and information “ instructions for the hardware “ Program : Set of instructions.
LECTURE 4 التعامل مع VISUAL C المفاهيم الاساسية في البرمجة.
Alphabet game…. Think of a word – Your partner has to guess that word – you can give ONE word clues – no YES/NO responses allowed!!
بســــــــم الله الرحمن الرحيــــــــم. Chapter 7 Dr. Mohammed Owais Qureshi Hashmi.
المكدس Stack (abstract data type) The stack is a very common data structure used in programs. It hold objects, usually all of the same type. Stacks are.
مقدمة قواعد بيانات - أوراكل الفـصـل الــرابــع دوال الصف الواحد أ. جمانه الحازمي.
اختلاف الزمن على سطح الكرة الأرضية
Activity Diagram.
Class Diagrams.
اخواني الطلبه اليوم راح اشرح لكم عمليه اساسيه تتم في الشجرة(Tree)
المحاضرة3 : مقدمة لمفاهيم البرمجـة الشيئيـة
تعريف تطبيقات واستخدامات نظم المعلومات الجغرافية المحتويات تعريف نظم المعلومات الجغرافية مكونات نظم المعلومات الجغرافية الاسئلة الخمسة التى تجيب عنها.
لنفرض أن هدف التجربة هو مقارنة نوعين من الأعلاف (A و B) لتغذية أبقار حلوب خلال 3 شهور. وتم اختيار عشرين بقرة متشابهة ( في الوزن / العمر / السلالة / الموسم.
لنفرض أن هدف التجربة هو مقارنة صنفين من السماد (A و B) من حيث كمية محصول نوع معين من القمح.
What is “I am an IDP” App. ? ما هو تطبيق «أنا نازح» It is a free SMART phone app هو تطبيق مجاني للهواتف الذكية Can be downloaded from Google Play.
SPSS تطبيقات إحصائية بـاستخدام د. وليــد محمد عفيفي محمد
محاضرة 4, 5: مفهوم الأصناف و الكائنات و التعامل معها
Law Of Diminishing Marginal Utility قانون تناقص المنفعة الحدية
خوارزميات و مبادئ برمجة
مادة نظم تشغيل شبكية 2 المحاضرة الثالثة بروتوكولات الشبكة THE OSI Model - TCP/IP إعداد المهندس وسام المحمود.
أدوات في التعليم الالكتروني
How to contact me Twitter Blog :-
PowerPoint Dr.Manal mobarez.
برمجة قواعد بيانات تطبيق مفهوم الحماية في النماذج
برنامج (الجداول الحسابية) Microsoft Excel
تابع :تطبيع البيانات.
تابع الفصل الثاني: مبادى البناء ونماذج العلاقات لقواعد البيانات
1.الدوال Function 2.الاجراءاتSub Procedure 3.وحده نمطيه Add Module
المخدم الرئيسي في الشبكات
الوحدة الثالثة الاتصالات و شبكات الحاسوب
تابع جمل التحكم و معالجة الاستثناءات
إختر عنواناً لمشروعك يكون بسيطاً ويشد الانتباه!.
يمكن استدعاء الكود الوظيفي عند حدث معين أو عند استدعاء الكود الوظيفي .
نظام التشغيل Windows xp.
سياسات واستراتيجيات البحث
الفصل الثالث حصر و ترتيب البيانات.
Programming -2 برمجة -2 المحاضرة-1 Lecture-1.
Seminar Data Types صفية ناجح نوري البدري ياسمين يوسف عبد العليم.
C++ Programming L4+5 . Functions kkkkkkkkkkkkkk
أ.إسراء الطريقي , 306 عال , المحاضره الثالثه
معالجة الاستثناءات.
3. Browsing the Web تصفح الانترنت
C++ Programming L11 . Classes(3) kkkkkkkkkkkkkk
عرض إجمالي أنماط المتغيرات الأساسية في سي شارب (نمط int)
Gateway (بوابة العبور أو الاتصال)
مصادر على شبكة الانترنت
الوحدة الخامسة البرمجة بلغة فجول بيسك تصميم الواجهات في برنامج الفجول بيسك. ضبط خصائص الأدوات. مراحل كتابة البرنامج بلغة فجول بيسك أهداف الدرس.
استعمال الدوال الجاهزة
الوحدة الثانية: مكونات لغة الجافا
مهارت الحاسوب ا.محمد شبير.
القيمة الزمنية للنقود Time Value of Money الفصل الخامس
العلاقة مع المصادر Source Relationship.
هيكلة نظم إدارة قواعد البيانات (DBMS Architecture)
4 أسباب وراء فشل حبك في مرحلة المراهقة. كثير من الفتيات والشابات يقعوا في الحب في مرحلة المراهقة، وهي المرحلة التي تبدأ فيها الفتاة في التعرف على الطرف.
Presentation transcript:

محاضرة 7,6: مفهوم مصفوفـة من الكائنات

قَالَ رَسُولُ اللَّهِ صلى الله عليه وسلم « ‏مَثَلُ الجليس الصَّالِح و الجَليس السَّوْءِ كَمَثَلِ صَاحِبِ الْمِسْكِ، وَكِيرِ الْحَدَّادِ، لاَ يَعْدَمُكَ مِنْ صَاحِبِ الْمِسْكِ إِمَّا تَشْتَرِيهِ، أَوْ تَجِدُ رِيحَهُ، وَكِيرُ الْحَدَّادِ يُحْرِقُ بَدَنَكَ أَوْ ثَوْبَكَ أَوْ تَجِدُ مِنْهُ رِيحاً خَبِيثَةً » رواه البخاري وقال مالك بن دينار- رحمه الله -: إنك إن تنقل الأحجار مع الأبرار، خير لك من أن تأكل الخبيص مع الفجار وأنشد: وصاحب خيار الناس تنج مسلمــا وصاحب شرار الناس يوما فتندما

ما هو static variable ؟ لماذا الربط بين المصفوفات و الأصناف؟ بنــاء برنامج سجـل الموظفين بناء دليل التلفونات (مشـروع الفصل)

ما هو static variable ؟ عند تعريف متغير ما في الصنف (Class) بـ static فهذا يعني أن جميع الكائنات (objects) التي سيتم اشتقاقها من هذا الصنف ستتعامل مع القيمة المحدثـة من هذا المتغير. فكل كائن جديد يغير على قيمة هذا المتغير, يتم نشر هذا التغيير على كافة الكائنات. و هذا على عكس ما يحدث في الوضع الطبيعي حيث يحصل كل كائن على نسخة افتراضية دون أن تتأثر بالكائنات الآخرى. private static int count = 0;

تدريب : ما هو static variable ؟ public class  StaticVariable {   static int  noOfInstances;  public StaticVariable () {     noOfInstances++;   }} مستفيداً من هذا المثال اجعل أكبر عدد من الكائنات يمكن انشاءه من هذا الصنف هي 5 فقط ... تدريب ذاتي 1 public static void main(String[] args){     StaticVariable sv1 = new StaticVariable();     System.out.println("No. of instances for sv1 : " + sv1.noOfInstances); // 1     StaticVariable sv2 = new StaticVariable();     System.out.println("No. of instances for sv1 : "  + sv1.noOfInstances); //2     System.out.println("No. of instances for st2 : "  + sv2.noOfInstances); //2     StaticVariable sv3 = new StaticVariable();     System.out.println("No. of instances for sv1 : "  + sv1.noOfInstances); //3     System.out.println("No. of instances for sv2 : "  + sv2.noOfInstances); //3     System.out.println("No. of instances for sv3 : "  + sv3.noOfInstances); //3            }

لماذا الربط بين المصفوفات و الأصناف؟ عندما كنـَّا نقوم باشتقاق مجموعة من الكائنات من صنف ما فإننا لا يمكننا إجراء عمليات البحث أو الترتيب أو الطباعة الجماعية لهم , لانهم غير محصورين في مكان محدد. المصفوفات تعطينا الفرصة للدوران على عناصرها و بالتالي يمكننا إجراء عمليات البحث و الترتيب و غير ذلك. من هنا جاء الغرص من الربط بين المصفوفات و الأصناف. e1 e2 e3 e4 e5 e6 e7 e8 Employee class int sal; int id; String name; … Employee [] x ;

ما هو static variable ؟

تدريب 1 :بناء برنامج يحاكي كشف أجهزة الحاسوب بالمختبر مستخدمـًا مفاهيم البرمجة الشيئية , قم ببناء برنامج يحاكي كشف بأجهزة الحاسوب بالمختبر, مع إمكانية طباعة بيانات كافة الأجهزة, علما بأن الكشف الواحد.يستوعب معلومات 50 جهاز فقط. التفكير التخطيط التنفيذ هي هذه المرحلة يتم ترجمة ما وصلنا له في مرحلة التخطيط لكود مستخدم مع عملية اختباره في هذه المرحلة يتم التفكير في الخصائص و ما هي أنواعها و مدى رؤيتها (Access modifiers) و كذلك في الطرق التي يمكننا من خلالها من التعامل مع الطالب و ما هو المدخل و المخرج لها هذه المرحلة من خلالها سيتم البحث و التفكير في الطالب بشكل عام و ما هي موصفاته

تدريب 1 :بناء برنامج يحاكي كشف أجهزة الحاسوب بالمختبر فكر معي قليلا ... جهاز الحاسوب يعتبر شيء أليس كذلك ؟! بلى... بالتالي يمكننا تمثيله من خلال صنف يحتوي على كافة بياناته. و الكشف هو مكان يتم فيه تخزين بيانات حول أشياء محددة. عندما يحتوي الكشف على بيانات لأشياء من صنف واحد فهذا يعني أنه يحاكي مصفوفة. و بما أن الصنف يعتبر نوع, بالتالي يمكنني تعريف مصفوفة من هذا الصنف

تدريب 1 :بناء برنامج يحاكي كشف أجهزة الحاسوب بالمختبر public class PC { private static int PCcounter; private static String code; private static String YOM; private static int cost; public PC() { PCcounter++; code = "no code"; YOM = "1990"; } public PC(String code, String YOM, int cost) { this.code =code; this.YOM = YOM; this.cost = cost; } public void info(){ System.out.println("---------------------------"); System.out.println("Code: "+code+"\nYOM: "+YOM+"\ncost: "+cost); } } أولا نقوم بإنشاء صنف الحاسوب

تدريب 1 :بناء برنامج يحاكي كشف أجهزة الحاسوب بالمختبر public class Record { PC [] rec = new PC[50]; private int count; public Record() { count =0; } public void insert(String code, String YOM, int cost){ if(count<50){ PC p = new PC(code, YOM,cost); rec[count] = p; count++;} else System.out.println("Sorry, The record is complete"); } public void insert(){ PC p = new PC(); public void PrintAll(){ System.out.println("Count of PC: "+count); for(int i =0; i<count; i++) rec[i].info(); } } ثانيـًا نقوم بإنشاء صنف السجل

ثالثـًا نقوم بإنشاء كائن تدريب 1 :بناء برنامج يحاكي كشف أجهزة الحاسوب بالمختبر public class RecordPC { public static void main(String[] args) { Record rec1 = new Record(); rec1.insert("pc123","2010",450); rec1.insert("pc124","2010",455); rec1.insert("pc125","2010",460); rec1.PrintAll(); } ثالثـًا نقوم بإنشاء كائن من السجل ثم نضيف إليه أجهزة الحاسوب

ناتج عملية الطباعة لكافة تدريب 1 :بناء برنامج يحاكي كشف أجهزة الحاسوب بالمختبر ناتج عملية الطباعة لكافة محتويات الكشف

تدريب 2 :بناء سجل معلومات الموظفين تدريب 2 :بناء سجل معلومات الموظفين مستخدمـًا مفاهيم البرمجة الشيئية , قم ببناء برنامج يحاكي سجل الموظفين مع إمكانيـة طباعة كافة بيانات الموظفين و البحث عن موظف بإسمه مع زيادة مرتبه بنسبة 10%. التفكير التخطيط التنفيذ هي هذه المرحلة يتم ترجمة ما وصلنا له في مرحلة التخطيط لكود مستخدم مع عملية اختباره في هذه المرحلة يتم التفكير في الخصائص و ما هي أنواعها و مدى رؤيتها (Access modifiers) و كذلك في الطرق التي يمكننا من خلالها من التعامل مع الطالب و ما هو المدخل و المخرج لها هذه المرحلة من خلالها سيتم البحث و التفكير في الطالب بشكل عام و ما هي موصفاته

Main Class صنف إدارة الموظفين صنف الموظفين تخطيط التعامل بين وحدات المشروع صنف إدارة الموظفين Main Class صنف الموظفين 1. يقوم بإنشاء كائنات من 2.يقوم بإنشاء كائنات من هذا الـ Class يقوم بتمثيل الطالب بمعلوماته كاملة و هو مجرد كائن برمجي لا حياة فيه و إنما مجرد تخطيط و تمثيل 3. كائنات 4. يقوم بإدارة Obj1 Obj2 Obj3 Obj4 هذه الكائنات (Objects) التي تم إنشاءها من الـ Class و هي كائنات حقيقة تحتوي على بيانات لتصف طالب معين و يتم إنشاءها داخلClass آخر غير الذي تم اشتقاقها منه

التنفيذ : بناء Employee Class

أو نقوم نحن بإرسال قيمة كما تشاهد التنفيذ : بناء emp_manage Class public class emp_manage { static int i = 0; employee [] emp_file; public emp_manage() { emp_file = new employee[100]; } public emp_manage(int j) { emp_file = new employee[j]; . نقوم بتعريف متغير من نوع STATIC ليتم التعامل معه كعداد لعدد الكائنات التي تم اشتقاقها من الصنف EMPLOYEE طالما نتحدث عن سجل لبيانات الموظفين, فإننا بحاجة لاستخدام مصفوفة يتم في خلاياها تخزين موظفين و بالتالي فإننا نقوم بتعريف المصفوفة من نوع EMPLOYEE في الـConstructor نقوم بإعطاء قيمة افتراضية لعدد الخلايا (عدد الموظفين) الذين سيتم تخزين بياناتهم في السجل أو نقوم نحن بإرسال قيمة كما تشاهد

التنفيذ : بناء emp_manage Class public void addemp(int x, String y) { if (i<100) employee e1 = new employee(x,y); emp_file[i]= e1; i++; } else JOptionPane.showMessageDialog(null, "Sorry the file of employees is full"); . الدالة التي تنتمي للسجل و يتم من خلالها إضافة الموظفين الجدد و تخزينهم في المصفوفة قبل إضافة الموظف الجديد لابد من التأكد أن السجل (المصفوفة) لازالت تحتوي أماكن فارغة و بالتالي نستخدم جملة if للإضافة نقوم بإنشاء كائن جديد من الصنف EMPLOYEE ثم ببساطة نضع هذا الكائن في أول خلية فارغة في المصفوفة و نزيد العداد بواحد

التنفيذ : بناء emp_manage Class public void print() { String output =""; for (int z =0; z<i; z++) output = output + emp_file[z].info() + "\n"; } JOptionPane.showMessageDialog(null, "The info is: \n"+ output); الدالة التي تنتمي للسجل و يتم من خلالها طباعة بيانات كافة الموظفين الموجودين بالسجل (المصفوفة) نقوم بتعريف متغير من نوع String ليتم فيه جمع كافة بيانات الموظفين كنص نتعامل في هذه الحالة كأننا نقوم بطباعة بيانات مصفوفة عادية, فنقوم بالدوران على خانات المصفوفة و باستخدام الدالة info() نستعيد بيانات كل موظف و نجمعها لما قبله ليتم طباعتهم بجملة واحدة

التنفيذ : إشتقاق سجل و التعامل مع بياناته emp_manage file1 = new emp_manage() ; file1.addemp(4,"ahmad"); file1.addemp(5,"Mahmoud"); file1.addemp(6,"ali"); file1.print(); نشتق سجل جديد (Object) من الصنف emp_manage و من خلاله سنقوم بالإضافة و التعامل معها من خلال الدالة addemp نقوم بإضافة البيانات الخاصة بالموظفين الواحد تلو الآخر نطلب من السجل أن يقوم بطباعة بيانات كافة الموظفين الموجودين في السجل الأول

أمثلة أخرى على تطبيقات Array of objects سجل يحتوي على بيانات أجهزة الحاسوب التي بالمختبر. سجل يحتوي على معلومات و مواصفات السيارات الموجودة بالكراج. سجل للطلبة الموجودين بالكلية. دفتر تلفونات

مشــروع المســـاق 1 مستفيدًا من مفهوم Array of Objects قم ببرمجة دفتر لتسجيل جهات الاتصال على الهيئة و الشاكلة التي يتم بها تسجيل جهات الاتصال في دفتر التلفونات. قم بالتحليل و الاستنتاج لاستخراج كافة الأصناف التي لابد أن يحتويها المشروع السلوك التابع لكل صنف التفاعل بين الأصناف و الكائنات

بحث بالاسم ... بالرقم ... بالعنوان ... بالعمر مشــروع المســـاق 1 دفتر تلفونات إدارة جهات الاتصال جهة اتصال Contact بحث بالاسم ... بالرقم ... بالعنوان ... بالعمر جهة اتصال Contact إضافة جهة اتصال Contact تعديل . طباعة بيانات جهة اتصال Contact

ما هي static methods؟ يوجد نوعان من الدوال: Instance methods: و هذه الدوال هي التي ترتبط بالكائنات و تستخدم متغيرات الكائن, أي أنها لا تستخدم و لا يتم تفعيلها إلا عند اشتقاق كائن من الصنف و بداخلها لا تتعامل إلا مع المتغيرات التي تم تعريفها داخل الصنف و التي تعرف باسم (instance variables ) و هذا النوع هو النوع الافتراضي من الدوال و هو الذي تم التعامل معه طيلة الفترة السابقة. Static methods: هي دوال لا تتعامل مع الـ (instance variables ) و لا تعتمد على إستقاق كائن جديد من الصنف, بل يتم استخدامها من خلال الصنف مباشرة و بإعطاءها قيم مباشرة خارجية. أو أن تتعامل مع قيم static variables. هذا النوع من الدوال مناسب عند بناء أصناف في علم الرياضيات مثل صنف Math و لذلك يسمى هذا النوع أيضا class methods

كيف يتم استدعاء static method ؟ عندما نريد استدعاء دالة من دوال الكائنات (an instance method ) نقوم مثلا باشتقاق كائن (Obj) من الصنف ثم بعد ذلك نقوم باستدعاء الدالة funهكذا Obj.fun(3,5); لكن استدعاء الدالة من نوع static method لا يحتاج منـَّا إلى اشتقاق كائن بل يتم مباشرة من خلال اسم الصنف ثم الدالة , فعلى سبيل المثال: Math.max(4,7);

الـ Math كمثال على static method ؟