Junior
Реците о парадигмама и принципима објектно-оријентисаног програмирања.
sobes.tech АИ
Одговор од АИ
Paradigme objektno-orijentisanog programiranja:
- Enkapsulacija: Sakrivanje podataka i metoda unutar klase, omogućavajući pristup putem interfejsa.
- Nasleđivanje: Kreiranje novih klasa (potklasa) na osnovu postojećih (nadklasa), nasledjujući njihove osobine i metode.
- Polimorfizam: Mogućnost korišćenja objekata različitih klasa putem zajedničkog interfejsa, izvršavajući specifično ponašanje za svaku klasu.
Principi OOP (SOLID):
- Princip jedinstvene odgovornosti (SRP): Svaka klasa treba da ima jednu funkciju.
- Princip otvorenosti/zatvorenosti (OCP): Klase treba da budu otvorene za proširenje, ali zatvorene za izmene.
- Princip Liskovljeve zamene (LSP): Objekti osnovne klase mogu biti zamenjeni objektima izvedene klase bez narušavanja ispravnosti programa.
- Princip segregacije interfejsa (ISP): Klijenti ne bi trebalo da zavise od interfejsa koje ne koriste.
- Princip inverzije zavisnosti (DIP): Moduli višeg nivoa ne bi trebalo da zavise od modula nižeg nivoa; oboje treba da zavise od apstrakcija. Apstrakcije ne bi trebalo da zavise od detalja, već detalji od apstrakcija.
Primer enkapsulacije i nasleđivanja:
// Osnovna klasa
public class Animal
{
public string Name { get; set; }
public Animal(string name)
{
Name = name;
}
public virtual void MakeSound()
{
Console.WriteLine("Neki generički zvuk");
}
}
// Izvedena klasa
public class Dog : Animal
{
public Dog(string name) : base(name)
{
}
// Prepisivanje metode osnovne klase
public override void MakeSound()
{
Console.WriteLine("Vau!");
}
}
Primer polimorfizma:
Animal myAnimal = new Dog("Buddy");
myAnimal.MakeSound(); // Ispisaće "Vau!"