Junior
Povězte o paradigmatech a principech objektově orientovaného programování.
sobes.tech AI
Odpověď od AI
Paradigmy objektově orientovaného programování:
- Zapouzdření: Skrytí dat a metod uvnitř třídy, zpřístupnění přes rozhraní.
- 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.
- 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):
- Princip jediné odpovědnosti (SRP): Každá třída má být odpovědná za jednu konkrétní funkci.
- Princip otevřenosti/zavřenosti (OCP): Třídy by měly být otevřené pro rozšíření, ale uzavřené pro změnu.
- Princip Liskovovy substituce (LSP): Objekty základní třídy mohou být nahrazeny objekty odvozené třídy bez narušení správnosti programu.
- Princip segregace rozhraní (ISP): Klienti by neměli záviset na rozhraních, která nevyužívají.
- 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!"