c# predavanja

139

Click here to load reader

Upload: tihana-grubisic

Post on 31-Oct-2014

68 views

Category:

Documents


18 download

DESCRIPTION

 

TRANSCRIPT

  • 1. Programske paradigme Programska paradigma je osnovni stil raunalnogprogramiranja Paradigme se razlikuju u konceptu i razini apstrakcijereprezentiranja elemenata programa (kao to sufunkcije, varijable, konstante, objekti...) i koracimasastavljanja prorauna (kao to su zadaci, evaluacije,tokovi podataka...)

2. Programske paradigme Programski jezik moe podravati vie paradigmi npr. C++ moe biti proceduralni ili objektno-orijentirani 3. Usporedba borilake vjetine Programerska paradigma se moe usporediti sa borilakim vjetinama (stil i oruje sa kojim se borac bori, moe se usporediti sa stilom i alatom koji programer koristi) 4. Povijest raunalnog programiranja Inicijalno raunala su se strojno programirala Programiranje binarnim kodom Programiranje putem asemblerskog jezika Programiranje putem proceduralnih jezika - C, Basic... Programiranje putem objektno-orijentiranih jezika Java, C#............................................................................. 5. Programske paradigme Proceduralna paradigma Objektno orijentirana paradigmate Funkcijska paradigma Konceptualno orijentirana paradigma Logika paradigma.................................................................... 6. Proceduralna paradigma Program se sastoji od niza deklaracija, naredbipridruivanja te poziva predefiniranih kao i vlastitihpotprograma Potprogrami omoguuju smisleno strukturiranjeprograma Primjeri: Basic ili C Problem sa ovakvim pristupom programiranju su svevea kompleksnost dananjih programa: to jeprogram vei - tee ga je odravati. 7. Objektno-orijentirana paradigma Kod objektno orijentiranog programiranja (OOP) programse sastoji od skupa objekata koji meusobno komuniciraju Objekt je programski entitet koji je sposoban primati,obraivati i slati poruke Objektno orijentirani model je izuzetno pogodan zaopisivanje dananjih sustava koji se najede sastoje odjasno odvojenih, samostalnih cjelina koje meusobnokomuniciraju i razmjenjuju obraene podatke Jedan od takvih primjera koji se najede navodi jegrafiko korisniko suelje (GUI). 8. Objektno-orijentirana paradigma Razvoj OOP-a zapoet je 60 godina prolog stoljeda, apopularnost objektno orijentirane paradigme porasla jenaglo s razvojem grafikih korisnikih suelja, te razvojemprogramskog jezika C++ Dodatan rast popularnosti dogodio se u 90-tima prirazvoju raunalnih igara Primjeri igara su: Doom III, Starcraft, Diablo, Warcraft III iWorld of Warcraft 9. Osnovni temelji OOP-a Osnovni temelji objektno orijentirane paradigme su prijesvega objekt i klasa (razred) te metode, nasljeivanje,enkapsulacija, polimorfizam, apstrakcija i suelja. Objekt je naziv za skup svojstava koja moemo objedinitiu smislenu cjelinu. Klasa je skup pravila koja propisuju od ega je pojediniobjekt sagraen te kakva su njegova svojstva. 10. Osnovni temelji OOP-a Konceptom objektnog programiranja uvodi se mogudnostidefiniranja novih korisnikih tipova klasa. Klase sutemelj objektno orijentiranog programiranja. Ideja uvoenja objekata u programiranje dola jeanaliziranjem naina na koji funkcionira stvarni svijet.Promatanjem svijeta oko sebe dodi demo do zakljuka dase mnoge stvari mogu vrlo jednostavno modelliratipomodu objekata. 11. PrimjerKlasa: AutomobilBroj objekata: 10Atributi(svojstva):Boja, teina, brojkonja...Metode: Otvorivrata, upaliautomobil, otvoriprozor, ukljuibrisae... 12. klasa i objekt Klasa - zamiljena svojstva automobila Objekt - stvarni automobili na slici 13. Osnovni temelji OOP-a Objekti meusobno razmjenjuju informacije i traejedan od drugoga usluge. Pritom okolina objekta nitane mora znati o njegovom unutarnjem ustrojstvu. Svaki objekt ima javno suelje kojim se definira njegova suradnja s okolinom. Ono odreuje koje informacije objekt moe dati, te u kojem formatu. Takoer su definirane i sve usluge koje objekt moe pruiti. 14. Osnovni temelji OOP-a Funkcija koja inicijalizira objekt naziva se konstruktor Kada objekt vie nije potreban posebna funkcija klasapod nazivom destruktor uredno e unititi objekt 15. Apstrakcija Apstrakcija je odreivanje bitnih osobina i funkcionalnostibez uvoenja nepotrebnih detalja ili objanjenja. Pomouovog procesa modeliraju se najvaniji elementi (atributi) iopis pripadnog ponaanja (metode) neke klase. 16. Primjer 17. Primjer 18. Enkapsulacija (uahurivanje) Enkapsulacija je povezivanje bitnih informacija i elemenatanekog objekta te njegovog ponaanja (metoda) u povezane,izolirane cjeline na nain da unutranji ustroj nije vidljivvanjskom svijetu1. public: elementi su dio javnog suelja klase i dostupni su svim drugim klasama2. private: elementi su dostupni samo klasi u kojoj su deklarirani.3. protected: elementi su dostupni klasi u kojem su deklarirani i podklasama. 19. Primjer 20. Nasljeivanje Nasljeivanje(eng. inheritance) je tehnika kojom sedefiniranje neke klase vri koritenjem definicijepostojee klase (koja se naziva bazna klasa) Tako dobivena klasa naziva se izvedena klasa Kada se pomou izvedenih klasa deklarira neki objekt,njegove lanske funkcije i varijable postaju funkcije ivarijable koje su kreirane u baznoj klasi 21. Primjer Kada bi imali klasu vozilo, koji bi sve njegovi atributibili? Kada bi imali klasu vozilo, koje bi sve njegovefunkcije(metode) bile? 22. Primjerusing System;public class Pravokutnik{public Pravokutnik(){Console.WriteLine("Pravokutnik konstruktor.");}public void povrsina(float a, float b){float P = a*b;Console.WriteLine(P);}public void opseg (float a, float b){float O= 2*a+2*bConsole.WriteLine(O)}} 23. Primjerpublic class Kvadrat : Pravokutnik{public Kvadrat(){Console.WriteLine("Kvadrat konstruktor");}public static void Main(){Kvadrat kvadrat = new Kvadrat();kvadrat.povrsina(4,4)kvadrat.opseg (2,2)}} 24. Nasljeivanje i konstruktor Konstruktor slui da bi kreirirali objekt nekog klasa Svaka klasa bi trebala imati svoj konstrutor 25. Polimorfizam Polimorfizam je, uz enkapsulaciju, apstrakciju inasljeivanje trede vano svojstvo koje objektnoorijentiran jezik mora podravati Bez nasljeivanja nema polimorfizma, a nasljeivanje bezpolimorfizma gotovo da i nema smisla poli mnogo, form - oblici => vie oblika 26. Primjer Neka je bazna klasa Geometrijski_lik, a izvedeni klasisu Krug i Pravokutnik Svaki Geometrijski_lik ima svoju povrsinu, ali se onaza Krug izraunava na drugaiji nain nego zaPravokutnik Za krug je radijus * radijus * PI, a za pravokutnik jeduljina*irina, ali openito svojstvo svakoggeometrijskog lika je njegova povrina kao to jeprikazano na slici 27. Suelje Objekt definira svoju interakciju s vanjskim svijetom krozfunkcije koje podrava Npr. gumbi na televizoru ine njegovo suelje koje odvajaelektroniku i nain na koji je izvedena od krajnjegkorisnika (nas), koji elimo gledati neki program Bez obzira na proizvoaa televizora i nain na koji jeelektronika organizirana mi oekujemo da demo svakitelevizor modi upaliti, ugasiti, promijeniti kanal, smanjitiili povedati glasnodu itd 28. Primjer 29. Primjer 30. Neno Dodig 31. Osnove C# programskog jezika C# je dizajniran da bude: Jednostavan Siguran Objektno-orijentiran Internet-centriran Brz 32. C# jednostavnost i sigurnost C# je jednostavan programski jezik sa samo 80kljunih rijei i desetak tipova Siguran je za upis koda jer debuger trai grekedirektno pri upisu koda, a ne samo nakon pokretanja 33. Hello Worldnamespace HelloWorld{class HelloWorld{ static void Main() { // Koritenje objekta Console System.Console.WriteLine("Hello world"); }}} 34. Metodavoid mojaMetoda(int param1, string param2){//kod ide ovdje} 35. Poziv metodeint x = 5;string mojString = Hello;mojaMetoda(x, mojsString); 36. Komentari C komentari /* */ C++ komentari // XML dokumentacijski komentari /// 37. Deklaracija varijabli int prva, druga, treca; ili int prva=10, druga, treca=0; 38. Console.WriteLine(printf) Console.WriteLine(Pozdrav!); int godine=56; Console.WriteLine(Broj godina je {0}, godine); int broj1 = 5, broj2 = 7, broj3=9; Console.WriteLine(prvi: {0}, drugi: {1}, treci: {2}, opetprvi: {0}", broj1, broj2, broj3); 39. Console.ReadLine(gets) string godine_string = Console.ReadLine(); int godine_integer = Convert.ToInt32(godine_string); 40. Konstante const int brojdana = 7; 41. Tipovi podataka 42. if uvijetif ( broj > 40 ){ Console.WriteLine(Broj je veci od 40);}else{ Console.WriteLine(Broj je manji ili jednako 40);} 43. for petljafor ( int x = 5; x < 10; x++ ){Console.WriteLine(x: {0}, x);} 44. While petljawhile (i < 10){Console.Write("{0} ", i);i++;} 45. Do-while petljado{Console.Write("{0} ", i);i++;} while (i < 10); 46. Operatori C# podrava: Relacijske operatore (>, ) Vee ili jednako (>=) Manje (Microsoft Visual Studio 74. Pokretanje projekta Kada se upali Visual Studio Odaberite padajui izbornik File->New->Project Nakon otvaranja prozora za odabir novog projekta odaberite C# windows projekt s lijeve strane i odaberite console application sa desne strane te gumb OK 75. Pokretanje projekta Kada se upali Visual Studio 76. Pokretanje projekta Odaberite padajui izbornik File->New->Project 77. Odabir projekta U ovom prozoru moete odabrati vrstu, naziv i lokacijuprojekta 78. Pokretanje projekta Nakon otvaranja prozora za odabir novog projekta odaberite C# windows projekt s lijeve strane i odaberite console application sa desne strane, na dnu upiite naziv projekta: vjezba1 79. Izgled otvorenog projekta 80. using using je najsliniji #include naredbi iz C prog.jezika. 81. namespace Pretinci u koje se smjetaju klase(class ili klasi) 82. Naziv klase(klasa ili class) Klasa Program 83. static void Main(string[] args) static void Main(string[] args) Kao funkcija Main u C programskom jeziku void znai da funkcija nema povratnu vrijednost tj.povratna vrijednost je NULL static emo obraivati kasnije u predavanjima string[] args poto je konzolna aplikacija, prekocommand prompta moe primiti ulazne argumente i stavitiih u polje args koje je tipa string PRIMJER: naredba format c: /q Naredba koja slui za formatiranje Poziva program format sa argumentima c: i /q argument c: znai da program formatira particiju c: argument /q znai da se napravi brzo formatiranje 84. static void Main(string[] args) Mi u pravilu neemo slati argumente svojimprogramima, ali to moemo napraviti Pravi primjer ete dobiti pri kraju drugog sata!!!foreach (string tekst in args){ Console.WriteLine(tekst);} Console.ReadLine(); 85. Hello World! Prvi program Umjesto naredbe printf(); mi emo koristiti metodukonzole pod nazivom WriteLine Upiite unutar main-a: Console Primjetiti ete da Visual Studio predlae to moeteupisati i ako je odabrano ono to elite moete dovritibez pisanja pritiui tipku tab(tabulator) Nakon upisivanja Console upiite toku Console. 86. Console Prvo polugodite emo raditi aplikacije u konzoli Kada nakon naziva objekta(u naem sluaju Console)pritisnemo toku, dobiti emo popis moguih metodai atributa tog objekta Proite malo po njima te pogledajte koje sve metode iatribute ima objekt Console 87. WriteLine Da bi ispisali neto u konzolu moemo koristiti metodunpr. WriteLine kao i neke druge Nakon odabira Console.WriteLine otvorite zagradu ( Tu emo vidjeti da metoda WriteLine ima 19 overloadmogunosti ( o tome kasnije na predavanjima) Nakon otvaranja zagrade upiite navodnike i tekst: HelloWorld! te zatvorite navodnike, zatvorite zagradu i stavitetoku-zarez Console.WriteLine("Hello World"); Nakon toga dodajte liniju Console.ReadLine(); Ta naredba e nam zadrati ekran kao naredba getch() u Cprogramskom jeziku 88. Pokrenite izvravanje tipkom F5 Ili pritiskom na zeleni gumb start 89. Atributi i metode Metode e biti oznaeni ljubiastom kockicom kao npr. SetWindowSize, dok su atributi oznaeni malim prozorom kao npr. Title 90. Razlika u koritenju Uglavnom metode se koriste tako da se pozovu Npr. Console.WriteLine(); One mogu i ne moraju(zavisno o metode) primatiargumente npr. Console.WriteLine(Tekst); U prethodnoj liniji argument je string Tekst Dok se atributi postavljaju uglavnom tako da: Console.Title = "Naslov prozora"; Postavimo vrijednost atributa kao to je npr. Title Nekim atributima moemo samo pogledati vrijednost Npr. Console.WriteLine(Console.CapsLock); Tako bi doznali da li je pritisnuta tipka CapsLock 91. Pazite!!!! Na tip podataka koje metode primaju kao atribute Na tip podataka koju metoda vraa Na tip podataka argumenta Ako je argument int onda moze npr. biti Console.WindowWidth = 30; Ali kao je argument tipa ConsoleColor onda moze npr. biti Console.BackgroundColor = ConsoleColor.DarkCyan; 92. Zadatci Ispiite neki drugi tekst Saznajte i isprobajte zato nam slue metode konzole: Console.Clear(); Console.Write(); Console.Beep(); Console.ReadLine(); Console.ResetColor(); Console.SetCursorPosition(int left, int top); Console.SetWindowSize(int width, int height); 93. Zadatci Saznajte i isprobajte zato nam slue atributi konzole: Console.Title Console.BackgroundColor Console.CapsLock Console.ForegroundColor Console.NumberLock Console.WindowHeight Console.WindowWidth 94. to je debuggiranje? Pronalaenje greaka i nedostataka u programskomkodu Naziv potjee od stvarnog dogaaja kod jednog odprvih raunala Mark I dogodio se kvar u radu. Nakondugotrajne potrage za grekom programeri su otkrilida je kvar izazvala jedna buba koja se uvukla uraunalo. Otada se svaka greka ili nedostatak u raduraunala zove bug. 95. Vrste pogreaka kod programiranja Sintaksne Visual Studio e u gotovo svim situacijama pronai pogreku formalne greke u jeziku Semantike Ako je program sintaksno dobar, moe doi do pogreke prilikom pokretanja programa program ne radi ono za to je namijenjen Greke izuzetka pojavljuju se prilikom koritenja programa, neizbjene su, a uzroci mogu biti razliiti 96. Sintaksne pogreke osnovna vrsta greaka, nastaje pogrekom u jeziku, tj.u pogreno upisanom programskom kodu (npr.Nedostatak neke zagrade, nepravilno upisana kljunarije naredbe ili dr.) Ove greke prilikom debug-iranja budu prikazane uprozoru s popisom greaka (Error list) 97. Semantike pogreke Kod njih su naredbe formalno ispravno napisane, pa ihje tee pronai od sintaksnih greaka (ne vide se uprozoru Error list prilikom debug-iranja) To su greke znaenja program ne radi ono to bitrebao raditi, nego neto drugo Mogu biti uzrokovane logikim pogrekama uprogramskom kodu ili podacima koje unese korisnik One se vide tek prilikom izvravanja programa (kadaotkrijemo da program ne radi to bi trebao raditi, alijo uvijek nije jasno to treba ispraviti u programskomkodu) 98. Greke izuzetaka Javljaju se, kao i semantike greke, tek prilikomizvravanja programa Izuzeci (eng. exceptions) e nastati bez obzira toprogramer poduzme da ih sprijei (neizbjene su) Uzrok moe biti razliit, ponekad je u semantikimgrekama, jer se logika programa ne uspije ostvaritizbog nekih specifinih podataka koje korisnik unese Rukovanje ovim grekama (eng. Exception handling)biti e posebno obraeno 99. Zato koristiti debugger? I najbolji programer na svijetu radi pogreke prilikom pisanja koda 100. Uvod u klase Ugraene klase npr. Console Vlastite klase npr. Tocka, Trokut, Pravokutink 101. to je tip u objektnomprogramiranju? Bit objektnog programiranja je kreiranje novihtipova. Ako smo kreirali tri dugmeta (OK, Cancel i Help), svatri nasljeuju svojstva koja ima tip button: svojstvo visine, irine text koji e pisati na dugmetu poloaj dugmeta na formi, i druga svojstva zajednika svim instancama kojepripadaju tipu button 102. Nasljeivanje Ta se karakteristika objektnog programiranja zoveNASLJEIVANJE. NASLJEIVANJE je mogunost da objekti preuzimajusva svojstva tipa kojem pripadaju. 103. Klase KLASA je neki tip promatranih objekata. Klasa je adekvatna skupini ili vrsti kod biolokih bia,npr. skupina pasa, maaka, studenata, radnika,artikala, itd. Objekt je instanca nek 1. Pas = klasa (ili skupina objekata) Rex = instanca klase Pas (konkretan pas izklase Pas) 2. Student = klasa Pero Peri = instanca klase Student 3. Button = klasa OK button koji napravimo u aplikaciji = instanca klasebuttone klase, npr. 104. Kreiranje klase Kada kreiramo neku vlastitu klasu, potrebno jedefinirati: njezina svojstva (properties) ili varijable kojima edodjeljivati vrijednosti (ako se radi o javnimsvojstvima, tada se koristi izraz svojstvo (eng.property), a ako se radi o privatnim varijablama koje ese koristiti samo u toj klasi, tada govorimo koristimoizraz varijabla metode koje odreuju njezino ponaanje. 105. Kreiranje klase Naredba za kreiranje nove klase poinje kljunom rijei class, zatim dolazi naziv klase, zatim deklaracija svojstava (properties) koje se definiraju za tu klasu, te metode koje pripadaju klasi. 106. Kreiranje klaseclass mojaKlasa{//ovdje definicija svojstava ili varijabli,npr.int mojaVarijabla;} Gornjim naredbama kreirali smo klasu pod nazivommojaKlasa, i njoj pripadajuu cjelobrojnuvarijablu pod nazivom mojaVarijabla kojoj e seunutar klase mojaKlasa moi dodjeljivati vrijednosti. 107. Kreiranje objekta iz klaseclass Student{// ovdje definiramo svojstva koja pripadaju toj klasi:int Ocjena;}public void Main(){Student Pero = new Student();Pero.Ocjena= 3;} 108. Konstruktor Naredba kojom se definira instanca neke klase izgledaovako: (npr. Za kreiranje instance Pero klase Student) Student Pero = new Student(); Naredba sadri na kraju zagrade (), pa izgled kao dapoziva metodu. Zapravo, pri kreiranju nove instance poziva se jednametoda koja se zove konstruktor (eng. constructor). 109. Konstruktor Zadatak konstruktora je kreirati instancu (objekt)neke klase i omoguiti da se toj instanci dodijelivrijednost kasnije u programu. Nakon to se konstruktorom kreira nova instanca, umemoriji se ostavlja prostor za vrijednosnu instancu.Ako ne specificiramo koji konstruktor pozivamo, CLRpoziva standardni (default) konstruktor kojim sedefinira nova instanca klase i ne prosljeuju mu senikakve vrijednosti. Zato u zagradama kod ovogstandardnog konstruktora ne piemo nita. 110. Konstruktor - nastavak Ukoliko se eli koristiti neki vlastiti odreeni konstruktor, tadase on mora deklarirati u programu prije samog koritenja.// konstruktorpublic Vrijeme(System.DateTime dt){ godina = dt.Year; mjesec = dt.Month; dan = dt.Day; sat = dt.Hour; minuta = dt.Minute; sekunda = dt.Second;} 111. Metode Metoda je neka funkcija koja se nalazi unutarklase. Ona je lan (eng. member) klase. Metode definiraju to klase rade i kako se klaseponaaju. Metodama koje sami kreiramo moemo datiproizvoljne naziv, npr. Ispis(), Racunanje(), itd. 112. Kreiranje metoda Kada se kreira neka metoda, ona takoer ima svojudeklaraciju. U deklaraciji se definira tip podatka koji demetoda vradati, zatim naziv metode i u zagradi parametrekoji de se prosljeivati metodi. Npr. ovako: Int mojaMetoda(int velicina); 113. Kreiranje metoda Neke metode uope ne vraaju nikakve vrijednosti.Takve metode samo neto izvode, i tada je tip metodevoid, a u zagradi se ne pie nita, npr. ovako: void mojaMetoda( ); 114. Operator toka (.) Operator . koristi se: Za pristup metodi ili atributu unutar neke klase Primjer: Student.Pero.Visina=175; koristi instancu Pero klase Student, i njegovomsvojstvu Visina dodjeljuje vrijednost 175. 115. Statini lanovi Pri koritenju metode Main() vidjeli smo da naredbasadri kljunu rije static: static void Main() Rije static znai da se ta metoda moe pozvatisamostalno bez prethodnog pozivanja klase tj. Moeteje koristiti bez da u imate objekt te klase 116. Statini lanovi Svojstva i metode neke klase mogu biti instance ili statinilanovi. Ako su instance, moraju se pozivati preko operatora . takoda se najprije navede klasa kojoj pripadaju, npr. akodefiniramo klasu Student, i u okviru nje instancu Pero, azatim neku metodu Upisi() (kojom e se studenti upisivatina fakultet), tada se ta metoda poziva: a) ako prethodno nije definirana kao statina: Student.Pero.Upisi(); b) ako je prethodno definirana kao statina: Student.Upisi(); 117. Kljuna rije this Kljuna rije this odnosi se na trenutnu instancuneke klase (ili drugog objekta). this je skriveni pokaziva (pointer) na svakunestatinu metodu neke klase 118. Izrada klase toka class Tocka {//ovdje dolazi deklaracija atributa i metoda } 119. Atributi klase toka class Tocka {public int x, y; } 120. Konstruktor klase toka class Tocka {public int x, y; public Tocka(int x_os, int y_os) { x = x_os; y = y_os; } } 121. Poziv konstruktora Tocka a = new Tocka(10, 10); 122. Metoda Opis() public string Opis() { return "Toka ima kordinate: " + x + " i " + y; } Ako je x = 10 i y = 10 onda e string koji se vraaizgledati: Toka ima kordinate: 10 i 10 123. Klasa Math Klasa sa matematikim metodama i atributima Slina biblioteci math.h iz c programskog jezika 124. Metoda udaljenostOdIshodista() public double udaljenostOdIshodista() { double udaljenost; udaljenost = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2)); return udaljenost; } 125. Metoda udaljenostDoTocke(Tockatocka) public double udaljenostDoTocke(Tocka tocka) {double udaljenost;udaljenost = Math.Sqrt(Math.Pow(x - tocka.x, 2) + Math.Pow(y - tocka.y, 2));return udaljenost; } 126. System.IO prostor imena Ulaz i izlaz (Input/Output tj. I/O) odnosi se na postupkeitanja i pisanja podatka u i iz tokova (streams) i datoteka npr. datoteka, U/I jedinica, TCP/IP utinica, meuprocesnikomunikacijski cjevovod, ... Tri osnovna klasa: klasi za itanje i pisanje okteta (bytes) klasi za itanje i pisanje znakova (character) klasi za itanje i pisanje binarnih podataka 127. Directory, DirectoryInfo, File, FileInfo Slue za stvaranje, kopiranje, brisanje, premjetanje ipreimenovanje datoteka i direktorija, otvaranjedatoteka te za iteraciju kroz direktorije 128. FileSystemInfo 129. Dodatni atributi datoteka Archive Compressed Directory Encrypted Hidden Normal ReadOnly System 130. klas DirectoryInfo klas DirectoryInfo ukljuuje postupke za stvaranje, premjetanje (preimenovanje) i iteraciju (enumeraciju) kroz direktorije i poddirektorije 131. klas FileInfo 132. klas File