15
Pravljenje klasa i objekata i upravljanje njima

Klase u c#

Embed Size (px)

DESCRIPTION

Sam programski jezik je uređen konačan skup znakova za formulisanje programa. Njegova definicija data u ISO standardu glasi: programski jezik je veštački jezik koji se koristi za predstavljanje programa. Sam program predstavlja sistem oznaka za opis algoritama i struktura podataka pomoću kojih ljudi komuniciraju sa računarom. Jednostavnije korišćenje mašinskog jezika dobija se uvođenjem simboličkih imena za naredbe i adreseme morijskih lokacija, a to omogućava asemblerski ili simbolički mašinski jezik. Asemblerski jezik je niskog nivoa, zbog toga što je korespodencija između asemblerskog i mašinskog jezika jedan prema jedan. Programer koristi naredbe računara na kome radi, pa stoga program nije prenosiv - ne može se izvršiti na drugom računaru bez reprogramiranja.

Citation preview

Page 1: Klase u c#

Pravljenje klasa i objekata i upravljanje njima

Page 2: Klase u c#

Od tradicionalnog ka OOP

Tradicionalni način programiranja je u osnovi proceduralan, zasnovan na funkcionalnoj dekompoziciji korisničkog, a zatim i programskog zahteva.

Pri tome, podaci (atributi) koji se obrađuju i operacije nad njima nisu grupisani zajedno u objektima kao što je to slučaj kod OBJEKTNO ORJENTISANOG PROGRAMIRANJA, već su razbacani po programu.

Page 3: Klase u c#

Osnovna ideja objektno orjentisanog programiranja je da sve te podatke (atribute ) izvučemo iz navedenih struktura i grupišemo po klasama zajedno sa relevantnim operacijama (funkcijama). Klase zatim struktuiramo hijerarhijski, formirajući hijerarhijsko stablo klasa, vodeći računa da atributi i operacije koji su zajednički za sve klase budu na višim hijerarhijama, kako bi ih niže hijerarhije mogle koristiti preko mehanizma nasleđivanja

Page 4: Klase u c#

Time se izbegava redundansa podataka i operacija. Tako učaurenim podacima i operacijama definišemo

interface prema korisniku tih klasa a takođe i interface između pojedinih klasa u hijerarhiji klasa, sakrivajući kao implementacione detalje sve ono što nije bitno za njihovo korišćenje.

Na taj načiin stvaramo softverske komponente ( softverske čipove ) koje možemo nasleđivati novim klasama i na taj način iste ugrađujemo u nove softverske proizvode.

Page 5: Klase u c#

Osnovni koncept OOP klasifikacija

(classification)

apstrakcija

(abstraction)

učaurenje

(encapsulation)

nasleđivanje

(inheritance)

polimorfizam

(polymorphism)

Page 6: Klase u c#

Klasifikacija

Koren reci klasifikacija je klasa.

Kada obrazujete klasu, vi sistematski uredujete informacije u smislenu celinu. Reč je o klasifikaciji a to svi rade, ne samo programeri

klasifikacija je duboko ukorenjena u nas nacin razmisljanja i komuniciranja, tako da je logicno pokusati da se programi pisu klasifikovanjem razlicitih koncepata svojstvenih nekom problemu i njegovom resenju i zatim modelirati te klase u programskom jeziku

Page 7: Klase u c#

Moderni objektno orijentisani programski jezici omogucavaju da se definisu klase, koje kombinuju

ponasanja (metode) i

atribute (podatke).

Page 8: Klase u c#

Pokusaj definisanja klasa

Prototipski mehanizam za stvaranje objekta, omogućavajući njihovu klasifikaciju po grupama sa istim osobinama

Model za sve objekte koji se grade,

Agregacija podataka (atributa) obično različitog tipa i operacija, realizovanim funkcijama, nazvanim metodama koje obrađuju te atribute

Kolekcija više objekata koji imaju istu strukturu

Korisnički izveden tip podataka,

Page 9: Klase u c#

Sta je enkapsuliranje?

Enkapsuliranje ima dve znacajne uloge:

Da kombinuje metode i podatke u klasu; drugim recima, da podrzi klasifikaciju.

Da kontrolise dostupnost metoda i podataka; drugim recima, da kontrolise koriscenje klase.

Klasa je programska konstrukcija koja obezbeduje sintaksu i semantiku koje podrzavaju te dve osnovne uloge.

Page 10: Klase u c#

Ovo je jedna klasa po imenu Krug koja sadrzi jedan metod (za izracunavanje povrsine kruga) i jedan podatak (poluprecnik kruga):

• class Krug• {• double Povrsina()• {• return 3.141592 * poluprecnik * poluprefinik;• }• double poluprecnik;• }

Page 11: Klase u c#

Kontrolisanje dostupnosti

Drugi kljucni aspekt enkapsuliranja: dostupnost. Za metod ili polje kaze se da je privatno ako je dostupno

samo unutarklase.

Da biste deklarisali da je metod ili polje privatno, napisacetekljucnu rec private ispred njegove deklaracije.

Za metod ili polje kaze se da je javno ako je dostupno i van i unutarklase

Da biste deklarisali da je metod ili polje javno, napisacete kljucnu rec public ispred njegove deklaracije

Page 12: Klase u c#

Ponovo klasa Krug. Ovog puta se Povrsina deklarise kao javni metod, a poluprecnik se deklarise kao privatno polje:

class Krug{public double Povrsina(){return 3.141592 * poluprecinik * poluprecinik;}private double poluprecnik; }

Page 13: Klase u c#

Apstrakcija

Apstraktni tipovi podataka u C# omogućavaju da napravite klase koje sadrže privatna polja, privatne podatke i privatne metode koji izvršavaju privatna izračunavanja.

Ta polja i metode ne možete da apstrahujete van klase. Međutim, da bi klasa imala praktičnu vrednost, ona mora da obezbedi neku vrstu „interfejsa“ za komunikaciju. Taj interfejs je skup javnih metoda koje aplikacije mogu da pozivaju. Ti metodi definišu

funkcionalnost ovih aplikacija.

Page 14: Klase u c#

Javni metodi mogu da koriste druge privatne metode i da pristupaju privatnim podacima da bi obavili svoj posao ali korisnika to ne zanima dok metodi rade ono što su obećali.

Pošto su mehanizmi koje javni metod koristi privatni, ili sakriveni, programer koji implementira klasu ima potpunu siobodu da obavi izračunavanja i da pristupa podacima kako god mu se čini pogodno.

Štaviše, neka kasnija verzija klase može potpuno da promeni te unutrašnje detalje (može, na primer, da upotrebi neki super novi algoritam koji je 100 puta brži od prvobitnog) ali, dok god javni „interfejs" ostaje isti (nudi se isti skup javnih metoda), sve postojeće aplikacije koje koriste ovu klasu i dalje funkcionišu.

Page 15: Klase u c#

Objekti su…

Nezavisne programske celine koje sadrže metode (funkcije) i podatke

Različita pojavljivanja iste klase

Promenljive koje se kreiraju iz struktura tipa klase

Individualna realizacija klasa