Sobes.tech
Junior

Povězte o paradigmatech a principech objektově orientovaného programování.

sobes.tech AI

Odpověď od AI

Paradigmy objektově orientovaného programování:

  1. Zapouzdření: Skrytí dat a metod uvnitř třídy, zpřístupnění přes rozhraní.
  2. Dědičnost: Vytváření nových tříd (potomků) na základě existujících (předků), dědění jejich vlastností a metod.
  3. Polymorfismus: Schopnost používat objekty různých tříd přes společné rozhraní a vykonávat specifické chování pro každou třídu.

Principy OOP (SOLID):

  1. Princip jediné odpovědnosti (SRP): Každá třída má být odpovědná za jednu konkrétní funkci.
  2. Princip otevřenosti/zavřenosti (OCP): Třídy by měly být otevřené pro rozšíření, ale uzavřené pro změnu.
  3. Princip Liskovovy substituce (LSP): Objekty základní třídy mohou být nahrazeny objekty odvozené třídy bez narušení správnosti programu.
  4. Princip segregace rozhraní (ISP): Klienti by neměli záviset na rozhraních, která nevyužívají.
  5. Princip závislostní inverze (DIP): Vyšší vrstvy by neměly záviset na nižších vrstvách; obě by měly záviset na abstrakcích. Abstrakce by neměly záviset na detailech, detaily by měly záviset na abstrakcích.

Příklad zapouzdření a dědičnosti:

// Základní třída
public class Animal
{
    public string Name { get; set; }

    public Animal(string name)
    {
        Name = name;
    }

    public virtual void MakeSound()
    {
        Console.WriteLine("Obecný zvuk");
    }
}

// Odvozená třída
public class Dog : Animal
{
    public Dog(string name) : base(name)
    {
    }

    // Přepsání metody základní třídy
    public override void MakeSound()
    {
        Console.WriteLine("Haf!");
    }
}

Příklad polymorfismu:

Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Vytiskne: "Haf!"