یکی از ویژگیهای کلیدی در کلاسهای مشتقشده این است که یک اشارهگر به یک کلاس مشتقشده، از نظر نوع دادهای با اشارهگر به کلاس اصلی آن سازگار است. چندریختی یا پلیمورفیسم، هنر بهرهبرداری از این ویژگی ساده، اما قدرتمند و کاربردی است که متدلوژی شیگرایی را به حد کامل تواناییاش میرساند.
1 چندریختی ویژگی است که به رابطها امکان میدهد تا برای گروهی از عملیاتها مورد استفاده قرار گیرند. در این مقاله مفهوم چندریختی از طریق دو مفهوم لغو متدها (به انگلیسی: لغو) (توابع مجازی) و سربارشده (به انگلیسی:Overload) پشتیبانی میشود. ما با بررسی این دو مفهوم در پی نشان دادن تأثیر مفهوم چندریختی روی برنامهنویسی شیء گرا خواهیم بود. روش به کار برده شده در این تحقیق از طریق مطالعه منابعی از جمله کتب مرتبط با برنامهنویسی، راهنمای برنامههای شیء گرا و اجرای برنامههایی با ماهیت چندریختی میباشد. با توجه به مطالب ارائه شده در این مقاله میتوان گفت که مفهوم چندریختی یکی از سه اصول مهم در برنامهنویسی شیء گرا میباشد. درنتیجه مفاهیم نهان سازی و وراثت به همراه مفهوم چندریختی سه پایهٔ اصلی برنامهنویسی شی ء گرا را تشکیل میدهند. کلمات کلیدی: چندریختی، سربار کردن, لغو کردن و متد.
در برنامههای شیء گرا مانند جاوا، این امکان فراهم شده تا دو یا بیش از دو متد همنام در یک کلاس تعریف نمود، مشروط بر اینکه تعریف پارامترهای آن متفاوت باشد. در این موارد متدها سربار میشوند. از چندریختی به منظور تعیین انواع مختلف متدهای پویا، در زمان اجرا استفاده میشود؛ که این یکی از قدرتمندترین امکاناتی است که چندریختی به وجود میآورد.
مفاهیم سربار کردن و لغو کردن متدها از جمله مفاهیمی هستند که چندریختی بر پایهٔ آنها بنا میشود. در این مقاله پس از بررسی اجمالی مفهوم چندریختی در بخش اول، در بخش دوم مفهوم سربار کردن متدها را با ذکر چند مثال خواهیم دید. در بخش سوم نیز مفهوم متدهای لغو شده یا همان توابع مجازی را خواهیم آورد و در بخش پایانی نیز به بررسی تأثیر وجود مفهوم چندریختی دربرنامهنویسی شیءگرا (مانند جاوا) و مقایسهٔ آن با برنامههایی که چندریختی را پشتیبانی نمیکنند (مانند زبان برنامهنویسی C) خواهیم پرداخت.
در این مثال کلاس Book طراحی شده است که دارای سه سازنده با امضاهای متفاوت می باشد.
public class Book{
private String name;
private String author;
//overloaded constructors
public Book(){
}
public Book(String name){
this.name = name;
}
public Book(String name, String author){
this(name);
this.author = author;
}
}
نحوه ساخت ارجاعی از نوع این کلاس به یکی از روشهای زیر قابل انجام است.
Book newBook = new Book();
Book newBook = new Book("Shahnameh");
Book newBook = new Book("Shahnameh", "Ferdosi");
برچسب:
نویسنده: بهنام شجاعی