🔌 שיעור 7: Interfaces - חוזים בקוד

⏱️ 1 שעה | 🎯 ממשקים והתנהגויות משותפות

→ קודם 🏠 בית הבא ←

🤔 מה זה Interface?

Interface = חוזה של מה מחלקה מתחייבת לספק
אנלוגיה: כמו חוזה עבודה - מפרט מה צריך לעשות, לא איך!
using System;

// Interface - חוזה של פעולות
interface IPlayable
{
    void Play();
    void Pause();
    void Stop();
}

// Song מממש את IPlayable
class Song : IPlayable
{
    public string Title;
    public string Artist;
    
    public Song(string title, string artist)
    {
        Title = title;
        Artist = artist;
    }
    
    public void Play()
    {
        Console.WriteLine($"🎵 מנגן: {Title} - {Artist}");
    }
    
    public void Pause()
    {
        Console.WriteLine("⏸️ השיר מושהה");
    }
    
    public void Stop()
    {
        Console.WriteLine("⏹️ השיר נעצר");
    }
}

// Video גם מממש את IPlayable
class Video : IPlayable
{
    public string Title;
    public int Duration;
    
    public Video(string title, int duration)
    {
        Title = title;
        Duration = duration;
    }
    
    public void Play()
    {
        Console.WriteLine($"▶️ מפעיל: {Title} ({Duration} דקות)");
    }
    
    public void Pause()
    {
        Console.WriteLine("⏸️ הוידאו מושהה");
    }
    
    public void Stop()
    {
        Console.WriteLine("⏹️ הוידאו נעצר");
    }
}

class Program
{
    static void Main()
    {
        // רשימה של IPlayable - יכולה להכיל Song ו-Video!
        List<IPlayable> playlist = new List<IPlayable>();
        
        playlist.Add(new Song("Imagine", "John Lennon"));
        playlist.Add(new Video("Learn C#", 45));
        playlist.Add(new Song("Bohemian Rhapsody", "Queen"));
        
        // מפעילים הכל באותה צורה!
        foreach (IPlayable item in playlist)
        {
            item.Play();
        }
    }
}

💡 למה זה עוצמתי?

✍️ תרגולים

1. IDrawable (15 דק)

צרו ממשק IDrawable עם Method Draw()

מחלקות: Circle, Square, Triangle

כל אחת מדפיסה משהו שונה ב-Draw

2. ICalculator (15 דק)

ממשק ICalculator עם Calculate(int a, int b)

מחלקות: AddCalculator, MultiplyCalculator

List<ICalculator> + קריאה לכולם

→ קודם 🏠 בית הבא: פרויקט גמר ←