كتاب-برمجة1 (1) PDF
Document Details
Al-Quds Open University
2011
د. خميس ُعمر, د. خليل الهندي, د. يوسف أبو زر, د. عماد نزال, د. نبيل عرفان
Tags
Summary
This document is a course material for a C++ programming course at Al-Quds Open University. It discusses object-oriented programming concepts and covers the fundamentals of object-oriented programming in C++. The document was prepared in 2011.
Full Transcript
برنامج التكنولوجيا والعلوم التطبيقية برمجة ()1 رقم املقرر 1291 لغة برمجة C ++ إعـ ـ ـ ــداد د.خميس ُعمر د.خليل الهندي د.يوسف أ...
برنامج التكنولوجيا والعلوم التطبيقية برمجة ()1 رقم املقرر 1291 لغة برمجة C ++ إعـ ـ ـ ــداد د.خميس ُعمر د.خليل الهندي د.يوسف أبو زر د.عماد نزال د.نبيل عرفان حقوق الطبع محفوظة 2011 جامعة القدس املفتوحة مقرر :برمجة ( / )1رقم املقرر 1291 د.خليل الهندي إعداد المادة العلمية د.خميس ُعمر أ.د.عبدالرؤوف احلالق ا لتحـــــــــكـيم أ.محمد البرازي التحـــرير اللغــوي فريق أ.محمد البرازي التصميم التعــليمي اإلعداد أ.محمد ج.الطيطي التصمــيم الفـــني واإلنتاج .................. التدقيق الطـــباعي أ.هند ناصر التنضيد الطـــباعي د.عمــــــــاد نزال -د.يو سف أبو زر إعداد المادة العلمية د.نبيل عرمان د.حممد حممود ذويب ا لتحـــــــــكـيم د.خليل خليفة التحـــرير اللغــوي فريق أ.فريهان بركات التصميم التعــليمي التطوير أ.حممد ج.الطيطي التصمــيم الفـــني أ.فريهان بركات التدقيق الطـــباعي أ.عي سى الهندي -أ.عالية أبو رمان التنضيد الطـــباعي أ.ن سيم أحمد احلو ساين المراجع ة النهائي ة منشورات جامعة القدس المفتوحة 2010 حقوق النشر والطبع محفوظة جلامعة القدس املفتوحة ص.ب ( )77أم السماق تلفون ( )5522561عمان -األردن بريد ألكتروني[email protected] : 001.434 رقــم التصـنـــــــــيف جامعة القد س املفتوحة المؤلف ومن هو في حكـمه برجمة ()1 عنـــــوان المصــــــنف -1برجمة احلا سوب رؤوس الموضـــــــوعات -2احلوا سيب )(2008/3/690 رقم اإليــــــــــــــداع عمان -جامعة القد س املفتوحة المالحظــــــــــــــات * مت اعداد بيانات الفهر سة الأولية من قبل املكتبة الوطنية مقدمة المقرر وصف املقرر: تعد لغة C ++من أكثر لغات البرمجة انتشار ًا واستخدام ًا في احلياة العملية وذلك ّ لكونها لغة مرنة وقوية متكن املبرمجني من كتابة برامج تعالج مشاكل متنوعة سواء أكانت علمية أم صناعية أم جتارية ،وتظهر قوة هذه اللغة وإمكانياتها في كتابة برامج النظم (System )Softwareمثل نظم التشغيل واملترجمات وغيرها. فقد أصبح هناك اهتمام واضح بالبرمجة الكينونية في تطوير البرمجيات ،ونتيجة لذلك عملت إضافات للغة واسعة االنتشار وهي لغة Cواشتق منها لغة ++Cبحيث اشتملت اللغة ال في لغة ،Cإضافة إلى العديد من املزايا واإلضافات اجلديدة على جميع املزايا املوجودة أص ً اخلاصة بالبرمجة الكينونية ،وبذلك ميكن تطوير برمجيات مختلفة باستخدام أساليب البرمجة الكينونية باستخدام لغة C ++مما ميكن املبرمج من االستفادة من جميع اخلصائص اجليدة في البرمجة الكينونية مثل إعادة استخدام البرامج ( ،)Software Reuseوالوراثة (،)Inheritance وإخفاء املعلومات ( )Information Hidingوغيرها من امليزات األخرى. لقد وضع هذا املقرر بحيث تعالج الوحدة األولى املفاهيم األساسية في تطوير البرامج الكينونية بصورة مستقلة عن أي لغة برمجة ،وتعالج الوحدات 5-2املفاهيم األسـاسية للغة ،C ++وتعالج الوحدة السادسة موضوع معاجلة امللفات بلغة .C ++ األهداف العامة للمقرر: بعد االنتهاء من دراسة هذا املقرر والقيام بالتدريبات واألنشطة الواردة فيه ،يتوقع منك، عزيزي الدارس ،أن تصبح قادرا على أن: تعرف املفاهيم األساسية لتطوير برامج كينونية املنحى. ّ.1 تعرف كيفية التحليل والتصميم الكينوني والبرمجة الكينونية. ّ.2 .3تستخدم األصناف بعناصرها املختلفة وتنشئ كائنات منها. .4تستخدم اإلدخال/اإلخراج في لغة . C ++ تعرف املصفوفات وتبني كيفية التعامل مع مصفوفات من الكائنات وإجراء العمليات ّ.5 عليها. تعرف وتستخدم الدوال واألصناف الصديقة والعمليات. ّ.6 أ .7تبني أنواع الوراثة املختلفة وكيفية استخدامها. تعرف وتستخدم الدوال واألصناف القالبية. ّ.8 تعرف خاصية تعدد األوجه وتستخدمها عند حاجتها. ّ.9 تعرف وتستخدم امللفات بأنواعها املختلفة.ّ.10 محتوى املقرر: ويتألف هذا املقرر من ست وحدات دراسية على النحو التالي: الوحدة األولـى :تطوير البرامج الكينونية ،تهدف هذه الوحدة إلى تبيان املفاهيم املستخدمة في البرمجة الكينونية والتحليل الكينوني والتصميم الكينوني. الوحدة الثانيـة :التراكيب واألصناف ،تعرض هذه الوحدة أهم أنواع البيانات املركبة.وتركز بشكل خاص على األصناف والكائنات والدوال املنتمية.وهي بذلك أولى الوحدات التي تناقش املفاهيم األساسية للغة .C ++ الوحدة الثالثـة :املصفوفات واألصناف ،تشرح هذه الوحدة كيفية التعامل مع قائمة من الكائنات بطرق مختلفة. الوحدة الرابعة :الدوال الصديقة والعمليات ،تناقش كيفية تعريف الدوال الصديقة والعمليات وكيفية استخدامها. الوحدة اخلامسة :األصناف املشتقة والقوالب ،تناقش هذه الوحدة الطرق املختلفة إلعادة استخدام البرامج عن طريق اشتقاق األصناف والوراثة والدوال واألصناف القالبية. تتطرق هذه الوحدة إلى تعريف هيكل البياناتالوحدة السادسة :معاجلة امللفات بلغة ّ ،C ++ وموقع امللفات بينها والطرق املختلفة في تنظيم امللفات والينابيع وكيفية إنشاء امللفات التتابعية وامللفات العشوائية وقراءتها وحتديثها وأيض ًا إدخال الكائنات وإخراجها. والله ولي التوفيق؛؛؛ ب محتويات المقرر الصفحة عنوان الوحدة رقم الوحدة 1 تطوير البرامج الكينونية ()01 21 التراكيب واألصناف ()02 69 املصفوفات واألصناف ()03 149 الدوال الصديقة والعمليات ()04 207 األصناف املشتقة والقوالب ()05 289 معاجلة امللفات بلغة C++ ()06 ج د الوحدة األولى تطوير البرامج الكينونية Object-Oriented Programs Development 2 تطوير البرامج الكينونية الوحدة األولى محتويات الوحدة الصفحة امل ــوض ـ ـ ـ ــوع 5 .1املقدمة 5 1.1متهيد 5 2.1أهداف الوحدة 6 3.1أقسام الوحدة 6 4.1القراءات املساعدة 6 5.1ما حتتاج إليه لدراسة الوحدة 7 .2املفاهيم األساسية لتطوير البرامج الكينونية 10 .3التحليل الكينوني ()Object-Oriented Analysis 10 1.3حتديد الكينونات 10 2.3حتديد خصائص الكينونات 11 3.3حتديد العالقات بني الكينونات 13 4.3جتميع الكينونات 14 .4التصميم الكينوني ()Object-Oriented Design 14 1.4بناء العمليات 14 2.4اختيار لغة البرمجة الكينونية 16 .5البرمجة الكينونية ()Object-Oriented Programming 16 1.5خصائص البرامج اجليدة 17 2.5اخلصائص األساسية في لغات البرمجة الكينونية 18 .6اخلالصة 18 .7حملة عن الوحدة الدراسية الثانية 19 .8إجابات التدريبات 19 .9مسرد املصطلحات 20 .10املراجع 3 تطوير البرامج الكينونية الوحدة األولى 4 تطوير البرامج الكينونية الوحدة األولى .1املقدمة 1.1متهيد ال بك إلى الوحدة األولى من مقرر برمجة ( )1وهي بعنوان عزيزي الدارس ،أه ً تطوير البرامج الكينونية. تهدف ه ذه الوحدة إل ى إعطائك معلومات أساسية فيما يتعلق بتطوير البرامج الكينونية وخاصة التحليل والتصميم الكينوني وتوضيح بعض املفاهيم واملصطلحات األساسية اخلاصة بذلك. تتناول هذه الوحدة تعريف املفاهيم األساسية اخلاصة بتطوير البرامج الكينونية إضافة إلى تعريف مفهوم التحليل الكينوني من حيث حتديد الكينونات وخصائصها والعالقات بينها.ويتلو ذل ك مناقشة التصميم الكينوني م ن حيث بناء العمليات واختيار لغة البرمجة الكينونية املناسبة.وأخيرا توضيح املفاهيم األساسية املرتبطة بالبرمجة الكينونية وخصائص البرمجة اجليدة إضافة إلى اخلصائص األساسية للغات البرمجة الكينونية. وقد زودت هذه الوحدة بالعديد من األمثلة التوضيحية ،والتدريبات ،وأسئلة التقومي الذاتي إضافة إل ى بعض الرسومات التي توضح بعض املفاهيم ،وستجد، ال للتدريبات التي تصادفها في نهاية الوحدة.عزيزي الدارس ،حلو ً مرة أخرى ،نرحب بك ،آملني أن تستمتع بدراستك للمادة التي نعرضها لك في هذه الوحدة. 2.1أهداف الوحدة ينتظر منك ،عزيزي الدارس ،بعد فراغك من دراسة هذه الوحدة ،أن تكون قادر ًا على أن: ّ.1 تعرف املفاهيم املستخدمة في البرمجة الكينونية (.)Object-Oriented Programming ّ.2 تعرف املفاهيم املستخدمة في التحليل الكينوني (.)Object-Oriented Analysis ّ.3 تعرف املفاهيم املستخدمة في التصميم الكينوني (.)Object-Oriented Design ّ.4 تطبق املفاهيم املستخدمة في البرمجة الكينونية (.)Object-Oriented Programming 5 تطوير البرامج الكينونية الوحدة األولى 3.1أقسام الوحدة تتكون هذه الوحدة من أربعة أقسام رئيسة.فالقسم األول يبحث في املفاهيم املستخدمة في البرمجة الكينونية وبذلك يتحقق الهدف األول.أما القسم الثاني فيوضح املفاهيم املستخدمة في التحليل الكينوني بذلك يتحقق الهدف الثاني. أما القسم الثالث فيشرح تعريف املفاهيم املستخدمة في التصميم الكينوني وبذلك يتحقق الهدف الثالث.وأخيرا فإن القسم الرابع يوضح املفاهيم املستخدمة في البرمجة الكينونية وبذلك يتحقق الهدف الرابع. 4.1القراءات املساعدة لقد قدمنا الكثير من املفاهيم واملواضيع األساسية املرتبطة بتطوير البرامج الكينونية في هذه الوحدة.ولذلك من املفيد ج دا ،عزيزي ال دارس ،أن تعود إلى املصادر التالية ملا تتضمنه من مادة علمية إضافية وأمثلة وإيضاحات ستساعدك على استيعاب املادة التي تضمنتها هذه الوحدة ،وهذه املصادر هي: 1. Adams, J. and Nyhoff, L., “C++ An Introduction to Comput- ing,” Prentice Hall, 3rd Edition, 2003. 2. Deitel, H. and Deitel, P., “C++ How to Program,” ISBN: 0-13- 185757-6, Deitel & Associates, 5th Edition, 2006. 3. Skansholm, J., “C++ From the Beginning,” Addison Wesley, 2nd Edition, 2002. 4. Stoustrup, B., “The C++ Programming Language,” Addison Wesley, 2nd Edition, 1993. 5.1ما حتتاج إليه لدراسة الوحدة لقد تضمنت هذه الوحدة العديد من املفاهيم األساسية ،وبذلك فإن طبيعة امل ادة املعروضة ،عزيزي ال دارس ،حتتاج إل ى جو ه ادئ خ اص ومريح حتى تستطيع التركيز على املفاهيم املعطاة ،وتستوعبها بالشكل املناسب.وك ل ما حتتاجه بعد ذلك بعض القرطاسية كقلم رصاص وورق أبيض لتقوم بتطبيق بعض املفاهيم وحتل األسئلة والتدريبات املعطاة في ثنايا الوحدة. 6 تطوير البرامج الكينونية الوحدة األولى .2املفاهيم األساسية لتطوير البرامج الكينونية يعد مصطلح “الكينونية” من املصطلحات املهمة في عالم احلاسوب هذه األيام ،فأنت، ّ عزيزي الدارس ،تسمع مصطلحات كثيرة لها عالقة بهذا املصطلح مثل التحليل الكينوني، التصميم الكينوني ،البرمجة الكينونية وغير ذلك من املصطلحات ذات الصلة.ولعلك تتساءل عن املعنى الدقيق لهذا املصطلح الذي أصبح يتردد بصورة كبيرة بني الدارسني لتخصصات احلاسوب إضافة إلى العاملني في مجاالت احلاسوب املختلفة ،وحقيقة األمر أنه ال يوجد تعريف أو معنى دقيق ومطلق ملصطلح “الكينونية” ولكننا نستطيع القول أنه طريقة أو أسلوب جديد في تطوير البرامج واألنظمة احلاسوبية من خالل التركيز على الكينونات/الكائنات ال من التركيز على الوظائف الرئيسة التي يجب على هذه األنظمة إجنازها. الرئيسة فيها بد ً في هذه الوحدة ،سنعرض ،عزيزي الدارس ،املفاهيم األساسية املتعلقة بالتحليل الكينوني باعتبارها خطوة أساسية في أي عملية تطوير للبرامج الكينونية من خالل حتديد الكينونات ثم ،سنعرض املفاهيم واألفكار الرئيسة املتعلقة بالتصميم وخصائصها والعالقات بينها ومن ّ الكينوني من خالل بناء العمليات الرئيسة املرتبطة بالكينونات املختلفة إضافة إلى اختيار لغة البرمجة الكينونية املناسبة ،وأخيراً ،سنعرض املفاهيم األساسية املتعلقة بالبرمجة الكينونية من خالل التركيز على خصائص البرامج الكينونية اجليدة واخلصائص األساسية في لغات البرمجة الكينونية. وكما أشرنا ،عزيزي الدارس ،فإن التطوير الكينوني هو طريقة أو أسلوب جديد في تطوير ال من التركيز علىالبرامج واألنظمة احلاسوبية من خالل التركيز على الكينونات الرئيسة فيها بد ً الوظائف الرئيسة التي يجب على هذه األنظمة إجنازها ،ولكن ما هو الكائن/الكينونة؟ إن مفهوم الكائن ( )Objectمرتبط مبجموعة من اخلصائص التي حتدد من خالل مجموعة من املتغيرات التي تصف حالته ومجموعة من العمليات التي يستطيع إجنازها.إن كل كائن ( )Objectله حالة ميكن أن تتغير أثناء تنفيذ البرنامج.ولكن من أين نحصل على الكينونات/ تعد األصناف ( )Classesمصنع ًا للكائنات ،حيث تستخدم إلنشاء الكائنات التي الكائنات؟ ّ حتتوي على متغيرات ودوال منتمية.وستتعرف ،عزيزي الدارس ،على كيفية إنشاء الكائنات والتعامل معها في الوحدات القادمة من هذا املقرر. تعد البرمجة الكينونية أسلوب ًا جديد ًا في البرمجة ،حيث توفر إمكانيات متعددة مثل التنظيم تعد أسلوب ًا جديد ًا في التفكير اجليد ،واالستخدام املتعدد ،واملقاطع البرمجية املتكاملة :كما ّ وفي بناء البرامج؛ حيث جتمع البرامج حقول البيانات مع البرامج الفرعية التي تستند في عملها 7 تطوير البرامج الكينونية الوحدة األولى على تلك احلقول في بنية واحدة تسمى كائن ًا ( )Objectويتم التعامل مع الكائن ()Object وكأنه وحدة واحدة. ومن املناسب أن يكون هدفنا عند استخدام الكينونات أن نبني نظام ًا أو منوذج ًا يحاكي املسألة قيد الدراسة كما هو في الواقع ،ولتقريب ذلك إلى األذهان ،ميكن اعتبار احلاسوب منوذجاً ،ومن ثم ،فإن هذا النموذج ميتلك كينونات تشكل جزءا من تركيبته ،وكل كينون له مهمة محددة ويستخدم أدواته اخلاصة به وله روابط مع الكينونات األخرى ،فعلى سبيل املثال، تعد لوحة املفاتيح والفأرة ووحدة املعاجلة املركزية والقرص الصلب كينونات تشكل جزء ًا من ّ تركيبة احلاسوب ولكل منها مهمة محددة. مثال ()1 اكتب برنامج ًا حلساب صافي رواتب عدد من املوظفني في دائرة معينة ،وإمكانية معرفة صافي راتب أي موظف عند اللزوم. إن مواصفات قيد كل موظف هي :االسم ،الراتب اإلجمالي ،االقتطاعات، صافي الراتب ،الدائرة.وحلل املسألة يحدد كل كينون وتركيبه ،وميكن مالحظة وجود كينونني في هذه املسألة هما املوظف والدائرة.ونحتاج معرفة املتغيرات التي يتضمنها كل كينون وهي بيانات محلية خاصة بالكينون نفسه وذلك كما يلي: الكينون «موظف» يضم مجموعة اخلصائص التالية: اسم املوظف :مجموعة الرموز. الراتب اإلجمالي :عدد حقيقي. االقتطاعات :عدد حقيقي. صافي الراتب :عدد حقيقي. الكينون «الدائرة» يضم مجموعة اخلصائص التالية: اسم الدائرة :مجموعة رموز. مجموعة كينونات (موظفني) :منظومة من املوظفني. عدد املوظفني في الدائرة :عدد صحيح. 8 تطوير البرامج الكينونية الوحدة األولى ومن اجلدير بالذكر أن البرمجة الكينونية تهدف إلى إضافة ميزات التعميم عند تصميم الكينون األمر الذي يتطلب حتديد مجموعة من العمليات على الكينون وتعريفها وهي التي تساعد املستخدم على تنفيذ مهامه.ومن العمليات في الكينون «موظف» ،نذكر ما يلي: -1بناء/إنشاء الكينون وحتديد املعطيات األولية. -2حتديد اسم املوظف وإسناده. -3تعيني البيانات اخلاصة باملوظف. -4حساب صافي الراتب. -5إظهار النتائج. -6إنهاء وجود الكينون. وبالطريقة نفسها حتدد العمليات املطلوبة للكينون “الدائرة”.كما أنه من اجلدير بالذكر أن املهام التي يقوم بها كل كينيون تشكل اخلدمات التي يقدمها الكينون للكينونات األخرى ،فإذا مت استدعاء عملية من خالل كينون معني ،فإنه يطلب منه تأدية مهمة تفيد كينون ًا آخر. أسئلة التقومي الذاتي ()1 .1ما املقصود بالكينونية؟ .2وضح الفرق بني الكينونات واألصناف. 9 تطوير البرامج الكينونية الوحدة األولى Object-Oriented Analysis .3التحليل الكينوني إن الهدف من التحليل الكينوني هو أن تصبح ،عزيزي الدارس ،على معرفة أكبر مبتطلبات البرنامج أو النظام والبدء في عملية بناء لنموذج أولي للبرنامج من خالل التركيز على الكائنات األساسية ،حيث ميكن تلخيص هذه العملية مبا يلي: -حتديد الكائنات في هذا النموذج األولي. -وصف خصائص الكائنات. -ربط الكائنات املختلفة مع بعضها. -جتميع الكائنات املختلفة. 1.3حتديد الكينونات قد تبدو عملية حتديد الكائنات األساسية معقدة في البداية ،إال أن التفكير في البرنامج الكينوني والنظر إليه باعتباره منوذج ًا لتمثيل الواقع يجعل هذه العملية سهلة نسبي ًا وذلك من خالل جعل كل شيء له خصائص معينة ميكن متثيلها من خالل بيانات معينة في هذا الواقع كائناً ،كما أن هناك طريقة أخرى لتحديد الكائنات وذلك من خالل التركيز على األسماء األساسية املستخدمة في وصف وظائف البرنامج أو النظام والنظر إليها باعتبارها كائنات محتملة في البرنامج الكينوني. 2.3حتديد خصائص الكينونات إن لكل كائن ( )Objectمجموعة من امليزات التي تصفه وتوضح حالته ،وميكن، عزيزي الدارس ،االستفادة من عملية وصف خصائص الكائنات لتحديد الكائنات الصحيحة واملطلوبة ،وذلك من خالل استثناء بعض الكائنات التي ليس لها خصائص ضمن البرنامج. فإذا افترضنا أننا بصدد حتديد الكينونات في نظام التسجيل في جامعة القدس املفتوحة ،فإننا نالحظ أن هناك عدد ًا من الكينونات مثل املقررات الدراسية والدارسني واملشرفني األكادمييني وغيرها.إن كل كائن ( )Objectمن هذه الكينونات له مجموعة من اخلصائص التي ميكن متثيلها ببيانات معينة.فاملقرر ،على سبيل املثال ،له مجموعة من اخلصائص مثل الرقم، االسم ،عدد الساعات ،الوصف ...إلخ.والدارس له مجموعة من اخلصائص مثل الرقم، يعد مؤشر ًا أساسي ًا االسم ،العنوان ،رقم الهاتف ،العنوان...إلخ.إن وجود هذه اخلصائص ّ كينونات أساسية في نظام التسجيل. ٌ على أن املقررات والدارسني 10 تطوير البرامج الكينونية الوحدة األولى وعادة ما متثل األصناف التي تشتق منها الكينونات باستخدام رمز خاص هو املستطيل ،حيث يقسم املستطيل إلى ثالثة أقسام ،يوضع في القسم األول العلوي اسم الصنف ،وفي القسم الثاني خصائص الصنف ،وفي القسم الثالث مجموعة العمليات املختلفة اخلاصة بالصنف. مثال ()2 لتمثيل الصنف “العربة” التي لها اخلصائص “السرعة ،اللون ،الوزن” والعملية “تغيير السرعة” ،نستخدم الرمز اخلاص بذلك ونقوم بتقسيمه حسب ما مت توضيحه سابق ًا كما يلي: العربة السرعة اللون الوزن تغيير السرعة 3.3حتديد العالقات بني الكينونات إن عملية التحليل الكينوني ستوضح العالقات والروابط األساسية بني الكائنات املختلفة وذلك من خالل التركيز على التفاعالت املختلفة بني الكائنات وعالقة الكائنات املختلفة بعضها ببعض ،وبشكل عام ،فإن هناك ثالثة أنواع أساسية من العالقات: -عالقة يعرف ()knows -عالقة يكون ()is -عالقة ميلك ()has يوضح الشكل ( )1عالقة يعرف ( )knowsبني الدارس واملقرر الذي سيدرسه؛ إذ يجب على الدارس أن يعرف املقرر الذي سيدرسه كما يجب أن يكون ملقرر معني قائمة من الدارسني الذين سيدرسونه. 11 تطوير البرامج الكينونية الوحدة األولى املقرر يدرس الطالب الشكل ()1 مكون من ٌ أما العالقة الثانية فهي عالقة ميلك ( ،)hasالتي تصف حقيقة أن كائن ًا معين ًا أجزاء أخرى حيث إن كل جزء ميثل كائن ًا آخر.فعلى سبيل املثال ،يتكون جهاز احلاسوب من شاشة ،لوحة مفاتيح ،فأرة... ،إلخ ويوضح الشكل ( )2عالقة ميلك ( )hasبني جهاز حلاسوب وأجزائه املختلفة. احلاسوب )Empty (weak aggregation )(strong aggregation فأرة لوحة مفاتيح شاشة الشكل ()2 أما العالقة الثالثة في عملية تطوير البرامج الكينونية فهي عالقة يكون ( )isالتي تصف حقيقة أن كائن ًا معين ًا يكون له خصائص عامة يشترك بها مع أصناف أخرى حيث يتم وصف اخلصائص العامة من خالل صنف رئيس ،فعلى سبيل املثال ،فإن السيارات، والدراجات والقطارات لها خصائص مشتركة مثل السرعة والوزن حيث ميكن تعميمها في صنف رئيس يسمى العربة كما هو موضح في الشكل (.)3 احلاسوب فأرة لوحة مفاتيح شاشة الشكل ()3 12 تطوير البرامج الكينونية الوحدة األولى وهناك بعض اخلصائص احمللية التي تكون خاصة باألصناف الفرعية وال تنطبق على الصنف الرئيس مثل قوة احملرك للسيارة وعدد العربات للقطار ،وهل هناك غيار أم ال للدراجة.وباستخدام هذه العالقة فإنه ميكن القول أن السيارة عربة وأن الدراجة عربة وكذلك القطار فإنه عربة.متثل هذه العالقة خاصية أساسية في البرمجة الكينونية وهي مفهوم الوراثة ( )Inheritanceالتي متكننا من استخدام كائنات عرفت سابق ًا وتعديلها واإلضافة عليها مبا يتناسب مع متطلبات برامج جديدة. وهناك مالحظة بخصوص الرموز املستخدمة في وصف العالقات املختلفة؛ إذ قمنا باستخدام الرموز املستخدمة في لغة بناء النماذج املوحدة املسماة Unified Modeling Language) UMLالتي تعد لغة شبه قياسية في بناء النماذج اخلاصة بتطوير البرامج واألنظمة الكينونية. 4.3جتميع الكينونات إن البرامج الكبيرة نسبيا تشتمل عادة على عدد كبير نسبيا من األصناف ،ولذلك فإنه من املفيد جد ًا جتميع األصناف املترابطة مع بعضها في مجموعة من الرزم ( )Packagesوذلك لتسهيل عملية التعامل مع البرنامج ولتنظيم األصناف املختلفة مبا يكفل تسهيل عملية التعديل والصيانة لهذه األصناف. تدريب ()1 إذا علمت أن السيارة مكونة من محرك ،وعجالت ،وجسم ،فمثل ذلك باستخدام العالقة املناسبة. تدريب ()2 إذا علمت أن األشخاص املوجودين في جامعة القدس املفتوحة ينتمون إلى عدة فئات؛ فمنهم اإلداريون ،واألكادمييون والدارسون ،فمثل ذلك باستخدام العالقة املناسبة. أسئلة التقومي الذاتي ()2 .1ما الفرق بني عالقة «يكون» وعالقة «يعرف»؟ .2كيف ميكن حتديد الكينونات األساسية في برنامج معني؟ 13 تطوير البرامج الكينونية الوحدة األولى .4التصميم الكينوني Object-Oriented Design لقد قمنا ،عزيزي الدارس ،بوصف عملية التحليل الكينوني التي متثل املرحلة األولى في عملية تطوير البرامج الكينونية ،وإلى جانب كونها العملية األولى ،إال أنها متثل املرحلة األساسية التي تعتمد عليها املراحل الالحقة حيث يأتي بعدها عملية التصميم الكينوني التي يتم أثناءها عمل الرسومات والنماذج اخلاصة بالبرنامج الكينوني وإكمال إضافة بعض املعلومات لألصناف وذلك من خالل التركيز على كيفية عمل األشياء وليس فقط على مجرد التركيز على حتديد هذه األشياء. 1.4بناء العمليات ففي هذه املرحلة ،يتم البدء بالكائنات التي حددت في مرحلة التحليل الكينوني وتتم إضافة التفصيالت الضرورية التي قد تشمل تطبيق مجموعة من اخلوارزميات املالئمة واتخاذ القرارات اخلاصة بكيفية إجناز العمليات املختلفة واملعلمات ( )Parametersالتي حتتاجها ،إضافة إلى اختيار الطريقة األنسب للتمثيل الداخلي لهذه الكائنات. فعلى سبيل املثال ،إذا كنا بصدد بناء برنامج للتعامل مع األشكال الهندسية املختلفة مثل املستطيل ،املربع ،الدائرة ،املثلث ،فإنه من الواضح أن املستطيل هو أحد األصناف األساسية هنا.إن هناك مجموعة من اخلصائص التي ميكن حتديدها للمستطيل مثل الطول والعرض حيث يتم ذلك في العادة أثناء مرحلة التحليل.أما في مرحلة التصميم فإننا نحتاج إلى حتديد العمليات األساسية على هذا املستطيل مثل عملية حساب مساحة املستطيل حيث نقوم بتحديد كيفية حساب املساحة من خالل عملية ضرب طول املستطيل بعرضه.من الواضح أن هذه العملية حتتاج ،بصورة عامة ،إلى معلمتني أساسيتني وهما طول املستطيل وعرضه ،وسوف تقوم بإعادة قيمة املساحة. 2.4اختيار لغة البرمجة الكينونية ففي مرحلة التصميم الكينوني أيضا ،تتم عملية اتخاذ القرار بخصوص لغة البرمجة املناسبة التي سيتم استخدامها لكتابة البرامج الالزمة لتنفيذ التصميم الكينوني حيث إن للغة البرمجة تأثير ًا كبير ًا على نواح كثيرة للكائنات املختلفة إضافة إلى قدرة البرنامج على االتصال مع البيئة احمليطة به. 14 تطوير البرامج الكينونية الوحدة األولى واجلدير ذكره أنه يفضل أن تتم عملية تنفيذ التصميم الكينوني بلغة برمجة كينونية يعد شرط ًا أساسياً؛ إذ ميكن أن تتم عملية التنفيذ بلغة غير كينونية وذلك إال أن ذلك ال ّ يعد أمر ًا من خالل التعامل مع األصناف وكأنها تراكيب بيانات جتريدية ،إال أن ذلك ال ّ محبذ ًا ألننا سنفقد اخلصائص واحلسنات األساسية املرتبطة بتطوير البرامج الكينونية وخاصة الفائدة من إعادة استخدام بعض األصناف والوراثة وإخفاء املعلومات وغيرها من امليزات اجليدة لتطوير البرامج الكينونية. أسئلة التقومي الذاتي ()3 .1ما الفرق األساسي بني التحليل الكينوني والتصميم الكينوني؟ .2وضح الفائدة من استخدام لغة برمجة كينونية لتنفيذ التصميم الكينوني. 15 تطوير البرامج الكينونية الوحدة األولى .5البرمجة الكينونية Object-Oriented Programming إن الهدف من مرحلة البرمجة في تطوير البرامج واألنظمة ،بصورة عامة ،هو تنفيذ النظام والوصول إلى برامج قابلة للتنفيذ ،إال أن كون البرنامج قاب ً ال للتنفيذ ال يعني بالضرورة أنه برنامج جيد باملقاييس العامة كما أن هناك مجموعة من اخلصائص اجليدة للغات البرمجة الكينونية وهو ما سنقوم بتوضيحه في األقسام التالية من هذه الوحدة. 1.5خصائص البرامج اجليدة ميكن اعتبار البرنامج جيدا إذا توافرت فيه اخلصائص األساسية التالية: -1أن يكون برنامج ًا صحيحاً :ميكن القول أن برنامج ًا معين ًا هو برنامج صحيح إذا قام بأداء وتعد هذه اخلاصية من الوظيفة احملددة في مرحلة التحليل والتصميم من دون أخطاءّ. أهم اخلصائص الالزم توافرها في البرامج ،بصورة عامة؛ إذ إن البرامج التي حتتوي على أخطاء ال ميكن قبولها بحال من األحوال وبذلك فإنه ال ميكن القول بأنها برامج جيدة. -2أن يكون برنامج ًا فعا ًال :ميكن القول أن البرنامج فعال إذا قام بأداء الوظيفة املطلوبة من خالل االستغالل األمثل لنظام احلاسوب ومكوناته.إن هذه اخلاصية أيضا مهمة جدا؛ فالبرنامج الذي يحل مسألة معينة في وقت أطول من الوقت الذي يحتاجه اإلنسان حلل املسألة نفسها ال ميكن قبوله أو القول بأنه برنامج جيد من حيث الفعالية. ال إلعادة االستخدام :ميكن القول أن البرنامج قابل إلعادة -3أن يكون برنامج ًا قاب ً االستخدام إذا ُبني من مكونات ميكن االستفادة منها في بناء برامج أخرى.وفي العادة تكون البرامج اجلديدة التي سيتم االستفادة في بنائها من برامج أخرى برامج مشابهة للبرامج األصلية.ومن اجلدير ذكره أنه ليس من السهولة بناء برامج قابلة إلعادة االستخدام حيث إن هناك مجموعة من القيود والشروط التي يجب أن حتققها املكونات التي ميكن إعادة استخدامها ،إال أن الفائدة التي نحصل عليها تكون كبيرة ومبررة للجهد املبذول للوصول إلى تلك البرامج. وتعد اخلصائص السابقة من اخلصائص األساسية للبرامج اجليدة ،بصورة عامة ،إال أن ّ هناك مجموعة أخرى من اخلصائص املهمة التي يجب توافرها في البرامج ،بصورة عامة، مثل أن يكون برنامج ًا مرن ًا وقاب ً ال للتكيف مع الظروف والبيئات التي سيعمل بها وأن تكون تكلفة صيانته منخفضة. 16 تطوير البرامج الكينونية الوحدة األولى 2.5اخلصائص األساسية في لغات البرمجة الكينونية إن من اخلصائص األساسية ،عزيزي الدارس ،للغات البرمجة الكينونية هو توافر املكونات الرئيسة التي متكننا من حتقيق فائدتني أساسيتني في البرمجة الكينونية وهما: .1خاصية إخفاء املعلومات ()Information Hiding ان املقصود بهذه اخلاصية في لغة البرمجة الكينونية أن حتتوي هذه اللغة على تركيب معني ميكننا من تعريف خصائص الكائن ووضعه ،من متغيرات ودوال منتمية ،في مكان واحد في البرنامج وبحيث ال تتمكن الكائنات األخرى من الوصول إلى هذه اخلصائص أو رؤيتها. .2خاصية الوراثة ()Inheritance إن املقصود بهذه اخلاصية في لغة البرمجة الكينونية أن حتتوي هذه اللغة على تركيب معني ميكننا من إعادة استخدام كائنات عرفت سابق ًا وتعديلها واإلضافة عليها مبا يتناسب مع متطلبات البرنامج اجلديد.إن هذه اخلاصية ،عزيزي الدارس ،مرتبطة بالعالقة (يكون) التي مت توضيحها سابقاً. إن هاتني اخلاصيتني ال تعنيان ،عزيزي الدارس ،أنهما اخلاصيتان املطلوبتان فقط في لغات البرمجة الكينونية اجليدة ،ولكنهما متثالن احلد األدنى من اخلصائص اجليدة املطلوبة. فعلى سبيل املثال ،فإن وجود إمكانية بناء برامج فرعية عامة ( )Generic Subprogramsهي من اخلصائص املهمة في لغات البرمجة ،وال شك في أن وجودها يسهل في عملية بناء برامج عامة ميكنها التعامل مع أنواع مختلفة من البيانات ،مما يسهل على املبرمجني عملية كتابة برامج فرعية لكل نوع من أنواع البيانات ويقلل من حجم األسطر وعددها املطلوب كتابتها ،مما يزيد من إنتاجية املبرمجني ،بصورة عامة ،حيث تعد إنتاجية املبرمجني عند استخدام لغة برمجة معينة من العوامل املهمة في اختيار لغة البرمجة التي سيتم استخدامها في بناء برنامج معني. أسئلة التقومي الذاتي ()4 .1ما اخلصائص األساسية للبرامج الكينونية اجليدة؟ .2ما اخلصائص األساسية للغات البرمجة الكينونية اجليدة؟ 17 تطوير البرامج الكينونية الوحدة األولى .6اخلالصة مت في هذه الوحدة إعطاؤك معلومات أساسية فيما يتعلق بتطوير البرامج الكينونية ،وخاصة التحليل ،والتصميم الكينوني ،وتوضيح بعض املفاهيم واملصطلحات األساسية اخلاصة بذلك.لقد تناولت هذه الوحدة تعريف املفاهيم األساسية اخلاصة بتطوير البرامج الكينونية إضافة إلى تعريف مفهوم التحليل الكينوني من حيث ،حتديد الكينونات وخصائصها والعالقات بينها.وتبع ذلك مناقشة التصميم الكينوني من حيث ،بناء العمليات واختيار لغة البرمجة الكينونية املناسبة.وأخيرا توضيح املفاهيم األساسية املرتبطة بالبرمجة الكينونية وخصائص البرمجة اجليدة إضافة إلى اخلصائص األساسية للغات البرمجة الكينونية. .7حملة عن الوحدة الدراسية الثانية في الوحدة الثانية ،سوف نتطرق إلى تفصيالت أكثر بلغة ،C ++حيث سيتم شرح مفاهيم أساسية وخاصة مفهوم األصناف الذي يعد الفكرة األساسية في لغات البرمجة الكينونية (.)Object-Oriented Languagesكما سنتطرق ملفاهيم التراكيب ( )Structuresالتي تقابل السجالت ( )Recordsوعالقتها باألصناف وتوضيح كيفية التعامل معها واستخداماتها في البرامج املختلفة. 18 تطوير البرامج الكينونية الوحدة األولى .8إجابات التدريبات تدريب ()1 السيارة اجلسم العجالت احملرك تدريب ()2 الشخص دارس أكادميي إداري .9مسرد املصطلحات البرمجة الكينونية :Object-Oriented Programmingهي البرمجة التي تستخدم - الكينون أساس ًا لبناء البرامج حيث تتعامل الكينونات مع بعضها لتحقيق أهداف البرمجة. التحليل الكينوني :Object-Oriented Analysisهو التحليل الذي يستند إلى - أساسيات البرمجة الكينونية ويستخدم الكينون أساس ًا لتحليل النظام. التصميم الكينوني :Object-Oriented Designهو التصميم الذي يستند إلى - أساسيات البرمجة الكينونية ويستخدم الكينون أساس ًا لتصميم النظام. 19 تطوير البرامج الكينونية الوحدة األولى. مجموعة من األصناف املترابطة مع بعضها:Package الرزمة - ، يستخدم لوصف مجموعة كينونات لها السمات أو املالمح نفسها:Class الصنف -.وتقوم بعمليات متشابهة.جزء من البرنامج يضم البيانات والعمليات في قالب واحد:Object الكائن - برامج فرعية ميكنها التعامل مع عدة:Generic Subprograms برامج فرعية عامة -.أمناط من البيانات عملية وضع قيود على الوصول:Information Hiding خاصية إخفاء املعلومات -. إال باألساليب والصالحيات احملددة،إلى املعلومات استخدام السمات واملالمح نفسها املوجودة لدى: Inheritance خاصية الوراثة - حيث ميكن أن يرث كينون ما بعض سماته وخصائصه من،كينون بوساطة كينون آخر.كينون آخر املراجع.10 1. Adams, J. and Nyhoff, L., “C++ An Introduction to Computing”, Prentice Hall, 3rd Edition, 2003. 2. Deitel, H. and Deitel, P., “C++ How to Program”, ISBN: 0-13- 185757-6, Deitel & Associates, 5th Edition, 2006. 3. Keogh, J., “Object Oriented Programming: Principles and Fun- damentals”, Dreamtech Press, 2004. 4. Oestereich, B., “Developing Software with UML: Object-Oriented in Design and Practice”, Harlow: Addison-Wesley. 5. Skansholm, J., “C++ From the Beginning”, Addison Wesley, 2nd Edition, 2002. 6. Stoustrup, B., “The C++ Programming Language”, Addison Wes- ley, 2nd Edition, 1993. 7. Wirfs-Brock, R., Wilkerson, B., Wiener, L., “Designing Object-Ori- ented Software”, Prentice Hall, Inc. 20 تطوير البرامج الكينونية الوحدة األولى الوحدة الثانية التراكيب واألصناف Structures and Classes 22 التراكيب واألصناف الوحدة الثانية محتويات الوحدة الصفحة امل ــوض ـ ـ ـ ــوع 25 .1املقدمة 25 1.1متهيد 25 2.1أهداف الوحدة 26 3.1أقسام الوحدة 26 4.1القراءات املساعدة 26 5.1ما حتتاج إليه لدراسة الوحدة 27 .2التراكيب Structures 32 .3األصناف والكائنات Classes & Objects 32 1.3تعريف الصنف 35 2.3إنشاء الكائنات من الصنف 38 3.3اإلعالن عن حقول الصنف ومحددات الوصول لها Access Modefiers 40 .4دوال األصناف 40 1.4الدوال املنتمية () Member Function 49 2.4إعادة التحميل للدوال Function Overloading 52 3.4العوامل التلقائية Default Arguments 54 4.4الدوال املنتمية الثابتة والكائنات الثابتة const member functions & const objects 56 .5اإلدخال واإلخراج في لغة C ++ 56 1.5اإلدخال Input 58 2.5اإلخراج Output 59 .6اخلالصة 60 .7حملة عن الوحدة الدراسية الثالثة 60 .8إجابات التدريبات 66 .9مسرد املصطلحات 67 .10املراجع 23 التراكيب واألصناف الوحدة الثانية 24 التراكيب واألصناف الوحدة الثانية .1املقدمة 1.1متهيد ف ي ه ذه ال وح دة ،ع زي زي ال دارس ،سنعرض بالتفصيل ملفهومني مهمني وهما التراكيب واألصناف.تقابل التراكيب Structuresالسجالت Recordsفي لغات برمجة أخ رى.أم ا األص ن اف Classesفهي الفكرة الرئيسة ف ي ل غ ات البرمجة الكينونية Object Oriented Languagesوهي جزء من لغة C ++وليست جزء ًا من لغة Cاألصلية.كما سنناقش مفاهيم رئيسة أخرى في لغات البرمجة الكينونية، مثل الكائنات واملتغيرات والدوال املنتمية وكيفية تعريفها واستخدامها في لغة .C ++ وتعد هذه املفاهيم أساسية لفهم بقية الوحدات في هذا املقرر ،لذا نرجو منك ،عزيزيّ الدارس ،التأكد من فهم هذه الوحدة قبل االنتقال إلى بقية الوحدات.وقد مت تزويد هذه الوحدة بالعديد من األمثلة والتمارين التي نرجو منك إعطاءها الوقت واجلهد الالزمني حللها.تذكر ،عزيزي الدارس ،أن إجابات هذه التمارين موجودة في نهاية هذه الوحدة ،ولكن ،وحتى تتحقق الفائدة القصوى ،عليك ،عزيزي الدارس ،أن حتاول بكل جد حل هذه التمارين قبل النظر إلى احلل.كذلك نرجو منك القيام بجميع النشاطات الواردة في هذه الوحدة. 2.1أهداف الوحدة ينتظر منك ،عزيزي الدارس ،بعد فراغك من دراسة هذه الوحدة أن تكون قادرا على أن: تعرف وتستخدم التراكيب .structures ّ.1 .2تستخدم مصفوفات من التراكيب .arrays of structures .3تعرف وتستخدم األصناف .classes .4متيز بني التراكيب واألصناف. .5تنشئ الكائنات وتستخدمها بطريقة صحيحة. .6تكتب الدوال املنتمية وتستدعيها بطريقة صحيحة. .7تكتب الدوال السطرية. .8حتمل الدوال أكثر من تعريف واحد. .9تدخل البيانات وتخرجها بوساطة cinو .cout 25 التراكيب واألصناف الوحدة الثانية 3.1أقسام الوحدة تتكون هذه الوحدة من أربعة أقسام رئيسة.يبحث القسم األول في موضوع التراكيب واملصفوفات وهو بذلك يحقق الهدفني األول والثاني.أما القسم الثاني فيبحث في موضوع األصناف والكائنات وهو بذلك يحقق األهداف :الثالث والرابع واخلامس. أما القسم الثالث فيبحث في كيفية تعريف الدوال املنتمية وكيفية استدعائها ويحقق هذا القسم الهدف السادس ،كما يبحث كيفية حتميل الدوال أكثر من تعريف واحد وكيفية كتابة الدوال السطرية وهذا يحقق الهدفني السابع والثامن.أما القسم الرابع فيبحث في عمليات اإلدخال واإلخراج في لغة C ++ويحقق هذا القسم الهدف التاسع. 4.1القراءات املساعدة لقد حاولنا تقدمي الكثير من املفاهيم املهمة في هذه الوحدة بشكل مبسط.ولكن كي تتعلم لغة C ++بشكل جيد جدا ستجد أنه من املفيد أن تدرس أكبر عدد ممكن من األمثلة والتمارين.لذا ننصحك بالرجوع إلى أكبر عدد ممكن من كتب لغة .C ++ وفيما يلي جتد قائمة من هذه الكتب: 1. Cannon, Scott, “Understanding Programming: An Introduction Using C++”. Brooks/Cole Publishing Co, 2001. 2. Nell Dale, Chip Weems, “Programming and Problem Solving with C++”, Fourth Edition. Jones and Bartlett Publishers, 2004. 3. Savitch, Walter, “Problem Solving with C++”, 7/E Addison- Wesley Publishing Company, Inc 2008. 5.1ما حتتاج إليه لدراسة الوحدة حتتاج لدراسة هذه الوحدة إلى جو هادئ وإلى بعض األوراق وقلم رصاص. كما حتتاج ،حلل التمارين والقيام باألنشطة ،إلى جهاز حاسوب مزود مبترجم للغة C .++حاول ،عزيزي الدارس ،حل جميع متارين البرمجة باستخدام احلاسوب واختبار برامجك قبل النظر إلى احلل الصحيح في نهاية الوحدة. 26 التراكيب واألصناف الوحدة الثانية Structures .2التراكيب عزيزي الدارس ،ال بد ،وأنك عند دراستك للمتطلب السابق لهذا املقرر ،لو حاولت أن تستذكر كثير ًا من األمثلة التي تصادفك يومي ًا لوجدت لدى زيارتك ملؤسسة حكومية ،خدماتية ،طبية أو تعليمية...إلخ ،أنها حتتفظ بقيود خاصة مبراجعيها وذلك خلدمة األغراض اخلاصة باملؤسسة ،حيث إنها تشترك جميع ًا بخاصية أساسية وهي أن هذه القيود مصممة بطريقة تتيح ملن يستخدمها الرجوع لها واإلفادة منها؛ فاملعلومات املتصلة بكل حالة من احلاالت الفردية التي متثلها تصف هذه احلالة دون غيرها وتعبر عنها تعبير ًا منهجي ًا محدداً. عندما نتعامل مع هذه املمارسات العملية في نطاق لغات البرمجة فإننا نحتاج إلى وسيلة مناسبة لالحتفاظ باملعلومات واحملافظة على تكاملها ومنهجيتها.والتركيب هو وبناء عليه فإن التركيب :هو أسلوب منظمً أحد الوسائل التي توفرها لغة .C/C++ لالحتفاظ باملعلومات املتصلة بأحد األشياء.فاملقصود أن التركيب قد يتضمن عنصر ًا أو أكثر من عناصر البيانات وهذا ما يكسبه سمة التركيب ،أي أن التركيب ينتمي إلى النمط املركب ( )Structured Typeمن أمناط البيانات ،شأنه في ذلك شأن املصفوفات ،وهنا ال بد أن نالحظ أن عناصر البيانات التي يتضمنها التركيب ال تنتمي إلى نوع واحد من أنواع البيانات كما هو احلال مع املصفوفات.فسجل الزبون يتضمن اسمه ،رقمه ،عنوانه ،...وغير ذلك من املعلومات.وكما تالحظ ،فإن هذه املعلومات تختلف عن بعضها في طبيعة تكوينها وأسلوب متثيلها ،وهذا على خالف ما هو قائم مع املصفوفات. بناء عليه ،جند أن التركيب هو مجموعة أو حزمة من احلقول fieldsاملتعلقة ً بكائن objectمعني يجمعها اسم تركيب محدد.وجند أن الشكل العام لإلعالن عن التركيب في لغة C ++يأخذ الشكل التالي: struct structure_name ;{type1 member_name1 ;type2 member_name2 . . . . . ……………. ;typeN member_nameN ;)} object_name (copyname 27 التراكيب واألصناف الوحدة الثانية على سبيل املثال ،قد يحتوي التركيب اخلاص بطالب معني على احلقول التالية: StName اسم الطالب StNumber رقم الطالب Department القسم Grade العالمة ويعرف هذا التركيب في لغة C ++كما يلي: struct Student {char ;]StName[21 int ;StNumber char ;]Department[7 float ;Grade ;} يشكل هذا التعريف نوع ًا جديد ًا هو التركيب Studentبحيث يحتوي على احلقول السالف ذكرها.الحظ ،عزيزي الدارس ،أن تعريف التركيب يجب أن ينتهي بفاصلة منقوطة كبقية اجلمل.كما أن هذا التعريف أنشأ نوع ًا جديد ًا يستخدم إلنشاء متغيرات من نوع Student.ويعرف املتغير Xمن النوع Studentكما يلي: ;struct Student X واجلملة struct ;Student Z,Y تعرف املتغيرين Zو Yمن النوع Studentولتمييز هذه املتغيرات عن بقية املتغيرات البسيطة فإننا ندعوها باملتغيرات املركبة. ومن املمكن دمج تعريف النوع وإنشاء املتغير املركب كما يلي: struct Student ;]{char StName[21 ;int StNumber ;]char Department[7 float ;Grade ; } X,Y,Z 28 التراكيب واألصناف الوحدة الثانية وهكذا نكون قد عرفنا تركيبا من نوع Studentوأنشأنا املتغيرات املركبة Xو Yو Z من ذلك النوع.Studentوملعاجلة أي حقل في املتغير املركب Xفإننا نستخدم اسم املتغير متبوعا بنقطة ثم اسم احلقل.فمثال ،اجلملة: ;X.StNumber = 123 تخزن الرقم 123في احلقل StNumberاخلاص باملتغير Xواجلملة: ;”Z.StName=”Ali Ahmad تخزن القيمة Ali Ahmadفي احلقل StNameاخلاص بالتركيبZ. ومن املمكن في لغة ( C ++لكن ليس في لغة )Cتعريف متغير مركب من نوع Studentبدون كتابة الكلمة structكما يلي ;Student X بعد أن تعرفنا على كيفية تعريف التراكيب ،فإن املثال التالي يوضح كيفية التعامل مع تركيب الوقت املسمى ،Timeانظر إلى التعريف: { struct Time int ;hours int ;minutes int ;seconds }; املثال التالي يعمل على تعريف دالة حلساب عدد الثواني للوقت املدخل ،انظر تعريف الدالة: )int toSeconds(Time now ;{return 3600*now.hours + 60*now.minutes + now.seconds } وكما ترى من التعريف ،فإن هناك معام ً ال مركب ًا للدالة سمي nowوهو من النوع . Timeأما في الدالة الرئيسة فأنشأ متغير ًا مركب ًا سمي tوهو من النوع Time أيضاً ،وبعدها مت إدراج اجلمل املخصصة إلدخال الوقت من لوحة املفاتيح ،انظر إلى البرنامج بشكله الكامل: >#include > t.hours >> t.minutes >> t.seconds) { cout