Programování 2 - Informatici - 15.04.2026 Učební výstup - interface, comparator, exceptions priste generika a delagati 1. Navrhnete univerzalni interface IAnimal, ktery bude nasledne implementovat class Animal https://ksvi.mff.cuni.cz/~dingle/2025-6/prog_2/notes_5.html - override\virtual metoda vs abstraktní metoda (konstruktor) vs abstraktni třída vs interface https://www.programiz.com/csharp-programming/abstract-class https://www.programiz.com/csharp-programming/interface - inheritence interface 3. Vytvořte comparator pro class Animal https://ksvi.mff.cuni.cz/~dingle/2025-6/prog_2/notes_6.html 3.3 přetižte compateTo 3.5 přetižte < 3.7 Setřiďte pole Animalu podle: a) weight a b) age - lze vytvorit vice compatoru? třída Animal implementující IComparable vs specializované třídy implementující IComparable porovnavající 2 objekty Animal Metoda CompareTo, která je součástí rozhraní IComparable (nebo staršího IComparable). Slouží k porovnávání dvou objektů, typicky pro řazení. int CompareTo(T other) vrací: < 0 → aktuální objekt je menší než other 0 → objekty jsou rovné > 0 → aktuální objekt je větší než other Vlastní třída s CompareTo Když chceš, aby se tvoje objekty daly řadit (např. pomocí Sort()), implementuješ IComparable: using System; public class Person : IComparable { public string Name { get; set; } public int Age { get; set; } public int CompareTo(Person other) { if (other == null) return 1; // řazení podle věku return this.Age.CompareTo(other.Age); } } Použití při řazení var people = new List { new Person { Name = "Jan", Age = 30 }, new Person { Name = "Eva", Age = 25 }, new Person { Name = "Petr", Age = 40 } }; people.Sort(); // použije CompareTo foreach (var p in people) { Console.WriteLine($"{p.Name} - {p.Age}"); } 5. Vyjímky - Pro classy Animal vytvořte vlastní vyjímky mustByPositive, které jsou "vyhozeny", pokud do atributu weight a age chcete vložit negativní hodnotu čísla a současně nastaví defaultní hodnotu na weight = 1.0 a age = 0.0 https://ksvi.mff.cuni.cz/~dingle/2025-6/prog_2/notes_6.html 7. Vytvořte generický automaticky dynamický zásobník