"چندریختی" یکی از ستونهای برنامهنویسی شیءگرا است که امکان تعریف متدهایی با نام یکسان ولی پارامترهای مختلف را میدهد. در زبان برنامهنویسی سیشارپ، با استفاده از چندریختی میتوانید با یک نام متد، رفتارهای متفاوتی را پیادهسازی کنید.
برای آشنایی با مفهوم شی گرایی در سی شارپ می توانید به مقاله آموزش شی گرایی در سی شارپ (Csharp Object Oriented) مراجعه کنید در این مقاله که همراه با ویدئو است این مفهوم بصورت ساده آموزش داده شده است.
چرا چندریختی مهم است؟
یادگیری چندریختی یک گام مهم برای تبدیلشدن به برنامهنویس حرفهای سیشارپ است. این قابلیت به شما این امکان را میدهد که کد خود را تمیز، منظم و قابلفهم نگه دارید.
چگونه از چندریختی در سیشارپ استفاده کنیم؟
چندریختی (Polymorphism) در سیشارپ، به معنای قابلیت یک متغیر یا یک شیء برای ایفای نقشهای متفاوت است. برای مثال، اگر یک کلاس فرزندی از کلاس پدری تعریف کنیم، میتوانیم یک متغیر از نوع کلاس پدر را بسازیم که به یک شیء از کلاس فرزند اشاره میکند. این به ما امکان میدهد تا بر اساس نوع واقعی شیء (که ممکن است هنگام اجرا تغییر کند)، رفتار متفاوتی را اجرا کنیم. در نتیجه، چندریختی به ما اجازه میدهد که کدی را بنویسیم که بهصورت کلی کار میکند؛ ولی رفتار خاص بر اساس نوع واقعی شیء را پیادهسازی میکند.
به طور مثال:
public class Animal
{
public virtual void Speak()
{
Console.WriteLine("The animal speaks.");
}
}
public class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("The dog barks.");
}
}
public class Cat : Animal
{
public override void Speak()
{
Console.WriteLine("The cat meows.");
}
}
// در اینجا میتوانیم چندریختی را ببینیم
Animal myAnimal = new Dog();
myAnimal.Speak(); // Outputs: "The dog barks."
myAnimal = new Cat();
myAnimal.Speak(); // Outputs: "The cat meows."
از سوی دیگر، سربارگذاری (Overloading) در سیشارپ به معنی تعریف چندین متد با یک نام است، اما با تعداد یا نوع پارامترهای متفاوت. زمانی که متدی فراخوانی میشود، سیشارپ بر اساس تعداد و نوع پارامترهای فعلی، متد مناسب را انتخاب میکند.
به طور مثال:
public class Printer
{
public void Print(int i)
{
Console.WriteLine($"Printing int: {i}");
}
public void Print(double d)
{
Console.WriteLine($"Printing double: {d}");
}
public void Print(string s)
{
Console.WriteLine($"Printing string: {s}");
}
}
// در اینجا میتوانیم سربارگذاری را ببینیم
Printer printer = new Printer();
printer.Print(1); // Outputs: "Printing int: 1"
printer.Print(1.0); // Outputs: "Printing double: 1"
printer.Print("one"); // Outputs: "Printing string: one"
پس، چندریختی و سربارگذاری هرکدام ویژگیها و کاربردهای خاص خود را دارند و هر دو نقش مهمی در زبان برنامهنویسی سی شارپ بازی میکنند. اما آنها مفاهیم متفاوتی هستند و نباید آنها را یکی دانست .
جمعبندی
چندریختی در سیشارپ ابزاری قدرتمند است که به شما این امکان را میدهد که با استفاده از کدهای کمتر و تمیزتر، قابلیتهای بیشتری را پیادهسازی کنید. با ادامهی یادگیری و تمرین، میتوانید از این قابلیت به بهترین شکل استفاده کنید.
مقاله "Expression Func در سیشارپ" به بررسی تکنیکهای پیشرفته در برنامهنویسی شیگرا پرداخته و میتواند در فهم چندریختی کمک کند. مقاله "Indexer در سیشارپ" روشهای استفاده از ایندکسها در اشیاء را شرح میدهد، که این خود یکی از جنبههای چندریختی است. نهایتاً، "Hashtable در سیشارپ" به مدیریت دادهها با استفاده از ساختمان دادهی هش تیبل میپردازد. این مقالات به شما کمک میکنند تا چندریختی را در مواقع مختلف و با استفاده از انواع مختلف ساختمانهای داده به کار ببرید.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید