Sobes.tech
Junior

Реците о парадигмама и принципима објектно-оријентисаног програмирања.

sobes.tech АИ

Одговор од АИ

Paradigme objektno-orijentisanog programiranja:

  1. Enkapsulacija: Sakrivanje podataka i metoda unutar klase, omogućavajući pristup putem interfejsa.
  2. Nasleđivanje: Kreiranje novih klasa (potklasa) na osnovu postojećih (nadklasa), nasledjujući njihove osobine i metode.
  3. 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):

  1. Princip jedinstvene odgovornosti (SRP): Svaka klasa treba da ima jednu funkciju.
  2. Princip otvorenosti/zatvorenosti (OCP): Klase treba da budu otvorene za proširenje, ali zatvorene za izmene.
  3. Princip Liskovljeve zamene (LSP): Objekti osnovne klase mogu biti zamenjeni objektima izvedene klase bez narušavanja ispravnosti programa.
  4. Princip segregacije interfejsa (ISP): Klijenti ne bi trebalo da zavise od interfejsa koje ne koriste.
  5. 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!"