1 / 25

Objektno orienitirano programiranje v Pythonu

Objektno orienitirano programiranje v Pythonu. Računalništvo Univerza v Ljubljani , FMF. Koncept. Program = zaporedje ukazov Problem – koda se začne ponavljati Rešitev : funkcije ( izognemo se ponavljanju identične kode ) – definicija na enem mestu , večkratna uporaba

louvain
Download Presentation

Objektno orienitirano programiranje v Pythonu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Objektnoorienitiranoprogramiranje v Pythonu RačunalništvoUniverza v Ljubljani, FMF

  2. Koncept • Program = zaporedjeukazov • Problem – koda se začneponavljati • Rešitev: funkcije (izognemo se ponavljanjuidentičnekode) – definicijanaenemmestu, večkratnauporaba • Objektnoorientiranoprogramiranjenamomogočapakiranjelogičnosorodnekode in podatkov v objekte in s tem olajšaupravljanjekode • Objekt = entiteta, kivsebujepodatke (atribute) in funkcije (metode)

  3. Objekti • Objekti so podatkovno-funkcionalneenote, kizdružujejopodatke (atribute) in funkcije (metode) • Vsepodatkovneenote (karlahkoshranimo v spremenljivko) v Pythonu so objekti

  4. Razredi • Vsakobjektimatip (t.j. je nekegarazreda) • Tip je razredobjekta, ki je določen z nekodefinicijo (oz. je vgrajen)

  5. Definicijarazreda Imerazreda • Konstruktor: posebnametoda, ki se zaženeobgeneracijiobjekta (instance) razreda • V konstruktorjutipičnoinicializiramoatributerazreda konstruktor atribut metoda

  6. Uporabaobjektov generiranje instance razreda (klickonstruktorja) dostop do atributov Imemetode je tudiatribut – vrneobjektdefinicijemetode Objektdefinicijemetode je “klicljiv” (callable). Klicizvedemetodoskladno z definicijo (namestoprvegaparametravstavikarsamobjekt (instanco).

  7. Objektdefinicijerazreda • Ob naloženidefinicijirazreda se shrani pod imerazreda • Objekt je klicljiv – klicizvedekonstruktor in vrne novo instanco • Do metodlahkodostopamodirektnoprekoatributov, obnašajo se kotnavadnefunkcije

  8. Pomenprvegaparametra • Imenipomembno – pomembno je prvomesto • Dogovor: prvi parameter vednoimenujemoself

  9. Dodatno o razredih • Dokumentacijskiniz, takojnazačetku • Načelomalahkopoljubnakoda(nazačetkuali med definicijometod), ki se izvedeobnalaganjudefinicijerazreda • Podobnalogikakot v funkciji – različno le obravnavanjedefiniranihpodfunkcij, kiavtomatičnopostanejometode • “Lokalnespremenljivke” postanejoatributi v objektudefinicijerazreda

  10. Dedovanje Nov razredprevzamevselastnostioriginalnega • Lahkoredefiniramokonstruktor, metode • Lahkododamonovemetode in noveatribute • Dedovanjenamprihraniponavljanjekode

  11. Dedovanjekotkonceptabstrakcije

  12. Razred Vektor2D • Atributom, katerihimena se začnejo z podčrtajem, rečemoskritiatributi • Razvojnaorodja (IDLE) jihtipično ne prikazujejo • Dejansko so enakodostopnikotostaliatributi, čepoznamonjihovoime • Skrivanjetorejprekodogovoraboljoznačujenamen, kot pa da predstavljaorodjezaščite

  13. Lastnosti • Obnašanjekotatributi, a dejansko so to funkcije • Uporabilismodekorator @property, kispremenifunkcijo norma2, preveže (naistoime) in dopolni, da dosežeciljnodelovanje • Primer uporabe: želimoimetimožnostaktivnostitakoprivračanjukotpripisanju v “navidezniatribut”

  14. Lastnost x • Branje in nastavljanjestadejanskofunkciji, kjerlahkokajpostorimo, preverimo • Pomagamosi s pomočjofunkcije property

  15. Lastnost y (z dekoratorji) • Enakučinekkotklicfunkcije property pri x (razendokumentacijskeganiza) • Dekorator @property je dejanskonaposebennačinnapisanafunkcija oz. razred property. Dekoracijajouporabizadopolnjevanjeoriginalnefunkcije y(), hkrati pa se izvedeprevezava in redefinicijalastnosti y, kiima pod metodo .setter spetrazred oz. funkcijo, s katero je mogočedekorirati • Dekoratorji so naposebennačinnapisanebodisifunkcijebodisirazredi • Mehanizemdefinicijerazredaobnalaganjujihznauporabiti

  16. Metode s posebnimpomenom • Čenaobjektu o kličemofunkcijo abs(o), se dejanskoizvedemetodao.__abs__()

  17. Posebnemetode: __repr__ • IDLE uporablja __repr__ zatekstovnoprezentacijo • Opomba: uporabaformatiranihnizov (metoda format nanizih) • Opomba: operator * pretvoriseznam v zaporedjeargumentov

  18. Posebnemetode: __add__ • Kouporabimo operator seštevanje, npr. a + b, se dejanskoizvedemetodaa.__add__(b) • Podobnoveljazadrugeoperatorje (__sub__, __mul__, …)

  19. Posebnemetode: __ • Operator oglatioklepaj (funkcija, ki se zgodiobbranju) • Obstajatudi __setitem__

  20. Razredmatrika • Tudifunkcionalnostfunkcijskegaklicalahkodefiniramo s pomočjometode __call__

  21. Izjeme • Ko se zgodikajnenavadnega, npr. deljenje z 0, Python generiraizjeme • Izjeme so spetobjekti • Lahkojihulovimo, lahkojihsamiizvržemo • Lahkodefiniramotudisvojerazrede, kijihuporabimokotizjeme

  22. Primer: Razredvektor 2D • Pisanje v lastnost x kličemetodonastaviX(…), kipreveri tip podatkazavpis in vržeizjemo Exception(), čevpisniustreznegatipa

  23. Lastneizjeme • Definicijalastneizjeme (dedičrazreda Exception) • Popravekmetode __getitem__ v razreduvektor

  24. Lovljenjeizjem • Uporabimozanko try … except

  25. Načinilovljenjaizjem Oglejmosi primer.

More Related