הגדרת פעולת שירות עם ממשק פרמטר
ב- C#, ממשקים יוצרים חוזה עבור כיתות. ביחידה זו, תלמדו כיצד שיטות מקבלות ממשקים כפרמטרים, תלמדו את התחביר להגדרת שיטות אלה ותעייןו ביישום לדוגמה מעשי.
שיטות המקבלות ממשק
השיטות שלך ב- C# יכולות לקבל ממשקים כפרמטרים כדי לוודא שהאובייקטים שהועברו פועלים בהתאם לחוזים ספציפיים. שימוש בממשקים כפרמטרים מאפשר קוד גמיש יותר וניתן לשימוש חוזר.
לדוגמה, שקול פעולת שירות המקבלת IAnimal ממשק כברירת מחדל:
public interface IAnimal
{
void MakeSound();
}
public void MakeAnimalSound(IAnimal animal)
{
animal.MakeSound();
}
בדוגמה זו, פעולת MakeAnimalSound השירות מקבלת ממשק IAnimal ומבטיחה שלאובייקטים שהועברו אליו יש MakeSound שיטה.
הערה
שימוש בממשקים בתור פרמטרים של פעולת שירות מקדם צימוד משוחרר ומשפר את יכולת הבדיקה.
דוגמה: ממשקים כפרמטרים של פעולת שירות
בדוגמה הבאה, יש לנו כמה קבצים שכל אחד מהם מכיל מחלקה או ממשק שונים. נפוץ למקם פריטים בקבצים נפרדים לשיפור הקריאות והארגון.
IAnimal.cs
הקובץ IAnimal.cs מגדיר את הממשק IAnimal , הכולל פעולת שירות MakeSound.
public interface IAnimal
{
void MakeSound();
}
Dog.cs ו- Cat.cs
קבצים אלה מכילים את Dog ומחלקות Cat , אשר מיישמים את הממשק IAnimal ומספקים את MakeSound השיטה.
public class Dog : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Woof!");
}
}
public class Cat : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Meow!");
}
}
AnimalSound.cs
קובץ זה מכיל את AnimalSound המחלקה, הכוללת פעולת MakeAnimalSound שירות המקבלת IAnimal ממשק כפרמטר וגורמת לפעולת MakeSound השירות.
public class AnimalSound
{
public void MakeAnimalSound(IAnimal animal)
{
animal.MakeSound();
}
}
Program.cs
קובץ זה מכיל את המחלקה Program עם פעולת Main השירות, אשר יוצרת מופעים של Dog ו Cat- , ומשתמשת בכיתה AnimalSound כדי לגרום להם להפיק צלילים.
public class Program
{
public static void Main()
{
IAnimal dog = new Dog();
IAnimal cat = new Cat();
AnimalSound animalSound = new AnimalSound();
animalSound.MakeAnimalSound(dog); // Output: Woof!
animalSound.MakeAnimalSound(cat); // Output: Meow!
}
}
דוגמה זו מדגימה כיצד ניתן להשתמש בממשקים כפרמטרים של פעולת שירות, תוך קידום צימוד משוחרר ושיפור יכולת הבדיקה. זו דרך פשוטה אך יעילה להבנה של המושג של ממשקים ב- C#.