48
ا اف ج ل ا ي ف ة ث ورا ل اام الدم عة ام ج ة ي ن ا ث ة ي س ات ب لد طا عدا ا: ب س جا ص ص خ ت ي ش ج لرا ي د ع2 دان ب4 ب ع ل7 ا مة ط ا ف ي ش ج ل ا ات رث دي ب ع س ل ول ا ت ن ي م وا ع ل ول ا ت ن م عل م ل را ي و ك ود ع س ل وا بI حا ما س ل م ا ج م ل ا ماة س

الوراثة في الجافا

Embed Size (px)

Citation preview

Page 1: الوراثة في الجافا

الجافا في الوراثةالدمام – جامعة ثانية سنة طالبات إعداد

حاسب : تخصص

الجشي غدير

عبيدان آل فاطمة

الجشي رباب

السعيدي بتول

العوامي بتول

المعلم كوثر

السعود أبو سماح

المخامل سماة

Page 2: الوراثة في الجافا

CLASSES, SUPERCLASSES, AND

SUBCLASSES ) )الفئة، الفئاتالفرعية الفئات ، العليا

Page 3: الوراثة في الجافا

الموظفين فئة إلى نرجع الذي( Employee class )حينماالسابق . الفصل في ناقشناه

) مدير ) ، شركة لحساب تعمل كنت لألسف لنفترضالحال، . بطبيعة مختلف بشكل الموظفين يعامل الشركة

. النواحي من كثير في العاملين مثل تماما الموظفين ، رواتب له Uدفع ي والموظفين المدير من كل

على يحصلوا حتى المهمات Uكملوا ي أن منهم متوقعالراتب.

ما W فعًال تحقق ما إذا مكافآت على يحصلوا والمديرينبه . القيام يفترض

. لماذا؟ألنك الوراثة يمثل الذي هو الحاالت من النوع هذافئة ) Uعرف ت أن (classتحتاج

. وظيفة إضافة W وأخيرا ، مدير ، جديدة برمجت قد كنت ما من ببعض االحتفاظ يمكنك ولكن

الحقول كافة الحفاظ ويمكن الموظف، فئة في بالفعل. األصلية الفئة من

Page 4: الوراثة في الجافا

" واحد : " هو العًالقة معروف هو كما مختصر بشكلموظف . هو مدير كل والموظفين المدير .بين

. " للوراثة " مميزة سمة هي واحد هو العًالقة هذه من تورث التي المدير فئة تعرف أن kيمكنك كيف هنا

كلمة ' لذلك ونستخدم ، الموظف ' extendsفئة. الجافا في الوراثة على للداللة وذلك يورث بمعنى

Page 5: الوراثة في الجافا

++ :Cمالحظة

بلس بلس وسي الجافا في تتشابه الوراثةكلمة ) نستخدم الجافا :( extendsفي بدًال

( tokenمن )أما ، عامة وراثة هي الجافا في الوراثة كل

أن ميزة لها بلس بلس السي في الوراثةخاصة . وراثة أو محمية وراثة تكون

Page 6: الوراثة في الجافا

( الوراثة على للداللة المستخدمة يجعل ( extendsالكلمة. W سابقا موجودة فئة من مشتقة الجديدة الفئة

( العليا الفئة تسمى الموجودة الفئة ( superclassالفئةاألصل الفئة ، األساسية

 فئة أو مشتقة، فئة الفرعية، الفئة جديدة فئة على ويطلقاألطفال.

الفئة هي الجافا في للمبرمجين المستخدمة األسماء أكثرالفرعية- -superclassالعليا - الفئة على - subclassأو

الطفل، / األم قياسا يفضلون المبرمجين بعض من الرغم. الوراثة موضوع مع أيضا يربط الذي

Page 7: الوراثة في الجافا

ألنها ليس ولكن العليا الفئة هي الموظفين فئةمن المزيد على تحتوي أو فرعية، فئة على متفوقة

الفئة. الصحيح، هو العكس فإن الواقع، في الوظائفإضافية . وظائف على تحتوي قد الفرعية

: تحوي المدير فئة في سنرى كما المثال سبيل علىللموظفين . العليا الفئة من أكثر وظائف و بيانات

Page 8: الوراثة في الجافا

مالحظة :  

الرياضيات( subودون( )superأعلى ) علم في يستخدمواوالحاسب.

جميع من مجموعة على يحتوي الموظفين من مجموعة كلمجموعة من شاملة مجموعة إنه بالقول وصفه ما وهذا المديرين،

. هو المديرين من مجموعة كل أخرى، بعبارة أو، المديرين من. الموظفين جميع من مجموعة من فرعية مجموعة

لتحديد جديدة وطريقة مكافأة، لتخزين جديد حقل لديها المدير فئتناذلك:

Page 9: الوراثة في الجافا

. كان إذا والحقول الطرق هذه حول خاص شيء يوجد الطريقة تطبيق ببساطة يمكنك للمدير، كائن لديك

setBonus.Manger boss;.. =

boss.setBonus (5000) ;يمكنك ال الموظف، كائن لديك كان إذا الحال، وبطبيعة

طريقة setBonusتطبيق. الموظف فئة في تعريفها تم التي الطرق بين من ليس النه

 مثل طرق استخدام يمكنك ذلك، getNameومع

getHireDayوفي . صراحة تعريفها يتم ال الطرق هذه أن من الرغم على

مدير فئةالموظف . فئة من W تلقائيا موروثة أنها إال

Page 10: الوراثة في الجافا

: الحقول، name, salary, andوبالمثلhireDay العليا الفئة من موروثون هم

على يحتوي المدير من كائن و salaryو nameكلhireDay وbonus.

( توسيع خًالل من فرعية فئة تحديد ( extendsعندالخًالفات إلى لإلشارة سوى عليك لها،ما العليا الفئة

العليا . والفئة فرعية فئة بين الفئة في العامة الطرق ضع ، الفئات تصميم عند

الفئات في المخصصة والطرق العليافي شائع هو المشتركة الوظائف ،تصنيف الفرعية

( الموجهة الكائنات (.object-orientedبرمجة لفئة مناسبة ليست العليا الفئة طرق بعض ذلك، ومع

. مدير فرعية

Page 11: الوراثة في الجافا

: الحقول، name, salary, andوبالمثلhireDay العليا الفئة من موروثون هم

على يحتوي المدير من كائن و salaryو nameكلhireDay وbonus.

( توسيع خًالل من فرعية فئة تحديد ( extendsعندالخًالفات إلى لإلشارة سوى عليك لها،ما العليا الفئة

العليا . والفئة فرعية فئة بين الفئة في العامة الطرق ضع ، الفئات تصميم عند

الفئات في المخصصة والطرق العليافي شائع هو المشتركة الوظائف ،تصنيف الفرعية

( الموجهة الكائنات (.object-orientedبرمجة لفئة مناسبة ليست العليا الفئة طرق بعض ذلك، ومع

. مدير فرعية

Page 12: الوراثة في الجافا

طريقة أن ينبغي الخصوص، وجه getSalary : على . إلى تحتاج والزيادة األساسي الراتب من مبلغ ترجع

لتجاوز ) جديدة طريقة طريقة( overrideتوفيرالعليا : الفئة

Page 13: الوراثة في الجافا

( العليا الفئة طرق ألن( superبعض مناسبة غير( وهي األقل الفئة على مديرة فمثًال(, Subتكون

الراتب ) على الحصول يترتب( getsalaryطريقةالعليا الفئة من الطريقه هذه إستعمال عليك

. المبرمج يجريها تعديًالت إلى باإلضافه

Page 14: الوراثة في الجافا

فقط مبسط بشكل الطريقه هذه تنفيذ من تتمكن حتىالزيادة إليه مضافا الراتب بإسترجاع قم

الوصول مدير على يتحتم الطريقة تنفيذ يتم وحتى. العليا للفئة الخصوصية الملفات ب مايسمى إلى المباشر

للوصول الصًالحية تملك التي الموظفين طريقة ماعداالخصوصية الملفات الى

الطريقة يستخدم أن فعليه إليها الوصول المدير أراد إنpublic ( publicالعامه) getSalary method of the Employee class .

Page 15: الوراثة في الجافا

إستدعاء عليك getSalaryإذن

ألن نفسها بإستدعاء ستقوم أنها فيها المشكله , إلى إلى سيؤدي مما الطريقة نفس يمتلك المدير

صالح غير البرنامج وبالتالي نهائي غير إستدعاءلإلستعمال.

العليا الفئة من الطريقة إستدعاء هو فالحل إذنالكلمه هذه إستخدام إلى بإاالضافه

Super.getSalary

Page 16: الوراثة في الجافا

فيC: ++إستخدام مع : :supercalssعليك

الطريقة getSalaryمثًال, ستسدعي للمديرEmployee::getSalary من بدال

super.getSalary .

كلمهsuper فتعليمات مختلف معنى ,super(n, s, year, monthلهاday) , ;إستدعي وهو constructorتعني supercallللموظفين

.n, s, year, month, , dayمع المتغيرات هذه مع الن للملفات constructorوذالك الوصول تستطيع ال المدير

طريق عن لهم تعريف عمل الموظفين فعلى الخصوصيهconstructor

Page 17: الوراثة في الجافا

تستطع لم من constructorإن القليله الفئةتقوم , constructorاستدعاء فإنها إذن العليا الفئة

.constructorبإستدعاء العليا الفئة لل االفتراضيه تمتلك ال العليا الفئة كانت constructorإذا

تستدعي لم االقل الفئة و constructorافتراضيهبإرجاع المترجم الجافا فسيقوم و اخرة عليا فئة ل

خطأ.

Page 18: الوراثة في الجافا

مالحظة أن :Thisيذكر معنيان لها الكلمة

نفس من آخر منشئ ونداء الضمني المتغير الى اًالشارة توضيحالكلمة. فإن وبالمثل، :superالفئة معنيان لها

. الكبرى للفئة المنشئ واستدعاء الكبرى الفئة طريقة استدعاء،كلمتان المنشئين ًالستدعاء تستخدم ترتبطا superو thisعندما

. العبارة في فقط يحدث ان ممكن المنشئ نداءات وثيقا ارتباطاأخر . منشئ في الموجودة اًالولى

الفئة نفس من آخر منشئ إلى إما البناء متغيرات تمرير يتم(this( ) الكبرى الفئة من منشئ الى ( .superاو

Page 19: الوراثة في الجافا

++ :Cمالحظة

منشئ تنادي++ Cفي بناء superًال استخدام يمكنك ولكن. الكبرى الفئة لمنشئ الجملة

في managerمنشئ :Cيبدو هذا++ مثل

Page 20: الوراثة في الجافا

لطريقة مسبق تعريف getSalaryامتالككائن اًالداريين , Managerالى تلقائيا

. لرواتبهم إضافية مكافأة سيمتلكون : يمكننا العمل في ذلك على مثال وإليك

: المدير مكافأة ووضع جديد مدير انشاءManager boss = new Manager("Carl

 Cracker", 80000, 1987, 12, 15);boss.setBonus(5000);

: الثالثة للموظفين الصف نكتبEmployee[] staff = new Employee[3];

Page 21: الوراثة في الجافا

: والموظفين المديرين من مزيج مع الصف نؤه�ل  

: الموظفين من كل راتب نطبع

Page 22: الوراثة في الجافا

: التالية البيانات تطبع االنشوطة هذهCarl Cracker 85000.0

Harry Hacker 50000.0Tommy Tester 40000.0

اآلنstaff[1]  وstaff[2]  راتبه يطبع واحد كلكائنات ألنهم  .Employeeاألساسي

،ذلك كائنات  staff[0]ومع Managerيكونالراتب getSalaryوطرقه على مكافأة يضيف

نداء. أن هو والًالفت )( e.getSalaryاألساسيطريقة .getSalaryيختار الصحيحة

Page 23: الوراثة في الجافا

الى التعريف نوع ان Employeeهو eوالحظان الى يشير الذي الكائن هو الفعلي النوع ولكن

e يكون ان او  Employeeممكن Manager .تكون كائن eعندما الى موجهة

Employee النداء ثم )(  e.getSalaryومنطريقة  getSalaryينادي فئة  . Employeeالىعندما كائن eولكن الى Managerيشير

صف getSalaryطريقة الى Managerالتابعةالنوع . يعرف االفتراضي الجهاز منها بدال تنادى

اليها يشير التي للكائنات وبالتالي eالفعلي. الصحيحة الطريقة استدعاء يمكن

Page 24: الوراثة في الجافا

( المتغير المثال سبيل على المتغيرة الكائنات حقيقةe )يسمى فعلي نوع من اكثر الى يشير أن يمكن

. وقت في المناسبة الطريقة تحديد األشكال تعدد . كًال وسنناقش الحيوي الربط يسمى التشغيل

. الفصل هذا في أكثر بتفصيل الموضعين , شكل على الطرق تعريف الى تحتاج ال الجافا في

. اذا . افتراضي تصرف هو الحيوي الربط افتراضيتحديدها يتم افتراضية تكون أن الطريقة تريد ال كنت

انها كلمة .) Finalعلى هذا Finalسنناقش فيالفصل(.

من كيفية 1-5القائمة يبين الذي البرنامج على تحتويكائنات الى الراتب حساب و Employeeاختًالف

Manager. من :ManagerTest.java 1-5القائمة

Page 25: الوراثة في الجافا
Page 26: الوراثة في الجافا
Page 27: الوراثة في الجافا
Page 28: الوراثة في الجافا
Page 29: الوراثة في الجافا

الوراثة

Page 30: الوراثة في الجافا

طبقة اشتقاق على فقط تتوقف ًال الوراثة . ان الممكن من ، فمثال الفئات من واحدهمن ممتد التنفيذي المدير فئة لدينا يكون . الممتدة هذه الفئات مجموعه المدير فئة

صوره ، الوراثة بهيكلة تسمى األب فئة منالى . 5-1رقم محدد فئة من الطريق ويسمى

بسلسلة الوراثة هيكله في األب الفئةالوراثة.

Page 31: الوراثة في الجافا

رقم للموظفين. 1_5صورة الوراثة هيكلة

يمكننا فأيضا ، هذا على فقط تقتصر ًال انهاأو المبرمج مثل اًالبن فئة أن القول . الموظفين فئة من ممتد السكرتير

الموظفيين

مدير

المدير التنفيذي

سكرتير مبرمج

Page 32: الوراثة في الجافا

التوارث : منعو النهائية الكالس

الطرق

Page 33: الوراثة في الجافا

أي نمنع أن نريد االحيان، بعض فيفرعي كًالس تكوين من شخص

. رئيسي كًالس من تمتد أن اليمكن التي الكًالسات

النهائية الكًالسات و( final)تسمىتعريف( finalيستخدم ) في

. عنها للتعبير الكًالس

Page 34: الوراثة في الجافا

مثال : إنشاء من شخص نمنع ان نريد المثال سبيل على

للكًالس فرعي الكًالس Executiveكًالس نعرفالمبدل :finalباستخدام يلي كما

final class Executive extends Manager{…..}

Page 35: الوراثة في الجافا

الكًالس في معينة طريقة نكون أن W أيضا الممكن في. finalومن ( . كل الطريقة هذه تجاوز فرعي كًالس ألي يمكن ال الحالة هذه

.) سبيل على نهائية W تلقائيا تكون النهائية الكًالس في الطرقالمثال:

class Employee {

…public final String getName(){

return name;}…

}

Page 36: الوراثة في الجافا

مالحظة و مصرحة الخانات أو الحقول تكون أن الممكن من

بـ النهائية finalمعلنة الخانة تغيير يمكن ال حيث ،الكائن . بناء بعد

أنه على معلن و مصرح الكًالس كان تعتبر finalإذا ،الخانات( methodsالطرق) أو الحقول خًالف على

finalأنها

Page 37: الوراثة في الجافا

طريقة أو كالس FINALصنع طريقة أو كًالس لصنع جيد سبب وهي : finalهناك

. الفرعي الكًالس في داللة أي تغيير عدم من التأكد : الطريقتين المثال سبيل و getTimeعلى

setTime كًالس هذا. finalيعتبران Calendarمنلكًالس المصممين أن هم Calendarيعني

كًالس بين التحويل عن وحالة Dateالمسؤولين وفرعي. كًالس ألي يمكن ال الحالة هذه في التقويم

. الكًالس W أيضا الترتيب بهذا يعبث يعتبر Stringأن . ألي يمكن ال أنه يعني هذا و نهائي كًالس انه على

لـ فرعي كًالس يعرف ان . Stringشخص

Page 38: الوراثة في الجافا

التعريف و التصريح يجب أنه يعتقدون المبرمجين بعضتكون أن على الطرق مثل finalلكل الحاالت بعض في إال

األشكال .polymorphismتعدد فيC ++وC( تعدد( methodsالطرق# تستخدم ال

. مخصوص بشكل ذلك طلب إذا إال األشكال استخدم المبرمجين بعض الجافا بداية ككلمة finalفي

. كانت إذا لها الملزمة االفعال و النفقات لتجنب أساسيةاستخدام المترجم يستطع قصيرة و متجاوزة غير طريقة

تسمى تتعارض. awayطريقة ألنها التفرع تكره المعالجات . المعالجة حال في لألوامر المسبق االسترجاع عملية مع

Page 39: الوراثة في الجافا

اآللة قي اللحظي المترجم أن الحظ لحسنالمترجم من أفضل بشكل يعمل االفتراضية

الكًالسات يميز اللحظي المترجم ألن التقليديمتجاوزة كًالس أي يكتشف و كًالس، ألي الممتدة

. و قصيرة الطريقة كانت إذا معطاة طريقة أي علىالمترجم متجاوزة، ليست و مرة من أكثر مستدعاة

وشكل خط في الطريقة جعل يستطيع اللحظيمستقيم.

أو كًالس استدعت االفتراضية اآللة إذا يحدث ماذاالمستحسن من الحالة هذه في أخرى؟ فرعية فئةعادة العملية هذه و المستقيم الخط وضع يلغى أن

. تحدث ما ا Wنادر لكن بطيئة تكون

Page 40: الوراثة في الجافا

األشكال تعدد(Polymorphism)

تكلموا!

Page 41: الوراثة في الجافا

األشكال عبارة : ( Polymorphism) تعدد هوالتوجه ) كائنة البرمجة في برمجي مفهوم Objectعن

Oriented Programming OOP )وفئات رئيسية فئات بوجود يعنى

فرعية.

؛ الوراثة عمليات من الفكرة هذه تسهليمكن ال تجريدية رئيسية فئة توجد حيث

فرعية فئات لها ويوجد منها، كائنات صناعة . منها الكائنات صناعة يمكن

تعريف

Page 42: الوراثة في الجافا

من تمكنك بسيطة قاعدة هناكهي الوراثة كانت إذا ما معرفة

. ًال أم للبيانات المناسب التصميم.is-a "القاعدة ذلك" تحدد

الفئة" : is-aالقاعدة  " من كائن كلالفئة من كائن يكون الفرعية

الرئيسية.

: هو مدير كل المثال سبيل على : موظفا

every manager is an employee

فئة تكون أن المنطقي من لذلكهي( manager classالمدير )

الموظف لفئة الفرعية الفئة(employee class )

: صحيح غير العكس الحال بطبيعة و◦. : مديرا موظف كل ليس

◦ not every employee is a manager.

Page 43: الوراثة في الجافا

قاعدة لصياغة أخرى مبدأ" is-a "طريقة هي والتبديل.

التبديل الفرعية: مبدأ الفئة كائن استعمال بإمكانك. الرئيسية الفئة كائن ًالستعمال البرنامج توقع عند

المثال سبيل فرعية: على فئة كائن تعيين يمكنك. عليا فئة لمتغيرEmployee e;

e = new Employee;). . .( // كائنالمتوقع الموظف

e = new Manager // ;). . .(من صحيح،المدير كائن استعمال الممكن

Page 44: الوراثة في الجافا

األشكال متعددة تكون الكائن متغيرات الجافا برمجة لغة فيالموظف )المتغيربإمكان نوع إلى( Employeeمن يرجع أنموظف )كائن نوع ( .Employeeمن

الموظف لفئة فرعية فئة أي من كائن إلى يرجع أن أو(Employee class.)المدير ◦ ،الوزير Executive،اإلداري Managerمثل

Secretary. ،إلخ

Page 45: الوراثة في الجافا

: السابق المبدأ ميزة استخدام

Manager boss = new Manager(. . .);Employee[] staff = new Employee[3];

staff[0] = boss;

متغيرات الحالة، هذه   bossو  staff[0]فيالكائن نفس إلى أن- تعود من   staff[0]بالرغم

المترجم بواسطة فقط للموظف كائن بأنه يصنف(compiler.)

: استدعاء بإمكانك أن يعني ذلكboss.setBonus(5000) //  ;صحيح

استدعاء : بإمكانك ليس لكن وstaff[0].setBonus(5000) //  ;خطأ

staff[0] نوع من ، Employeeمعرفالموظفين setBonusودالة لفئة تابعة ليست

(Employee.)

Page 46: الوراثة في الجافا

•. فرعية لفئة رئيسية فئة مرجع تعيين تستطيع ًال

Manager m = staff[i] ×

•. مدراء الموظفين جميع ليسوكان صحيحة، المساواة هذه كانت يشير mلو

الممكن من سيكون عادي، لموظف كائن إلىمناداة ا )…( m.setBonusًالحق:

التشغيل أثناء خطأ وسيحدث

Page 47: الوراثة في الجافا

:تنويه*الفئات نوع من المصفوفات تعتبر أن يمكن الجافا لغة في

تحويل عملية دون رئيسية فئات من مصفوفات تلقائيا الفرعية(casting)

المدراء أن حيث الصيغة، هذه في مشكلة ًاليرجعون وجميعهم النهاية في موظفون

الفئة لنفس

مثال:

Manager[] managers = new Manager[10];

Employee[] staff = manager;

Page 48: الوراثة في الجافا

المراجع

Core Java, Volume I--Fundamentals (8th Edition) Paperback – September 21, 2007

Java How to Program: International Edition, 9/E, Author: Harvey deitel, Paul J.Deitel, Publisher: Pearson Higher Education, 2011