وراثت

ساخت وبلاگ
در کتابخانه دات نت، کلاسی وجود دارد به نام Object یا شئ. در دات نت، کلیه نوع های داده و کلاس ها، چه آنهایی که به صورت دستی می نویسیم و چه آنهایی که در کتابخانه دات نت وجود دارند، از کلاس object مشتق شده اند، به جز کلاس هایی که برای آنها کلاس والد را مشخص کرده ایم. حتی کلاس هایی که برای آنها کلاس والد مشخص شده، باز هم شاخه اصلی زنجیره وراثت به کلاس object ختم می شود. پس به این صورت می گوییم که کلاس object، کلاس پایه ای برای کلیه کلاس های دات نت می باشد. یکسری رفتارها برای کلاس Object تعریف شده اند که در تمامی کلاس ها در دسترس هستند، زیرا کلیه کلاس ها از کلاس object مشتق شده اند. این رفتارها به شرح زیر می باشند:  Equals: این رفتار بررسی می کند که دو شئ با یکدیگر برابر هستند یا خیر. GetHashCode: این رفتار عددی را برمی گرداند که شناسه شئ ایجاد شده می باشد. GetType: نوع یا Type شئ را بر میگرداند. این متد را در بخش Reflection بیشتر بررسی خواهیم کرد. ToString: زمانی که این رفتار را برای یک شئ صدا می زنید، رشته ای مرتبط با آن شئ را بر میگرداند که به صورت پیش فرض Type Name یا نام نوع آن کلاس را بر میگرداند. در بخش Polymorphism با این متد بیشتر آشنا می شوید. گفتیم زمان تعریف کردن یک شئ، نوع داده والد را به جای خود کلاس برای متغیر در نظر گرفت:  همینطور که مشاهده می کنید وراثت...ادامه مطلب
ما را در سایت وراثت دنبال می کنید

برچسب : نویسنده : maryamtaheri308 بازدید : 65 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

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

برچسب : نویسنده : maryamtaheri308 بازدید : 66 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

مفهوم وراثت یا  Inheritance کلاس فرزند همه ی ویژگی ها و خصوصیات کلاس پدر را به ارث ببرد. ذکر این   نکته مهم است که سازنده هیچ گاه به ارث برده نمی شود. برای اینکه بهتر متوجه شوید با ذکر یک مثال توضیح   می دهم .   برای نمونه ما چند نمونه کلاس کارمند داریم : کارمند ساعتی , کارمند با حقوق ثابت  , کارمند قراردادی  . که همه ی   این ها دارای یک سری خصوصیات مشترک مانند نام,نام خانوادگی , شماره پرسنلی ,... هستند ویک متد که  برای   محاسبه ی حقوق  دارند.بنابراین می توانیم یک کلاس پدر به نام کارمند داشته باشیم که ویژگی مشترک تمامی   نمونه های کارمند و همچنین متد محاسبه ی حقوق در ان وجود داشته باشد   در این حالت متد های کلاس پدر باید با کلمه ی کلیدی Virtual  باشد این کلمه به کلاس های فرزند این قابلیت را   می دهد تا متدی را که به ارث می برند دوباره نویسی کنند یا به عبارتی  override کنند .   برای اینکه بهتر مفهوم وراثت را متوجه شوید با یک برنامه توضیح می دهم .   ما در این برنامه یک کلاس پدر به نام Employee داریم که دارای ویژگی های Name , LastName,EmpId   ویک متد به نام Salary برای محاسبه حقوق است و همچنین یک متد ToString دارد که به صورت override است   که از کلاس Object به ارث برده است.ذکر این نکته مهم است که تمامی کلاس ها به صورت پیش فرض از کلاس   Object ارث بری دارند. همچنین دو کلاس فرزند به نام وراثت...ادامه مطلب
ما را در سایت وراثت دنبال می کنید

برچسب : نویسنده : maryamtaheri308 بازدید : 65 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

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

برچسب : نویسنده : maryamtaheri308 بازدید : 57 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

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

برچسب : نویسنده : maryamtaheri308 بازدید : 66 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

زمانی که ما برنامه ای را می نویسیم با زیاد شدن حجم کد نوشته شده، میزان خوانایی و درک از کد نوشته شده کاهش میابد. فرض کنید برنامه ای در کنسول نوشتیم که تعداد خطوط کد بالای 5000 خط بوده و کل کدهای آن را در متد Main که در بخش های ابتدایی این سری آموشی با آن آشنا شدیم نوشته ایم. پس از مدتی، قصد داریم قسمتی از کد را تغییر دهیم یا امکان جدیدی به برنامه اضافه کنیم. صد در صد کار نگهداری و خطایابی برنامه ای که نوشته ایم مشکل خواهد بود. زیرا تمامی کدها در یکجا نوشته شده و برنامه نویس برای پیدا کردن و مدیریت کدها به مشکل بر خواهد خورد. برای حل این مشکل باید کدها را از لحاظ کاربردی به قسمت های مختلف تقسیم کنیم. این تقسیم بندی با کمک متدها انجام می شوند. در حقیقت متدها قطعه کدهایی هستند که هر یک، وظیفه ای مشخص را در برنامه ما انجام می دهند. در این قسمت هدف آشنایی با کاربرد متدها می باشد که با مباحث زیر آشنا خواهیم شد:  شیوه تعریف متدها پارامترها و مقادیر بازگشتی آشنایی با عبارات ref و out آشنایی با مفهوم method overloading نوشتن توابع بازگشتی (Recursive Functions) در قسمت های قبلی، با متد Main که نقطه شروع برنامه های سی شارپ می باشد آشنا شدیم. در زبان سی شارپ ما می توانیم متدهای مورد نظر خودمان را ایجاد کنیم. زمان تعریف متدها به این نکته باید توجه داشت که هر متد باید وراثت...ادامه مطلب
ما را در سایت وراثت دنبال می کنید

برچسب : نویسنده : maryamtaheri308 بازدید : 61 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

صلاح دسترسی تعریف شده جهت سطح مجوز برای دسترسی کلاس‌ها، متدها و ... بکار گرفته می‌شود، با تعریف اصلاح دسترسی برای اعضا موجود در کلاس، قادر خواهیم بود در اسمبلی‌ و کلاس‌های دیگر با توجه به نوع دسترسی به آن شی دسترسی پیدا کنیم. سطح دسترسی: در زبان سی شارپ ۵ نوع سطح دسترسی وجود دارد: Public Private Inteal Protected Protected Inteal Public: دسترسی public عام می‌باشد، به موجب این سطح دسترسی شی موجود تعریف شده در خارج از کلاس قابل دسترس خواهد بود. class ClassTest { /// /// Public method /// public void MethodPublic() { // TODO: defination of MethodPublic } } /// /// To access the method /// class Program { static void Main(string[] args) { ClassTest objClassTest = new ClassTest(); // Valid code to access. objClassTest.MethodPublic(); } } Private: با استفاده از این نوع سطح دسترسی به منظور بکارگیری برای اعضا کلاس فقط قادر خواهیم بود در همان کلاس از آنها استفاده شود و در خارج از کلاس قابل دسترس نمی‌باشد. در صورتی که سازنده پیشفرض کلاس با این نوع سطح دسترسی ایجاد شود دیگر قادر نخوا وراثت...ادامه مطلب
ما را در سایت وراثت دنبال می کنید

برچسب : نویسنده : maryamtaheri308 بازدید : 65 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

آموزش Interfaces در سی شارپ  به عنوان یک قرارداد نحوی تعرف می شود که همه ی گروه هایی که Interfaces را می گیرند باید آن را دنبال کنند.Interfaces قسمت What از یک قرارداد نحوی را تعریف می کند و گروه های مشتق قسمت how از این قراردادها را تعریف می کنند.  Interfaces ها ویژگی ها، متدها و رویدادهایی را تعریف می کنند که اعضای Interfaces می باشند. Interfaces تنها شامل اعلام اعضا می باشد. تعریف اعضا مسئولیت گروه مشتق شده می باشد. اغلب به تامین یک ساختار استاندارد کمک می کند که گروه های مشتق دنبال می کنند. گروه های نظری نیز تا حدی همین هدف را دارند، به هرحال عمدتا زمانی استفاده می شوند که تنها تعدادی از متدها قرار است به وسیله ی گروه پایه اعلام شوند و گروه مشتق شده قابلیت ها را اجرا می کند. اعلام Interfaces ها Interfaces ها با استفاده از کلمه ی کلیدی interface اعلام می شوند، که شبیه اعلام یک گروه می باشد. بیانیه های Interfaces به طور پیش فرض عمومی می باشند. در زیر مثالی از اقلام Interfaces را می بینید. public interface ITransactions ‎{‎        ‎   // interface members‎         ‎   void showTransaction();‎         ‎   double getAmount();‎         ‎}‎ مثال زیر اجرای Interfaces بالا را توضیح می دهد. ‎ using System.Collections.Generic;‎         using System.Linq;‎    وراثت...ادامه مطلب
ما را در سایت وراثت دنبال می کنید

برچسب : نویسنده : maryamtaheri308 بازدید : 67 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

کلاس های انتزاعی (Abstract Class) در زبان C#، که با کلمه کلیدی abstract مشخص می شوند، کلاس های پایه و مادر در یک سلسله مراتب درختی کلاس ها می باشند. به عبارت دیگر این کلاس ها، کلاس مرجع بوده و بقیه کلاس ها به ترتیب از روی این کلاس به ارث می روند.  نکته : مسئله مهم در مورد کلاس های انتزاعی (Abstract) این است که شما نمی توانید یک نمونه یا شی از روی این کلاس ها بسازید، اگر این کار را انجام دهید، با خطای کامپایلر مواجه خواهید شد. به جای عدم امکان ساخت شی از روی کلاس های انتزاعی، می توانید یک کلاس فرزند یا Subclass همانطور که در درس قبل آموزش دادیم، را از روی کلاس انتزاعی ساخته و سپس object های خود را از روی کلاس فرزند تولید کنید.اما چه زمانی ممکن است به کلاس های پایه نیاز داشته باشید؟ به بیان ساده و شفاف، شما می توانید یک پروژه را کامل کدنویسی کنید بدون این که نیازی به کلاس پایه داشته باشید. اما این نوع کلاس ها برای یک منظور خاص، بسیار مناسب بوده و آن کاربرد در چهارچوب کاری یا Framework ها می باشد. به همین دلیل است که چهارچوب کاری .NET پر از کلاس های انتزاعی است.در کد کلاس زیر، ما یک کلاس پایه به نام Four Legged Animal (چهارپایان) را ایجاد کرده و سپس کلاس دیگری به نام Dog تعریف نموده که از کلاس پایه به ارث می رود. 1 2 3 4 5 6 7 8 9 وراثت...ادامه مطلب
ما را در سایت وراثت دنبال می کنید

برچسب : نویسنده : maryamtaheri308 بازدید : 68 تاريخ : شنبه 9 دی 1396 ساعت: 13:49

  یک کلاس static  در یک مورد با کلاس غیر static تفاوت دارد و آن هم این است که از یک کلاس static  نمیتوان نمونه ساخت. به عبارتی دیگر ، شما نمیتوانید از کلمه ی کلیدی  برای ساختن یک متغیر از این کلاس استفاده کنید. شما میتوانید با استفاده از نام کلاس ،  از اعضاء و متدهای کلاس static  استفاده کنید . برای مثال ، به کلاس static زیر توجه کنید که در آن یک  static وجود دارد که دو عدد را با هم جمع میکند. این یک مثال برای در ک بهتر کلاس static است و  در سایر موارد، ما برای عمل جمع  از کلاس Math  که در فضای نام System  استفاده میکنیم.  1 2 3 4 5 6 7 1.  public static class MathUtility  3.      public static int Add(int a, int b)  5.          retua + b;    اکنون ما میتوانیم  متد Add را به روش زیر فراخوانی کنیم : 1 1.  int result = MathUtility.Add(2,5);   یک کلاس static یک ابزار آسان برای تنظیم پارامترهای ورودی است که عملیات get و set را در هیچ یک از فیلدهای inteal instance انجام نمیدهد. برای مثال ، در  کتابخانه کلاس  .NET Framework ، کلاس System.Math یک کلاس static است که شامل تابع ها / متدهایی است که عملیات ریاضی را انجام میدهد بدون اینکه هیچ کدام از  آنها نیاز داشته باشند نمونه وراثت...ادامه مطلب
ما را در سایت وراثت دنبال می کنید

برچسب : نویسنده : maryamtaheri308 بازدید : 55 تاريخ : شنبه 9 دی 1396 ساعت: 13:49