صفحه 1:
2 رةه
Orie ntecl
Programming
برنامه نویسی شی گرا
گردآورنده: وحید
صفحه 2:
0
inet
برای این که بدانیم برنامهنویسی شی.گرا چیست. ابتدا باید نقیض آن
را بشناسیم. زبانهای برنامهنویسی اولیه به صورت رویهای بودند. دلیل
اين نامكذارى آن بود كه در اين زبانهاء برنامهنویس باید مجموعه خاصی
از رویهها را تعریف مینمود که رایانه آنها را به ترتیب اجرا مىكرد.
زبان های رویه ای
صفحه 3:
در زمانهای نخست برنامهنویسی, رویهها بر روی کارتهای پانچ
نوشته میشدند. رایانهها بدین ترتیب دادهها را گرفته یک توالی
از اقدامات را بر روی دادهها انجام داده و سپس دادههای جدید را
در خروجی ارائه میکردند.
زبانهای رویهای تا مدتها به خوبی کار میکردند و برخی از آنها
نیز همچنان مورد استفاده قرار میگیرند. اما زمانی که قرار بود
برنامهنویس کاری را خارج از ترتیب مقدماتی مراحل انجام دهد.
مدیریت زبانهای برنامهنویسی دشوار میشد. بدین ترتیب
زبانهای برنامهنویسی شی.گرا وارد عرصه شدند.
زبان های رویه ای
صفحه 4:
سوالی که در این جا مطرح میشود. این است که برنامهنويسي
شی,گرا چیست؟ نخستین زبان برنامهنویسی شی,گرا (که عموما
ا
اد بر aul است 511221118 بوده است) ايده اشيا را معرفى كرد.
اشیا مجموعهای از اطلاعات هستند که به عنوان واحدی منفرد با
آنها رفتار میشود.
اين مفهوم را با ارائه مثالی در ادامه wy +
نخست در مورد کلاسها صحبت میکنيم. کلاسها نوعی از اشیای
مقدماتی هستند. آنها فهرستی از خصوصیات دارند که وقتی
تعریف میشوند. تبدیل به يك شیء میگردند.
صفحه 5:
هدف از بر نامهنویسی شیءگرا
صفحه 6:
. در بازی شطرنج میتوانیم
کلاسی به نام «مهره» (۳1606) داشته باشیم. درون اين كلاس مهره.
فهرستی از خصوصیات را به صورت زیر داریم:
هر شینی صرفاً یک وهله خاص از چیزی که به آن کلاس تعلق دارد را
تعریف میکند. بنابراین میتوانیم
این شی. میتواند
در هر جهت) این شیء میتواند متدها یا تابعهایی نیز داشته
هدف از برنامهنویسی شیءگرا
صفحه 7:
سوّالی که در این مرحله ممکن است بپرسید این است که چه چیزی
باعث میشود برنامهنویسی شی:گرا بهتر از برنامهنویسی رویهای
باشد؟ به طور خلاصه باید گفت که زبانهای برنامهنویسی شی:گرا
مانند جاوا امکان سازماندهی دادهها و کد را به ترتیبی فراهم
میسازند که در پروژههای بزرگتر سازگاری بیشتری داشته باشند.
براى اين که این مسئله را توضیح دهیم در ادامه چهار اصل
برنامهنویسی شی:گرا را توضیح خواهیم داد.
اصول برنامهنویسی شیء گرا
صفحه 8:
منهوم تجرید در برنامه نویسی شیءگرا
صفحه 9:
همین مسئله در مورد برنامهنویسی شی:گرا نیز صدق میکند. در
مثال بازی شطرنج میتوانیم یک متد (100۷60 داشته باشیم. اين
متد ممکن است نیازمند مقادیر بالایی از دادهها و متدهای دیگر
باشد. همچنین ممکن است نیازمند متغیرهایی به صورت موقعیت
sate ja ele 9 ool علاوه بر این موارد ممکن است به یک متد
برای زمانی که مهرهای یک مهره دیگر را میزند نی
باشد.
اما نیاز نیست که اینها را بدانید و همه آتجه كه بايد بدانيد اين
است که زمانی که از مهرهای میخواهیم حرکت کند. مهره حرکت
میکند. اين مفهوم تجرید است.
مفهوم تجرید در برنامهنویسی شیءگرا
صفحه 10:
این که قصد دارید از چیزی
استفاده کنید. دلیل نمیشود
که طرز کار آن را مىدانيد. براي
متال یک دستگاه اسپرسو کاملً
پیچیده است. اما شما لازم
نیست طرز کار آن را بدانید.
شما کافی است بدانید که وقتی
دکمه روشن دستگاه را میزنید.
اسپرسو دریافت خواهید کرد.
منهوم تجرید در برنامه نویسی شیءگرا
صفحه 11:
کیسولهسازی یکی از
روشهایی است که
برنامهنویسی شی,ءگرا برای
ساخت تجرید استفاده میکند.
methods j ib
هر شی.ء مجموعهای از دادهها
است که با تن به عنوان یک
واحد مجزا برخورد میشود.
درون این اشیا نیز دادهها به
صورت متغیر و متد قرار دارند.
variables هن 05
مفهوم کبسولهسازی در برنامهنویسی شیءگرا
صفحه 12:
متغیرهای درون شی: به طور کلی مجزا باقی میمانند و اين به آن معنی
است که اشیا و متدها نمیتوانند به همدیگر دسترسی داشته باشند.
اشیا تنها از طریق استفاده از متدهایشان تأثیر میپذیرند.
یک شی+. وزیر میتواند شامل بخش از اطلاعات باشد. برای نمونه
میتواند متغيرى به نام «موقعیت» داشته باشد که مکان آن را روی
: برای استفاده از متد ppjU MOVE()
نيز دارد.
با اعلان خصوصى متغير موقعيت و اعلان عمومى متد ()1201/6
برنامهنویس میتواند از ى متغيرهاى حركت از اشياى ديكر
جلوگیری نماید. رنگ مهره نیز اگر به صورت خصوصی اعلان شود.
اشیای دیگر نمیتوانند آن را ت دهند؛ مگر این که متدی اجازه el
کار را به آنها بدهد. البته در اين مورد چنین کاری مجاز نیست چون
رنگ مهرههای شطرنج همواره ثابت است.
مفهوم کپسولهسازی در برنامه نویسی شیءگرا
صفحه 13:
مفهوم ورائت در برنامهنویسی شیءگرا
صفحه 14:
زبانهای برنامهنویسی شیءگرا علاوه بر کلاس دارای زیرکلاس نیز
هستند. این زیرکلاسها شامل همه خصوصیاتی هستند که کلاسهای
والدشان دارند؛ اما میتوانند خصوصیات دیگری را ث
در مورد مثال بازی شطرنج» مهرههای پیاده به متدی نیاز دارند که در
صورت موفقیت در رسیدن به انتهای صفحه, آنها را به وزیر تبدیل
كند. مثلاً اين متد را مىتوان () 721151017112160 نا
همه مهردها به جنين متدى نياز ندارند. بنابراين لازم نيست كه اين
عفد را خر گلاس مورهها قرار دهیم. بلگه میتوانیم یک زیرگلاس از
کلاس مهرهها به نام «پیاده» ایجاد کنیم. از آنجا که زیرکلاسها همه
خصوصیات کلاس «مهره» را ارث میبرند. این وهله از زیرکلاس
«پیاده» نیز شامل رنگ, ارتفاع» شکل و حرکتهای مجاز خواهد بود.
صفحه 15:
اما علاوه بر خصوصیات فوق یک متد 4s jo transformPiece()
آن تعریف میکنیم. در این حالت لازم نیست که نگران استفاده
نادرست از اين متد بر روی مهره رخ (قلعه) باشیم.
ایجاد زیرکلاسها باعث صرفهجویی زیادی در زمان برنامهتویسی
میشود. به جای ایجاد کلاسهای جدید برای هر چیز. میتوان تنها
یک کلاس پایه نوشت و سپس آن را هر زمان که نیاز باشد. به
زیرکلاسهای جدید گسترش داد. البته تکیه زياد بر روى وراتت د
جنبههای منفی خاص خود را دارد که در این ته فرصت پرداختن
به آنها نیست.
صفحه 16:
ا
مفهوم جندريختى در برنامهنويسى شىءكرا
صفحه 17:
2 3 ورائت است. درک کامل < یختی نیازمند کسب
حداقلی از دانش برنامهنویسی است و از این رو در این بخش تنها
به صورت مقدماتی ّن را معرفی میکنیم. به طور خلاصه چندریختی
به برنامهنویس امکان میدهد که متدهایی با نام یکسان را بر روی
اشیای مختلف استفاده کند.
برای نمونه فرض کنید در کلاس «مهره»-ها که در بخشهای قبلی
تعریف کردیم یک متد ۳10۷6() داشتیم که هر مهره را در همه
جهات به اندازه یک واحد حرکت میداد. این متد برای مهره شاه
مفید است؛ اما فقط برای این مهره به درد میخورد و در مورد
مهرههای دیگر به کار نمیآید. برای حل این مشکل میتوانیم متد
()10076 جدیدی در زیرکلاس «مهره رخ» تعریف کنیم که به صورت
حرکت به تعداد نامحدود در جهتهای جلو عقب. چپ و راست باشد.
مفهوم چندریختی در بر نامه نویسی شیءگرا
صفحه 18:
در این حالت زمانی که برنامهنویس متد MOVE() )1 فراخوانی میکند.
نوع مهره را نیز به عنوان ورودی (آرگومان) متد ارسال میکند تا برنامه
زیادی صرفهجویی میشود. این زمان بدون وجود چندریختی باید صرف
اين مىشد که تشخیص دهید چه نوع حرکتی باید انجام دهید.
مفهوم چندریختی در برنامهنویسی شیءگرا
صفحه 19:
برنامهنویسی شی:گرا اطاعاتی را در واحدهای منقرد به نام شی:
گردآوری میکند.
هر شی: وهله منفردی از یک کلاس است
تجرید. باعث مخفی شدن طرز کار درونی شی,ء در مواردی که
لزومی به افشای آن نیست میشود.
* کیسولهسازی. متغیرها و متدهای درون اشیا را به هم مرتبط
میسازد و از آنها حفاظت میکند.
* ورائت. امکان استفاده زیرکلاسها از خصوصیات کلاسهای والد
را فراهم میسازد.
* چندریختی به اشیا و متدها امکان مدیریت موقعیتهای مختلف با
یک رابط منفرد را میدهد.
برنامهنویسی شیءگرا به صورت خلاصه
صفحه 20:
وبلاگ فرادرس