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انجام تکرارهای مختلف درتحلیل،طراحی وپیاده سازی به منظوراصالح ساختارورفع
مشکالت (.الگوی خطی به دردنمی خورد).
پايان بخش
اول