Class-based programming
کلاس مبتنی بر برنامه نویسییا بیشتر معمولا کلاس جهتیک سبک برنامه نویسی شی گرا (OOP) است که در آن ارث رخ می دهد از طریق تعریف کلاس از اشیاءبه جای ارث اتفاق می افتد از طریق اشیاء به تنهایی (در مقایسه با prototype-based programming) است.برنامه نویسی مبتنی بر کلاس یا به طور معمول جهت گیری کلاس، سبک برنامه نویسی Object-Oriented) OOP) است که در آن ارث بری از طریق تعریف کلاس از اشیاء، به جای ارث بردن از طریق اشیاء به تنهایی اتفاق می افتد (مقایسه برنامه نویسی مبتنی بر نمونه اولیه).
محبوب ترین و توسعه یافته مدل OOP یک کلاس مبتنی بر مدل به جای یک شی بر اساس مدل. در این مدل اشیاء و اشخاص است که ترکیب دولت (به عنوان مثال داده ها) و رفتار (به عنوان مثال روش یا روش) و هویت (منحصر به فرد وجود در میان همه اشیاء دیگر). ساختار و رفتار یک شی تعریف شده توسط یک کلاسکه یک تعریفو یا طرحاز تمام اشیاء از یک نوع خاص. یک شی باید به صراحت بر اساس یک کلاس و یک شی در نتیجه ایجاد نظر گرفته شده است به یک نمونه از آن کلاس. یک شی شبیه به یک ساختاربا علاوه بر این از روش اشاره گر عضو کنترل دسترسی و به طور ضمنی داده های عضو که در واقع نمونه از کلاس (یعنی اشیاء از کلاس) در کلاس سلسله مراتب (ضروری برای اجرا ارث امکانات).مدل محبوب و پیشرفته OOP یک مدل مبتنی بر کلاس است، به جای مدل مبتنی بر شیء. در این مدل، ورودی اشیاء هستند که حالت (یعنی داده)، رفتار (به عنوان مثال، فرآیندها یا روش ها) و هویت (وجود منحصر به فرد در میان تمام اشیاء دیگر) را ترکیب می کنند. ساختار و رفتار یک شی توسط یک کلاس تعریف شده یا یک طرح مشخص از تمام اشیاء یک نوع خاص تعریف می شود. یک شیء باید به صراحت بر اساس یک کلاس ایجاد شود و یک شیء که در نتیجه ایجاد شده است به عنوان یک نمونه از آن کلاس است. یک شی شبیه به ساختار است، با افزودن اشاره گرهای روش، کنترل دسترسی اعضا و یک عضو داده ضمنی که نمونه های کلاس را (به عنوان مثال، اشیاء کلاس) در سلسله مراتب کلاس (ضروری برای ویژگی های ارثی زمان اجرا) قرار می دهد.
کپسوله سازی[ویرایش]
کپسوله سازی مانع از شکستن متغیرها از کلاس می شود. استفاده از آن مفید است زیرا اجازه می دهد که یک کلاس از اشیا را برای جنبه هایی که در رابط کاربری در معرض نمایش قرار نمی گیرند بدون تاثیر بر روی کد کاربر تغییر دهند. تعاریف کپسوله سازی بر گروه بندی و بسته بندی اطلاعات مرتبط (انسجام) به جای مسائل امنیتی تمرکز می کنند. زبان های OOP به طور معمول محدودیت های امنیتی رسمی را به حالت شیء داخلی ارائه نمی دهند. استفاده از یک روش دسترسی به موضوع مورد نظر برای طراحی رابط است.
وراثت[ویرایش]
در برنامه نویسی مبتنی بر کلاس، وارثت به وسیله تعریف کلاس های جدید به عنوان پسوند کلاس های موجود انجام می شود: کلاس موجود، کلاس والدین است و کلاس جدید کلاس فرزند است. اگر یک کلاس فرزند دارای تنها یک کلاس پدر و مادر باشد، این به عنوان وراثت تکی شناخته می شود، در حالی که اگر یک کلاس فرزند می تواند بیش از یک کلاس پدر و مادر داشته باشد، که به آن وراثت چندگانه گفته می شود. این کلاسها را به صورت یک سلسله مراتب، یا یک درخت (اگر وراثت تکی باشد) یا شبکه (اگر وراثت چندگانه باشد) سازماندهی می کند.
ویژگی تعریف وراثت این است که هر دو رابط و پیاده سازی به ارث برده می شوند؛ اگر تنها واسط به ارث برده شود، این به عنوان واسط و یا زیر نوع رابط شناخته می شود. میراث نیز می تواند بدون کلاس ها، مانند برنامه ریزی مبتنی بر نمونه اولیه، انجام شود.
نقد های بر مدل های مبتنی بر کلاس [ویرایش]
زبانهای مبتنی بر کلاس، و یا، دقیق تر، زبانهای تایپ شده، جایی که زیر کلاس ها تنها روش زیر تعریف است، برای مخلوط کردن پیاده سازی ها و رابط ها مورد انتقاد قرار گرفته است - اصل ضروری در برنامه نویسی شی گرا. منتقدان می گویند ممکن است یک کلاس کیسه ای ایجاد کند که مجموعه ای از اشیا را ذخیره کند و سپس آن را گسترش دهد تا یک کلاس جدید به نام کلاس مجموعه ای که در آن اشیا کپی شده حذف شود، گسترش دهد.[۱][۲] حال حاضر، یک تابع که یک شی از کلاس را می گیرد، ممکن است انتظار داشته باشد که بااضافه کردن دو شی اندازه یک کلاس را دو برابر کند، با این حال اگر یک شی از کلاس مجموعه عبور می کند، با اضافه کردن دو شیء ممکن است سایز کلاس دوبرابر شود و یا تغییری نکند. دلیل این مشکل این است که زیر کلاس ها مستلزم زیر گروه ها هستند.
بنابراین، به طور معمول باید زیر کلاس و زیر مجموعه را تشخیص دهید. اکثر زبان های فعلی شی گرا، زیرمجموعه و زیر کلاس را تشخیص می دهند، اما برخی از روش های طراحی، آن را ندارند.
زبان های نمونه[ویرایش]
اگر چه شبیه ساز معرفی کلاس انتزاع مثال متعارف از یک کلاس مبتنی بر زبان اسمالتاک. دیگر شامل PHPبا C++های جاوابا C#و هدف-Cاست.اگر چه سیمولا انتزاع کلاس را معرفی کرد، نمونه ی کانونی زبان مبتنی بر کلاس اسمالتاک است. دیگر موارد شامل PHP، C ++، Java، C # و Objective-C هستند.
همچنین نگاه کنید[ویرایش]
- برنامهنویسی بر پایه پیشنمونه (کنتراست)
- پارادایم های برنامه نویسی
- کلاس (برنامه نویسی کامپیوتر)
منابع[ویرایش]
- ↑ Kiselyov, Oleg. "Subtyping, Subclassing, and Trouble with OOP". Retrieved 7 October 2012.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ Ducasse, Stéphane. "A set cannot be a subtype of a bag". Retrieved 7 October 2012.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
This article "Class-based programming" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Class-based programming. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.