آموزش جامع شی گرایی در سی شارپ
Post on 16-Apr-2017
199 Views
Preview:
TRANSCRIPT
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
گرایی در سی شارپشیئ آموزش جامع
:مدرس
رشید شجاعی
کارشناس ارشد کامپیوتر گرایش نرم افزار
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
:گراشینویسیبرنامهمفاهیماشیاءوهاکالس•دسترسیهایکنندهتعیین•سازیکپسوله•وراثت•واسط•چندریختی•تجردوسازیخالصه•انتزاعیهایکالس•
OOP: Object Oriented Programming
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
برنامهنویسیهبشروعونشستهکامپیوترپشتراحتیبهنمیتوانیدپیچیدهوبزرگپروژههایبرای.کنیدتعیین)کنیدلتحلیوتجزیهراپروژهنیازمندیهایبدقتبایستیحل،راهبهترینبهدستیابیبرایسازدبرآوردهراآنهاکهدهیدتوسعهراطرحیو(دهدانجاممیخواهدکارچهسیستمکهکنید
ازلقبایدهآلحالتدر.(باشدخودوظایفانجامبرایصحیحتصمیمگیریبهقادرسیستم)آیندفرایناگر.دهیدانجامراطراحیدقتبهورفتهفرآیندسراغبهبایدکدنویسی،هرگونهobject-orientendراآنباشد،شیگرانظرنقطهازسیستمطراحیوتحلیلمستلزم
analysis and design (OOAD)بابرنامهنویسان.میگویندشيگراطراحيوتحليلیافهجوییصربسیاربرنامهایجادهزینهوزماندرمیتواندطراحیوتحلیلکههستندمطلعتجربهیشوندمباعثوکشاندهشكستبهرابرنامهبارهردرکهضعیفطرحهایاعمالازاجتنابباکند،ازمختلفیپردازشهایچهاگر.استزمانوهزینهتحمیلهمانکهگرددآغازابتداازکار
OOADفرآیندهرنتایجنمایشبرایگرافیكیزبانیكامادارد،وجودOOADهمهازبیشترUMLزباناین.استشدهگرفتهبكار (Unified Modeling Language)در.داردنامکردنمدلبرایگرافیكینمایشطرحهایپرکاربردترینازیكیUMLزبانحاضرحال
پیشآموزشیمجموعهسراسردرزباناینازسیستمهاکردنمدلبرای.استشیگراسیستمهای.کردهایماستفادهرو
OOAD & UML
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
اییاشیبرایکالسیكخواهیمکنیدفرضیكبرای.کنیمایجادمستطیلنوعاز
هماننددادهایاجزاءمیتوانیممستطیلهمچنین.بگیریمنظردرعرضوطول
ندهمانتابعیاجزاءهمانیامتدهامیتوانیمهمچنینولطووعرضکردنتنظیم
.بگیریمنظردرمحیطمحاسبه
ایجادیککالسبرایمستطيل:مثال
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
.شودمیاستفادهمقابلبصورتclassکلیدیواژهاز#Cدرکالسایجادبرای
•Modifier:دستیابیسطح.کندمیمشخصراکالسبهدستیابیسطحسطحدوااینجدر.شوددستیابیبایدچگونهشدهتعریفکالسکهکندمیمشخصpublicدستیابیسطحوقتیinternalوpublic:داریمکالسبرایدستیابیعریفتآندرکهنامیفضایازخارجکالساینکهاستاینمعنایبهشودتعریف
عدمیمعنابهعمومیدستیابیسطحدیگر،بعبارت.استاستفادهقابلشودمیکهکندمیمشخصinternalدستیابیسطح.استدستیابیدرمحدودیتیوجوداستفادهقابلشودمیتعریفکهنامیفضایهماندرفقطکالس.شودمیتعریفinternalفرضپیشبصورتModifier.است
•class:کاربهکالستعریفبرایصورتهمینبهکهاستکلیدیایواژه.رودمی
•name:گذارینام.گرددمیانتخابکالسبراینویسبرنامهتوسطکهاستنامی.کندمیپیرویهاشناسهبراینامگذاریازکالس،برای
•classmember:وایدادهاعضاءشاملوکندمیمشخصراکالساعضای.باشندمیکالستابعیاجزاء
شکلکليتعریفکالس[modifier] class name
{Classmembers
فرادرس{
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
توسطرفتهبكارگرافیكیزبانیكUMLکهداریدبخاطرقبلمطالبازهر.تاساستانداردروشیكبهشیگراسیستمهاینمایشبرایبرنامهنویس
ازیمدلسقسمتسهباومستطیلیكبصورتکالسنموداریكدرکالسورتبصوگرفتهقراروسطدرکهاستکالسنامحاویفوقانیبخش.میشود
انیتحتبخشواستکالسصفاتحاویمیانیبخش.میشودنوشتهتوپرعضودادهمدلسازیبهمبادرتمقابلدیاگرام.استکالسعملیاتحاوی
lengthوbreadthاستکردهکالسمیانیبخشدرایدادهاجزاءبعنوان.UMLتصفنوعوکولنیكصفت،نامآندرکهلیستیدررادادهاعضای
کهاستintنوعازbreadthوlengthصفاتنوع.میکندعرضهگرفتهقرارحالت#Cدرbreadthوlengthدادهایاعضاء.میباشد#Cدرintبامتناظر
privateناممقابلدر(-)عالمتیكباکالسدیاگرامدراینروازودارندتصریحکنندهبامعادلUMLدرمنفیعالمت.استشدهمشخصصفت
عضوتابعسهحاویRectangleکالس.است#Cدرprivateدسترسیpublicبخشدرعملیاتسهاینکالسدیاگراملیستدراینرواز،استیدهدمنشانعملیاتهرنامقبل(+)جمعنماد.گرفتهاندجایسومیاتحتانی
ازپارامتریكدارایsetlengthعملیات.داردpublicحالت#CدرعملیاتکهنوعوکولنیكدادنقرارباعملیاتیكازبرگشتینوعUMLدر.استintنوع
.میشودمشخصعملیاتنامپرانتزهایازپسبرگشتی
Class Diagramنمودارکالسبرایمستطيل
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
شکلکليایجادکردناجزاءتابعيیامتدهایکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
classکالسمستطيل Rectangle{
// two fieldsprivate int breadth;private int length;
// three methodspublic void setLength(int newValue)
{length = newValue;
}public void setBreadth(int newValue)
{breadth = newValue;
}public int getarea()
{return 2 * (length + breadth);
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
رویازmyrectبنامشیمقابلشكلدر.شدهایجادRectangleکالس
شکلکليایجادکردنیکشيازرویکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
ایجادکالسیكرویازکهاشیائیتماماجزاءتمامحاویاختصاصیبطورشوندمی
.هستندمذکورکالس
تعریفاشياءRectangle myrect1 = new Rectangle();Rectangle myrect2 = new Rectangle();
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
کردنتعریفدرnewدستورازصورتیكهدرود،شمینایجادشینكنیماستفادهاشیاءادایجگراشارههمانیامرجعیكتنهابلكهتوانمیشكلمطابقبنابراین.شودمی
.دادانجاممرحلهدودرراشیتعریف
ایجادکردناشارهگریاهمانمرجعبهاشياء
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
تعریفدرnewدستورازصورتیكهدرایجادشینكنیم،استفادهاشیاءکردن
همانیامرجعیكتنهابلكهشودمینئیشبهتواندمیکهشودمیایجادگراشارههبوشوددادهنسبتشدهایجادقبالکه
گرفتهنظردرمذکورشیدومنامعنوان.شود
نسبتدادنیکمرجعبهیکشيموجود
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
تعالمشی،نامابتدامتدهافراخوانیبرایقادیرمونویسیممیرامتدنامسپسونقطه
نیازموردهایآرگومانعنوانبهرامناسب.کنیممیارسالمتدهابه
نحوهفراخوانياجزاءتابعيکالسیاهمانمتدهاRectangle R1 = new Rectangle();
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
R1برایشيgetlengthفراخوانيمتدRectangle R1 = new Rectangle();
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
اطراف.یمبیاندازخوداطرافبهنگاهیکافیست.میکنیمزندگیاشیاءازدنیاییدرما،ترافیكچراغهایساختمانها،حیوانات،انسانها،هواپیماها،اتومبیلها،ازاستپرما
ابداعراشیگبرنامهنویسیزبانهایاینكهازقبل.دیگرچیزهایازبسیاریوباالبرها،رویبر(BasicوFORTRAN،Pascal،Cهمانند)برنامهنویسیزبانهایشوند،دنیائیردبرنامهنویساناینكهبا.داشتندتمرکزاشیاءیاچیزهابجایactionsیااعمال
تادشباعثتناقضهمینخود.بودندسرگرمافعالباامامیکردندزندگیاشیاءاززبانهایکهاکنونهم.نباشندبرخوردارکافیقدرتازشدهنوشتهبرنامههای
زندگیبهبرنامهنویسانهستند،دسترسدرJavaو#Cهمانندشیگرابرنامهنویسیاسلوبباراخودبرنامههایمیتوانندومیدهندادامهشیگرادنیاییكدرخود
برنامهنویسیبامقایسهدرشیگرابرنامهنویسیفرآیند.بنویسندشیگراتربخشرضایتهمآننتیجهوداردطبیعیتریبسیارماهیت(procedural)روالی.است
Object Oriented Programmingگرابرنامهنویسیشی
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
واقعدرمیباشند؟خاصچراوهستندچهاشیاء
کهاست(package)بستهالگوییكشی،تكنولوژی
کمكمعنیبانرمافزاریواحدهایایجاددرمابه
ابرنامههخاصنواحیبرزیادیتمرکزاشیاء.میکند
زمان،تاریخ،اشیاءجملهازمیتواننداشیاء.دارند
ازاریبسیورکوردفایل،ویدئو،صدا،فاکتور،پرداخت،
رمبفراچیزیهرمیتوانحقیقتدر.باشددیگرموارد
درشیگرابرنامهنویسیفرآیند.کردعرضهشییك
ماهیت(procedural)روالیبرنامهنویسیبامقایسه
شتربخرضایتهمآننتیجهوداردطبیعیتریبسیار
.است
راگروالنویسیبرنامهبامقایسهدرگراشینویسیبرنامه
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
که«کاربرسویازشدهتعریفدادهایانواع»ایجادرویبرoopبرنامهنویسانتمرکز
کسیبایدید،کنرانندگیاتومبیلیبابتوانیداینكهازقبل.استمیشوندنامیدهکالس
دسیمهننقشهکشییاترسیمبااتومبیل،ساختمعموال.باشدساختهوطراحیراآن
ازقبل.کنیدرانندگیاتومبیلیكترسیمینقشههایبانمیتوانیدمتأسفانه.شودشروع
.شودساختهیترسیمنقشههایرویازاتومبیلآنبایدکنیدرانندگیاتومبیلیبااینكه
ازیشیكایجادنقشهکالس،یك.هستندخانههاترسیمینقشههایهمانندکالسها
بسازیم،نقشهیكرویازمتعددیخانههایمیتوانیمکههمانطوری.استکالس
پزخانهآشنقشهدرنمیتوان.کنیمنمونهسازیکالسیكرویازشیتعدادیمیتوانیم
هایمونهناشیاء.استامكانپذیرخانهآشپزخانهدرفقطآشپزیکرد،آشپزیبهمبادرت
.میشوندایجادهاکالسرویازکههستندواقعی
(Class & object)کالسوشي
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
ندکمیتعریفراموجودیتیكقالبکالس
کالسآنازواقعیهایینمونهاشیاءو
ردهنكاشغالایحافظههیچکالس.اشندمیب
ازامادهدمینمایشراموجودیتقالبتنهاو
فتعریمیتوانشیچندینکالسیكروی
اشغالحافظهخودبراییكهرکهکرد
.یكدیگرندازمستقلواندکرده
(Class & object)کالسوشي
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
سویازشدهتعریفدادهایانواع»ایجادرویبر++Cبرنامهنویسانتمرکزهمودادهایاجزاءحاویکالسهر.استمیشوندنامیدهکالسکه«کاربر
برایسرویسهاییومیکنندکاردادههارویبرکهمتدهاستازمجموعهای(ندمیکناستفادهکالسازکهدیگریتوابعوکالسها)سرویسگیرندهها
كیشاملمیتواندبانكیحسابکالسیكمثال،برای.میبیندتداركمیشوندمحسوبکالسدادهایاجزاءکهباشدموجودییكوحسابشماره
والمعم)میشودگفتهعضوتوابعکالس،یكازموجودیتهررفتارهایبهوگفتهمتدعضو،توابعبهجاواهمانندشیگرابرنامهنویسیزبانهایسایردر
ویعضتوابعدارایمیتواندبانكیحسابکالسیكمثال،برای.(میشودکاهشدهنده)برداشت،(موجودیافزایشدهنده)پساندازیكایجادبرای
رسایو)توکارانواعازبرنامهنویس.باشدفعلیموجودینمایشو(موجودی.یکندماستفاده(کالسها)جدیدانواعایجاددرکاربرتوسطشدهتعریفانواع
ایواجزاءتابعيها،اجزاءدادهکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
بهیعترسرراآنگازپدالفشردنباوکردهرانندگیاتومبیلیبامیخواهیدکهکنیدفرضسیاربدهد؟رخبایددهید،انجامرااینكاربتوانیداینكهازقبلاتفاقیچه.درآوریدحرکت.باشدساختهوطراحیراآنکسیبایدکنید،رانندگیاتومبیلیبابتوانیداینكهازقبلخوب،ورتصطراحیهمانند.شودشروعمهندسینقشهکشییاترسیمبااتومبیلساختمعموالسببنآازاستفادهبارانندهکهاستگازپدالطراحیشاملترسیماتاین.خانهبرایگرفته
یپیچیدگشدن«پنهان»سببپدالحدیتا.کندحرکتسریعتراتومبیلتامیشودببسترمزپدالکههمانطوری،درمیآوردبحرکتسریعتررااتومبیلکهمیشودمكانیزمی
ببساتومبیلفرمانمیکند،کماتومبیلسرعتازکهمیشودمكانیزمیشدن«پنهان»نینچانجامبا.دیگرمواردومیکندهدایترااتومبیلکهمیشودمكانیزمیشدن«پنهان»
وترمزگاز،پدالازبراحتیوکردههدایترااتومبیلآسانیبهمیتوانندعادیافرادکارهایی،پیچیدگیاتکننداستفادهسادهوکاربرپسند«واسطهای»سایرودندهتعویضمكانیزمفرمان،
قشههاینبانمیتوانید،متأسفانه.نباشدمشخصرانندهبرایاتومبیلداخلیمكانیزمهایازاتومبیلآنبایددکنیرانندگیاتومبیلیبااینكهازقبلکنید،رانندگیاتومبیلیكترسیمی
قعیواگازپدالدارایشدهساختهکامالاتومبیلیك.شودساختهترسیمینقشههایرویخودبخودیاتومبیل.نیستکافیهماینامااست،اتومبیلسریعدرآوردنحرکتبهبرایستورداتومبیلبهتاآوردفشارگازپدالرویبررانندهاستالزماینروازنمیگیرد،شتاب.کندصادرراسریعترحرکت
ایواجزاءتابعيها،اجزاءدادهکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Encapsulationبندیبستهیا
نرمافزار(package)کردنبندیبسته.مینامندEncapsulationرامشخصبستهبندییكدرکالسیكمتدهایوخصوصیاتکلیهدادنقرار
.کندعرضهرانرمافزارازمجدداستفادهویژگیمیتواندکالسهابصورت
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Interface
Interfaceبایدگیرندمیراآنکههاییگروهیمههکهشودمیفیتعرقراردادیكعنوانبه
وکندمیتعریفراقراردادیكازکردبایدچهقسمتInterface.کننددنبالراآن
Interface.کنندمیتعریفراقراردادهااینانجامچگونگیقسمتشدهمشتقهایگروه
تعریف.دکننمیکمكاستانداردساختاریكمینأتبهاغلبوباشدمیاعضااعالمشاملتنها
خواهیدمیکهدهدمینشانInterface.باشدمیشدهمشتقگروهمسئولیتءاعضاعملكرد
اریکشودمیسازیپیادهچگونهکهاینبهوگیردقراراستفادهموردچگونهآبجكتیك
.کردسازیشبیه#CدرراچندگانهوراثتعملكردتوانمیInterfaceکمكبه.ندارد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
تهداشرازیردسترسیسطحسهازیكیتوانندمیکالسدرونتابعیوایدادهاجزاء:باشند
•Private
•Public
•Protected
Access Modifiers
:دسترسیسطوحانواع.1:privateیاپروژهخودداخلتنهاشدهتعریفکدقطعهکهکندمیمشخصدسترسیسطحاینScopeصورتبهکهکالسیمثالبرای.باشنددسترسقابلمربوطهprivate
تعریفprivateصورتبهکهکالسیاعضاییابود،نخواهددسترسقابلشدهتعریفsolutionدرکهپروژههاییسایرازوبودهدسترسقابلپروژههمانداخلتنها،باشدشدهتعریف.بودخواهنددسترسقابلباشدمی}{عالمتهایبینکهکالسهمانScopeدرتنها،شدهاند
.2:publicبودخواهنددسترسقابلپروژههاسایروپروژهقسمتهایتمامیدرباشند،شدهمشخصدسترسیسطحاینباکهکدهایی.
.3internal:دسترسیسطوحinternalبردکارکالسهابرایدسترسیسطحاین.داشتنخواهنددسترسیآنهابهنامهافضایسایروبودهدسترسقابلنامفضایهمانداخلتنها.داردزیادی
.4protected:مفهومازکهزمانیدسترسیسطحاینinheritanceدادخواهیمقراربررسیموردتفصیلبهرادسترسیسطحاینوراثتقسمتدر.داردکاربردکنیماستفاده.
.5internal protected:قسمتهمانندprotectedدسترسیهایازتلفیقیکهشدخواهددادهتوضیحوراثتقسمتدرنیزدسترسیاینinternalوprotectedباشدمی.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مجددبكارگیریازفرمیارثبری
کالسهایآندرکهاستنرمافزار
رفتارهایودادهایاجزاءشدهایجاد
کالسیكاطالعاتبراساسراخود
نیازصورتدروآوردهبدستموجود
.هستندجدیدقابلیتهایحاوی
شکاهسببنرمافزارمجددبكارگیری
وشدهنرمافزارتوسعهزمانمدت
افزایشموثریبطورآنراکیفیت
.میدهد
Inheritanceوراثت
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Polymorphismریختیچند«صیخابرنامه»اینكهبجایبرنامههاتامیدهدامكانچندریختی
.باشندداشته«کلیبرنامه»یكحالتباشند،کهبنویسیمبرنامههاییتامیدهدامكانریختیچندعمل،در
همانازبخشیکهکنندکالسهاییازاشیاءپردازشبهمبادرتازیئاشیاآنهاهمگیهمچنانكههستند،کالسمراتبسلسلهچندریختی،کمكبه.میباشندمبناکالسمراتبسلسله
سترشگکهکنیمپیادهسازیوطراحیراسیستمهایمیتوانیمبامیتوانندجدیدکالسهای.استآسانترآنهابسطپذیریو
ودهافزآنبهبرنامه،عمومیبخشهایدراصالحیاتغییرکمیوارثیتمراتبسلسلهازبخشیجدیدکالسهایمادامیكهشوند،ییهابخشتنها.میکندپردازشآنراجامعبطوربرنامهکهباشند
تغییرجدیدکالسهایبایافتنتطبیقبرایبایدکهبرنامهازکالسهایوجودازتادارندنیازکههستندآنهاییدنشوداده
.گردندمطلعمستقیمامراتبسلسهبهشدهافزودهجدید
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
تبرداشیكمفهومبهواستانتزاعیاتجردمعنایبهلغتدرنیروییهمانانتزاعواقعدر.باشدمیمشاهداتمجموعهازواحدذهندرراجنگلمفهومدرختزیادیتعداددیدنباکهاستفحهصهایپیكسلازایمجموعهدیدنبایاکندمیتداعیانساندر.کندمیایجادذهندرراخاصتصویریكکامپیوترنمایش
کهندکتعریفرااشیائیکندسعیبایدنویسبرنامهروشاینموارههاوواقعدر.کندنیازبیبیشتراشیاءتعریفازرابرنامهوبعتوایافتنازبعدیعنی.بگرددمادراشیاءدنبالبهبایدبایدنظرموردسیستمسازیپیادهبراینیازموردهایداده
(شئ)کالس"یك"توسطراهادادهوتوابعازایمجموعهدادننمایشمعنیبهاصلدرAbstraction.کندسازیپیاده.استگیرندهسرویسبهنیازموردجزئیاتتنها
Abstraction
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Abstraction
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
درهکهستندخصوصیاتیومتدهاشاملتنهاپایه،هایکالسبریارثدر
به.هستندمشتركشوندمیمشتقهاکالساینازکههاییکالسبین
اشند،بمینشئیكازکاملیمفهومدارایپایههایکالسخوددیگرعبارت
نتوانهاینكبرای.استمعنیبیهاکالساینازجدیداشیاءایجاددرنتیجه
abstractصورتبهراآنها.کردتعریفاینمونهاشیاءپایههایکالساز
.نماییممیتعریف
.کردایجادabstractهایکالسازجدیدیاشیاءمیتوانناینكهنكته
Abstract Class
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
راشیدادههایمیتواندشییكعضوتوابعکهکردیدمشاهدهیكامکددادهاعضایکهمیدانندعضوتوابعچگونه.کنددستكاری
thisبناماشارهگریكطریقازشیهرکنند؟دستكاریرااشیاءاز.دارددسترسیبخودمتعلقآدرسبه(#Cدرکلیدیکلمهیك)
اشارهگرنمیباشد،شیخودازبخشیشی،یكthisاشارهگرthisشیكغیراستاتیعضوتابعهربهضمنیآرگومانیكبصورتبصورتthisاشارهگرازاشیاء.(کامپایلرتوسط)میشودارسالهمراجعبرایصریحیا(میدهیمانجامآنرابخشایندرکه)ضمنی.میکننداستفادهخودعضوتوابعودادهاعضای
درمتدهایکالسthisمفهوممرجع
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
ازشییكاولیهمقداردهیبهمبادرتآنازاستفادهبامیتوانکهباشدداشته(constructor)سازندهیكمیتواندمیکنیداعالنکهکالسیهر•راآنمیتواندپایلرکامکهاینروستازباشد،شدهتعریفکالسنامباهمنامبایستیکهاستویژهعضوتابعیكسازنده.کردشیایجادهنگامبهکالس
دهند،رگشتبمقدارنمیتواندسازندههاکهاستایندردیگرتوابعوسازندههامابینموجودتفاوتمهمترین.دهدتشخیصکالسعضوتوابعدیگرازکالسیكرویازشیکهزمانهر.میشوداعالنpublicبصورتسازندههامعموال.(voidحتی)باشندداشتهبرگشتینوعنمیتوانندبنابراینمطمئنحالتیچنیندرمیشود،ایجادکهاستشیهربرایسازندهیكفراخوانینیازمند#C.گرددمیاجراکالسسازندهاتوماتیكکنیممیایجاد
بصورتی،شایجادهنگامبهسازندهفراخوانی.استشدهاولیهمقداردهیبدرستیشودگرفتهبكاربرنامهتوسطاینكهازقبلشیکهبودخواهیماینمیبیندركتداپیشفرضسازندهیكکامپایلراست،نكردهمشخصراسازندهایصریحبصورتکهکالسیهردر.میشودانجامضمنییاغیرصریح.نمیباشدپارامتردارایسازنده
تابععضوسازندهوتابععضومخرب
نام.میباشدعضوتابعازدیگرینوع(مخرب)نابودکننده•کالسنامو(~)مدکاراکترباکالسیكمخربتابع
بصورتکالسیكمخرب.میشودمشخصیفراخوانشیرفتنبیناززماندرو(غیرصریح)ضمنیتبرگشمقداریونمیکنددریافتپارامترمخرب.میشود.ردکمشخصدسترسیسطحآنبراینمیتوانونمیدهد
وباشدداشتهمخربیكفقطمیتواندکالسیك.کردسربارگذاریراآننمیتوان
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Propertyخصوصيتیا
(propertyخصوصیتیا)اعضایبهدسترسیبرایشارپسیدراستانداردی
propertyهر.باشدمیکالسیكداخلدرprivateدسترسیسطحبادادهای
برایبخشیكو(set)بلوكمقداردهیجهتبخشیكاست؛بخشدودارای
صورتبهبایدهاprivate.propertyدادهیك(get)بلوكمقداربهدسترسی
publicباشنددسترسیقابلنیزدیگرکالسهایدرتاشوندتعریف.
PropertyبدنهکههاییgetندارندWrite-Onlyبدنهکهآنهاییوsetندارندرا
Read-Onlyمیگوییم.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
:باشدمیمقابلصورتبههاpropertyکلیساختار
•:access-modifier بهدسترسیسطحProperty میکندتعیینرا.Property نیز.سطحدسترسیداشتهباشدتواندمانندفیلدمی
•:data-typeنوعPropertyازیكیکهData Typeبهکهاستکالسییانتداتهای.باشدشدهنوشتهدستیصورت
•:property-nameنامPropertyقاعدهازهمیشهآننامگذاریبرایواستPascalCaseراآنهمیشهونداردتفاوتیدسترسیسطححقیقتدر.میشوداستفادهPascalCaseکنیدتعریف.
داخلشما.کردیمتعریفقبلیقسمتدرکهایستGetمتدمعادلدقیقابدنه،این:getبدنه•زمانیوکردهعملمتدیكمانندبدنهاینحقیقتدر،بنویسیددستوریهرمیتوانیدgetبدنهارامقداریبایدحتماgetبدنهکنیددقتخوانیدمیراPropertyمقدارشماکه ب
یعنی،باشدaccess-modifierدارایتواندمیبدنهاینهمچنین.برگرداندreturnدستوررادسترسیسطحکهصورتیدر.کندمیمشخصرامقدارخواندندسترسیسطح
.شودمیگرفتهنظردرpublicپیشفرضصورتبهنكنیدمشخصداخل.مثالقبلیاستدر Setمتددقیقامعادلاینبدنه:setبدنه• زمانیکهشمامقداریرا
Property بدنهستکنید،set پیشفرضیوجودداردپارامترsetداخلبدنه.شودمیاجرامیتوانیدازوشماگرفتهآنقرارداخل Propertyبرایمقدارستشدهکه valueنامبه
دسترسیسطح setبدنهبرایتوانهمچنینمی.داشتهباشیددسترسیبهآن setطریقبدنهنظردر publicفرضبهصورتپیشنكنید،دسترسیرامشخصمشخصکردکهاگرسطح
.شودگرفتهمی
Propertyشکلکليیکخصوصيتیا
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
لیاتیعمداریمتصمیم.کنیمایجادشخصموجودیتبرایکالسیكبخواهیمکنیدفرضهاPropertyبارادادیمانجامRectangleکالسدرSetوGetمتدهایبوسیلهکه
دومقابل،کددر.کنیممیایجادمقابلشكلبهراPersonکالس.کنیمپیادهسازیPropertyنامهایباFirstNameوLastNameخواندنعملیاتکهکردیمتعریف
بهنیازیحتماهاPropertyنوشتنبرای.دهندمیانجامرامربوطهفیلدهایازنوشتنوبه.بنویسیدsetیاgetبدنهبرایراکدیهرتوانیدمیشما.نیستآنهابرایFieldتعریفکاملنامکهکنیمتعریفPropertyیكPersonکالسبرایخواهیممیمثالعنوانکالسبهدوبارهنگاهی.گذاریممیFullNameراخاصیتایننام.برگرداندراشخص
PersonخاصیتوFullNameنهبدتنهاخاصیتاینباشیدکردهدقتاگر،کنیممیgetبدنهوداردsetکهاستآنامرایندلیل.ننوشتیمآنبرایراFullNameتنها
مقداریبخواهیمکهصورتیدروبرمیگرداندراlastNameوfirstNameازترکیبی.شویممیمواجهخطاپیغامبا،بریزیمFullNameداخل
ندارندراsetبدنهکهآنهاییو،Write-OnlyندارندgetبدنهکههاییPropertyبهRead-Onlyودخبرعالوهتوانیممیگفتیمهمقبالکههمانطورهمچنین.گوییممی
Propertyبدنههایازیكهربرایgetوsetکنیممشخصدسترسیسطحنیز.
Propertyمثاليبرایایجاد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
تننوشوخواندنعملیاتتنهاکنیممیتعریفکهPropertyاوقاتگاهی.بگیریدنظردرراPersonکالسمثال،برای.کندمیکنترلرافیلدیكکامپایلر.نوشتنیزمقابلشكلبهتوانمیراباالخصوصیتبهمربوطکدشدهوشتهنخاصیتبرایفیلدیكخودکارصورتبهباال،کدکامپایلازبعد
از.نویسدمیخودکارصورتبهراآنsetوgetبدنهوکردهتعریفکنترلقابلیتالبتهوکمترکدحجمهاAuto-Propertyمزایای
راباالمثال.باشدمیهاPropertyنوشتنوخواندنعملیاتبهدسترسیقابلکالسداخلتنهاFirstNameخاصیتکهدهیممیتغییرنحویبه
-Autoازکهزمانیباشید،داشتهتوجهنكتهاینبه.باشدنوشتنPropertyبایدحتمامیکنیداستفادههاgetوsetغیردربنویسید،را
زبان6نسخهدرمشكلاینالبته.کردخواهیددریافتخطاپیغاماینصورت.استشدهبرطرفشارپسی
Automatic Propertiesایجاد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
به.ندکمیدستهبندیراکالسهاکهاستسازمانیساختاریكنامفضایشمابهنامفضای.کالسهاستکردنتعریفبرایمنطقهایدیگرعبارتنامهافضای.کنیددركوپیداراکدهایتاناساسوپایهکهکندمیکمكبودبهبرایمعموالآنهانیستند،ضروریشارپسیبرنامهنویسیبرای
اسامییتمامنام،فضایازاستفادهبدون.شوندمیاستفادهکدفهمقابلیتبرایجاییکلی،نامفضاییكدرکنندمیسعیبرنامهدراستفادهموردازاگراام.میشودیكساناسامیبینبرخوردموجبکهبگیرندنظردرخوددوجوبهبرنامهدراشكالیهیچشود،استفادهجداگانهاینامهایفضای
مجموعهازاسامیازمجموعهایتفكیكبراینامفضایواقعدر.آیدمین.رودمیکاربهدیگر
Namespaceفضای نام
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
انهکتابخدرموجودنامهایفضایمهمتریناز.Net Frameworkنامفضای
Systemفضایداراینامفضایاین.استبه.میباشدخودداخلدردیگرینامهایحاویکهSysytem.IOمثالعنوان
وخروجیوورودیباکاربرایکالسهایی.باشدمیفایلهاباکار
#Cچند نمونه فضای نام موجود در
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
.شوندمیجداهمازنقطهباکهکالسنامونامفضایازاستفاده:مثالعنوانبه
System.Convert.ToString();
Usingدستورازاستفاده
using System;
Convert.ToString();ومینویسیمنامفضایازاستفادهبرایراusingدستورابتداروشایندر
بهسندازجاییهردرونامذکربدونرافضاآندرموجودکالسهایسپستفادهاسنیزتودرتوصورتبهنامهافضایازتوانیدمیشما.گرفتخواهیمکار
.کنیدSystem.Windows.Forms.MessageBox.Show("");
Usingدستورازاستفاده
using System.Windows.Forms;MessageBox.Show()
شکل کلی ایجاد فضای نام و استفاده از آنnamespace namespace_name
{// code declarations
}
namespace namespace_name1{
// code declarationsnamespace namespace_name2
{// code declarations
}}
using namespace_name1.namespace_name2;
using namespace_name; فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
EnumشمارشيیادادهآشنایيبامفاهيمنوعاربسیبرنامهدرشمارشقابلوثابتمقادیرتعریفجهتEnumیاشمارشیدادهنوع
شماره0عددازخودکاربطورمیشوندتعریفدادهنوعایندرکهمقادیری.داردکاربرد
.میشوداضافهآنهابهیكیترتیببهومیشوندگذاری
برراثابتمقادیرعنوانEnumدادهاینوعبرایToString)(متدحالتایندر
.میگرداند
.استintبهصریحنوعتبدیلازاستفادهعددیمقدارنمایشبرایعرفروش
:کنيمعملزیربصورتکافيستمقادیرشمارهتغييرجهتenum TypesOfColo
{Black=-5,Green=20,
White,Red,Blue
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
staticکليدیکلمهآشنایيبابهطور.دنباشنوابستهیئشیهیچبهکالسیكاعضایکهداریدنیازگاهیلقابمیشودساختهکالسآنازکهشیئیطریقازکالساعضایمعمول
کهنیدکتعریفطوریراکالسازعضویمیتوانیدشمااماهستنددسترسیآنبه(نقطهعملگروکالسنامطریقاز)مستقیماشیئیهیچساختبدون
ازعضوآنتعریفازقبلعضوی،چنینساختبرای.باشیدداشتهدسترسیکالسیكازعضویکههنگامی.میکنیداستفادهstaticکلمهیکلیدی
ازایobjectهیچساختبدونعضوآنمیشود،تعریفstaticبهصورتآنازیشیئهیچبهواستاشیاءازمستقلواقعدرودسترسیقابلکالسبهصورترامتغیرهاهمومتدهاهممیتوانیدشما.نمیشودوصلکالس
staticمتدمثالعنوانبه.کنیدتعریفshowکالسازMessageBoxمیباشداستاتیكمتدیك.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
staticایاجزاءداده
درودنیستنشئبهوابستهکههستنداعضاییحقیقتدرstaticاعضایهرازایهبیعنی.میباشندمشتركکالسیكازشدهساختهاشیاءکلبین فرادرس.نیستندشئبهوابستهچونندارند،متفاوتیمقدارشئ
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
staticاجزاءتابعيیامتدهای
وباشدداشتهدسترسیstaticاعضایبهمیتواندتنهاstaticمتدعضایازیراکند،پیدادسترسیکالسعادیاعضایبهمستقیمانمیتواند
شیءآندرمقدارشانتاشوندوصلشیءیكبهبایدحتماکالسیكعادیبهامستقیممیتوانوهستنداشیاءازمستقلstaticاعضایاماشودذخیرهاعضایهببتوانیداینكهبرای.کردپیدادسترسیکالسنامکمكبهآنها
staticنامبتداااستکافیباشید،داشتهدسترسیهستندکالسدرکهای.یدکنپیدادسترسیآنهابه(.)عملگرتوسطسپسونوشتهراکالسداشتهدسترسینیزعادیاعضایبهstaticمتدیكدرونداریدقصداگر
تدمیكایجادبرای.دهیدانجامراکاراینشیءیكطریقازبایدباشیدstaticکلیدیکلمهکافیستstaticازبعدAccess Modifierقبلو
.بیاوردیدمتدخروجینوعاز
class Class1{
public static void method1(){
}}
Class1.method1();
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
staticکالستعریفstaticبهصورتراکالسیكمیتوانیدهمچنین
تعریفstaticبهصورتراکالسیكهنگامیکه.کنید:میکنید
.بسازیدشیءکالساینرویازنمیتوانیددیگر(۱).باشندstaticبایدکالساعضایهمهی(۲)
کهتاسایناستاتیكکالسهایازاستفادهمزایایازیكینایازنمونهایعنوانهیچبهمیکندتضمینکامپایلرهستندsealedاستاتیكکالسهای.نشودساختهکالس
نمیتوانندکالسهااین.بردارثآنهاازنمیتواندرنتیجهconstructorازمیتوانحالاینباولیباشندداشته
static constructorعناصربهمقداردهیبرایهاstaticکهکنیدتوجه.کرداستفادهکالسstatic
constructorوپارامترهاmodifierندارند.
static class Class1{
}
public static class DistanceConverter{
public static double meterTocmeter(double meter){
return (meter * 100); }
public static double cmeterTometer(double cmeter){
return (cmeter / 100);}
public static double cmeterTomilimeter(double cmeter){
return (cmeter * 10);}
public static double milimeterTocmeter(double milimeter){
return (milimeter / 10);}}
double cm;cm=DistanceConverter.meterTocmeter(2.5);
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
mainدرمتدstaticکليدیکلمه
Main)(متددرstaticکلیدیکلمهیاینمتوجهلحظهیاینتاحتمااعضایازیكیوبرنامهتانشروعنقطهیMain)(متدکهآنجااز.شدهایددهزصدا،شیئیهرگونهساختازپیشوهرچیزازقبلبایداست،کالستعریفstaticبهصورتراMain)(متدکهاستدلیلاینبه.شود
فراخوانیMain)(متدشود،ساختهکالسازشیئیاینكهازقبلتامیکنیم.بگیریمدستدررابرنامهکنترلبتوانیممتدایندرونتاشده
static class Program{
static void Main(){
Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());}}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
انواعروشارسالپارامتربهمتدPassمقدارباارسالروش.۱ by valueزماندرومیکنیمتعریفمعمولیمتغیرهایتابعپارامترهایدرروشایندر
هبآرگومانعنوانبهرافراخوانندهازمتغیرهاییاسامییاثابتمقادیرفراخوانیتأثیریهیچمتدهنبددرپارامترهابررویتغییریهر.میکنیمارسالمتدپارامترهای
دررهاپارامتاولیهمقدارعنوانبهتنهاآرگومانهاونداردفراخوانندهآرگومانهایبررویگرفتهرنظدرورودیعنوانبهتنهاپارامترهاارسالشكلایندر.میشوندگرفتهنظرpassروشبهارسال.شوندمی by valueمیباشدفرضپیشصورتبه.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
انواعروشارسالپارامتربهمتدPassارجاعباپارامترارسالروش.۲ by reference
متغیرمقدارمیکنیم،ارسالتابعیكبهrefصورتبهرامتغیریوقتیغییریتهرومیشودفرستادهمتدبدنهبهمتغیرآدرسبلكهنمیشودارسال
مترهاپارنوعاینبه.میشوداعمالنیزاصلیمتغیربررویمحلیمتغیردر.میگویندارجاعی
هآرگومانهادرفراخوانندبررویهرتغییریبررویپارامترهادربدنهمتد.میشوداعمال
متدوهمارسالبههمدرپشتآرگوماندرزمانrefنوشتنکلمهکلیدی.الزامیمیباشددرپشتتعریفپارامتردرمتد
دهاولیهشمقداردهیمیشودبایدروشبهمتدارسالآرگومانیکهبهاین.باشد
درنظرگرفتههمورودیوهمخروجیعنوانروشپارامترهابهدراین.میشوند
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
انواعروشارسالپارامتربهمتدoutکلیدیکلمهباخروجیتنهاعنوانبهپارامترارسالروش.3
ادهاستفزمانیپارامترهااین.میباشدارجاعیصورتبههمارسالشیوهاینواهیممیخبلكهباشیم،نداشتهرامتدبهاطالعاتیارسالقصدکهمیشود.برگرددمتدازاطالعاتتدمدرونبایدحتماولینیستمتدبهارسالازقبلمقداردهیبهنیازی
.بگیردمقدار(شدهفراخوانیمتدیبهبازگشتازقبل).شوندمیگرفتهنظردرخروجیعنوانبهتنهاپارامترهاروشایندر
valueفرستادنبهتنهاoutوrefازاستفاده typeنمیشودمحدودهاreferenceفرستادنهنگامبلكه typeقراراستفادهموردمیتوانندنیز.گیرد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
paramsاستفادهازکلمهکليدیمتغیرنآآرگومانهایتعدادکهکنیمتعریفتابعیتااستنیازاوقاتازگاهی.شودمیاستفادهparamsکلیدییکلمهازمنظوراینبرای.باشند
:دراینجاحائزاهمیتاستدونكته.کرداستفادهparamsازیكبارتوانمیدرهرتابعیتنها-۱.دهیچآرگومانیراتعریفکرتوانمیدیگرنparamsپسازبكاربردن-۲
class testparams{
public double Average(params double[] nums)
{double result = 0;
for (int i = 0; i < nums.Length; i++)result += nums[i];
return result / nums.Length;}}
private void button16_Click(object sender, EventArgs e){
double avg;testparams c1 = new testparams();avg=c1.Average(10, 17, 70,80,47);MessageBox.Show(avg.ToString());
double[] List = { 15, 8, 6, 12, 77.5, 73 };avg = c1.Average(List);
MessageBox.Show(avg.ToString());}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Reference typeوValue typeتفاوتValue Typeابفراخوانیروشبهفرضپیشبصورتمتد،یكبهشدنفرستادهموقعها
تغییرهرگونهومیکنندکپیمتدآرگوماندرونراخوددرونمقدارومیشوندارسالمقدارRefاما.داشتنخواهداصلیدادهدرتغییریگونههیچمتد،آرگومانهایدرون Typeها
اقعودرکهخودشاننامبازیرامیشوندارسالارجاعبافراخوانیبصورتفرضپیشبصورتدادهویربرتأثیرمتد،درونتغییرهرگونهنتیجهدر.میشوندفرستادهمیباشدنهاآبهارجاعوstack:کنیمتقسیمقسمتدوبهرابرنامهیكmemoryاگرگذاشتخواهداصلی
heap.همهصورتایندرValue typeدرstackتفاوتاینباولیمیشوندذخیرهReferenceدرکه TypeهاInstanceدرآنheapچیزیواقعدرومیشودنگهداری.Referenceهمانیاheapبهآدرسجزنیستچیزیبودخواهدstackدرکه
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
partialکالسهایبخشيیالفایدوازبیشتریادودرراکالسیكاجزاءتوانیدمیpartialکلیدیکلمهازاستفادهبا
.باشدیكسانهافایلهمهنامفضایاینكهبرمشروط.دهیدقرارجداگانه:partialهایکالسازاستفادهمزایای
.استزیادیبسیارکالسهایدرخواناییافزایش-۱نفرچندبینراآنمیتوانیدبراحتیمیکنیدکارپیچیدهایکالسبررویشمااگر-۲
.مینویسدراخودکالسکدهایجداگانهفایلیدرافرادازکدامهروکنیدتقسیمیشوند،متولیداتوماتیكبصورتکدهابرخیکهمكانهاییمیتوانیدبراحتیشما-3
Windows)ویندوزتحتفرمهایکدمثل Forms, Web Service)،ازراراحتبسیارتغییراتاعمالنتیجهدر.کنیدتفكیكمینویسیددستیبصورتکهکدهایی
طتوسکهکدیقسمتمیکنیمایجادویندوزیفرمیكوقتیمثالبطور.میشودترDesignerهکداردوجودجداگانهفایلیدرهستفرمظاهربهمربوطومیشودنوشته
.باشدخواناتروباشدجداکدآنازنویسیممیماکهکدیمیشودباعثاستprivateخصوصیاتدارایکهکالسهاازبخشمیتوانیمکالسهاتعریفدر-4روانوخواناییبهکاراین.کنیمتفكیكاستpublicخصوصیاتدارایکهبخشیازرا
.میکندفراوانیکمكکالسفهمیدن
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
یا operator overloadingبازنویسيعملگرهاخودتانکهاستکالسهاییبهمرتبطکهکنیدتعریفهاییoperatorمیدهداجازهشمابهسیشارپoperatorپروسهاینبه.میسازید overloadingا.میشودگفته یكکردنoverloadب
operatorآنکاربردشماoperatorاینکهتأثیری.میکنیداضافهخودتانکالسبهراoperator.اشدبمتفاوتکالسهربرایاستممكنواستخودتانکنترلتحتکامالمیگذاردشماکالسبرروی
شیءیكنافزودبرای+عملگرازاستممكنمیکند،تعریفپیوندیلیستیكکهکالسیمثالبهعنوانیكافزودنبرای+عملگرازاستممكنمیکند،اجراراstackکهکالسی.کنداستفادهلیستانتهایبه
.کندتفادهاسمتفاوتکامالبهطور+عملگرازاستممكندیگرکالسی.کنداستفادهپشتهباالیبهشیءآنکاربردفقطبلكه.نمیدهددستازراخودشواقعیمعنای،میشودoverloadعملگریكهنگامیکه
بهشیءیكافزودنبرای+عملگرکردنoverload(مثالبهعنوان)بنابراین.میشودافزودهکالسیكبهتغییرصحیحعدددوکردنجمعبرایoperatorآنعملكردکهنمیشوددلیلپیوندیلیستانتهای.کند
operatorاصلیمزیت overloadingکالسیكیكپارچهبهطورمیدهداجازهشمابهکهاستاینtypeآنبهکهویژگیاین.کنیدادغامخودبرنامهنویسیمحیطدرراجدید extensibilityمیگویند،برایهاoperatorهنگامیکه.استسیشارپمثلشیگرابرنامهنویسیزبانیكمهمبخشهایازیكینكتهاین.کنیداعمالمربوطهکالساشیایبررویراoperatorآنمیتوانیدمیشوند،تعریفکالسیكoperatorکهاستذکرقابل overloadingاستسیشارپویژگیهایقدرمندترینازیكی.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
شکلکليبازنویسيعملگرهاoperatorیكتعریفبرایoperatorکلیدیکلمهیازعملگر،یكکردنoverloadبرای methodتعریفخودشکالسبهمربوطخاصعملیكبرایکهمیکنیماستفاده
.میشودoperatorازحالتدو methodداردوجود:1unary operators binaryوتكیعملگرهای) operators ،میکنیدoverloadراآنکهعملگریاینجادر.میبینیدزیردرراهرکدامکلیفرم.دوتاییعملگرهای2)
returnاگرچه.شدخواهدreturnکهاستمقدارینوعکنندهیمشخصret-type.میشودopجایگزین/یا+مثل typeکالسیهماننوعازاغلباماباشدنوعیهرازمیتواندreturnبودنیكسان)ارتباطاین.میشودoverloadآندرoperatorکهاست typeعمگرهایازاستفادهراحتیباعث(کالسجنسباoverloadبرای.میشودشده
unary operatorقسمتدرعملوندهاoperandبرای.میگیردقرارbinary operator،قسمتدرعملوندهاهاoperand1وoperand2داشتهتوجه.گرفتخواهدقرارoperatorکهباشید methodهمبایدهاpublicهموstaticباشند.
unaryدر operator،عملوندنوعها(operand)کهکالسینوعبابایدoperatorنمیتوانیدبنابراین.باشدیكسانمیشودتعریفآندرoperatorبرایراسیشارپهایoperatorاینكهدیگرنكتهی.کنیدتعریفstringوintبرایرا+عملگرمجددانمیتوانیدمثال،برای.کنیدتعریفنساختهایدخودتانکهاشیایی parametersازنبایدref
.کننداستفادهoutو
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالبرایبازنویسيعملگرها
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
+بازنویسيعملگر.دباشمیخطادارایبرنامهسومخطکنیددقتوعنبرای+عمگرکهاستدلیلاینبهخطااین
توانیممی.استنشدهتعریفMydateکالسزیرشكلبهMydateکالسبرای+عملگر
یخروجوشودمیبرطرفخطا.کنیمبازنویسی.کنیممیمشاهدهرابرنامه
public static mydate operator +(mydate x, int n){
mydate t = new mydate(x);for (int i = 0; i < n; ++i)
t.increment();return t;
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
+ادامهبازنویسيعملگررالیقببرنامهدرموجودخطای+عملگربازنویسیهب+عملگرازنویسبرنامهاگراماکردبرطرفمیخطابرنامهمجددنمایداستفادهمقابلشكللشكبهمجددرا+عملگرمشكلرفعبرایدهداینبهوشرابنبنابراینبا.کنیممیبازنویسیزیر
.شودمیدادهپذیریجابجاخاصیتعملگر
public static mydate operator +(int n, mydate x){
mydate t = new mydate(x);for (int i = 0; i < n; ++i)
t.increment();return t;
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
رابطهای بازنویسيعملگرهاRelational)رابطهایعملگرهای Operators)بهسادگیمیتوانند<یا==مثلoverloadرابطهایعملگریكمعمول،بهطور.شوندoverloadمقدارشدهtrueیا
falseراreturnجایبهمواردایندراگر.کرداستفادهشرطیعبارتهایدرآنهاازبتوانوشودحفظرابطهایعملگرهایاستانداردکاربردوحالتکهدلیلبهاین،میکندrelationalبایستیکهاینجاستدیگرمهمنكتهی.کردهایدمحدودراoperatorاینکاربردشدتبه،کنیدreturnرادیگریچیزboolمقادیر operatorsبهطوررا=<)هایoperatorبرایمورداین.کنیدoverloadنیزرا>بایستی،کردیدoverloadرا<اگرمثالبهعنوان.کنیدoverloadجفتی ==)و(=> صادقنیز(=!.است
public static bool operator >(mydate x, mydate y){
if (x.Year > y.Year||(x.Year==y.Year && x.Month>y.Month)||(x.Year==y.Year && x.Month==y.Month && x.Day>y.Day))return true;
elsereturn false;
}
public static bool operator <(mydate x, mydate y){
if (x.Year < y.Year||(x.Year==y.Year && x.Month<y.Month)||(x.Year==y.Year && x.Month==y.Month && x.Day<y.Day))return true;
elsereturn false;
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
--و++بازنویسيعملگرهایکافی.استآسانبسیار--و++کردنoverloadسیشارپدر
اماکنیدreturnراآنودهیدکاهشیاافزایشرامقدارکهاستخودکاربهطورسیشارپ.دهیدتغییرراoperandشیءمقدارنباید
.میگیردنظردرشمابرایراprefixوpostfixحالتهای
public static mydate operator++(mydate x){
mydate t = new mydate(x);t.increment();
return t;}
private void button4_Click(object sender, EventArgs e){
mydate d1 = new mydate(27, 12, 1394);mydate d2 = new mydate();
d2 = d1++;MessageBox.Show("d1 = " + d1.ToString() + "\nd2 = " + d2.ToString());
}
private void button4_Click(object sender, EventArgs e){
mydate d1 = new mydate(27, 12, 1394);mydate d2 = new mydate();
d2 = ++d1;MessageBox.Show("d1 = " + d1.ToString() + "\nd2 = " + d2.ToString());
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
conversionبازنویسيتبدیلنوعیاdataشاملکهکنیداستفادهعبارتیدرکالسیكشیءازمیخواهیدمواقعبرخی typeمواردبعضیدر.استنیزدیگریهایoverloadچندیایكکردنoperator
شمابهارپسیشموارد،ازدستهاینانجامبرای.استنظرتانموردنوعبهکالسنوعازسادهتبدیلیكداریدنیازشماکهچیزیگاهیاما.دهدانجامشمابرایراکاراینمیتواندoperatorازخاصینوعمیدهداجازه methodکهبسازیدراconversion operatorمیشودنامیده.Conversion operatorنوعبهراشماکالسازشیءیك
conversionازحالتدو.میکندتبدیلاستنظرتانمدکهدیگری operatorاستموجود:implicitوexplicitاستزیرشكلبهآنهاکلیفرمکه.Conversion.استتبدیلازبعدکالسمقدارvalueوکنیدتبدیلآنبهراsource-typeداریدقصدکهاستنوعیکنندهیمشخصtarget-typeاینجادر
operatorبامطابقرااطالعاتtarget-typeمیگرداندباز(returnمیکند).conversionاگر operatorبهطورimplicitبنابراینشود،مشخصconversionیكباهمراهعبارتیكدرشیءکهحالتیمثلشد،خواهدانجاماتوماتیكبهصورت
data typeنوعازدیگریtarget-typeهنگامیکه.استتعاملدرconversionبهصورتexplicitکههنگامیبنابراینباشد،شدهتعریفcastاستنیازموردconversionیكبراینمیتوانیدکهکنیدتوجه.میشودفراخوانیsource-typeوtarget-typeهمimplicitوexplicitاگر.کنیدتعریفراconversionرا
.کنیددقتبایدexplicitیاimplicitبینانتخاببرایقوانین،اینعالوهبر.استنیازموردcastونمیشودانجاماتوماتیكبهصورتتبدیلکنید،تعریفexplicitبهطورimplicit conversionفقدانچهیاوال:کنیدپیرویقانوندواینازموردایندراطمینانکسببرای.باشدخطاازعاریکامالتبدیلکهگیردقراراستفادهموردزمانیباید
.دهدرخنباید(…وعالمتتغییرسرریز،کوتاهسازی،مثل)اطالعاتی راقانوندوایننتواندconversionاگر.شودبرنامهدرخطایاexceptionبروزباعثنبایدتبدیلثانیاexplicitازبایدکند،رعایت conversionببریدبهره.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Mydateبرایمثالنوعبازنویسيتبدیلpublic static explicit operator int(mydate x){
int n=0;for(int i=1;i<=x.Month;++i)
n=n+endofmonth[i];return n + x.Day;
}
public static implicit operator string(mydate x){
return x.ToString();}
private void button4_Click(object sender, EventArgs e){
int a;mydate d1 = new mydate(22, 7, 1393);
a = (int)d1;MessageBox.Show(a.ToString());
}
private void button5_Click(object sender, EventArgs e){
mydate d = new mydate(22, 4, 1392);string s1 = d;
MessageBox.Show(s1);}
وودنمیشانجاماتوماتیكبهصورتتبدیلکنید،تعریفexplicitبهطورراconversionاگرcastاستنیازمورد.
تبدیلهموimplicitتبدیلهمtarget-typeوsource-typeیكبراینمیتوانید•explicitکنیدتعریف.
classنمیتوانید• typeدادهینوعبهراobjectکنیدتبدیل.typeیاsource-typeدرconversionکهباشدکالسیهمانجنسازبایستی
conversionتبدیلنمیتوانیدمثالبرای.استشدهتعریفآندرdoubleبهintنوازرا.کنیدتعریف
.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
falseوtrueبازنویسيکردنunaryبهعنوانمیتوانندنیزfalseوtrueکلیدیکلمات operatorsبهمنظورoverloadنسخهی.گیرندقراراستفادهموردکردنoverloadاینشدهیoperatorها
،ifکردنکنترلبرایکالسآناشیایازمیتوانید،میشوندoverloadکالسیكبرایfalseوtrueهنگامیکه.میشودشخصیسازیمیسازیدشماکهکالسیبهتوجهباfor،whileوdo-whileکنیداستفاده?همچنینو.
Operatorهایtrueوfalseباهمبایدoverloadراآنهاازیكیفقطنمیتوانیدوشوندoverloadآنهادویهر.کنیدunary operatorآنهاکلیفرموهستند فرادرس.میکندreturnراboolمقدارهریكکهکنیددقت.استزیربهصورت
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
falseوtrueمثالبازنویسيکردنMydateکالسبراینحویبهراfalseوtrueبخواهیمکنیدفرض
دباشنبودنوسالاولروزمعنیبهتاریخیكبودنtrueکهکنیمبازنویسی.نیستسالاولروزمعادلتاریخ،شیکهاینستمعنیبهfalseو
خطابرنامهfalseوtrueبازنویسیبدونکنیدمیمشاهدهکههمانطورراfalseوTrueعملگرهایMydateکالسدرونکهصورتیدرامادارد.گرددمیبرطرفخطالکنیمبازنویسیزیرشكلبه
public static bool operator true(mydate x){
return x.Day == 1 && x.Month == 1;}
public static bool operator false(mydate x){
return !(x.Day == 1 && x.Month == 1);}
private void button5_Click(object sender, EventArgs e){
mydate d1 = new mydate(1, 1, 1395);if (d1)
MessageBox.Show("Happy new year");}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
بهخاطرداشتهباش يدمواردزیرراهنگامسربارگذاریعملگرها.كردoverloadتوانميراادامهدرشدهذكرعملگرهایتنها-1
Unary Operators :
+ - ! ~ ++ -- true false
Binary Operators
+ - * / % & | ^ << >> == != > < >= <=
. باشد voidخروجي متدهاي بكار گرفته شده در سربارگذاري عملگر ها نمي تواند -2
overloadingحداقل يكي از آرگومانهاي بكار گرفته شده در متدي كه براي -3
. عملگرها بكار مي رود بايد از نوع كالس حاوي متد باشد
. تعريف شوند staticو publicمتدهاي مربوطه بايد به صورت -4
ا هم ر< را سربارگذاري مي كنيد بايد جفت متناظر آن يعني > هنگامي كه اپراتور -5
. سربارگذاري نماييد
شده overloadنيز =+ مي كنيد خودبخود overloadرا + هنگاميكه براي مثال -6
. است و نيازي به كدنويسي براي آن نيست
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Inheritanceوراثت،ارثبری
Inheritanceیشودمسلسلهمراتبیبهصورتکالسهاساختموجبکهاستشیگرابرنامهنویسیبنیادیاصولازیكی.inheritanceازاستفادهبا.میکننداستفادهinheritanceازیكسانیدالیلبهشیگرابرنامهنویسیزبانهایهمهی
.باشندمشتركمباهمرتبطبخشچنددرمیتوانندویژگیهااینکهکنیدتعریفویژگیسرییكباکلیکالسیكمیتوانیدزباندر.دهدقرارآنهااختیاردررایكتاستکهمواردیوشودارثبریدیگرکالسهایتوسطمیتواندکلیکالساین
baseمیشود،ارثبریآنازکهکالسیسیشارپ class(پایهکالس)میدهدانجامراارثبریکهکالسیوداردنامderived class(شدهمشتقکالس)اینرواز.میشودنامیدهderived classشدهیاختصاصینسخهیbase
classاست.derived classتمامvariableها،method،هاpropertyوهاindexerدرشدهتعریفهایbase
classمیکنداضافهنیزراخودبهمخصوصعناصراینهاکناردرومیبردارثبهرا.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
#Types of Inheritance in Cانواعوراثت
:شارپسیدروراثتانواعSingleیگانهوراثت• Inheritance
Multilevelسطحیچندوراثت• Inheritance
Hierarchicalمراتبیسلسهوراثت• Inheritance
Multilevelچندگانهوراثت• Inheritance
(using interface) فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Inheritanceوراثت،ارثبری
ردداردکهعضویصدهابارادانشگاهیجامعهیكکارمندان،ازمتشكلاعضااین.بگیریدنظر
نکارمندا.هستنددانشجویانوفارغالتحصیالندکارمنیاباشندعلمیهیئتاعضایمیتوانند
تاداسیامدیرمیتوانندعلمیهیئتاعضای.سادهجودورابطهمراتب،سلسلهاینفلشهردر.باشندبالدنرافلشهااگرمثال،برای.استبرقرارداشتنیكEmployeeکهمیشویممتوجهکنیم،
CommunityMember،یااستTeacherیكFacultyواقعدر.است
CommunityMember،مبنایکالسوEmployee،Studentبرایمستقیم
Alumnusاین،برعالوه.استCommunityMemberمبنایکالسیك
رامدیاگدرکالسهادیگرتمامبرایغیرمستقیم.استمراتبسلسله
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Shapeسلسلهمراتبارثبری(سهبعدیشكلهای)ThreeDimensionalShapeو(دوبعدیشكلهای)TwoDimensionalShapeکالسهای.میشودآغازShapeمبنایکالسبامراتبسلسلهاینایندر.استسهبعدیودوبعدیاشكالازمشخصانواعازبرخیحاویمراتبسلسلهاینسومسطح.هستندسهبعدییادوبعدییاشكلها.شدهاندمشتقShapeمبنایکالساز
شكلیك(کره)Sphereیكحالیكهدر،(shape)استشكلیكودوبعدیشكلیك(مثلث)Triangleیكنمونه،برای.داردوجودis-aرابطهچندینکالس،مراتبسلسله.هستندعدیدوبشكلهایهمگیکهباشدذوزنقههاوبیضیهامستطیلها،هماننددیگریکالسهایحاویمیتوانستمراتبسلسلهاینکهکنیدتوجه.استشكلیكوسهبعدی فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالکاربردیازوراثتInheritanceیكسانیدالیلبهشیگرابرنامهنویسیزبانهایهمهی.میشودسلسلهمراتبیبهصورتکالسهاساختموجبکهاستشیگرابرنامهنویسیبنیادیاصولازیكی
باهمطمرتببخشچنددرمیتوانندویژگیهااینکهکنیدتعریفویژگیسرییكباکلیکالسیكمیتوانیدinheritanceازاستفادهبا.میکننداستفادهinheritanceازبریارثآنازکهکالسیسیشارپزباندر.دهدقرارآنهااختیاردررایكتاستکهمواردیوشودارثبریدیگرکالسهایتوسطمیتواندکلیکالساین.باشندمشتركbaseمیشود، class(پایهکالس)میدهدانجامراارثبریکهکالسیوداردنامderived class(شدهمشتقکالس)اینرواز.میشودنامیدهderived classنسخهی
baseشدهیاختصاصی classاست.derived classتمامvariable،هاmethod،هاpropertyوهاindexerدرشدهتعریفهایbase classمیبردارثبهرا فرادرس.میکنداضافهنیزراخودبهمخصوصعناصراینهاکناردرو
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
ایجادکالسهابدوناستفادهازوراثتجزامهایکالسکارمندودانشجوموجودیتبرایصورتیكهدر
وعموضاین.باشدمیتكراریکداززیادیبخشکنیم،ایجادتمسیسنگهداریبرشدنهزینههمچنینوکاریدوبارهموجب
فرادرس.شودمی
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Inheritanceوراثت،ارثبری
تنهاوببرندارثبهراآنEmployeeوStudentکالسهایودهیمقرارآندرراموجودیتهامشترکاتوکنیمایجادPersonکالسیكتوانیممیکنیدمیمشاهدهکههمانطورانجامبریارثروشاینبهوشدهذکرپایهکالسنام:یكباکالسنامازبعدکهمیبینیدکنیددقتمشتقکالسهایکدبهصورتیكهدر.کننداضافهآنبهراخوداختصاصیبخشهای فرادرس.میشود
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
تخصيصحافظهدروراثت
.دارندنیزراپایهکالساجزاتماممشتقنوعازاشیائی
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Multi level Inheritanceوراثتچندسطحي
وبردمیارثبهراشخصکالسکارمندمثالعنوانبه.باشدسطحیچندتواندمیبریارث.بردمیارثبهراکارمندکالسعلمیهیئتعضوکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
تقدسترسيبهاجزاءاختصاصيکالسپایهبهکمکمتدهایعموميکالسپایهازیکشيکالسمش
سکالعمومیمتدهایتوانیممیمشتقنوعازاشیائیطریقازوانندتمینیزپایهکالسعمومیمتدهایوکنیمفراخوانیراپایهاجزایحتی)باشندداشتهدسترسیپایهکالساجزایهمهبه
ایمتدهکمكبهمشتقکالسازخارجدربنابراین(اختصاصیههمبهتوانیممیمشتقکالسشییكازپایهکالسعمومی فرادرس.باشیمداشتهدسترسیپایهکالساجزاء
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Constructor and inheritancebaseهمارثبری،سلسلهمراتبدر classهموهاderived classمیتوانندها
constructorکدامکهمیآیدبهوجودسوالایناینجادر.باشندداشتهراخودشانconstructorشیءساختنمسئولderived classدرآنکه؟استbase classیااست
derivedدرآنکه classواقعدرهردو؟یادارد؟قرارconstructorدرکهایbase class
baseبخشدارد،قرار classوشیءیكconstructorدرکهایderived classاست،واقعderivedقسمت classازیراستمنطقیکاراینکهمیشویدمتوجهکنیدتوجهاگر.میسازدرا
base classدرونعناصرازاطالعیودسترسیهیچderived classاینروازونداردconstructorازقبلیمثالهایدر.باشدجداگانهبایدآنهاdefault constructorکه
السهاکبیشترعملدرامااستشدهاستفادهمیشوندساختهسیشارپتوسطاتوماتیكبهصورتconstructorمیکنندتعریف.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
base classهای constructorفراخوانيderivedیك classمیتواندconstructorدرکهایbase classفرمدادنگسترشطریقازرااستشدهتعریفاشconstructorدرderived classکلمهیکلیدیو
base،بزندصدا.:استزیربهشكلآنیافتهیگسترشتعریفکلیفرم
derived-constructor(parameter-list) : base(arg-list)
{
// body of constructor
}baseدرconstructorنیازموردهایargumentمشخصکنندهیarg-listاینجا،در classگرفتنقرارنحوهیبه.استcolonباشیدداشتهتوجهنیز.
derivedیكهنگامیکه classکلمهیکلیدیازbaseمیکند،استفادهbase
baseنزدیكترینبهمستقیما classباالیderived classاز.میشودمربوطنزدیكترینبهbaseمیکنید،استفادهارثبریسلسلهمراتبازهنگامیکهاینرو،
base classازاگر.کردخواهدرجوعزنجیرهایندرbaseاستفادهbaseپیشفرضconstructorنكنید، classشدخواهداجرا.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
No Multi Inheritance
دلیلبهچندگانهوراثتازنكردنپشتیبانی.داردراواسطهانامحدودتعدادازبریارثامكانکالسیكالبته.نمیشودپشتیبانیشارپسیزباندرکالسهاازچندگانهوراثتمشتقاحتماالکهکالسیكبراییعنی.کرداستفادهمختلفهایInterfaceازمیتوانعوضدر.استپیچیدگیازجلوگیریبرایوCLIدرزباناینمعماریاهداف فرادرس.نمود(Implement)سازیپیادهراواسطچندینمیتواناستدیگرکالسی
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Protected
مابینمیانیحفاظتیسطحیكکنندهعرضهprotectedدسترسیمبنایکالسیكاعضای.استprivateوpublicدسترسیهای
protectedآنزاشدهمشتقکالسهردریامبناکالسدرفقطمیتوانند فرادرس.گیرندقراردسترسدرکالس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Hiding inherited member
derived classکهکندتعریفراعضویمیتواندbaseاعضایازیكیناممشابه classباشداش.
baseعضوآنافتد،اتفاقیچنینهنگامیکه classدرderived classموردایندرحالیکه.نمیشوددیده
نمیشود،شمردهخطاسیشارپدرتكنیكیلحاظازازییكاینکهازودادهشمابههشدارپیغامیكکامپایلرماشقصداگر.میسازدخبرباراشمانمیشوددیدهاعضاbaseاعضایازیكینشدندیدهباعثتاباشداین
classدرکامپایلرهشداررفعبهمنظور،شویدderived classکلمهیکلیدیازعضوآنتعریفدر
newازتفادهاساینکهباشیدداشتهدقت.کنیداستفادهnewاستفادهشیءساختنبرایآنازکهحالتیبا
.استمتفاوتمیکردید
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Invoking base class methods
baseازاعضاییبهدسترسیبرایbaseکاربردهایازیكی classدراسمیتشابهدلیلبهکهاستderived classنیستندمشاهدهقابل.derived classیكیناممشابهکهکندتعریفراعضویمیتواند
baseاعضایاز classعضوآنافتد،اتفاقیچنینهنگامیکه.باشداشbase classدرderived
classیكرکامپایلنمیشود،شمردهخطاسیشارپدرتكنیكیلحاظازموردایندرحالیکه.نمیشوددیدهتاباشداینشماقصداگر.میسازدباخبرراشمانمیشود،دیدهاعضاازیكیاینکهازودادهشمابههشدارپیغامbaseاعضایازیكینشدندیدهباعث classدرکامپایلر،هشداررفعبهمنظور،شویدderived classدرآنباnewازاستفادهاینطورکهباشیدداشتهدقت.کنیداستفادهnewکلمهیکلیدیازعضوآنتعریفthisبهشبیهحدودیتاbaseازاستفاده.استمتفاوتمیکردیداستفادهشیءساختنبرایآنازکهحالتی
baseبههمیشهbaseکهتفاوتاینبااست classازاستفادهنحوهی.میکندرجوعbaseزیرشكلبه:است
base.member
مواقعیبرایbaseازاستفادهنحوهیاین.باشدمتدمیتواندهمومتغیرمیتواندهمmemberاینجادرbaseدرعضویكکهاست classدراسمیتشابهدلیلبهderived classمورداین.نمیشوددیده
.میکندصدقنیزمتدهادربارهی
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
ایجادکالسهابدوناستفادهازارثبرینامهبردرکارمندانانواعحاویکهارثبریمراتبسلسلهیكازمثال،ایندر
موجودطهرابتوضیحبهتامیکنیماستفادهاستشرکتیكدستمزدپرداختمیسیونککارمندان.بپردازیمشدهمشتقکالسیكومبناکالسیكمابین
د،شخواهندعرضهمبناکالسازاشیاءبعنوانکه(حقالعملکارکارمندانیا)دانکارمنحالیكهدرمیکنند،دریافتفروشازدرصدیبصورتراخودحقوق
عرضهشدهمشتقکالسازاشیائیبعنوانکه)حقوقپایهبرمبتنیکمیسیون.میکننددریافترافروشازدرصدیهمراهبهپایهحقوقیك(شدخواهندبهاستکارمندنوعدواینمابینموجودرابطهباارتباطدرکهراخودبحثاینازهریكبرایاولمثالدر.میکنیممطرحمثالچندکمكبهودقت
دمیکنیمشاهدهکههمانطور.میکنیمایجادمستقلکالسهایموجودیتها.میباشدتكراریشدهنوشتهکددرصد90ازبیش
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
ازجدیدنسخهیكبخشایندرازکهمیکنیمایجادBasePlusCommssionEmployeeکالسمثالایندر.استشدهمشتقCommissionEmployeeکالس،یكBasePlusCommssionEmployeeشی
CommisionEmployeeکالسقابلیتهایکهچرااستCommissionEmployeeمیبردارثبهرا.
هااستفادهازویژگيوراثتدرایجادکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Virtual method،کلیدیکلمهیباکهاستمتدیvirtualدروbase class
Virtual.میشودتعریف methodدرراآنمیتوانیدکهاستشكلیبهderived
classهراینرو،از.کنیدتعریفمجدداderived classاختصاصینسخهیمیتواند
virtualازراخودش methodشد،گفتهکههمانطور.باشدداشتهvirtual
methodدرbase classکلیدیکلمهیباvirtualیكهنگامیکه.میشودتعریف
virtual methodدرderived classازبایدمیشود،تعریفمجدداoverride
modifierمجددتعریفپروسهبنابراینکنیداستفادهvirtual methodدر
derived classراmethod overridingهنگام.مینامیمoverrideیكکردن
returnمتد،اسمبایدمتد، typeبامطابقراآنپارامترهایوvirtual method
derivedیكاگرمیکنید،استفادهارثبریمراتبسلسلهازهنگامیکه.بنویسیم
class،یكvirtual methodراoverrideارثبریزنجیرهیابتدایطرفبه،نكند
.شدخواهداجراشوددیدهکهمتدآنoverrideاولینکنید،حرکت
OverridingمتدهایوVirtual
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
baseیكداریدقصدگاهی classنآومیکندمشخصراکلیفرمیكتنهاکهبسازید
derivedخودکهمیدهداجازهومیگذارداشتراكبهشدهمشتقکالسهایتمامبارا
classیکالسچنینمثال،بهعنوان.کنندتكمیلراکلیفرماینجزئیاتوبدنهها
derivedومیکندمشخصرامتدیكماهیت classرامتداینبایدهاoverride
baseخوداماکنند classپیشفرضاجراییكمتداینبرایکهنداردنیازیدیگر
baseکهدهدرخزمانیاستممكنحالتاین.باشدداشته classاجراییكنتواند
derivedعهدهیبررااجرااینروازباشد،داشتهنظرموردمتدبرایبامعنی classها
ایهپهایکالسازنتواناینكهبرای.استمعنیبیهاکالساینازاشیاءایجاد.میگذارد
.نماییممیتعریفabstractصورتبهراآنهاکردتعریفاشیاء
Abstractانتزاعيکالس Class
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
abstractباabstractمتدیك modifierمیشودساخته.abstract methodازونداردبدنه
baseدروناینرو classشدنخواهداجرا.derived classاینبایدحتماهاabstract methodرا
overrideیك.کنندabstract methodاتوماتیكبهصورتvirtualنمیتوانیدواقعدروهستنیز
abstractدرمیبینیدکههمانطور.کنیداستفادهتعریفیكدرباهمabstractوvirtualاز
methodکهکنیددقت.نداریدنیازبدنهبهabstract modifierمتدهایبراینمیتوانیدراstatic
.باشندabstractمیتوانندنیزindexersوProperties.کنیداستفاده
برای.شودتعریفabstractبهصورتبایدباشدabstractمتدیكازبیشتریایكشاملکهکالسی
abstractازclassکلیدیکلمهیازقبلکهاستکافیabstractبهصورتکالسیكتعریف
modifierکهآنجااز.کنیداستفادهabstract classوجودبهدلیل)شوداجراکاملبهطورنمیتواند
abstractازنمیتوانیددلیلبههمین،(ندارندبدنهکهabstractمتدهای classبسازیدشیء.
derivedیكهنگامیکه classیكازabstract classمتدهایتمامبایدمیکندارثبری
abstractدرbase classراoverrideاینصورتغیردرکندderived classبهصورتبایدنیز
abstractشودتعریف.
& abstract Classabstract Method
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
جلوگيریازارثبریبرایsealedاستفادهازریپیشگیآنشدنانجامازکهاستنیازگاهیاست،کاربردیومفیدبسیارinheritanceاینکهبا
منطقومسألهبهبستگیکنید،جلوگیریinheritanceانجامازشرایطیچهدروکجادراینکه.کنیدانجاممانعمیتوانیدراحتیبهsealedکلیدیکلمهیازاستفادهباسیشارپدر.داردخودتان.شویدinheritanceشدنهرمکالسیكازکهمییابیداطمینانآنازاستفادهباواستشدهمومومهرمعنایبهsealedواژهی
تعریفابتدایدرکهاستکافیکالس،یكکردنsealedبهمنظور.کردارثبرینمیتوانشدهموموهمنمیتوانراکالسیكکهباشیدداشتهدقت.کنیداستفادهsealedکلیدیکلمهیازکالس
کاملتنهاییبهabstractکالسچراکهکردتعریفabstractبهصورتهموsealedبهصورت.استخودشازمشتقشدهکالسهایبهوابستهباشدداشتهکاملیاجرایاینکهبرایونیست
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
متدها overrideازجلوگيریبرایsealedاستفادهازvirtualدرمیتواندsealedکهاستایندیگرنكتهی methodsازپیشگیریبراینیز
overrideکالساینجا،در.گیردقراراستفادهموردشدنClassAمتدیكvirtualداردازکهکالسهاییاینرواز.استشدهsealedهموoverrideهمClassBکالسدرکه
ClassBنمیتواننددیگرمیکنندارثبری)(MyMethodراoverrideمتداینزیراکنند فرادرس.استشدهsealedدیگر
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Indexersوشکلکليآنها[]عملگرکردنتعریف.میشودانجام[]عملگرطریقازآرایهگذاریindexمیدانید،کههمانطور
operatorازمنظوراینبرایامااستامكانپذیرنیزکالسبرای methodعوضدرونكردهاستفاده.شودگذاریindexآرایهیكمانندشیءیكمیدهداجازهIndexer.میکنیداستفادهIndexerاز
Indexerکلیفرم.باشندداشتهبعدیكازبیشتریایكمیتوانندهاIndexerبهشكلبعدییكهراینرو،از.استindexerعنصرنوعکنندهیمشخصelement-typeاینجادر.استمقابل
یكنوعبانوعاین.استelement-typeنوعازباشد،دسترسیقابلindexerتوسطکهعنصریbackingآنبهاصطالحاومیگیریدنظردرindexerبرایکه)آرایه storeاستیكسان(میگویند.
.میکندمشخصراباشیدداشتهدسترسیآنبهمیخواهیدکهعنصریindexواقعدرindexپارامترindexبامشابههاindexerکهآنجاازاماباشدintپارامترجنسحتمانیستنیازیکهکنیدتوجه.استرایجموردایندرintازاستفادهمیگیرند،قراراستفادهموردآرایهaccessorآنهاازکدامهربهکهمیکنیدمشاهدهراsetوgetکلمههایindexerبدنهیدرونparameterوreturn-typeکهتفاوتاینبااستمتدیكمشابهaccessorیك.میشودگفتهومیشوندفراخوانیاتوماتیكبهطورهاaccessorاینمیکنیداستفادهindexerازهنگامیکه.نداردتساویچپطرفدرindexerاگر.میکننددریافتپارامتربهعنوانراindexهاaccessorدویهرsetبنابراینباشد،گرفتهقرار accessorتوسطکهعنصریبهمقداریكوفراخوانیindexمشخصgetاینصورتغیردر.میشوددادهاختصاصاست،شده accessorمشخصعنصروشدهفراخوانیمقداریشاملکهداردvalueاسمبهپارامتریكهمچنینSet.میشودindex،returnتوسطشدهکهاستاینindexerمزیتهایازدیگریكی.میشوددادهاختصاصمشخصindexیكبهکهاست
.کنیدوگیریجلنامناسبدسترسیهایازوباشیدداشتهکنترلتحتدقیقاراآرایهبهدسترسیمیتوانید
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالچندضلعي
سازیذخیرهبراینقاطازایآرایهچندضلعیکالس
ازنیزرئوسخواندنونوشتنبرایهمچنین.داردرئوس
اینindexerکمكبهتوانمی.شودمیاستفادهمتد
.کردخواناتربسیارراکالس فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Basic indexer
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Index typeهراینرو،از.استindexerعنصرنوعکنندهیمشخصelement-typeاینجا،در
نوعاین.استelement-typeنوعازباشد،دسترسیقابلindexerتوسطکهعنصریbackingآنبهاصطالحاومیگیریدنظردرindexerبرایکه)آرایهیكنوعبا store
آنبهمیخواهیدکهعنصریindexواقعدرindexپارامتر.استیكسان(میگویندپارامترجنسحتمانیستنیازیکهکنیدتوجه.میکندمشخصراباشیدداشتهدسترسی
intکهآنجاازاماباشدindexerبامشابههاindexمیگیرند،قراراستفادهموردآرایه فرادرس.استرایجموردایندرintازاستفاده
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Index number
Indexerاشندبداشتهبعدیكازبیشتریایكمیتوانندها.
indexتعداداستکافیبعدیچندindexerتعریفبرای
فرادرس.کردزیادراها
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Indexer overloading
indexerچندینکالسیكبرایتوانمی
.کردتعریف
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالچندضلعي
وsetvertexمتدهایازمثالایندر
getvertexرئوسآرایهدرنوشتنوخواندنبرای
وکردهسختراکالسازاستفادهکهشدهاستفاده
ییكسانعدماینونداردراآرایهبابودنمتحدالشكل
نوعازاشیائیباکارراحتیعدموخواناییعدمموجب
Polygon1گرددمی.
class Polygon1{
Point[] vertices;public Polygon1(int n)
{vertices= new Point[n];
}public void setvertex(int i, Point value)
{vertices[i] = value;
}public Point getvertex(int i){
return vertices[i];
}}
private void button1_Click(object sender, EventArgs e){
Polygon1 triangle = new Polygon1(3);triangle.setvertex(0, new Point(10, 10));triangle.setvertex(1, new Point(40, 10));triangle.setvertex(2, new Point(40, 70));
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
indexerمثالچندضلعيبا
برایgetvertexوsetvertexمتدهایبجایمثالایندر
کهشدهاستفادهindexerازرئوسآرایهدرنوشتنوخواندن
موجبیكسانیاینوکردهمتحدالشكلهاآرایهباراکالسازاستفاده
.گرددمیPolygon2نوعازاشیائیباکارراحتیوخوانایی
class Polygon2{
Point[] vertices;
public Polygon2(int n){
vertices= new Point[n];}
public Point this[int i]{set{
vertices[i] = value;}
get
{return vertices[i];
}}}
private void button2_Click(object sender, EventArgs e){
Polygon2 triangle = new Polygon2(3);
triangle[0] = new Point(10, 10);triangle[1] = new Point(50, 50);triangle[2] = new Point(10, 70);
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
indexerمثالچندضلعيبا
drawبناممتدیكضلعیچندکالسبرایمثالایندر
سمرراچندضلعیرئوسبینخطترسیمباکهکردیمایجادPolygon2کالسازاستفادهخواناییوسهولتبه.کندمی
بهترراindexerازاستفادهمزیتتاکنیددقتروبروکددرنامفضایدرموجودکالسیكPointکالس.کنیددرك
System.Drawingباشدمی.
class Polygon2{
Point[] vertices;public Polygon2(int n)
{vertices= new Point[n];
}public Point this[int i]{
set{ vertices[i] = value; }get{ return vertices[i]; }
}public void draw(Graphics x,Color c){
int i;for ( i = 0; i < vertices.Length - 1;++i )
x.DrawLine(new Pen(c),vertices[i],vertices[i+1]);x.DrawLine(new Pen(c), vertices[i], vertices[0]);
}}
private void button3_Click(object sender, EventArgs e){
Polygon2 rec1 = new Polygon2(4);rec1[0] = new Point(10, 10);rec1[1] = new Point(80, 10);rec1[2] = new Point(80, 130);rec1[3] = new Point(10, 130);
rec1.draw(pictureBox1.CreateGraphics(), Color.Blue);}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Polymorphismچندریختي
یكحالتباشند،«خاصیبرنامه»اینكهبجایبرنامههاتامیدهدامكانچندریختی.باشندداشته«کلیبرنامه»هککنیمپیادهسازیوطراحیراسیستمهاییمیتوانیمچندریختی،کمكبه
یاتغییرکمیبامیتوانندجدیدکالسهای.استآسانترآنهابسطپذیریوگسترشجدیدکالسهایمادامیكهشوند،افزودهآنبهبرنامهعمومیبخشهایدراصالحتنها.کندمیپردازشآنراجامعبطوربرنامهکهباشندتوارثیمراتبسلسلهازبخشی
شوندادهدتغییرجدیدکالسهایبایافتنتطبیقبرایبایدکهبرنامهازبخشهایمراتبسلسهبهشدهافزودهجدیدکالسهایوجودازتادارندنیازکههستندآنهایی
.گردندمطلعمستقیما
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالچندریختيسهایکال.کندشبیهسازیراحیواننوعچندصدایکهبنویسیمبرنامهایمیخواهیمکنیدفرضcat(گربه)،Dog(سگ)وDock(اردك)تصور.هستندبررسیتحتحیواننوعسهنشاندهندهتابعیكحاویکهدارند،ارثبریAnimalمبنایکالسازکالسهااینازیكهرکهکنید
speak()متدشدهمشتقکالسهر.دهدمینشانراحیوانبهمربوطصدایکهبودهspeakراانواعازاشیائیبهاشارهگرهااز(vector)برداریكنگهداریبهمبادرتبرنامه.میکندپیادهسازیدرشیهربهبرنامهحیوانات،حرکتشبیهسازیبرای.میکندAnimalیشدهمشتقکالسهای
پیغاماینبهحیوانازخاصنوعهروجود،اینبا.میکندارسال()speakبنامپیغامیكثانیههرازشیهرامامیکند،ارسالشیهربهراپیغامیكجامعبطوربرنامهمیدهد،پاسخخودروشبه
«حیحصفعلانجام»نحوهازشیهراینكهپایهبر.زندمیحرفآنمبنایبرواستمطلعخودصدای.استpolymorphismیاچندریختیکلیدیمفهوم،یكسانمتدفراخوانیبهواکنشاست،مطلعازوداردبدنبالمختلفینتایجمیشودارسالاشیاءانواعبهکه()speakموردایندریكسانپیغاموراحیطراسیستمهاییمیتوانیمچندریختی،کمكبه.استچندریختیمفهومنشاندهندهاینرو
کمیابمیتوانندجدیدکالسهای.استآسانترآنهابسطپذیریوگسترشکهکنیمپیادهسازیازیبخشجدیدکالسهایمادامیكهشوند،افزودهآنبهبرنامهعمومیبخشهایدراصالحیاتغییرکهرنامهبازبخشهاییتنها.میکندپردازشآنراجامعبطوربرنامهکهباشندتوارثیمراتبسلسلهوجودازتانددارنیازکههستندآنهاییشونددادهتغییرجدیدکالسهایبایافتنتطبیقبرایباید
کالساگرمثال،برای.گردندمطلعمستقیمامراتبسلسهبهشدهافزودهجدیدکالسهایBird(پرنده)کالسازکهAnimalمتدمیتواندکه)کنیمایجادراداردارثبریspeakرا
شبیهسازیراBirdشیازنمونهیكکهبخشیآنوBirdکالستااستنیازفقط،(کندبازنویسی.بنویسیمرامیکند
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالچندریختيکهداریم(مربع)Squareو(مثلث)Triangle،(دایره)Circleهمانندشكلکالسهایازمجموعهایکهکنیدفرضابعتیكطریقازخودترسیمقابلیتازمیتوانندکالسهاازکدامیكهر.شدهاندمشتقShapeمبناکالسازهمگیهربرایتابعاینعملكردلیكن،استبخودمتعلقdrawتابعدارایکالسیهراگرچه.باشدبرخوردارdrawبنامعضوتمامردنکتلقیقابلیتمیکند،ترسیمرااشكالازمجموعهایکهبرنامهایدر.بودخواهدمتفاوتکامالدیگریباشكلازآسانیبهمیتوانیمشكلهرترسیمبرایسپس.بودخواهدسودمندShapeمبنایکالسازاشیائیبصورتاشكالبصورتتادهیماجازهبرنامهبهوکردهاستفادهdrawتابعفراخوانیبرایمبناکالسShapeاشارهگریك
Shapeاشارهگرکهشینوعبرحسبشدهمشتقکالسdrawتابعکدامکهکندتعیین(اجرازماندریعنی)دینامیك.شودگرفتهبكارمیکند،اشارهآنبه
هردرdrawتابعوکردهاعالنvirtualتابعیكبعنوانمبناکالسدرراdrawتابعابتدارفتاری،چنینداشتنبرای.میکنیمoverrideمقتضیشكلترسیمبرایراشدهمشتقکالسد،کنشدهمشتقکالسازشییكبهمبناکالسیكاشارهگرطریقازvirtualتابعیكفراخوانیبهمبادرتبرنامهایاگر
.کردخواهدانتخاباشارهگرنوعنهوشینوعبراساسراdrawصحیحتابع(اجرازماندریعنی)دینامیكبصورتبرنامهdynamic)دینامیكمقیدسازیبعنوان(کامپایلزمانبجای)اجرازماندرفراخوانیبرایمقتضیتابعانتخاب
binding)میشودشناخته.د،میشوفراخوانینقطهعضوانتخابعملگرونامکمكبهوخاصشییكبهمرجعیتوسطvirtualتابعیكزمانیكهفراخوانیکهvirtualتابعو(میشودگفتهاستاتیكمقیدسازیحالتاینبهکه)میشودمقررکامپایلزماندرتابعاحضار.ستااستاتیكچندریختیدهندهنشانرفتاراینکهاست،مشخصشیازکالسیبرایشدهتعریفتابعیكشده
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Type Compatibility
castingبهنیازتبدیلنوعاینبرایوباشدمینیزپایهکالسنوعازشییكمشتقکالسازشیهر
.شودمیانجامضمنیبصورتوباشدنمی
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Type Compatibilityمزایایزامراجعیبامشتقنوعازاشیائیسازگاریهایمحدودیترقمعلیازهکاشیائیتمامکنیدمیمشاهدهکههمانگونهپایه،کالسنوع
متدبهتوانمیراشوندمیایجادشدهمشتقهایکالسCheckAgeفرادرس.تاسشدهایجادکلیمتدیكبنابراین.کردارسال
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Method bindingدراولروش.شودمیانجامDynamicوStaticروشدوبهءاشیابهمتدهادادننسبت.اجرازماندردومروشوشودمیانجامکامپایلزمان
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Dynamic Polymorphism
وانیفراخبهواکنشاست،مطلع«صحیحفعلانجام»نحوهازشیهراینكهپایهبریكسانپیغام.استpolymorphismیاچندریختیکلیدیمفهومیكسان،متدبالبدنمختلفینتایجمیشود،ارسالاشیاءانواعبهکه()Promoteموردایندر
یممیتوانچندریختیکمكبه.استچندریختیمفهومنشاندهندهاینروازودارد فرادرس.استانترآسآنهابسطپذیریوگسترشکهکنیمپیادهسازیوطراحیسیستمهایی
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
DowncastingازeشیءبهFacultyجنسازReferenceیكدادننسبتباالسطحازرو"خودموندید"اینكهیعنیEmployeeنوع(Employee)ترپائینسطحبه(Faculty)اینكار.بدمتغییردرونیستپذیرامكان(صریحغیر-implicit)فرضپیشصورتبه
بایدحتمادهیدانجامراکاراینبخواهیدشماصورتیكهعهدهبهcastingباراکاراینمسئولیت(explicit)صراحتا فرادرس.بگیرید
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Type testing
نوعازمرجعیكآیاکهدادتشخیصتوانمیisعملگرکمكبهکالسنوعازکهeمرجعآیامثالعنوانبه.خیریااستکالسیكاشارهFacultyکالسنوعازشئیبهباشدمیemployeeپایه فرادرسکند؟می
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
يسيستمپرداختحقوقبااستفادهازچندریخت:مثالکاربردی.دمیکنپرداختحقوقهفتگیبطورخودکارمندانبهشرکتی
قوقحیكکهکارمندانی:شدهاندتقسیمدستهچهاربهکارمندانمیکنند،دریافتهفتهدرکاریساعاتازنظرصرفثابت
هفتهطولدرکاریاضافهوکاریساعتبراساسکهکارمندانیبراساسکهکارمندانیمیکنند،دریافتحقوقساعت40برمازادابتثحقوقبرعالوهکهکارمندانیومیکننددریافتحقوقفروش
تشرک.میگیردتعلقآنهابهکمیسیوننیزفروشازدرصدیوقحقکهکارمندانیبهجاریحقوقهایپرداختتاکهداردتصمیمبهدرصد۱0میکنند،دریافتفروشازکمیسیونباهمراهپایه
زیپیادهسابهمایلشرکت.نمایداضافهپاداشآنهافروشمیزانچندروشبهراحقوقپرداختمحاسباتتااستبرنامهاییك
.دهدانجامریختینامنام،دارایوی،حقوقمحاسبهروشازصرفنظرکارمندیهر
دادهاعضایاینروازوبودهاجتماعیتأمینشمارهوخانوادگیوfirstName،lastName:ازعبارتندخصوصی
socialSecurityNumberانتزاعیمبنایکالسدرکهEmployeeمیشوندظاهر.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
يسيستمپرداختحقوقبااستفادهازچندریخت:مثالکاربردیدرکهاستمراتبسلسلهدرموجودکالسپنجازنمایشیمقابلشكلدیاگرام.گرفتهاندقرارسرستونهادرToStringوearningsتوابعوآنچپسمتهککنیددقت.میدهدنشانراتابعهردلخواهنتیجهدیاگرامکالس،هربرای
وشدههمراهearningsتابعبرای"abstract“باEmployeeکالسشدهمشتقکالسهر.استمحضvirtualتابعیكتابعاینکهمیدهدنشانعتابیعنی)میکندانتخابمقتضیمقاصدانجامبرایراخودمناسبتابع
earningsراoverrideفرادرس.(میکند
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Employeeکالسمبنایانتزاعيایجاد
مفاهیمآنسازیپیادهبرایکالسایندرزیراباشدمیabstractنوعازEmployeeکالسازEarningمتددلیلبه.گرددمیسازیپیادهشوندمیمشتقEmployeeکالسازکههاییکالسدرمتداین.نیستموجودکافی فرادرس.گرددتعریفانتزاعیکالسیكشكلبهبایدباشد،میانتزاعیمتدیكحاویEmployeeکالساینكه
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
SalariedEmployeeکالسمشتقشدهغيرانتزاعيایجاد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
HourlyEmployeeغيرانتزاعيشدهکالسمشتقایجاد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
CommissionEmployeeکالسمشتقشدهغيرانتزاعيایجاد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
BasePlusCommissionEmployeمشتقشدهغيرانتزاعيکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Static Polymorphismتست
private void button1_Click(object sender, EventArgs e){
SalariedEmployee salariedEmployee =new SalariedEmployee("Ali", "Ahmadi", "111-11-1111", 800000);HourlyEmployee hourlyEmployee =new HourlyEmployee("Reza","Mohaghegh","222-22-2222", 11000, 40.75m);
CommissionEmployee commissionEmployee =new CommissionEmployee("Farshid", "keshavarz","333-33-3333", 7000000.00M, .06M);BasePlusCommissionEmployee basePlusCommissionEmployee =new BasePlusCommissionEmployee("Mostafa", "haghi kashany","444-
44-4444", 5000000.00M, .04M, 300000.00M);label1.Text = salariedEmployee.ToString() +"\nEarning: "+ salariedEmployee.Earnings()+"T";
label1.Text += commissionEmployee.ToString() + "\nEarning: " + commissionEmployee.Earnings() + "T";label1.Text += hourlyEmployee.ToString() + "\nEarning: " + hourlyEmployee.Earnings() + "T";
label1.Text += basePlusCommissionEmployee.ToString() + "\nEarning: " + basePlusCommissionEmployee.Earnings() + "T";}
Static polymorphismزماندرکهافتدمیاتفاقزمانیCompileیك.گرددمیفراخوانیشینامطریقازمتد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Dynamic Polymorphismتست
Dynamic polymorphismمتدیكاجرازماندرکهافتدمیاتفاقزمانیبر.گرددمیفراخوانیپایهشیمرجعطریقازمشتقکالسبهمربوطوصحیحانیفراخوبهواکنشاست،مطلع«صحیحفعلانجام»نحوهازشیهراینكهپایهیاپویاچندریختیکلیدیمفهومپایه،شیمرجعطریقازیكسانمتد
polymorphismموردایندریكسانپیغام.استEarning()طریقازکهازودداربدنبالمختلفینتایجمیشود،ارسالاشیاءانواعبهپایهکالسمراجع.استچندریختیمفهومدهندهنشاناینرو
private void button2_Click(object sender, EventArgs e) {SalariedEmployee salariedEmployee = new SalariedEmployee("Ali", "Ahmadi", "111-11-1111", 800000);
HourlyEmployee hourlyEmployee = new HourlyEmployee("Reza", "Mohaghegh", "222-22-2222", 11000, 40.75m);CommissionEmployee commissionEmployee = new CommissionEmployee("Farshid", "keshavarz", "333-33-3333", 7000000.00M, .06M);BasePlusCommissionEmployee basePlusCommissionEmployee = new BasePlusCommissionEmployee("Mostafa", "haghi kashany", "444-
44-4444", 5000000.00M, .04M, 300000.00M);Employee[] employees = new Employee[4];
employees[0] = salariedEmployee;employees[1] = hourlyEmployee;
employees[2] = commissionEmployee;employees[3] = basePlusCommissionEmployee;
foreach ( Employee currentEmployee in employees )label2.Text+=currentEmployee.ToString()+"\nEarning: "+currentEmployee.Earnings().ToString();}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Type Testingکالسیكنوعازشئیبهآیاکهکردکنترلتوانمیداریم،پایهکالسنوعازمرجعیکهزمانی:کنیممیاستفادهزیرشكلبهisعملگرازمنظوراینبرای.خیریاکندمیاشارهخاصمشتق
if(currentEmployee is BasePlusCommissionEmployee)
private void button2_Click(object sender, EventArgs e) {SalariedEmployee salariedEmployee = new SalariedEmployee("Ali", "Ahmadi", "111-11-1111", 800000);
HourlyEmployee hourlyEmployee = new HourlyEmployee("Reza", "Mohaghegh", "222-22-2222", 11000, 40.75m);CommissionEmployee commissionEmployee = new CommissionEmployee("Farshid", "keshavarz", "333-33-3333", 7000000.00M, .06M);
BasePlusCommissionEmployee basePlusCommissionEmployee = new BasePlusCommissionEmployee("Mostafa", "haghi kashany", "444-44-4444", 5000000.00M, .04M, 300000.00M);Employee[] employees = new Employee[4];
employees[0] = salariedEmployee;employees[1] = hourlyEmployee;
employees[2] = commissionEmployee;employees[3] = basePlusCommissionEmployee;
foreach (Employee currentEmployee in employees){
if (currentEmployee is BasePlusCommissionEmployee) {BasePlusCommissionEmployee employee = (BasePlusCommissionEmployee)currentEmployee;
employee.BaseSalary *= 1.10M; }label3.Text += currentEmployee.ToString() + "\nEarning: " + currentEmployee.Earnings().ToString();} }
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Interfacesواسطها
دهد،امانجبایدراکاریچهکالسیكاینكهتعریفشیگرابرنامهنویسیدرمواقعبعضیازشپیشما.نیستمهممیدهدانجامروشیچهبهرااینکاراینكهاما،باشدمفیدمیتواند
abstractکهنمونهایچنینبااین methodیك.شدیدآشناداشتنامabstract
methodیكبارامتدیreturn typeاجراراچیزیامامیکندتعریفنام،یكوderivedبلكهنمیکند classبایدabstract methodدرکههاییbase class
abstractاینرو،از.کندسازیپیادهراشدهاندتعریف methodکنندهیمشخصinterfaceاگرچه.اجراییقسمتنهواستمتدیكabstract classesو
abstract methodsشكلبهرامفهوماینمیتواناماهستند،کاربردیومفیدازکاملبهطورراکالسیكinterfaceمیتوانیدشماسیشارپدر.کردبیاننیزکاملتری
انجامinterfaceکلیدیکلمهیتوسطکاراینکهکنید،جداآناجراییبخشabstractبامشابهsyntaxنظرازInterface.میشود classدر.استinterface
.نمیشونداجرامتدهاinterfaceدرکهاستمعنیبدیناینوندارندبدنهمتدهانیزInterfaceآنشدنانجامچگونگیبهاماشودانجامبایدکاریچهکهمیکندمشخص
.میکنیداجرارانظرموردمتدهستیدمایلکههرطورشماونمیدهداهمیت
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
کدامیکراانتخابکنيم؟ Abstract Classو Interfaceبين
پسیشاربرنامهنویسیمهمقسمتهایازیكیقصدهنگامیکهکهاستموضوعایندانستنچهدهید،شرحراکالسیكقابلیتهایداریداززمانیچهوinterfaceاززمانی
abstract classکنیداستفادهبایددینبکلیقانون.نداریداجراییقسمتدرحالیکه
راکلیمفهومبخواهیدهرگاهکهاستصورتتاکیدکارهاشدنانجامبهفقطودهیدشرحنآشدنانجامچگونگیواقعدروباشیدداشتهازبایدباشد،نداشتهاهمیتشمابرای
interfaceهکداریدنیازاگر.کنیداستفادهد،کنیواردقبلازراشدناجراجزئیاتازبعضیabstractبایدآنگاه classاستفادهموردرا.دهیدقرار
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
interfaceتعریفواسطکليقالب
شدهیسادهفرممقابلدر.میشودتعریفinterfaceکلیدیکلمهیتوسطواسطیكمتدها.میشودمشخصnameتوسطinterfaceاسم.میبینیدراinterfaceیكreturnتوسطنیز type،پارامترهاونام(signature)درمتدهااین.میشوندتعریفabstractواقع methodدرشد،ذکرپیشترکههمانطور.هستندinterface،
متدهایتمامبایدداردinterfaceکهکالسیاینروازوندارنداجراییبدنهیمتدهامتدها،interfaceیكدر.کندسازیپیادهراinterfaceدرشدهتعریف
implicitly publicخودکاروپیشفرضبهصورتیعنی.هستندpublicوهستند.نداریدراحالتاینتغییراجازهیشما
ازتنهااگر.میشوندتعریفبدنهبدونinterfaceدرنیزpropertiesمتدها،همانندgetیاsetکنید،استفادهpropertyشماread-onlyیاwrite-onlyبودخواهد.auto-implementedتعریفبامشابهinterfaceدرpropertyتعریفاگرچه
propertyتعریفروشاین.نیستندیكیدواینامااست،کالسدرpropertyدرinterfaceکهنمیشودباعثauto-implementمشخصتنهااینبلكهباشد
accessتغییراجازههمچنین.استpropertyنوعونامکنندهی modifierدررا.نداریدsetوgetقسمتازتنهااگرقبلهمانند.باشدداشتهخوددرنیزراindexerمیتواندinterfaceیكgetیاsetکنید،استفادهindexerشماread-onlyیاwrite-onlyبودخواهد.
accessازاستفادهبهمجازهمچنین modifierدرaccessorهایindexer
.نیستیدinterfaceدرشدهتعریف
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Interface implementationهرمیشود،تعریفinterfaceیكهنگامیکه
نایمیتوانندداریدنظرمدشماکهکالستعدادinterfaceیكهمچنین.کنندسازیپیادهرا
classدلخواهتعدادبهمیتواندinterface
،interfaceیكاجرایبرای.کندسازیپیادهدرشدهتعریفمتدهایبدنهیبایدکالس
interfaceکهآنطورکالس،هر.آوردفراهمرادرکهبدنههایی)متدهاایناجرایبرایبخواهدآمادهinterfaceمتدهایبرایخودشکالسکالسدوبنابراین.میکنداقدام(استکرده
مختلفیروشهایبهراinterfaceیكمیتوانندهکمتدهاییتمامشاملکالسدوهراماکننداجرا.میباشنداستشدهمشخصinterfaceدر
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
interfaceهایreference variableاستفادهاز
referenceیكمیتوانیدسیشارپدرشما variableازinterfaceسیشارپدردیگر،عبارتبه.کنیدتعریف
interfaceمیتوانید reference variableبسازید.رااشinterfaceکهشیئیهربهمیتواندمتغیریاینچنین
طریقازراشیءیكمتدهنگامیکه.کندرجوعمیکنداجراinterface referenceکهمتدازنسخهآنمیزنید،صدا
اجرااستکردهسازیپیادهراinterfaceآنبهمربوطشیءbaseازاستفادهبهشبیهپروسهاین.میشود class
referenceشیءبهدسترسیبرایderived classاست.(شدیدآشناآنباقبلیقسمتهایدرکه)
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Generic codeGeneric codeبرایوشدهنوشتهکلیبطورکهشودمیگفتهایبرنامهبه
عنوانبهWarmupمتدمثالعنوانبه.باشدمیاستفادهقابلزیادیمواردیهایکالستمامازاشیاییبنابراینگیرد،میIFighterنوعازمرجعیورودی
کردارسالمتداینبهتوانمیراکنندمیسازیپیادهراinterfaceاینکه فرادرس.باشدمیکلیکدیكمتداینبنابراین
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Type testing
یكآیاکهدادتشخیصتوانمیisعملگرکمكبهبه.خیریاکردهسازیپیادهراinterfaceیكمرجعSoldierکالسنوعازکهsمرجعآیامثالعنوان
سازیپیادهراIfighterبنامintefcaceباشدمی فرادرس.خیریااستکرده
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Interface inheritanceهاارثبریواسطsyntaxازامر،اینانجامبرای.کندارثبریدیگرinterfaceیكازمیتواندinterfaceیك
راایinterfaceاجرایقصدکالسیكکههنگامیکه.میشوداستفادهکالسهادرارثبریمشابهتعریفاعضایتمامبایدکالساست،کردهبریارثدیگریinterfaceازinterfaceآنکهدارددیگریinterfaceازinterfaceیكکههنگامی.کندسازیپیادهراارثبریزنجیرهیدرشده
derivedدرکهداردوجودامكاناینمیکندارثبری interfaceعضواینوشودتعریفعضویكbaseاعضایازیكیبا interfaceدرموجودعضومواقعایندر.باشدهمنامbase interface
ازلقبمیتوانیدهشدارپیغامرفعبرای.دیدخواهیدراهشدارپیغامیكشماونمیشوددیدهدیگرderivedدرعضوآنتعریف interface،کلیدیکلمهیازnewکنیداستفاده.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
(Ambiguity)ابهامههمرابهراعضوآنناممیتوانید،میکنیدسازیپیادهراinterfaceاعضایازیكیهنگامیکه
explicitساختنباعثکاراینانجام.بنویسیداشinterfaceنام interface member
implementationخالصهبهطوریاexplicit implementationساختن.میشودexplicit implementationازinterface method۱:باشدداشتهدلیلدومیتواند.
interfaceیكهنگامیکه methodطریقازراexplicit implementationریقطازبلكهبودنخواهددسترسیقابلکالساشیایطریقازشدهساختهمتدمیسازید،
interface referenceاینرو،از.داشتخواهیددسترسیآنبهexplicit
implementationسازیپیادهبرایدیگریروشinterface methodاینامااستدوکهاستامكانپذیرکالسیكبرای.۲.نیستکالستانازpublicعضویكدیگرمتد،
interfaceسازیپیادهرا(implement)آنهاهردویکهداردوجودامكاناینوکندexplicitازاستفادهمواردایندر.باشندداشتهsignatureیكونامیكبامتدهایی
implementationناممتد،نامازقبلشماچراکهمیشودابهامرفعباعثinterfaceآن.میکنیدمشخصنیزرا
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
پرداختیکسانسيستم:مثالکاربردی،کردیدمشاهدهچندریختیفصلدرکههمانگونههپایبرشرکتدستمزدوحقوقپرداختسیستم
ایلمشرکتکنیدفرض.گردیدطراحیچندریختیمحاسباتتمامتااستبرنامهایپیادهسازیبه
غمبالپرداختیاوحقوقپرداختقبیلازهاپرداختوریختیچندروشبهراهاپرداختسایروفاکتورهاهاپرداختاینكهبا.دهدانجامسیستمدریكسانباinterfaceیكابتدالیكندارند،متفاوتیمعانیتماموکنیممیتعریفپرداختجهتمتدیك
interfaceپرداخت،نوعهربامرتبطهایکالس
.کنندمیسازیپیادهرامذکور
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
پرداختسيستم:مثالکاربردیقالبinterfaceاین.کنیممیایجادIpayableبنامinterfaceیكابتداونداردورودیکهکندمیتعریفراGetPaymentAmountبناممتدیكراIPayableواسطEmployeeکالس.گرداندبرمیراپرداختمبلغرایبچونامانمایدسازیپیادهرامذکورمتدبایدبنابراینکندمیسازیپیادهاستنبودهموجودکافیاطالعاتEmployeeکالسدرمتداینسازیپیاده
Employeeکههاییکالستماموشدهتعریفabstractشكلبهبنابراین
سازیپیادهبهمؤظفSalariedEmployeeکالسهمانندبرندمیارثبهرا.هستندمتداین
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
پرداختیکسانسيستم:مثالکاربردییاInvoiceکالسبینیدمیکههمانگونه
راIpayableواسطنیزفاکتورهماندارایبنابراینواستکردهسازیپیادهGetPaymentAmountمتدخودکاربردمطابقآنرابایدوباشدمی
کههاییکالستمام.نمایدسازیپیادهInterfaceسازیپیادهرامذکور
بناممتدیدارایکنندمیGetPaymentAmountکههستند
راینبنابکند،میتعیینراپرداختمبلغاهموجودیتتمامبراییكسانهایبرنامه.گرددمیایجاد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
نمونهخروجي-یکسانسيستمپرداخت:مثالکاربردی
private void button1_Click(object sender, EventArgs e){
IPayable[] payableObjects = new IPayable[4];double TotalPayment = 0;
payableObjects[0] = new Invoice("01234", "seat", 2, 37500);payableObjects[1] = new Invoice("56789", "tire", 4, 290000);
payableObjects[2] = new HourlyEmployee("Farshid", "keshavarz", "111-11-1111", 100000, 50);payableObjects[3] = new SalariedEmployee("Mostafa", "haghi kashani", "888-88-8888", 3200000);
foreach (IPayable x in payableObjects){
label1.Text += x.ToString() + "\nPayment: " + x.GetPaymentAmount();TotalPayment += x.GetPaymentAmount();
}label1.Text += "\n -----------------------\nTotal Payment: " + TotalPayment.ToString()+"T";
}
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Delegates
یكبهمیتواندکهشیئیبااستبرابرdelegateیكسادهزبانبه
methodیكهنگامیکهبنابراین.کندرجوعdelegateدر،میسازید
رامتدیكبهreferenceمیتواندکهمیآوریدبهوجودراobjectیكواقع
referenceاینطریقازمیتواندمتداینرو،از.داردنگاهخودشدر
متدهایازلیستیشاملکهباشدشیتواندمیDelegates.شودفراخوانی
میشودموجبdelegate.(یكسانبازگشتیمقادیردارایوامضاهم)یكسان
اینكهبدونکنداجرارامتدها(اجرازمان)runtimeدربتواندشمابرنامهتا
compileدرمتدهاآنبداند timeکهاستذکربهالزم.هستندچیزیچه
Referenceلیستبه Methodsیكبهمربوطdelegate
Invocationاصطالحا Listمیشودگفته.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Step By Step Creating and Using the Delegate
Step 1 Declare a Delegate
Step 2 Create a Delegate reference
Step 3 Point the reference pointer to methods
Step 4 Invoke the methods through delegate
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Background - object-oriented method call
.میباشدمقابلشكلبهاشیاءمتدهایفراخوانیروش
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Notification
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Delegate definition
:استزیرصورتبهdelegateکلیفرم
راآنdelegateکهاستمتدیبازگشتینوعret-typeاینجادر
پارامترهای.استdelegateنامبابرابرName.میکندفراخوانی
قسمتدرمیشوندفراخوانیdelegateطریقازکهمتدنیازمورد
parameter-listمیگیردقرار.
رامربوطهمتدنام،می سازيدdelegateازشیءيکهنگامی که
:می دهيمdelegateبه(پارامتربدونمتد،نامتنها)
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Delegate use
GradeChangeتعریفباReportمتدامضای،میبینیدمقابلکددرکههمانطور
Invocationبهمیتواندمتداینپسدارد،مطابقت ListآبجكتTargetsاضافهما
متد،نامتنها)رامربوطهمتدنام،میسازیدdelegateازشیءیكهنگامیکه.شود
فرادرس.میدهیمdelegateبه(پارامتربدون
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Multiple targetsالسکیكاشیاءتوابعشمانداردلزومیهیچکهباشیدداشتهتوجهمیتوانیدشما.نماییدثبتDelegateشیءیكداخلدرراخاصنیزرادشدهانایجادمختلفیکالسهایازکهاشیائیبهمربوطتوابعدرندباشیكسانآنهاخروجیوورودیپارامترهایاینكهشرطبهتنها
.نماییدتبتDelegateشیءداخل،Delegateشیءیكدرداخلتابعاولینثبتبرایکهکنیددقت
یدبخواهصورتیكهدر.کنیداستفاده(مساوی)=عملگرازمیتواننمایید،ثبتDelegateشیءهمانداخلدرنیزرادیگریتوابع.یدنمایاستفادهمنظوراینبرای(مساویبعالوه)=+عملگرازبایدلگرعمازاستفادهجایبهسهواحالتایندراگرکهاستذکربهالزمداخلردشدهثبتقبلازتوابعتمامیکنید،استفاده=عملگراز=+
!میگردندUnregisteredخودکارطوربهDelegateشیءDelegateشیءیكداخلدرراشییكازتابعیصورتیكهدر
تابعبایداابتدببرید،بینازرامذکورشیءکهبخواهیدوکردهایدثبتUnregistered(مساویمنها)-=عملگرازاستفادهبارامربوطه
:نماییداقدامشیءآنبردنبینازبهنسبتسپسونموده
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثال.میباشدDelegateتعریفاولخط
.میباشدPublisherیاcallerهمانStudentکالس
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالیاهاTargetsهمانRegistararکالسوParentکالس
.هستندSubscripbersهمان
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثال
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالتمام،کنیمInvokeرانظرموردdelegateآبجكتاگرحال
Invocationدرکهمتدهایی Listاجراهستندموجودآن
delegateآبجكتیكکردنInvokeنحوهی،میشوند
نآبه(نیازصورتدر)پارامترارسالومتدیكفراخوانیمانند
StudentکالسازRecordClassمتددرون.میباشد
.میکنیمInvokeرانظرموردdelegateآبجكت فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Null reference
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Null referenceمثالاز
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Static methodsورودیپارامترهایکهاستاینآنشرطتنهاکردیمعنوانکههمانطوروبودخواهیدDelegateاشیاءداخلدرنیزکالسها(Static)استاتیكتوابعثبتبهقادرشماکهکنیددقت
میکنیماستفادهکالسنامازstaticتوابعبهدسترسیبرای.باشندداشتهمطابقتDelegateکالسساختاربانیزاستاتیكتوابعاینخروجیو
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Eventseventیكبرایمیتواندobjectیك
eventتعدادی handlerراregisterکند
میافتد،اتفاقeventیكهنگامیکهو
شدهregisterهایhandlerتمامی
Event.میشوندفراخوانی handlerبایدها
.باشندdelegateبامطابق فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Eventseventتعدادیeventیكبرایمیتواندobjectیك handlerراregisterهنگامیکهوکند
Event)میافتداتفاقeventیك Raise)،تمامیhandlerهایregisterفراخوانیشده
Event.میشوند handlerبامطابقبایدهاdelegateفرادرس.باشند
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Eventseventتعدادیeventیكبرایمیتواندobjectیك
handlerراregisterیكهنگامیکهوکندeventاتفاق
فراخوانیشدهregisterهایhandlerتمامیمیافتد،
Event.میشوند handlerبامطابقبایدهاdelegate
فرادرس.باشند
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Applications
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Applications
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Exceptions
ازاستفادهبا.میافتداتفاق(اجرازمان)runtimeدرکهاستخطاییexceptionیك
شدهکنترلروشیكازمیتوانیدشماسیشارپ،درexception-handlingزیرسیستم
اصلیمزیتهایازیكی.کنیدhandleراruntimeخطاهایسازمانیافته،و
exception handlingاینومیدهدانجامراخطاگیریخودکاربهطورکهاستاین
اگیریخطخودتانبایدبرنامهنویسی،درویژگیاینآمدنبهوجودازپیشکهاستدرصورتی
Exception.بودخطامستعدهموخستهکنندههمکهمیدادیدانجامرا handlingیك
exceptionکه)کدبالك handlerخطابروزهنگامکهمیکندتعریف(میشودنامیده
یابودنموفقدستیبهصورتکهنیستنیازیدیگربنابراین.میشوداجراخودکاربهصورت
آیدبهوجودruntimeدرخطایكاگر.کنیدبررسیرابرنامهازقسمتهربودنموفقعدم
exceptionتوسط handlerسیشارپ.شدخواهدبررسیexceptionرااستانداردهای
-index-out-ofوdivide-by-zeroخطاهایمانند)برنامهیكدررایجخطاهایبرای
range)اهمیتدالیلازدیگریكیموضوعاینکهمیکندتعریفexception
handlingاستاین.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Exception hierarchyکالسهایهمهی.میشوندارائهکالسهاتوسطهاexceptionسیشارپدر
exception(خطاگیریبرایداتنتاستانداردکالسهایمثل)کالسازبایدExceptionازبخشیخودشکهشوندمشتقSystem namespaceبنابراین.است
مهمزیرکالسهایازیكی.هستندExceptionزیرکالسهاexceptionهمهیException،کالسSystemExceptionمشخصکنندهیکهاستbase class
Systemدرشدهتعریفپیشازهایexceptionبرای namespaceکالس.استSystemExceptionکالسبهراچیزیExceptionصدردرفقطبلكهنمیافزاید
فریموركداتنت.میگیردقرارفریموركداتنتاستانداردهایexceptionزنجیرهیexceptionتوکارهای(built-in)ازکهمیکندتعریفرازیادیبسیار
SystemExceptionرخرصفبرتقسیمخطایهنگامیکهمثال،برای.میکنندارثبریبهزودی.میآیدبهوجودDivideByZeroExcepionنوعازexceptionیكمیدهد،کالسازارثبریباراخودتانexceptionکالسهایچگونهکهشدخواهیدمتوجه
Excepionتعدادی.بنویسیدpropertyآنهامهمترینازعددسهکهداردMessage،StackTraceوTargetSiteاین.هستندpropertyهرسههاread-
onlyهستند.Messageمیدهدشرحراخطاماهیتکهاسترشتهیكشامل.StackTraceبهمنجرکهاستفراخوانیهاییشاملرشتهاینکهاسترشتهیكشامل
تولیدکنندهیمتدمشخصکنندهکهبودهشیءیكشاملTargetSite.شدهاندخطاexceptionاست.Exception Classاستمتدچندینشاملهمچنین.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Handling an exceptionوtry،catch،throwکلمهکلیدیچهارتوسطسیشارپدر
finallyجودبهورامرتبطزیرسیستمیكاینها.میشودمدیریتدر.دارددیگریازاستفادهبهاشارههرکدام،ازاستفادهکهمیآورند
exceptionمبحثبررسیطول handlingکلماتازکدامهرهبمختصرنگاهیاماشدخواهنددادهتوضیحجزییاتباکلیدیازقسمتآن.شودواقعمفیداینجادرمیتواندهرکداموظایفراآن(exceptions)خطاهایداریدقصدکهبرنامهکدهایblockدرونکنید،بررسی tryیكاگر.میگیرندقرار
exceptionدرونtry blockایندهد،رخexception(بهاینمیتواندشماکد.میشود(throw)پرتاب(اصطالح
exceptionقسمتدرراblock catchروشیبهودریافتسیستم،استانداردهایException.کندhandleراآنمنطقی
کردنthrowبرایامامیشوندthrowخودکاربهصورتخودشانthrowکلمهکلیدیازبایددستیبهصورتexceptionیك
رااجبایدشرایطیهرتحتنهایتدرکهکدیهر.کنیداستفادهfinallyقسمتدرشود blockمیگیردقرار.ه
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Multiple catch.استدادهرخکهمیباشدایexceptionنوعExcepTypeاینجا،در
بامرتبطcatchجزءتوسطمیشود،پرتابexceptionیكهنگامیکهمنطقیروشیكباقسمتآندرexceptionسپسوشدهگرفتهخودش
handleکلیفرمکههمانطور.میشودtry/catchنشانمقابلشكلدرواقعدر.باشدوابستهtryبهمیتواندcatchجزءیكازبیشترمیدهد،
اینرو،از.شوداجرابایدcatchکدامکهمیکندمشخصexceptionنوعهمانفقطداشت،مطابقتcatchیكباexceptionیكهنگامیکه
catchبقیهیومیشوداجراcatchهنگامیکه.میشوندگرفتهنادیدههادر.میکنددریافتراآنمقدارeمتغیرمیشود،گرفتهexceptionیكeکردنمشخصواقع (exception variable)استاختیاری.exceptionاگر handlerبهدسترسیبهنیازیexception
objectمشخصبهنیازی،(استصورتهمینبهاغلبکه)باشدنداشته.میکندکفایتتنهاییبهexceptionنوعکردنمشخصونیستeکردن
اینمهمنكتهی.هستندeفاقدمیبینیدکهمثالهاییاکثردلیلهمینبهtryنشود،پرتابایexceptionهیچاگرکهاست blockبهصورت
گرفتهنادیدهآنبهوابستههایcatchهمهیوشدخواهداجرامعمولزمانیتنهابنابراین.مییابدادامهبعدبهcatchآخرینازاجراومیشوند
ازاستفاده.باشدشدهپرتابexceptionیكکهمیشوداجراcatchیكcatchکردنمشخصبدونexception typeگرفتنبرایروشیك.استهاexceptionتمامی
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالمدیریتاستثناء
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالمدیریتاستثناء
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالمدیریتاستثناء
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالمدیریتاستثناء
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالمدیریتاستثناء
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
مثالمدیریتاستثناء
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Generating an exceptionruntimeتوسطخودکاربهطورکههاییexceptionقبلمثالهایدر systemیكدستیبهصورتمیتوانیدشمااما.میشدندگرفتهبودند،شدهتولیدexceptionازاستفادهبارا
میبینید،کههمانطور.استکردهارثبریExceptionازکهباشدexceptionنوعباکالسیكازشیءیكبایدthrowجلویمقداراینجا،در.کنیدپرتابthrowکلمهکلیدی
DivideByZeroExceptionقسمتدرthrowازاستفادهباnewکهباشیدداشتهیادبه.استشدهساختهthrowبرایشیءیكبایدشمابنابراین.میکندپرتابراشیءیك
defaultازDivideByZeroExceptionشیءساختبرایمورد،ایندر.کنیدپرتابراtypeیكنمیتوانیدکهمعناستبداناین.کندپرتابراآنتابسازیدآن constructor
exceptionاشیایمیکنیدپرتابکههاییexceptionموارداکثردر.هستندموجودهاexceptionبراینیزدیگرهایconstructorامااستشدهاستفاده classکههستندهایی
exceptionچگونهکهشدخواهیدمتوجهمبحثاینیادامهدر.ساختهایدخودتان classبسازیدراخودتانهای. فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Locating a handler.استتادهافاتفاقکهبالکیستدروناستثناءیكمدیریتفرضپیشصورتبهسیستمباشدنیفتادهاتفاقمناسبخطایمدیریتجاریبالكدرونصورتیكهدر
کرددمیمناسبکنندهمدیریتبالكدنبالبهبالكهافراخوانیمراحلبرعكسtryازبرنامهنویسانبیشتر.برسدmainهمانیابرنامهاصلیبدنهبهتا block
هستندکردناصالحقابلسختکهخطاهاییکردنhandleبرایخارجیtryازومیکننداستفاده blockکهخطاهاییکردندرستبرایداخلیtryازمیتوانیدهمچنینشما.میبرندبهرهمیشوند،اصالحراحتتر block
catchبهعنوانخارجی all handlerبرایhandleکردنerrorکههاییtryدر blockداخلیhandleکنیداستفاده،نشدهاند.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Custom exceptionرایجخطاهایاکثرسیشارپbuilt-inهایexceptionاگرچه
درexception-handlingمكانیزماما،میکنندhandleراقدرتازبخشیواقع،در.نیستمحدودخطاهااینبهسیشارپکردنhandleتواناییها،exceptionبهسیشارپرویكرد
exception typeشما.میسازیدخودتانکهاستهاییکردنhandleبرایراخودتانهایexceptionمیتوانیدcustom)بسازیدآمدهبهوجودخطاهای exception).ساختن
کالسیكاستکافیتنهااست،سادهبسیارexceptionیك.باشدکردهارثبریExceptionازکالسآنوکنیدتعریفچیزیهیچاجرایبراینیازیواقعدرشماشدهیمشتقکالسارثبریExceptionازشماکالسهایهنگامیکه.ندارد
exceptionبهعنوانآنهاازبتوانیدتامیشودموجبمیکنند،
شاملمیسازیدشماکههاییexception.کنیداستفادهpropertyوmethodکهاستهایی
ApplicationExceptionهمچنین.میسازدفراهمآنبرایexceptionدرراآناعضایازتعدادیمیتوانید classکهای
.کنیدoverrideساختهاید،خود
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Custom exceptionمثالاز
درضلعیچندکالسبهمجددادر.کنیدفكرindexerمبحث
ازخارجاندیسیكازصورتیكهخطاییكکنیماستفادهمحدودبرنامهومیدهدرخاجرازمانبامیتوانمیکندپیداخانمهآنمدیریتواستثتاءیكتعریف
برنامهیافتنخانمهازبرنامهدر.کردجلوگیری
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Custom exceptionمثالاز
یكخودبرنامهبرایمیتوانیمافیستکتنهاکنیمتعریفاستثناءکالسیاوExceptionکالس
ApplicationExceptionبهکالسبرایمیتوانیم.ببردارث
ودادهایاجزاشدهایجاداستثناءوریمبگینظردرتیزجدیدتابعی
وتابعیاجراهمچنینراپایهکالسخصوصیتهای
overrideکنیم.
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Custom exceptionمثالاز
یكنباشدمجازمحدودهدرورودیاندیسindexerدرصورتیكهدر
.میکندپرتاببیرونبهوکردهایجادMyExceptionنوعازاستثناء
فرادرس.گرددایجادمیتواندجاییهردرخطااینکنندهمدیریتبالك
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Custom exceptionمثالاز
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Catching base class
exceptionگرفتنهنگام typeشاملکههاییbaseوderived classبهباید،هستندbaseیكبرایcatchیكزیراکنیددقتهاcatchدنبالهیگرفتنقرارنحوهیوچیدمان
classکالساینکهبهدلیلمثال،برای.داردتطابقآن،ازشدهمشتقکالسهایتمامباException،تماموالدکالسexceptionتمامگرفتنموجبآنگرفتناست،دیگرهایexceptionازاستفاده(شددادهتوضیحقبالکههمانطور)البته.میشودموجودهایcatch
exceptionکردنمشخصبدون type،تمامیگرفتنبرای(خواناترو)دیگرراهیكexceptionگرفتنکهکنیددقتبایدحال،اینبا.استهاderived class
exceptions( باالییاهمیتازمیسازید،راخودتانهایexceptionهنگامیکه(مخصوصاbaseکردنcatchازاستفادهمزایایازیكی.استبرخوردار classمیتوانیدکهاستاین
بهآمدهبهوجودخطایاگرمثال،برای.کنیدcatchراهاexceptionازکلیدستهبندییكbaseکردنcatchنداشت،مطابقتهاcatchازیكهیچکدام classدرمیشودموجب.شودگرفتهخطانهایت
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
هاcatchمثالترتيبقرارگرفتنbaseهایexceptionهممیخواهیداگر classهموexceptionهای
derived classنوشتندنبالهیدربایدبگیرید،راcatch،نوعهاderived classیكزیرااستضروریکاراین.دهیدقرارابتدادرراbase
class catchتمامderived classراهاcatchخوشبختانه.میکندخطایباآنرعایتعدمصورتدرواستضروریسیشارپدرشدهذکرقانون
compile-timeدوزیربرنامهی.میشویدمواجهexceptionباکالسکالسازExceptA.میسازدExceptBوExceptAنامهای
ExceptionوExceptBازExceptAسپس.استکردهارثبریبرنامهاینکهبرای.میکندthrowراهاtypeازیكهرexceptionبرنامه
customباشد،مختصر exceptionیكتنهاهاconstructorفراهمرا.میدهدشرحراخطاومیگیردرارشتهیكکهمیآورند،
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
هاcatchمثالترتيبقرارگرفتن.کنیددقتهاcatchگرفتنقرارترتیبونوعبهمقابلبرنامهیدرهکآنجااز.باشندداشتهمیتوانندآنهاکهاستترتیبیتنهااین
ExceptBازExceptAاست،شدهمشتقcatchبهمربوطExceptBازقبلبایدExceptAترتیب،همینبه.شودواقع
catchکالسبهمربوطException(کهbase classتمامیexceptionجابهجابامیتوانید.گیردقرارآخردرباید(استها
خطایبااجراهنگامبرنامهکهببینیدها،catchترتیبکردنcompile-timeمیشودمواجه.
baseکردنcatchازاستفادهمزایایازیكی classکهاستاین.کنیدcatchراهاexceptionازکلیدستهبندییكمیتوانید
هاcatchازیكهیچکدامبهآمدهبهوجودخطایاگرمثالبرایbaseکردنcatchنداشت،مطابقت classدرمیشودموجب.شودگرفتهخطانهایت
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
هاcatchعدمترتيبصحيح
baseهایexceptionهممیخواهیداگر classهمو
exceptionهایderived classدنبالهیدربایدبگیرید،را
derivedنوع،هاcatchنوشتن classاین.دهیدقرارابتدادررا
baseیكزیرااستضروریکار class catchتمامderived
classراهاcatchدرشدهذکرقانونخوشبختانه.میکند
خطایباآنرعایتعدمصورتدرواستضروریسیشارپ
compile-timeمیشویدمواجه.
برنامهکهمیببینیدهاcatchترتیبکردنجابهجاباقبلیمثالدر
.میشودمواجهcompile-timeخطایبااجراهنگام
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
Finallyازپسحتماکدازبلوكیكمیخواهیدشماگاهیاوقات
try/catchیكاستممكنمثالبرای.شوداجرا
exceptionیابدپایانمتدیكاجرایادامهیتاشودباعث
networkیكیافایلیكمتدآناما connectionبازرا
چنیناین.شودبستهنهایتدربایدحتماکهاستکرده
وادهسحلراهسیشارپوهستندزیادبرنامهنویسیدرشرایطی
finallyازاستفادهحلراهاینکهدادهارائهآنبرایمناسبی
blockاست.Finally blockدنبالهیانتهایدرباید
catchبگیردقرارها.Finally blockشرایطیهرتحت
tryنیستمهمکهمعناستبداناین.میشوداجرا blockبا
finallyنهایتدرخیر،یاشوداجراموفقیت blockاجرا
.شدخواهد
فرادرس
FaraDars.org
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
آموزش جامع شیئ گرایی در سی شارپ
faradars.org/fvcs9404
این اسالید ها بر مبنای نکات مطرح شده در فرادرس« آموزش جامع شی گرایی در سی شارپ»
.تهیه شده است
.یدبرای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه نمای
faradars.org/fvcs9404
فرادرس
FaraDars.org
top related