کلاس Abstract در سی شارپ

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

دو مثال می زنیم تا این مفهوم خوب جا بیفتد.

تو دنیای واقعی اگر نگاه کنیم همه موجودات زنده در این کره ی خاکی هم می توانند حرکت کنند و هم می توانند نفس بکشند حرکت کردن انسان با راه رفتن است ، ماهی با شنا کردن ،کانگرو با جهیدن و……. و نفس کشیدن انسان با شش است و نفس کشیدن ماهی با آبشش

پس هر موجود زنده دو تا متد را دارد یکی متد حرکت کردن یکی متد نفس کشیدن اگر برای یکی از آن متدها را یادمان برود مثلا رفتار حرکت کردن را براش در نظر نگیریم آن موجود زنده دیگر نتواند حرکت کند ودر یکجا ساکن بماند کم کم میمرد .

پس من باید این را الزام کنم که تمام موجودات زنده باید دو تا رفتار نفس کشیدن و حرکت کردن را داشته باشند. برای این الزام یک کلاس Abstract در نظر می گیریم.

Abstract یعنی خلاصه ،چکیده، یعنی به جزئیات توجه نکردن .

یک کلاس Abstract را یک استاندارد در نظر می گیریم که همه موجودات زنده باید نفس بکشند و حرکت کنند.

نکته: وقتی که رسید به کلاس انسان ها داخل کلاس انسان ها کلاس Abstract پیاده سازی می شود. داخل خود کلاس Abstract پیاده سازی انجام نمی دهیم فقط آن امضا تابع یا امضا آن رفتار را می نویسیم.

الان وقتی که داخل کلاس انسان ها رسید متد حرکت کردن آن می شود راه رفتن و وقتی داخل کلاس ماهی ها رسید متد حرکت کردن آن می شود شنا کردن برای بقیه موجودات زنده هم همین طور است وقتی که رسید داخل کلاس خودشان جزیئات را برایشان بیان می کنیم.

یک مثال دیگری می زنیم برای مهندسی نرم افزار:

سه نفر برنامه نویس را داشته باشیم که با هم کار می کنند و این سه برنامه نویس 3 تا کلاس را طراحی می کنند برای مثال یکی از این برنامه نویس ها می آید داخل کلاس خودش متد اضافه کردن را Insert در نظر می گیرد و یکی دیگر از آن ها برای متد اضافه کردن Add را در نظر می گیرد و دیگری برای متد اضافه کردن،اضافه کردن را در نظر می گیرد .

و یکی از این برنامه نویس ها می آید داخل کلاس خودش متد حذف را Delete و یکی دیگر Remove و دیگری اصلاً یادش می رود که این متد را داخل کلاسش پیاده سازی کند. هیچ کدام از این برنامه نویس ها حاضر نیستند که قوانین طرف مقابل را بپذیرند و هر کدام دلایل خودشان را دارند.

ما باید یک استاندارد در نظر بگیریم و آن متد هایی که لازم است با اسم های خاص در کلاس Abstract در نظر بگیریم مثلاً متد Insert، Update، Delete داشته باشیم و این کلاس Abstract را به آن سه تا برنامه نویس می دهیم همه ی برنامه نویسان موظف هستند که آن متدها را با آن نام ها در نظر بگیرید و پیاده کنند و همه هم موظف هستند که همه ی آن متدها را پیاده سازی کنند نه این که یکی از متدها را فراموش کنند.

یک کلاس ایجاد می کنیم:

class ClassA
{

}

از این کلاس یک نمونه می سازیم:

کلاس Abstract در سی شارپ

و برنامه را اجرا می کنیم و مشاهده می کنیم که هیچ مشکلی نیست و برنامه اجرا می شود. حالا یک کلمه ی Abstract قبل از کلمه ی کلیدی class می گذاریم و این کلاس را تبدیل به کلاس abstract می کنیم:

abstract class ClassA
{

}

از این کلاس یک نمونه می سازیم:

کلاس Abstract در سی شارپ

و الان مشاهده می کنید که به ما error می دهد و می گوید که کلاس abstract است و شما نمی توانید نمونه سازی انجام دهید.

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

 

نکات دیگری که در کلاس abstract در سی شارپ وجود دارد :

 

abstract  class ClassA

{

        public int ID;
        public string Name;

        public abstract void Insert();
        public abstract void Update();
        public  void Delete()
{
}

  1. در کلاس abstract می توانیم فیلد داشته باشیم .
  2. یک کلاس abstract هم می تواند متد abstract داشته باشد هم متد غیر abstract .
  3. کلاسی که abstract نباشد نمی تواند متد abstract داشته باشد.
  4. در کلاس abstract چون جزئیات را در نظر نمی گیرد در کلاس های دیگر باید با دستور override پیاده سازی کنیم.

کلاس Abstract در سی شارپ

اگر کلاسی  از کلاس abstract ارث بری کند فلش کنار آن را بزنیم تمام متدهایی که از نوع abstract است  را به ما نمایش می دهد و با زدن اینتر آنها را برای ما پیاده سازی می کند.

 

 

class ClassB : ClassA
{
        public override void Insert()
        {

         }

        public override void Update()

        {
       
         }

 }

امیدواریم کلاس Abstract در سی شارپ را به خوبی آموخته باشید. شما می توانید نظر خود را درباره این آموزش در قسمت دیدگاه ها ثبت کنید.