در سی شارپ از مفهوم آبسترکت کردن استفاده میشود(کلاس های انتزاعی) تا کلاسهای مشتق شده از یک کلاس مشترک را تعریف کنیم.
وقتی یک کلاس آبسترکت ایجاد میکنیم، اجازه میدهیم تا متدها و خصوصیات آن به صورت غیرقابل دسترس وجود داشته باشند. این کلاس آبسترکت برای ایجاد کلاسهای جدیدی که از آن ارث بری میکنند استفاده میشود. در واقع کلاس آبسترکت مانند یک الگو عمل میکند و اجازه میدهد تا کلاسهای مشتق شده، خصوصیات و رفتارهای مشترک را به ارث ببرند.
این مکانیزم باعث میشود تا کدها قابل تعمیمپذیری بیشتری داشته باشند و امکان تغییرات آینده را فراهم میسازد. در مجموع آبسترکتسازی یکی از اصول مهم در برنامهنویسی شیءگرا است
- یک کلاس آبسترکت نمی تواند مستقیما ایجاد شود و فقط برای تعریف الگوی مشترک بین کلاس های مشتق شده است.
- در یک کلاس آبسترکت می توان خصوصیات، متدها و سازنده ها را تعریف کرد ولی آنها را پیاده سازی نکرد. این کار باید در کلاس های مشتق شود.
- کلاس های مشتق از کلاس آبسترکت باید تمام متد ها و خصوصیات آن را پیاده سازی کنند.
- آبسترکت کردن باعث افزایش قابلیت تغییرپذیری و تعمیم پذیری کد می شود.
- در سی شارپ کلاس هایی مانند Stream, Collection و Task از جمله کلاس های آبسترکت استاندارد هستند.
- یکی دیگر از ویژگی های مهم آبسترکت کردن این است که امکان تعریف کابردهای جدید را برای کلاس می دهد. به عنوان مثال یک کلاس انتزاعی از اشیای چند ضلعی می تواند تعریف شود که در کلاس های مشتق شده از آن می توان مستطیل، مربع، مثلث و... را داشت.
- در آبسترکت کردن از اصول IS-A و HAS-A پیروی می شود. به این معنی که یک شی مشتق شده یک نوع شی مجرد است و آن شی می تواند ویژگی ها و رفتارهای شی مجرد را داشته باشد.
- تعریف کلاس آبسترکت مشخص کننده یک قالب عمومی است که در کلاس های مشتق شده خصوصی سازی می شود.
فرض کنید می خواهیم کلاس هایی برای انواع مختلف حیوانات تعریف کنیم.
می توانیم یک کلاس آبسترکت به نام Animal تعریف کنیم که شامل خصوصیاتی مثل نام، وزن، سن و رفتارهایی مثل غذا خوردن و خوابیدن باشد.
سپس کلاس های Dog, Cat, Bird را تعریف می کنیم که از کلاس Animal ارث می برند و خصوصیات و رفتارهای خاص خود را دارند.
مثلا در کلاس Dog می توانیم صدا کردن را پیاده سازی کنیم و در کلاس Bird پرواز کردن را.
// کلاس آبسترکت برای حیوانات public abstract class Animal { public string Name { get; set; } public int Weight { get; set; } public int Age { get; set; } public virtual void Eat() { Console.WriteLine("Eating..."); } public virtual void Sleep() { Console.WriteLine("Sleeping..."); } } // کلاس سگ از کلاس Animal ارث میبره public class Dog: Animal { public override void Eat() { base.Eat(); Console.WriteLine("Eating dog food..."); } public void Bark() { Console.WriteLine("Bark! Bark!"); } } // کلاس گربه public class Cat: Animal { public override void Sleep() { Console.WriteLine("Sleeping on Keyboard..."); } } // ----- ----- ----- ----- ----- ----- ----- // ► WEBiNUX ----- ----- ----- ----- ------- // ----- ----- ----- ----- ----- ----- -----
ورود به سایت