Kurs Object Oriented Programming in Python

Kurs Object Oriented Programming in Python objašnjava zašto je dobro programirati objektno i kreirati i koristiti klase, kao i koji su njeni članovi, koja je razlika između polja klase i njenih metoda i šta oba pojma predstavljaju, šta se podrazumeva pod instanciranjem jedne klase, odnosno pravljenjem njenih objekata. 

Objektno programiranje, kao najzastupljeniji oblik programiranja danas, prisutno je i veoma korišćeno i u Python programiranju, pa se tokom ovog kursa ono detaljno proučava u kontekstu ovog jezika. Kroz kurs obnavljaju se svi prethodno naučeni gradivni blokovi i dopunjuju novim, objektno orijentisanim programskim elementima. Detaljno je objašnjen koncept kompozicije podataka u objekte. Razjašnjava se pojam klase u objektnom programiranju, njenih komponenti, načina na koje se može koristiti – kao samostalna jedinica sistema ili kao šablon za kreiranje različitih objekata.

Takođe se obrađuju i napredne tehnike u objektnom programiranju, predstavlja se koncept nasleđivanja, prave se kompleksne hijerarhijske objektne strukture, vrši prepisivanje i preopterećenje metoda, a različitim članovima klase dopušta ili zabranjuje upotreba kontrolom pristupa. 

Programabilno se analiziraju objekti i klase u potrazi za njihovim članovima kroz tehnike refleksije. 

Pažnja je posvećena i paralelnom izvršavanju programa, kroz rad sa nitima. Ovom oblašću obuhvaćeno je pokretanje delova programa koji se izvršavaju paralelno sa glavnim programom, pristupanje različitim resursima programa iz takvih procesa, rešavanje problema konkurentnosti u takvim operacijama, pokretanje i zaustavljanje paralelnih procesa. 

Tokom kursa proučava se i nepisano veoma važna oblast objektnog programiranja – dizajn šabloni. Ova oblast, osim što je neizostavna na gotovo svakom konkursu za posao, olakšava razumevanje i pamćenje programskih rešenja, naročito u objektnom programiranju. Njenim dobrim savladavanjem lako se usvajaju i drugi koncepti, poput upravljanja događajima.

Zanima vas ovaj kurs? Možete ga pohađati u okviru ovih ITAcademy programa: Python Development Program.

Opis i ciljevi kursa Object Oriented Programming in Python

Misija ovog kursa je da polaznika u potpunosti osposobi za prevazilaženje svih mogućih izazova u Python programiranju. Nakon njegovog kompletiranja, uz usvojeno njegovo gradivo i gradivo prethodnih Python kurseva, polaznik može sa razumevanjem ispratiti bilo koji Python projekat i učestvovati u njegovoj izradi ili modifikaciji. 

Može da kreira sopstvenu objektnu infrastrukturu koristeći klase i njihove članove i implementira različite šablone programiranja u različitim projektima. Poznaje sve koncepte, pravila i karakteristike programskog jezika Python i upotrebljava ih produkciono.

Uspešno kontroliše izuzetke u programu, manipuliše paralelnim izvršavanjem aplikacije, poznaje upravljanje memorijom i resursima i uspešno uklanja greške u programu i debaguje ga. 

Kurs Object Oriented Programming in Python će vam odgovoriti na pitanja:

1. Šta je objektno programiranje?

Objektno programiranje je vrsta programiranja u kojoj se kao gradivni blokovi koriste objekti. S obzirom na to da postoji više varijanti objektnog programiranja, postoje i različiti oblici postojanja i tretiranja objekata. Ali najčešće objekti poseduju svojstva i metode. Svojstva su osobine objekata. Njihovim vrednostima kontroliše se način na koji će objekti biti prezentovani svetu oko sebe. Metode su funkcionalnosti objekata.

To je ono što objekat može da radi. Na primer, trenutni kanal na TV uređaju jeste njegovo svojstvo. Menjanje kanala je metoda TV uređaja. Upotrebom funkcionalnosti za menjanje kanala menjamo kanal, čime se menja ono što trenutno gledamo. Objektno programiranje je jedan od najčešćih tipova programiranja danas, zbog čega je njegovo poznavanje neizbežno u gotovo svakoj grani programiranja. A Python, kao potpuno objektni jezik, uz svoju jednostavnost, odlično je sredstvo za ulazak u ovu oblast.

2. Da li je objektno programiranje komplikovano?

Objektno programiranje nije komplikovano. Štaviše, veoma je jednostavno. Objekti u programima slični su objektima iz realnog života. Mogu raditi nešto i imati neke osobine. Zbog toga je i njihova upotreba jednostavna koliko i bilo koja druga oblast unutar ili izvan programiranja. Ipak, objektno programiranje ima svoje osobenosti koje se moraju odlično poznavati kako bi programiranje bilo efikasno, jer je mnoštvo objekata u nekom programu slično mnoštvu ljudi u stvarnom svetu. Često nije teško komunicirati sa jednom osobom, ali koordinacija više ljudi u kontekstu nekog proizvodnog procesa zahteva iskustvo, umešnost i veštinu.

3. Šta je objekat, a šta klasa?

U objektnom programiranju često srećemo ova dva pojma. I oni su najčešće povezani. Klasa je nacrt po kome pravimo objekte, a objekti su elementi koji učestvuju u izvršavanju programa i svojim osobinama i funkcionalnostima čine da on isporuči željene rezultate.

U jeziku u kome postoje klase postoje i objekti, ali je moguće da u nekom jeziku postoje objekti, ali ne i klase. Python ima mogućnost kreiranja sopstvenih klasa, a predefinisano sadrži i mnoštvo ugrađenih. U zavisnosti od pristupa programera, kao i njegovog stila kodiranja, u ovom jeziku moguće je kreirati sopstvene klase i raditi potpuno objektno ili raditi tradicionalnim, proceduralnim tehnikama.

Kurs Object Oriented Programming in Python

4. Šta su to tipovi programiranja i koji sve postoje?

Postoje mnoge klasifikacije programiranja koje se uzajamno razlikuju po uglu posmatranja. Neke su u vezi sa samim načinom pisanja koda (kodiranja), poput imperativnog i deklarativnog programiranja, neke su u vezi sa realizacijom koda, poput pair programminga, dok su neke jednostavno deo nekog generalnog koncepta, poput test driven ili agile programiranja. Ipak, kada govorimo o tipovima programiranja, najčešće mislimo na razlike između imperativnog i deklarativnog programiranja.

Imperativno programiranje je iterativno, sekvencijalno i okrenuto funkcionalnostima, implementaciji detalja i kontroli toka programa. Deklarativno programiranje je posvećeno definiciji ciljeva radije nego samoj implementaciji. Mogli bismo reći da bi, analogno konstrukciji automobila, imperativno programiranje bilo pravljenje motora i određivanje toga kako motor treba da radi, dok bi deklarativno programiranje bilo određivanje toga gde motor treba da stoji i šta treba da radi.

5. Šta je to dibaging?

Dibaging je proces pronalaženja nepravilnosti i grešaka u nekom programu. Ovaj proces se sastoji od mnogih koraka koji nisu uzajamno povezani. Na primer, pažljivo čitanje koda u potrazi za logičkim greškama može biti tretirano kao dibaging. Takođe, izvođenje automatskog testa nad kodom može biti smatrano dibagingom. 

Pod pojmom dibaginga smatra se i izvršavanje programa liniju po liniju. Ovakva opcija je dostupna u gotovo svim okruženjima za izgradnju programa, pa tako i u onima u kojima se pišu Python programi. Dibaging je važan koliko i samo pravljenje programa, jer proporcionalno rastu programa pronalaženje grešaka postaje sve teže, a njihove posledice dobijaju na težini.

6. Da li je Python objektni jezik?

Python je objektno orijentisani programski jezik. Ima pun objektno orijentisani kapacitet koji podrazumeva klase, objekte, nasleđivanje, polimorfizam i sve ostale karakteristike modernih programskih jezika. Sa druge strane, iako je sve u ovom programskom jeziku bazirano na objektima, on se može koristiti proceduralno ili funkcionalno. 

S obzirom na jednostavnu sintaksu, moćni objektni model, koji ovaj jezik sadrži, lako se usvaja i koristi. U Pythonu je svaki podatak realizovan kao objekat – bez obzira na to da li je u pitanju prost tip, poput broja ili karaktera, ili kompleksan tip, poput objekata za rad sa nitima ili vremenom.

7. Šta su metode, a šta funkcije?

Pojam funkcije u programiranju može se okarakterisati kao potprogram čije je izvršavanje inicirano nekim drugim programom. U zavisnosti od implementacije jezika, ovaj potprogram može u manjoj ili većoj meri biti „svestan” elemenata glavnog programa. Najčešće se funkcijama prilikom startovanja prosleđuju neke informacije, a nakon izvršavanja se od njih uzimaju neki rezultati. Ponekad se funkcije nazivaju i porukama, jer pomoću njih jedan deo programa šalje poruku nekom drugom delu programa.

Metode su tehnički isto što i funkcije. Imaju mogućnost startovanja, prihvataju neke parametre i mogu da vrate neke vrednosti, ali je razlika u tome što se one isključivo mogu naći u objektima. Možemo reći da je metoda zapravo funkcija u sastavu objekta. Metode najčešće imaju mogućnost da vide elemente objekta unutar koga se izvršavaju i koriste se upravo za izmene karakteristika tog objekta.

1. Uvod u objektno orijentisano programiranje

  • Tipovi programiranja
  • Koncepti objektno orijentisanog programiranja

2. Klase i objekti

  • Klase i objekti
  • Članovi klase, polja i metode
  • Statički i instancni članovi klasa
  • Dekoratori
  • Enkapsulacija, nasleđivanje, polimorfizam
  • Apstraktne klase

3. Dibagovanje i rukovanje greškama

  • Upravljanje datumom i vremenom
  • Upravljanje greškama i izuzecima

4. Napredno objektno programiranje

  • Refleksija
  • Generički tipovi
  • Rukovanje događajima 
  • Dizajn šabloni
  • Funkcionalno programiranje

Polaznici kursa