در اين بخش مي‌توانيد به مباحث مربوط به انواع زبان هاي برنامه نويسي بپردازيد
Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

شی گرایی در #C

توسط Present » جمعه 4 اسفند 1391 23:59

با عرض سلام خدمت دوستان گرامی
مدتی بود دیدم که قسمت برنامه نویسی انجمن غیر فعاله و مطلب جدیدی نداره .
با اجازه آقا مهدی و بقیه اساتید می خوام که این قسمت رو با مبحث شی گرایی در سی شارپ راه اندازی کنم و رونقی بهش بدم . از اساتید محترم هم در خواست می کنم هر کجا که ایرادی در مطالب دیدن با بزرگ منشی خود آن را گوشزد کنند و اصلاح .
اگر دوستان در مراحل بعد که وارد کد نویسی می شیم می توانند در زبانهای دیگر شی گرایی را پیاده سازی کنند با پیشرفت این صفحه مطلب رو بگذارند تا همه استفاده کنند .
قابل ذکر هست که این مطالب رو از استاد بزرگ وار اسلام احمدزاده یاد  گرفتم ومطالبی هست که در ترم های گذشته از ایشون آموختم . ممکنه بعضی از جاهای سخنان آن استاد بزرگوار کم و کاست شده باشد از این استاد و بقیه عذر خواهی می کنم .
استفاده از این مطالب با ذکر منبع یعنی سی سی خودمون بلامانع است .
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

sinaset از این پست سپاسگزاري کرده است

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
MISSILE, behrad90, nima-rad, AGeNiS1, Mamal_Moj, abbas.m.k, Ghost Rider, Seymon86, ARafiee, Mahdi1944, Erratic, CAPTAIN PILOT, Mahdi Mahdavi

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » شنبه 5 اسفند 1391 00:15

تکامل روش های برنامه نویسی :
روش رویه ای : تعدادی تابع پشت سرهم نوشته می شد و از قرار گیری آنها برنامه ساخته می شد .
روش ماژولار: قسمت (تکه ) کردن کدنویسی را گویند ، مثل بحث unit ها در C و هنوز هم تا حدودی این روش در شی گرایی ادامه دارد .
روش انتزاع ( ساده سازی ، abstract) : هر نوع داده حاوی مجموعه ای از داده ها و عملیات روی آن داده ها مثل نوع داده int در C# که محدوده آن مشخص است و عملیاتهای که روی آن انجام می شود شامل *و-و+و% است یا مانند نوع داده list که عملیاتهای insert,del,.. بر روی آن قابل اجرا است .
در ساختمان داده ها مهم است که بدانیم این عملیات ها برای مثال list چگونه انجام می شود ولی آیا برای کاربر هم مهم است ؟
به طور کلی :
1-     امکاناتی را که لازم داریم در نظر می گیریم . (ساده سازی )
2-     استفاده کننده در گیر جزئیات نشود مانند انچه در ساختمان داده رخ می دهد .
شی گرا :
همه ویژگی های بالایی ها را دارد . شما در دنیای عادی نیز هر چیزی را با دید شی به آن نگاه می کنید . یعنی در نگاه اول یک برداشت کلی از آن شی می کنید . مثلا پریز برق برای رساندن برق به دو شاخه می باشد . این برداشت شما در نگاه اول است ولی در نگاه اول به اینکه درون آن چگونه برق رسانی شده است نمی کنید .
من استفاده کننده در شی گرایی به دنبال جزئیات نیستم . ما در شی گرایی برای مثال کلاس را جوری طراحی خواهیم کرد که کسی که می خواهد از آن استفاده کند در گیر جزئیات نشود . برای مثال در زبانهای مختلف مانند java کتابخانه ها و کلاس های اماده متنوعی وجود دارد ولی به دنبال آن نیستیم که چگونه کار می کند ، فقط با آن کار می کنیم .
یا در جایی ذکر نشده که تابع sort در C# با چه الگوریتمی و روشی پیاده سازی شده است .
تعریف شی گرایی : دیدن و مدل سازی یک سیستم ( دنیا ) را به صورت مجموعه ای از اشیا مرتبط و و متعامل را شی گرایی گویند .
اگر تعامل بین اشیا سیستم نباشد آن سیستم شی گرا نیست .
ادامه دارد ...
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
Seymon86, nima-rad, Mahdi1944, Mamal_Moj, CAPTAIN PILOT, aysan_gh, behrad90, ARafiee, MISSILE, Erratic, abbas.m.k, brid7sky

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » شنبه 5 اسفند 1391 17:59

ویژگی های روش شی گرا:
دنیایی از اشیا متعامل : اگر اشیا متعامل نباشند سیستمی وجود ندارد که به عنوان شی گرا مورد بررسی قرار گیرد .
تشریح و ایجاد سیستم های حاوی اشیا : این برنامه از چه اشیایی تشکیل شده است ، خود این اشیا چه کارهایی می توانند انجام دهند .برای مثال : یک ارگان از چه بخش هایی تشکیل شده است ؟
امورمالی ، ادرای ، حراست و ...
می توان گفت در بخش حراست کارهای ... انجام می شود . یعنی از همان ابتدا نمی گوییم که ما در سازمان ( ارگان ) کارهای ... را انجام می دهیم .
اصول شی گرایی :
-مفاهیم تئوری  : همان UML
- مفاهیم عملی ( پیاده سازی ) : اجرا با زبانهای برنامه نویسی که ویژگی های آنها با هم متفاوت است یا روش های پیاده سازی در آنها .
انتزاع:
ساده نویسی ، یعنی نکات مهم و ضروری را در نظر می گیریم و از نکات غیر ضروری چشم پوشی می کنیم . ویژگی ها در انتزاع باید جوری باشد که از روی آنها ، شی قابل تشخیص باشد . برای مثال موجودی داریم که اسم دارد ، فامیل دارد و شماره دانشجویی ، آن چیست ؟ جواب : دانشجو .
مثال نقض : شی داریم که نام دارد و فامیل ، آن چیست ؟ جواب : کارمند ؟ دانشجو ؟ ؟؟؟؟
•     ساده سازی باید تا حدی باشد که اصل موضوع عوض نشود .
•     در بعضی از جاها موجودیت (Entity ) خود یک انتزاع است مانند مشتری .
•     در بعضی از جاها در یک فرد ( شی ) نوع ویژگی متفاوت است برای مثال :
در سیستم دانشجویی مشخصات یک دانشجو از قبیل نام ، نام خانوادگی ، ش ش ، ... مهم است ولی دور کمر ، رنگ چشم و مشخصات ظاهری ملاک نیست ولی در یک سیستم برای شناسایی افراد در نیروی انتظامی مهم است .
•     انتزاع کردن در سیستم های مختلف ویژگی های متفاوت دارد .
کپسوله سازی:
قرار گرفتن داده و عملیات کنار هم را کپسوله سازی گویند . برای مثال پیاده سازی را از پاراگرام مشتری جدا کنیم .
مانند مثال پریز برق که مانند یک جعبه است که توسط واسط قابل پیاده سازی است ولی اینکه درون جعبه چه اتفاقی می افتد مهم نیست . برای مثال کلاس math در C# عملیات های ریاضی را انجام می دهد چگونه ، مهم نیست .
•     برای جداسازی کاربر از پیاده سازی است .
ماژولاریتی :  
یک سیستم را به چندین زیر سیستم تقسیم می کند که هر کدام از زیر سیستم ها می توانند به صورت مستقل مدیریت شوند برای مثال در یک سیستم دانشگاهی سیستم آموزش و امور مالی از هم جدا هستند ولی با هم تعامل دارند مانند اینکه دانشجو شهریه داده است یا خیر ؟
ماژولاریتی می تواند در level های مختلف انجام گیرد برای مثال سیستم جامع وزارت علوم ( که مشخص می کند که چه دانشگا هایی زیر نظر وزارت علوم هستند ؟) یا سیستم جامع دانشگاه تهران ( که مشخص می کند که دانشگاه تهران از چه بخش هایی تشکیل شده است ؟).
این روند آنقدر ادامه پیدا می کند که کوچک و کوچک تر می شود و شاید به چند کلاس برسیم .( در شی گرایی به کلاس می رسیم ) .
سلسله مراتب : وقتی که تعداد مسائلی که در دنبال می کنیم زیاد باشد و برای آنکه مشخص شود که هر کدام چه ارتباطی با هم دارند درخت سلسله مراتبی را برای آن رسم می کنیم .

به درخت سلسله مراتب ، درخت وراثت نیز گفته می شود . هر چه از بالای درخت به سمت پایین حرکت کنیم جزئیات خاص می شود.( دنیای ما تخصصی تر می شود .) ( specialization)
هر چه به سمت بالا برویم سطح انتزاع افزایش می یابد (generalization)
درخت سلسله مراتب بحث "قابل استفاده دوباره" در مهندسی نرم افزار را برای ما ارائه می دهد.
ادامه دارد ...
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
ARafiee, CAPTAIN PILOT, nima-rad, MISSILE, Erratic, behrad90, Mahdi1944, Mamal_Moj, abbas.m.k

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » جمعه 11 اسفند 1391 12:35

شی چیست ؟
هر انتزاعی که چیز منفردی مدل سازی کند .
نمایش یک نهاد خاص در دنیای واقعی که ممکن است قابل لمس باشد ( فیزیکی ) یا خیر .
مانند : شهروند خاص ، کار خاص ، کتاب خاص
•     وقتی گفته می شود انتزاع منفرد یعنی شی یک چیز واقعی است .
•     ممکن است شی ها فیزیکی باشند یا نباشند . برای مثال : چیزهایی که ما می بینیم فیزیکی است مانند : میز ، خودکار و صندلی و ... ولی شی درس ، واحد و ... منطقی هستند .
•     اگر منظور از یک شی یک فرد زنده باشد ( برای مثال دانشجو) آن شی ، یک شی فیزیکی است ولی اگر منظور مفهوم آن باشد یک شی مفهومی می باشد . مثال های دیگر مانند : استاد ، معلم ، کارمند اداری .

شی دو جنبه دارد :
-رفتاری
-اطلاعاتی
ما باید بتوانیم  هر شی را به طور انحصاری و منحصر به فرد شناسایی کنیم . برای مثال در بانک های اطلاعاتی داریم که در یک جدول هر رکورد باید توسط یک فیلد منحصر به فرد شناسایی شود ، در اینجا نیز باید یک شی توسط یک ویژگی شناسایی شود .
شی باید توسط ویژگی های درونی خود حالت جاری خود را توصیف کند . برای مثال می پرسند : آیا می توانی حالت جاری دانشجویی خود را توصیف کنی ؟
جواب : من مرتضی هستم ، ترم 4 کارشناسی ، معدل کل 17.35 ، شماره شناسنامه من 1234 ، در این ترم 18 واحد درس اخذ کرده ام و ...
حالا به من بگویند برو این درس را حذف کن ، حالت من تغییر می کند ، یعنی تعداد واحدهای من در این ترم کم می شود و ... یعنی با این کار حالت شی من تغییر می کند .
حالت  رفتاری شی :
یعنی شی می تواند که چه کارهایی را انجام دهد و یا چه کارهایی می تواند بر روی آن شی انجام شود . دو دیدگاه وجود دارد

1-     Privateو Public بودن
2-     اینکه اشیا با هم تعامل دارند ؟
دیدگاه public بودن یعنی کارهایی که ما از شی می خواهیم انجام دهد . رفتارهای private یعنی آنهایی که شی درون خود انجام می دهد .
دیدگاه دیگر اینکه اشیاء با هم تعامل دارند یا خیر ؟ یک سری پیام ها دریافت می شود و یک سری پیام ها ارسال می شود . کارهایی که ما با شی انجام می دهیم پیام هایی است که دریافت می شود یعنی صفات Public شی می باشد آنهایی که درون شی انجام می شود یعنی از درون خود شی پیام های برای اشیا دیگر ارسال می شود و صفات Private می توانیم به آنها بگوییم .
برای مثال می خواهیم کلاس تعریف کنیم ، یک سری عملیات Public تعریف کنیم و یک سری عملیات private .
آنهایی که public می باشند یعنی ما می توانیم از بیرون به آنها در خواست بدهیم . آنهایی که private می باشند ما نمی توایم بگوییم که این کار را انجام بده خود شی باید متناسب با نیازش انجام بدهد.
هدف از رفتار چیست ؟
هدف انجام کار است ، چه خود شی انجام دهد چه ما از شی درخواست کنیم برای مثال یک شی چاپگر دارای دو نمونه ویژگی است :
اطلاعاتی ، مانند : شماره سریال ، مدل ، سرعت ، حافظه ، وضعیت
عملیاتی (رفتاری) : چاپ فایل ، متوقف کردن چاپ ، خالی کردن صف .
در چاپگر برای مثال چک کردن موجود بودن کاغذ private می باشد چونکه خود دستگاه چک می کند که کاغذ دارد یا خیر ؟ اراده ما مهم نیست ولی در صورت نبودن کاغذ به ما اطلاع می دهد . زمانی ما می خواهیم که عملیات چاپ متوقف شود ، عملیات public می شود ، چونکه ما از چاپگر می خواهیم .
در بعضی از جاها چک کردن کاغذ private نمی باشد برای مثال چاپگر ما امکان نمایش status چاپگر را دارد و با فشار دادن کلیدی وضعیت پرینتر از جمله موجود بودن رنگ ، کاغذ و ... چک می شود ، در اینجا public می باشد.
ادامه دارد ...
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
behrad90, Mahdi1944, MISSILE, abbas.m.k, ARafiee, nima-rad, Erratic, Solver

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » پنج شنبه 17 اسفند 1391 23:20

کلاس:
اگر مجموعه ای از اشیا که ویژگی های مشابه ای دارند را درون هم قرار دهیم می گوییم کلاس می باشد . برای مثال همه ما شی دانشجو می باشیم ، به مجموعه ما دانشجویان ، کلاس دانشجو می گویند.کلاس بیانگر یک قالب می باشد با یک ساختار کلی می باشد که هر گاه می خواهیم از روی آن شی بسازیم توسط این قالب ساخته می شود .
برای مثال هر چیزی از روی  Int ساخته می شود شامل قوانین int می شود .
برای مثال متغیرهایی که از روی int ساخته می شوند می توانند عدد صحیح بگیرند ، دامنه مقادیر آنها مشخص است و فلان عملیات ها نیز می توان بر روی آن انجام داد . زمانی که int x; را به کار می بریم یعنی متغیر x از قوانین int پیروی می کند .

صفت :  
ما اشیایی داریم که هر شی یک سری ویژگی رفتاری دارد و یک سری ویژگی های داده ای سپس آنهایی که ویژگی های مشابه ای داشتند را دسته بندی کردیم و درون یک کلاس قرار دادیم .
همانگونه که در درس بانکهای اطلاعاتی بررسی می کردیم  ، که موجودیتی دارای یک سری صفات است که، هر صفتی بیانگر یک داده در مورد همان نهاد می باشد ، در شی گرایی نیز به همان صورت است که هر صفت یک نام دارد و یک داده . برای تشریح یک شی باید بدانیم که چه صفاتی را خواهیم داشت . برای مثال اگر یک شی دانشجو داشته باشیم و این شی دارای صفاتی مانند نام ، نام خانوادگی ، شماره دانشجویی و ... باشد و اگر به آنها مقادیر بدهیم وضعیت آن شی را تشریح می کنیم .


ادامه دارد ...
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
MISSILE, ARafiee, abbas.m.k, behrad90, Mahdi1944, Erratic

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » جمعه 18 اسفند 1391 12:12

عملیات:
هر کلاس و شی دو قسمت دارد : رفتار و داده ها
رفتار ( عملیات ) : هر کلاسی قرار است یک سری خدمات به ما بدهد که زمانی که خدمات آن را پیاده سازی کردیم می گوییم عملیات آن را پیاده سازی کرده ایم . منظور از خدمات عملیات است که یک شی یا کلاس ارائه می دهد .

خدمات و عملیات دو نمونه هستند : سئوال و فرمان
یک سری از عملیات ها فقط اطلاعات را بر می گردانند برای مثال زمانی که از دوست دانشجو خود می پرسیم نام شما چیست؟ معدل شما چند است ؟
زمانی به دوست دانشجو خود می گوییم برو فلان درس را انتخاب کن به اینگونه از خدمات می گوییم خدمات فرمانی چون، ممکن است وضعیت شی تغییر دهند .
عملیات سئوالی وضعیت شی را تغییر نمی دهد ولی عملیات فرمانی وضعیت شی را تغییر می دهد . ( ممکن است )

انتزاع کلاس :
بحث انتزاع یعنی ساده سازی دنیای واقعی است . برای مثال در بحث شی دانشجو اطلاعاتی بسیار زیادی موجود می باشد . مانند :  نام ، نام خانوادگی ، ش ش ، شماره دانشجویی ، معدل ترم ، معدل کل ، تعداد واحد اخذ شده و ...
می گوییم می خواهیم کلاسی به نام دانشجو با ویژگی های نام ، نام خانوادگی ، شماره دانشجویی و میزان بدهی یا بستانکاری برای بخش امور مالی دانشگاه بنویسیم از ویژگی های شی دانشجو که به صورت کلی موجود است کم می شود .
برای مثال می خواهیم قسمت آموزش را پیاده سازی کنیم . در اینجا ویژگی های که از یک دانشجو نیاز داریم ویژگی های آموزشی دانشجو می باشد . حالا می خواهیم قسمت خوابگاه را به سیستم اضافه کنیم ، کلاس قبلی موجود است و این کلاس را اضافه می کنیم و با امکانات جدید که به بحث خوابگاه بخورد پیاده سازی می کنیم .
عملیات ها در سیستم های شی گرا به مراتب ساده تر و آسانتر از سییستم های غیر شی گرا است .
برای مثال سقوط پهباد که در ایران سقوط کرد مهندسین به دید شی گرا به آن نگاه کردند و قسمت های مختلف را در کنار هم قرار دادند و ... مهندسین در این مثال هر دفعه بروی قسمتی از پهباد کار کردند برای مثال ابتدا اجزا را باز می کنند و دوباره می بندند و مشاهده می کنند که آیا باز پهباد کار می کند ؟ بعد در یک قسمت دیگر یک جز خاص را مورد مطالعه قرار می دهند و وارد جزئیات ان می شوند . هیچگاه مهندسین با هم تمام اجزا پهباد را باز نمی کنند .
ساده سازی را انجام می دهیم تا جایی که اصل موضوع عوض نشود و نکات اساسی را مد نظر قرار می دهیم .
زمانی که یک سیستم را به صورت انتزاعی پیاده سازی کردیم زمانی که تغییری در سیستم پیدا شود در وضعیت انتزاع ما نیز تغییرات ایجاد می شود . برای مثال بخش نامه ای آمده که اگر دانشجویی در درس x افتاده باشد و در ترم بعد آن درس را با نمره بالای 14 پاس کند نمره قبلی از کارنامه دانشجو پاک می شود . این بخشنامه که در دنیای واقعی رخ داده باید در دنیای انتزاعی نیز رخ دهد .
ادامه دارد ...
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
behrad90, ARafiee, MISSILE, Mahdi1944, Erratic, abbas.m.k

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » جمعه 18 اسفند 1391 13:23

بهتره که یک توضیح در مورد این درس بدم و روش گذاشتن اون روی اینرنت توسط من
این واحد رو من در ترم های گذشته گذروندم و از روی فایل پی دی افی که در ادمه ارائه می کنم توضیح می دهم . البته قابل ذکر است که باز هم باید از استاد بزرگوار اسلام احمد زاده که واقعا می تونم بگم یکی از بهترین استادهای بنده در دوران تحصیل بنده بودن تشکر کنم . ایشون در ارئه درس مباحث ویژه ( برنامه نویسی #C ) و شی گرایی با سی شارپ واقعا حرف ندارند و یکی از استادان زبر دست در این دروس می باشند .
در ادامه و پست بعدی به پایان جلسه یک درس شی گرایی می رسیم و در ادامه به پیاده سازی مفاهیم ارائه شده می پردازیم .
فایل ضمیمه :
http://www.4shared.com/office/Pv2YUwN4/ ... _OOAD.html
همانگونه که در پی دی اف می بینید درس به صورت اسلاید ارائه شده و تا مثالی برای شما آورده نشود از مفهوم آن سر در نخواهید آورد .
قابل ذکر است که برای فهمیدن کدها که در ادامه مطالب خواهد آمد آشنایی تا سطح متوسط از زبان برنامه نویسی C# اجباریست .
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
MISSILE, ARafiee, Mahdi1944, Erratic, abbas.m.k

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » پنج شنبه 23 خرداد 1392 00:12

با عرض معذرت از دیر شدن ادامه بحث .

واسط ها (Interface):
زمانی که می خواهید از یک شی استفاده کنید به یک سری حداقل اطلاعاتی نیاز دارید و آن حداقل اطلاعات و امکانات مورد نیاز برای استفاده از شی Interface گفته می شود ، برای مثال :
یک پریز برق بدون داشتن دو سوراخ پریز بدرد نمی خورد ، یا یک ماشین بدون کلاچ و دنده و ترمز و... بدرد نمی خورد .
اگر یک کلاس تعریف کنیم و و همه چیز آن Private  باشد بدرد نمی خورد ، شاید در بحث وراثت بدرد بخورد ولی به تنهایی بدرد نمی خورد .
هر چیزی برای آنکه بتوان از آن استفاده کرد نیاز به یک واسط دارد . تا زمانی که شما یک مختصر اطلاعاتی از یک کلاس نداشته باشید نمی توانید از آن کلاس استفاده کنید ، اینترفیس (واسط) معرف امکانات می باشد و ممکن است پیاده سازی نداشته باشد . برای مثال :
در زبان برنامه نویسی c فایل h.*  به تنهایی بدرد نمی خورد و باید حتما با مکمل خود یعنی cpp.*  باشد ، چون در h.* توابع را معرفی می کنیم و در cpp.*  آنها پیاده سازی شده اند .
برای مثال :
واسط رسم مستطیل در #C ( به اختصار) :
  
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


پیاده سازی :
باید تک تک امکانات واسط پیاده سازی شوند تا آن شی قابل استفاده شوند .

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

در زمان پیاده سازی کلاس باید جامعیت رعایت شود ، برای مثال :
در کلاس دانشجو ، شی دانشجو نباید یک درس را دو بار پاس کند ، آن هم با نمره بالا .

ادامه دارد...

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
abbas.m.k, MISSILE, ARafiee, Mahdi1944

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » پنج شنبه 23 خرداد 1392 01:00

رابطه ها و پیوندها :

ارتباط بین کلاس ها را رابطه می گویند .
ارتباط بین اشیا را پیوند می گویند .


انواع روابط بین کلاس ها :

انجمن ،تجمع ( تجمع ضعیف) ، ترکیب ( تجمع قوی )

انجمن :

در شی گرایی، اکثر روابطی که داریم ، انجمن خواهند بود ، چون در یک سیستم ، اشیا با تعاملاتی که با هم دارند یک سیستم را تشکیل می دهند . می توان گفت که هر تعامل با هم ، با رابطه انجمن ارایه می شود . یک شی باید از وجود یک شی دیگر آگاه باشد .
از نظر برنامه نویسی باید برای اجرای انجمن بین دو کلاس ، ، شی از یک کلاس را درون کلاس دیگر تعریف کرد .
از نظر تئوری ، زمانی که یک شی می خواهد برای یک شی دیگر پیامی را ارسال کند باید نام شی را بداند ، تا بتواند به آن شی بگوید که آن کار را انجام بده یا نده . برای مثال :
فرم 1 داریم و می خواهیم توسط این فرم ، فرم دیگری را باز کنیم ، نیاز است که نام فرم دیگر را بدانیم ، در #C این کار با ارجاعات قابل پیاده سازی است .

در پیاده سازی انجمن قرار است ما آن شی را در دسترس داشته باشیم نه در اختیار و برای در دسترس بودن نیاز است که ما یک اشاره (ارجاع) از آن شی داشته باشیم .
نحوه نمایش یک انجمن به صورت یک خط مستقیم است . در بعضی از جاها رابطه انجمن می تواند یک طرفه هم باشد .

بیشترین جملات پر کاربرد در تعریف انجمن :
Aبه دنبالB است .
A با B ارتباط بر قرار می کند .
B،A را استفاده یا مدیریت می کند .

زمانی که شما یک مساله را مطالعه می کنید ممکن است جملات ما به شکل های مختلف بیان شود .
برای مثال :

شما از دوست دانشجوی خود می پرسید این ترم چند واحد درسی داری ؟ به جای اینکه بگوییم این ترم چه درسهایی را گرفته ای ؟
این اشتباه است چون رابطه بین درس و دانشجو همکاری است و نه مالکیت .
مالکیت ، مفهوم تجمع را هم می رساند .


ادامه دارد ....

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
abbas.m.k, MISSILE, ARafiee, Mahdi1944

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: شی گرایی در #C

توسط Present » پنج شنبه 23 خرداد 1392 01:17

با عرض سلام خدمت اساتید محترم .
تا به پایان بحث چیز زیادی نمانده است .
سر فصل های آینده :
تجمع
ترکیب
تعمیم
انتزاع
کلاس انتزاعی
کلاس واقعی
جدا کننده
چند ریختی
واقعی سازی
بعد از این سر فصل ها نوبت به جاهای جذاب کار یعنی پیاده سازی آنها توسط C# می رسد .
از دوستان خواهشمندم که اگر نظر و یا پیشنهادی در بهبود روند کار دارند ارایه دهند .
با تشکر
پروانه نیستم که به یک شعله جان دهم / شمعم که سوزم و دودی نیاورم

گــــــــــــــــاهی تــــــــــــــاوان شیــــــــــر بودن قـــفس اســـت ...
امــــــــا شـــــغال هــــا در شـــــهــــر آزاد مـــــیگـــــــردنــــــــــد ... !

به زودی تعمیرکار لب تاپ می شم :-)

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
abbas.m.k, MISSILE, ARafiee, Mahdi1944


چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 1 مهمان