Last active
January 23, 2026 10:00
-
-
Save sunmeat/41d156bd5bd74cf7acac281a267ec5d0 to your computer and use it in GitHub Desktop.
solving #1 (interfaces)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using System.Text; | |
| namespace DuckInterfaces | |
| { | |
| // абстрактна качка | |
| internal abstract class Duck | |
| { | |
| public virtual void Swim() | |
| { | |
| Console.WriteLine("качка плаває!"); | |
| } | |
| // абстрактний метод — кожна качка відображається по-своєму | |
| public abstract void Display(); | |
| } | |
| // інтерфейс для тих, хто вміє літати | |
| internal interface Flyable | |
| { | |
| void Fly(); | |
| } | |
| // інтерфейс для тих, хто вміє крякати | |
| internal interface Quackable | |
| { | |
| void Quack(); | |
| } | |
| // крижнева качка — літає і крякає | |
| internal class MallardDuck : Duck, Flyable, Quackable | |
| { | |
| public override void Display() | |
| { | |
| Console.WriteLine("крижнева_качка.jpg"); | |
| } | |
| public void Fly() | |
| { | |
| Console.WriteLine("дика качка летить!"); | |
| } | |
| public void Quack() | |
| { | |
| Console.WriteLine("дика качка крякає!"); | |
| } | |
| } | |
| // гумова качка — тільки крякає (по-своєму) | |
| internal class RubberDuck : Duck, Quackable | |
| { | |
| public override void Display() | |
| { | |
| Console.WriteLine("гумова_качка.jpg"); | |
| } | |
| public void Quack() | |
| { | |
| Console.WriteLine("пі-і-іп!"); | |
| } | |
| } | |
| internal static class Program | |
| { | |
| private static Duck GetSomeDuck() | |
| { | |
| return Random.Shared.Next(2) == 0 ? new RubberDuck() : new MallardDuck(); | |
| } | |
| private static Quackable GetSomeQuackableDuck() | |
| { | |
| return Random.Shared.Next(2) == 0 ? new RubberDuck() : new MallardDuck(); | |
| } | |
| private static void Main() | |
| { | |
| Console.OutputEncoding = Encoding.UTF8; | |
| Console.WriteLine("Рішення #1"); | |
| Duck duck = GetSomeDuck(); | |
| duck.Swim(); // є у всіх підтипів | |
| duck.Display(); | |
| Quackable q = GetSomeQuackableDuck(); | |
| q.Quack(); // доступний тільки метод крякання через інтерфейс | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment