třída vs. objekt

třída Auto(má barvu, umí jet) – objekt skodaFabiaCombi2007

třída obsahuje:

  1. vlastnosti (atributy): data (string Jmeno;)
  2. metody (jak se s tím pracuje): chování, funkce (JdiPesky())
  3. konstruktory (jakým způsobem se vytváří): speciální metoda, která se volá při vytváření objektu (new); nedědí se!!!
  4. destruktory (jakým způsobem zaniká): volá se při zániku. V C# se nepoužívá.

Tři Pilíře OOP

  1. zapouzdření (encapsulation)

    objekt by měl skrývat vnitřní data a nabízet jen to, co je bezpečné (vnější rozhraní)

    modifikátory přístupu:

  2. dědičnost (inheritance)

schopnost vytvořit novou třídu na základě existující

  1. polymorfismus (mnohotvarnost)

    schopnost objektů chovat se různě podle situace nebo typu

    1. přetěžování podle parametrů:

      • více metod se stejným názvem, ale jinými parametry
      • Vypis(int cislo) x Vypis(string text)
    2. přetížení metod podle instance:

      • situace, kdy potomek změní chování metody zděděné od předka
      • defaultně se volá metoda z předka
      • klíčová slova:
        • virtual (u předka) - tahle metoda se dá změnit
        • override (u potomka) - mění chování metody

      chyták:

      Clovek osoba = new Student(); // Proměnná je typu Člověk, ale uvnitř je Student
      osoba.Pozdrav();
      

      pokud je Pozdrav virtual/override , zavolá se metoda ze Studenta

      pokud ne, zavolá se z Člověka


abstraktní třídy a Interface

abstraktní třída (abstract )