Transcript Document
آموزش برنامه نویس ی ش یء گرا استاد راهنما :جناب آقای مهندس عضدانلو بخش اول: مفاهيم ش يء گرايي فصل اول اصول برنامه نويس ي شيئ گرا و مروري بر سير تحول برنامه سازي گردآورندگان :شيوا خاني -پروانه اسعدي امير بهادر مهرپور برنامه ساخت یافته روش منظمی برای نوشتن برنامه ها ست ومنجر به نوشتن برنامه هایی می شود که خوانایی آن ها بال ست ،تست و اشکال زدایی آن راحت تر و اصالح آن آسان تراست. در برنامه نویس ی ساخت یافته ،برنامه به صورت مجموعه ای از فعالیت ها تصور می شود که باید بر روی داده ها انجام شوند. در این روش برنامه به قسمتهای کوچکتری تقسیم می شود که به آن ماژول ، function ،تابع یا واحد برنامه می گویند .تابع یک جزئی از که به ما امکان استفاده مجدد را می دهد . نکته :کاهش و حذف دستور، go to،به منظور افزایش خوانایی برنامه و اضافه شدن دستوراتی از قبیل سوئیچ و حلقه های شرطی و ....می شود. شیء گرا سساخت یافته برنامه نویسی راحت تر سرعت اجرا کمتر زبان اسمبلی زبان ماشین HHard ware برنامه نویسی مشکل تر سرعت اجرا باالتر مشکالت برنامه ساخت یافته در این روش،داده ها از فعالیت ها(توابعی) که آن ها پردازش می کنند جدا ست .وقتی حجم داده ها زیاد می شود ،نگهداری آن ها مشکل می شود .هر چه بیشتر با داده کار کنیم ،با مشکالت بیشتری مواجه می شویم. قابلیت استفاده مجدد از قطعات نرم افزاری که در زبانهای ساخت یافته تا حدی وجود دارد ،اما در بسیاری از اوقات کافی نیست و می بایست برنامه جدید ،دوباره نویس ی شود در زبانها ی ساخت یافته ما میتوانیم از فانکشنها یا روالهای نوشته شده استفاده مجدد داشته باشیم اما در اکثر اوقات این کار مستلزم تغییراتی در برنامه های از قبل نوشته شده است . مزایای برنامه نویس ی ساخت یافته .1تابع را یک بار می نویسید ولی چندین بار و به کرات از آن استفاده می کنید. .۲تابع را که بار اول تست کردید دیگر در ادامه برنامه نیازی به تست کردن آن ندارید و مطمئن هستید که تابع درست کار میکند. .۳زمان برنامه نویس ی را بسیار کاهش می دهد. .۴در برنامه نویسیهای تیمی وظایف به خوبی بوسیله این نوع برنامه نویس ی تقسیم می شود. همه موارد فوق در زبانهای ش یءگرا با کیفیت بهتری قابل انجام است . تاریخچه برنامه نویس ی ش ئ گرا برنامه نويس ي ش ي گرا در اوايل دهه ۱۹۷۰توسط آلن کي Kayطراحي شده است . آلن کي گفته بود که :آن چيزي که باعث شد اين فکر به ذهنم برسد نحوه عملکرد سلولهاي زيست محيطي بود .يعني اين سبک برنامه نويس ي از روي سلولهاي جاندارها الگو برداري شده است.آن چيزي که باعث شد که آلن کي از روي سلول هاي جانداران الگو برداري کند نحوه زندگي سلولها بود . Alan سبک برنامه نویس ی ش ئ گرا براساس نظر آلن کی .1هر سلول نمونه اي از اصل است و هر خصوصياتي که دارد از اصل خود به ارث برده(.ژنتيک سلول) .همچنين هر سلول رفتارهايي دارد .که از اصل خود به ارث برده. .2سلولها همگي مستقل از هم زندگي مي کنند و براساس ارسال پيام هاي شيميايي با يکديگر ارتباط برقرار مي کنند .ارسال پيام به اين صورت است که پيام از پوسته يکي خارج و به پوسته ديگري وارد مي شود. .3سلولها مي توانند از يکديگر متمايز شوند. تعریف برنامه نویس ی ش ئ گرا برنامهنویس ی ش یءگرا ( Object Oriented Programmingمخفف )OOPیک شیوه برنامه نویس ی است که ساختار یا بلوک اصلی اجزای آن اشیا می باشد .از جمله زبانهای ش یءگرا می توان به ، c# ، c++ ، java :اشاره کرد .برنامه نویس ی ساخت یافته از ماژول تشکیل می شود که می تواند تابع یا روال باشد ماژولها در برنامه نویس ی ساخت یافته : می تواند دارای ( 0تا(nخروجی باشد فقط دارای یک خروجی است Procedure Function از کالسها می توان نسخه یا نمونه گرفت که به هر نسخه یا نمونه یک objectیا ش یء گفته می شود . اشیاء objectها در هنگام اجرای برنامه پدید می آیند و پس از انجام عملیات لزم ،از بین می روند . یک کالس از دو قسمت تشکیل می شود : داده ها (1 روالها (2 به طور مثال :در کالس دانشجو داده ها عبارتند از :نام ،نام خانوادگی ،شماره دانشجویی و .... روالها عبارتند از :انتخاب واحد ،حذف و اضانه ،پرداخت شهریه ... نام کالس student - name - Family … … Adcourse داده ها یا خواص ) (روالهاMethoes Objectيک مفهوم کلی است بگونه ای که دارای هويت بوده و قادر به بروز رفتار و ثبت حالت (وضعيت) خود باشد. class girl Brittany 14 object Jane Daria Jodie 15 مجموعه ای از Objectکه دارای ساختار و رفتار مشترکی می باشند را کالس نامند. 7/20/2015 16 هويت ( : )Identityآن ويژگی از يک Objectاست که آن را از بقيه Objects متمايز می سازد. حالت (: )Stateحالت يا وضعيت يک Objectدر بردارنده تمام خواص (يا صفات ) آن ( Objectمعمول ايستا) بعالوه مقادير جاری (معمول پويا) برای هر يک از اين خواص است Object ،ها دارای حالتهایی هستند که در آن حالتها رفتارها با هم متفاوت است . رفتار( : )Behaviorچگونگی عمل و عکس العمل يک Objectدر قالب تغيیر حالت در مقابل دريافت و يا ارسال پيام را نمايش می دهد. 7/20/2015 Objectsبه دو دسته تقسيم بندی می گردند: فعال ()Active غیر فعال ()Passive Active Object می تواند با ارسال پیام بر روی Objectهای Passive Objectتاثیر بگذارند. چنانچه Objectهم Activeو هم Passiveباشد ، عامل( )Agentناميده می گردد. الگوريتم ها +ساختمان داده ها = Object 17 7/20/2015 ) ايجادOOP(گراobject در برنامه نويس یobject به تعريف يک .نمونه می گويند Student Code Name Family Average PassUnit Register() Examine() Study() نمونه ها Ali Amini Ahmad Shahriary Reza Ahmadi 18 مجموعه ای از objectکه دارای ساختار و رفتار مشترکی می باشند را Classنامند. Course 1 19 jCourse 2 یک برنامه شیءگرا از لحاظ ساختار برنامه از یک یا تعدادی کالس تشکیل می شود . در هنگامی که برنامه اجرا می شود Objectهایی بنا به نیاز از آن کالس ساخته شده و مقادیر ویژگیهای آنها در حافظه کامپیوتر قرار می گیرد به عنوان مثال در اسالید قبل دو شیء به نام Cours 1و Cours 2از کالس کامپیوتر ایجاد می شود . در هنگام اجرای یک برنامه هر Objectمی تواند هر متد مربوط با کالس خودش را با برخی از کالسهای دیگر ( در ادامه توضیح داده می شود ) اجرا کند . فصل دوم ويژگي هاي روش شيئ گرا گردآورنده :سميرا محمدزاده همانگونه که اشاره گرديد ش ی گرائی بر اصول زير استوار است : •تجرد ()Abstraction •واحدبندی ((Modularity •محصور سازی ()Encapsulation •سلسله مراتب ()Hierarchy (:)Abstraction به یک پدیده یا فرآیند می توان از دریچه های مختلف و به طرق مختلف نگاه کرد که به هریک از این الگوهای نگرش ،یک Abstractionیا تجرد می گوییم. نکته: در بسیاری از مسائل در ابتدا باید یک Abstractionیا تجرد کلی مسئله نگریسته و سپس برحسب نیازتفصیلی و تفصیلی تر نگرشمان را کامل می کنیم. مثال: می توان به شیئی نظیر یک کامپیوتر از دیدگاه های مختلف نگریست. بصورتی که برای یک برنامه نویس ،یک کامپیوتر با ویژگی هایی نظیر پردازنده و سرعت آن ،حافظه و حجم آن و ...قابل ارائه می باشد. از منظر یک حسابدار مواردی نظیر قیمت و تاریخ خرید ،ارزش مالی فعلی و ...معیار بوده. و از نظر یک انباردار کد کال ،شخص تحویل گیرنده و ...معیار است. : Hierarchy طبقه بندی اجزایی است که برای انجام یک کار لزم است و مشخص کردن نحوه ی ارتباط اجزا نیز در اینجا بسیار مهم می باشد. نکته: در نرم افزار مشخص کردن سطوح مختلف عناصر سازنده ی نرم افزار و وظیفه ی هر سطح و ارتباط بین سطوح ،عامل مهمی می باشد. : Encapsulation کپسوله سازی عبارت است از عدم پذیرش تاثیرات ناخواسته و یا کنترل نشده و محدود نمودن طرق دسترس ی به یک . Object از لحاظ پیاده سازی ،کپسوله سازی بصورت پایه ای توسط طراح و برنامه نویس نرم افزار انجام می شود. اما انتخاب تکنولوژی مناسب نیز بعنوان ابزاری است که با کمک آن ابزار بتوان Encapsulationیا کپسوله سازی را راحت تر پیاده سازی کرد. محیط ش ئ گرا با وجود مفهوم Classبعنوان یک واحد عملیاتی که در آن ً خصوصیات و رفتارها قرار دارد ،به نوعی ماهیتا کپسوله سازی را بصورت پایه ای ارائه می دهد. اما این مفهوم در محیط ساخت یافته ،به این شکل وجود ندارد. در پیاده سازی ، Encapsulationطراح نرم افزار موظف است با توجه به نگرش ها و نیازهای مختلفی که در حوزه ی تجاری وجود دارد، سطوح مختلف کپسوله سازی را مشخص نماید .و پس از آن ،برنامه نویس از این الگو برای پیاده سازی نرم افزار استفاده خواهد کرد. با توجه به اصل فوق هر کالس از دو بخش زير تشکيل می گردد: واسط Interface) :توصيفی از سرويسهائی که اين objectدر اختيار Clientها قرار می دهد). پياده سازی :ساختمان داده ها +الگوريتم ها واسط (:)Interface از لحاظ مفهومی Interfaceیا واسط ،شیئی است که از طریق آن می توان به یک ش ئ دیگری دسترس ی داشت .بنابراین از لحاظ پیاده سازی نیز Interfaceدر محیط ش ئ گرا یک Class است که از طریق آن دسترس ی به متدهای Classدیگری ممکن می شود. ا :Encapsulation برخی از مزايای Encapsulationعبارتند از : جلوگیری از دسترس ی های غیر مجاز امکان تغيیر در محتويات Classبدون آنکه خللی به استفاده کنندگانوارد نمايد (به شرط آنکه Interfaceکالس تغيیر ننمايد) -افزايش قابليت استفاده مجدد استفاده مجدد: می توان در طراحی یک ، Classگزینه های متعدد و مختلفی را دید که باعث جامع تر شدن آن Class می شود .هرچند که درحال حاضر شاید از همه ی آن ها استفاده نشود ،اما در کاربردهای دیگر می توان از آن ویژگی ها استفاده نمود. ماژول باز :ماژولی که آماده اعمال تغییرات باشد. ماژول بسته :ماژولی که امکان تغییرات در آن وجود ندارد. یک ماژول مناسب برای تعریف کننده آن باز و برای استفاده کننده آن بسته است. Encapsulation . در سطوح مختلف استAbstractions عبارت از مرتب ساختن .باعث افزايش فهم مساله می گرددEncapsulation :Encapsulation انواع )IS-A(Class ساختارEncapsulation • )PART-OF(Object ساختارEncapsulation • ا وا :Encapsulation در زبان :UML به معنی وراثت و مفهوم وراثت ،این است که نمونه ی فرزند ،نوعی است که دارای کلیه ی ویژگی های عمومی آن است .اما خودش می تواند ویژگی های خاص خود را نیز داشته باشد. اطالعات کلی تر قطعات بیشتر/حجم باالی اطالعات / جرئیات بیشتر نام ديگر اين نوع Encapsulationتخصيص /تعميم ()Generalization/Specializationمی باشد. Inheritanceمهمترين شکل Encapsulation IS-Aمی باشد. Inheritanceعبارت است از رابطه بین چند Classکه در آن يک Classدر ساختار ،رفتار يا هر دو با يک )Single Inheritance(Classيا چند Multiple (Class )Inheritanceديگر شرکت دارد. کالس فرزند يک تخصيص از Classعمومی تر(کالس پدر) را نمايش می دهد. Inheritanceبا اصل پنهان سازی اطالعات در تضاد است. IS - A SPECIALIZED - TO Encapsulation PART-OF .دراین نوع Encapsulationیک ش ئ به اشیاء کوچکتر شکسته می شود . .در این نوع Encapsulationیک رابطه ی کل به جزء و یا رابطه ی تجمعی وجود دارد . 40 HAS-an PART–OF The vehicle HAS-an engine The engine is PART –OF vehicle 41 Abstract data type ) (و اه گردآورندگان:ابوالفضل عرب زاده -سارا سلطاني -مرتضي قلعه نوعي نوع داده مجرد ()Abstract Data Type . معرفی یک ش یء بدون در نظر گرفتن چگونگی پیاده سازی آن و تنها با بیان ساختار و رفتار ،آن را . ADTیا Abstract Data Typeمی گویند . Abstract Data Typeابزاری است که به ما در درک و تجزیه و تحلیل ش یء گرا کمک می کند . 43 . برای آشنایی و درک مفهوم ADTاقدام به معرفی Stackبا یک مدل Abstract Data Typeمیکنیم : . (تعریف : )Stackهمانطور که می دانیم Stackیک ساختمان داده ای است که ورود اقالم اطالعاتی در آن از بالی آن اتفاق می افتد و یا به عبارت دیگر Stackهمانند آرایه ای است که از یک طرف بسته است . . Stack 2 free در این ساختار ) (Stackآخرین جزئی که وارد می شود اولین جزئی است که خارج میشود ).(LIFO 44 capacity count Stack 1 representation 1 Abstract Data Type اجزای : از چهار جزء تشکیل می شوند که عبارتند ازAbstract Data Type یک )TYPES( نوع )FUNCTIONS( توابع )AXIOMS( اصول )PRECONDITIONS( پیش شرایط . . . . 45 : نمایش می دهیمSTACK حال در ادامه مولفه ی چهارگانه ی اسالید قبل را برای )TYPES( نوع.1 TYPES . STACK [G] . ) می باشدStack( نوع دادهG منظور از . )FUNCTIONS( توابع.2 FUNCTIONS • put: STACK [G] ´ G STACK [G] • remove: STACK [G] STACK [G] • item: STACK [G] G • empty: STACK [G] BOOLEAN • new: STACK [G] . انجام می شود را نشان می دهدADT عملیاتی که بر رویFUNCTIONS در . 46 .3اصول ()AXIOMS AXIOMS . For any x: G, s: STACK [G], A1 • item (put (s, x)) = x A2 • remove (put (s, x)) = s )A3 • empty (new ))A4 • not empty (put (s, x منظور از AXIOMSویژگیهایی است که در کلیه های نمونه های آن ساختار داده یا به عبارت دیگر کلیه ی اشیاء صدق می کند . .4پیش شرایط ()PRECONDITIONS PRECONDITIONS . )• remove (s: STACK [G]) require not empty (s )• item (s: STACK [G]) require not empty (s شرایطی است که برای انجام یک عمل یا یک FUNCTIONSباید وجود داشته باشد مثال شرایط باز کردن یک حساب این است که فرد از 18سال بیشتر داشته و منع قانونی نداشته باشد . 47 نکات مهم در رابطه با : ADT . ADTها ابزار مهمی جهت شناخت تکنولوژی ش یء گرا می باشند . . یک گزینه ی مناسب در تولید سیستم های ش یء گرا این است که ابتدا ADTرا در یک حوزه شناسایی و سپس از روی آن کالسها را پیاده سازی می کنیم . . در پیاده سازی کالسها لزوما همه ی گزینه ها و امکانات ADTپیاده سازی یا اجرا نمی شوند . 48 Objects ا ب ط ب ن . ارتباط بین Objects Objectsدر دنیای روزمره و به طبع آن در محیط برنامه سازی ش یء گرا می بایست با یکدیگر ارتباط برقرار کنند . . ارتباط بین Objectو استفاده از سرويسهای آنها از طريق مکانیزم تبادل پيام ( )Message Passingصورت می پذيرد . . پیاده سازی این عمل در محیط ش یء گرا با کمک درخواست اجرای یک تابع از Objectسرویس گیرنده به Objectسرویس دهنده ارسال می شود . . تطابق درخواست ( )Requestو امضای روش( )Method Signatureمی بايست در هر فراخوانی بررس ی گردد ،این مطلب به این مفهوم است که تعداد و نوع ورودی های Functionمطابق با الگوی تعریف شده ی Functionباشد . 50 ارتباط بین Objects سرويس دهنده به دو صورت می تواند نتايج را به سرويس گیرنده اعالم نمايد : . .با استفاده از تغيیر مقادير پارامترها با استفاده از مقدار بازگشتی 51 ارتباط بین Objects . در زمان اجرای برنامه به هر Objectحافظه ای تخصيص داده می شود که شامل جدولی بنام انتخاب کننده پيام ( )Message Selectorمی باشد . . 52 وظيفه جدول مذکور نگاشت نام عمل به آدرس شروع آن در حافظه اصلی می باشد . ارتباط بین Objects برای توضیح تکمیلی 2مورد اسالید قبل می توان به فرآیند اجرایی یک برنامه ی Object Orientedتوجه کرد : . .وقتی که از یک کالس یک Objectساخته می شود حافظه ای به Objectاختصاص کالس یک ساختار و قالب کل است . داده می شود و در آن حافظه ویژگی های آن Objectقرار می گیرد. . هر Objectمی تواند توابع یا متدهای مربوط به کالس خودش و یا برخی کالسهای دیگر که از آنها ارث بری کرده است را اجرا کند و یا برخی متدها در Objectدیگر به صورت عمومی ( )Publicمی تواند مورد بهره برداری آن قرار گیرد و آنها معرف جدول انتخاب کننده ی پیام هستند . 53 54 ارتباط بين کالسها ارتباط بين کالسها . در هنگام طراحی یک سیستم ش یء گرا یکی از نکات بسیار مهم مشخص کردن ارتباط بین کالسها است ،این ارتباط به صورت کلی به 4دسته تقسیم می شود : . .رابطه تجمعی ()Aggregation Relationship .رابطه وراثت .رابطه وابستگی()Dependency Relationship رابطه انجمنی ()Association Relationship ()Inheritance,Generalization/Specialization,IS-A Relationship 56 رابطه انجمنی ()Association Relationship . .يک Association Relationshipبه يک کالس امکان می دهد تا درباره روابط معنائی ( )Semanticبین کالسها می باشند . صفات و رفتار عمومی کالس ديگر اطالعات لزم را بداند . Person . در مثال فوق Classشخص و خانه از صفات و رفتار عمومی يکديگر مطلع می باشند (رابطه دوطرفه) . 57 House رابطه انجمنی ()Association Relationship . ايجاد و نگاهداری Association Relationshipيک طرفه آسانتر می باشد .همچنین در Association Relationshipيک طرفه کالسهایی را که می توانند مجددا استفاده ( )reuseگردند را آسانتر می توان پيدا نمود . Person . 58 House در مثال فوق کالس شخص از صفات و رفتار عمومی کالس خانه اطالع دارد . رابطه انجمنی ()Association Relationship . .درجه کارديناليتی : در روابط انجمنی معنی رابطه و درجه کارديناليتی آن مشخص می گردد . B 1 A يک نمونه از Aهمواره با يک نمونه ازB ارتباط دارد. 59 B *1.. A يک نمونه از Aهمواره با يک نمونه يا بيشتر از Bارتباط دارد. B 0..1 A يک نمونه از Aهمواره با هيچ ،يا فقط يک نمونه از Bارتباط دارد. * B A يک نمونه از Aهمواره با هيچ ،يک نمونه ،يا بيشتراز Bارتباط دارد. رابطه وابستگی()Dependency Relationship Person House .در مثال فوق شخص به خانه وابسته است . .در Association Relationshipشخص یک صفت خانه را در خود دارد ،برای ارسال پیام به خانه ،شخص تنها به صفت خانه خود توجه می نماید ،لیکن در Dependency Relationshipشخص این صفت را در خود ندارد و می بایست با استفاده از رویکردهای دیگر متوجه خانه شود ،این رویکردها عبارتند از : .خانه بصورت سراسری ( )Globalتعریف شود . .خانه به عنوان یک Objectدرون یکی از متدهای شخص ( بصورت )Local تعریف گردد . .خانه بصورت یک پارامتر به برخی از متدهای عضو شخص ارسال گردد . 60 رابطه وابستگی()Dependency Relationship . در اين رابطه يک کالس از ترکيب تعدادی کالس ديگر تشکيل شده است ،ادبيات زير در ش یء گرایی برای اين رابطه استفاده می گردد : )پايین به بال) PART-OF )بال به پايین) HAS-A مثال: A Car HAS-A Door A Tire is PART-OF a Car 61 )Dependency Relationship(رابطه وابستگی 1 HAS-A 1 1 PART-OF 2..4 1 4 62 رابطه وراثتی Inheritance Relationship . .در وراثت ش یء گرا ،کالس فرزند تمامی مشخصات کالس والد را دارد و می تواند استفاده از وراثت در محیط ش یء گرا مدلی برگرفته ازدنیای واقعی است. مشخصات خودش را نیز داشته باشد و عالوه بر آن می تواند از کلیه ی توابع کالس والد استفاده کند . . 63 استفاده از این ویژگی در طراحی ش یء گرا باعث کاهش حجم کد می شود . رابطه وراثتی Inheritance Relationship . همانگونه که ذکر نموديم ( Hierarchyسلسه مراتب) عبارت است از مرتب ساختن Abstractionsدر سطوح مختلف . . ادبيات زير در ش ی گرایی جهت اين نوع رابطه استفاده می گردد : )پايین به بال) IS-A /Generalized-to (بال به پايین) Specialized-to 64 رابطه وراثتی Inheritance Relationship IS-A Specialized-to . در طراحی شیء گرا ویژگیها و رفتارهای عمومی در کالسهای سطح باالتر و ویژگیها و رفتارهای خاص در کالسهای سطح پایین تر نمایش داده می شود . 65 ( چند شكلي بودن) POLYMORPHISM نگارنده :شیوا شاهميرزایی پیاده سازی Overriding • درزبان های برنامه نویس ی ش ی گرا برای پیاده سازی overridingمتدی درکالس فرزندهمنام بامتداصلی درکالس پدرایجادمی کنیم. • دراینحا اولویت درانتخاب متدبرای نمونه های کالس فرزند متدهمان کالس می باشد. • برای درک این مسئله به مثال توجه کنید. empolyee Code . . Name . . Calsalary() Part time empelay . . . Calsalary() Prpject base emplayee full time playee . . . . . . Calsalary() Calsalary() درالگوی فوق همان طورکه مشاهده می شودکالس کارمند تمام وقت،نیمه وقت وپروژه ایی ،وجودداردهمان طورکه می بینیم این 3کالس ازکالس کارمند ارث بری کرده اند. این امربدین مفهوم است که ویژگی های رفتاری که برای کلیه کارمندان از هرنوع مشترک است درکالس پدریاکارمندقرارمی گیرداماویژگی ورفتارهای که مربوط به نوع خاص ی از کارمندان است درکالس فرزندقرارمی گیرد.مثال برای همه محاسبه حقوق حساب میشوداما به طروق مختلف. بعنوان مثال ویژگی های نام ،نام خانوادگی،کدملی کدکارمندی و...رفتارهای سوابق ،نمایش اطالعات تحصیلی که درهمه نمونه های کارمندان مشترک است درکالس کارمندقرارمی گیرد. اما ویژگی هایی نظیر تعداد روزهای باقی مانده مرخص ی وبیمه که مربوط به کارمندان تمام وقت است درکالس مربوط به کارمندان تمام وقت قرارمی گیردونکته مهم دراینجا رفتارهایی است که درکلیه نمونه ها اتفاق می افتداما نحوه ی انجام آنها بایکدیگرمتفاوت است . دراین حالت برای پیاده سازی ،بازنویس ی یا overriding متدرادرکالس پدرقرارداده ومتدهایی باهمان نام وباپیاده سازی متفاوت درکالس های فرزندایجادمی کنیم دراینجا اگرنمونه هایی ازهریک ازکالس های فرزندایحادکنیم اولویت اجرای محاسبه ی حقوق)(Callsalaryبامتدکالس فرزند است. مفهوم متدهای مجازی یا virtual method دربعض ی ازحوزه های کاری انجام یک رفتارمنوت به این است که نوع خاص ی ازاشیاء مشخص شودودرغیراینصورت انجام آن رفتارازنظرپیاده سازی امکا ن پذیرنیست. به عنوان مثال انجام محاسبه ی حقوق ،قبل ازآنکه حقوق کارمندمشخص شودامکان پذیرنمی باشد. دراین حالت متداصلی که درکالس پدرقرارمی گیردمی تواندفقط حاوی نام باشدودرعمل پیاده سازی درآن صورت نگیردوپیاده سازی بصورت مجزادرمتدهای کالس های فرزندان انجام پدرvirtual methodشود.دراین حالت به متدکالس یامتدمجازی می گویند. Overridingیاسربارگذاری سربارگذاری نیزیکی ازراههای پیاده سازی چندریختی یا Polymorphismاست. Overriding غالبابه دوصورت پیاده سازی می شود-1:سربارگذاری روی متدها -2،سربارگذاری روی عملگرها. درسربارگذاری روی متدهادارای متدهایی هستیم که تعدادونوع پارامترهای ورودی آنها می تواندمتفاوت باشدامانام آنها یکی است. مثالSum(int a,int b) : )sum(str a,str b )sum(int a,int b,int c اما تعدادونام پارامترهای آنهامی تواندمتفاوت باشد. ازچندریختی است بدین دراینجامشاهده می شودکهoverridingیک الگوازپیاده سازی مفهوم که یک آبجکت وقتی که می خواهدفراخوانی کندبسته به نوع انجام آن هنگام فراخوانی می تواندتعدادویاانواع پارامترهای مختلفی رااستفاده کند. درپیاده سازی overlodingمتدهای هم نام دریک کالس قراردارندامادرoverridingمتدهای همنام درکالس های والدوفرزندقرارمی گیرد. نوع دوم overloding,overloding,روی operaturاست. دراینجایک عمل operaturبا فراخوانی یک تابع هیچ فرقی نداردومی توان عملیات مختلفی راتعریف کرد. دراینجابرروی یک operaturنظیرجمع،ضرب وتقسیم و...می توان عملیات مختلفی راتعریف کرد.بعنوان مثال همانطورکه درزبان های برنامه نویس ی مشاهده کردیم ازعملگرجمع می توان هم برای جمع اعدادوهم برای اتصال رشته هااستفاده کرد،به این عمل overlodingیاسربارگذاری روی operaturگویند. فصل هفتم تجزيه تحليل و طراحي ش يء گرا Object-orinted & analysis and design(OOAD) ) Object-orinted & analysis(OODیاتجزیه وتحلیل وطراحی ش ی گرا:درتولیدنرم افزارهمانطورکه میدانیم یک processیایک فرآینداتفاق می افتاداین فرآیندها شامل فعالیت هاوکارهای مختلفی است که ازمیان آنها می توان برخی ارمهم ترین فعالیت ها درتولیدنرم افزاربه برخی ازفعالیت هاشامل تحلیل وطراحی وبرنامه سازی اشاره کرد. بحث جامع وتکمیل درارتباط بافرآیندتولیدنرم افزاردرمحیط این درس نیست امامادراینجا تنهابه فعالیت مهم که عبارتنداز -1:تجزیه وتحلیل وطراحی درنرم افزارهای ش ی گرا می باشداشاره مختصرمی کنیم. تجزیه وتحلیل ش ی گرا):(ooD درتجزیه وتحلیل ش ی گرا درآینده حوزه کاری موردبررس ی قرارمی گیردوپس آن کالس هاوآبجکت های لزم برای بیان یامعرفی آن حوزه کاری مشخص می شود. بعدازبررس ی حوزه کاری Objectهای مشابه (باویژگی ورفتارهای مشابه)شناسایی وتبدیل به کالس می شود. دربعض ی اوقات بنابه نیاز خصوصاتفکرمولفه گراحوزه کاری بصورت کامل موردبررس ی قرارمی گیرداین امربه این مفهوم است که شایدobjectویژگی ورفتارها که درحوزه کاری فعلی وجودنداردامادرحوزه های کاری مشا به دیگرمی تواندوجودداشته باشدونیزتعریف شودبه این کار OODAیاobject oriented domain analysisگفته می شود. هدف این کارساخت قطعات نرم افزاری است که نه تنهابرای سیستم فعلی بلکه برای سیستم های دیگرنیزقابل استفاده باشداین امرتبلور object oriented domainیکی ازمهم ترین اهداف ش ی گرایی یاهمان قابلیت استفاده مجددمی باشد. )object oriented domain(OOD همان طورکه دیدیم درمرحله ی تجزیه وتحلیل ش ی گرابابررس ی حوزه مشخص کردیم. کاری درابتدا objectوپس ازآن کالس ها را درطراحی هدف ساخت الگوی کامل کالس هادرارتباط آنها می باشدکه بتوان ازروی آن مدل کدنویس ی راانجام داد. درطراحی ش ی گرا ارتباطات بین celasهاوobjectها مشخص می شودونکات تفصیلی دررابطه ی باساختارکالس هانیزتعیین می گردد. زبان برنامه نویس ی دراینجایک نقش بسیارمهم داردزیرا امکانات زبان برنامه نویس ی مورد استفاده درانتخاب الگوهای طراحی می تواند تاثیرگذارباشد. مروری برفرآیندتجزیه وتحلیل برفرآیند ش ی گرا درتجزیه وتحلیل وطراحی ش ی گرابه صورت کلی مراحل زیرانجام می شود. -1بررس ی ومطالعه حوزه کاری وانتخاب وتعیین آبجکت وکالس. -1-1آبجکت معمول درابتدامشخص می شود. -1-2برمبنای گروه بندی آبجکت های مشابه کالس راتعیین می کند. -2شناسایی بين آبجکت هاوکالس. -2-1ارتباط ساختاری(.(structur relation ship -2-2ارتباط همکاری)(collabrative relation ship -3مشخص کردن مسئولیت ها. -3-1مسئولیت هامی توانددریک ارتباط همکاری بین کالس ها تقسیم شود. -4انجام تکرارهای مختلف درتحلیل،طراحی وپیاده سازی به منظوراصالح ساختارورفع مشکالت (.الگوی خطی به دردنمی خورد). پايان بخش اول