Your SlideShare is downloading. ×
0
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
C# predavanja
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

C# predavanja

940

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
940
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Programske paradigme Programska paradigma je osnovni stil računalnog programiranja Paradigme se razlikuju u konceptu i razini apstrakcije reprezentiranja elemenata programa (kao što su funkcije, varijable, konstante, objekti...) i koracima sastavljanja proračuna (kao što su zadaci, evaluacije, tokovi podataka...)
  • 2. Programske paradigme Programski jezik može podržavati više paradigmi npr. C++ može biti proceduralni ili objektno-orijentirani
  • 3. Usporedba – borilačke vještine Programerska paradigma se može usporediti sa borilačkim vještinama (stil i oružje sa kojim se borac bori, može se usporediti sa stilom i alatom koji programer koristi)
  • 4. Povijest računalnog programiranja Inicijalno računala 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 paradigma te Funkcijska paradigma Konceptualno orijentirana paradigma Logička paradigma....................................................................
  • 6. Proceduralna paradigma Program se sastoji od niza deklaracija, naredbi pridruživanja te poziva predefiniranih kao i vlastitih potprograma Potprogrami omogućuju smisleno strukturiranje programa Primjeri: Basic ili C Problem sa ovakvim pristupom programiranju su sve veća kompleksnost današnjih programa: što je program veći - teže ga je održavati.
  • 7. Objektno-orijentirana paradigma Kod objektno orijentiranog programiranja (OOP) program se sastoji od skupa objekata koji međusobno komuniciraju Objekt je programski entitet koji je sposoban primati, obrađivati i slati poruke Objektno orijentirani model je izuzetno pogodan za opisivanje današnjih sustava koji se najčešde sastoje od jasno odvojenih, samostalnih cjelina koje međusobno komuniciraju i razmjenjuju obrađene podatke Jedan od takvih primjera koji se najčešde navodi je grafičko korisničko sučelje (GUI).
  • 8. Objektno-orijentirana paradigma Razvoj OOP-a započet je 60 godina prošlog stoljeda, a popularnost objektno orijentirane paradigme porasla je naglo s razvojem grafičkih korisničkih sučelja, te razvojem programskog jezika C++ Dodatan rast popularnosti dogodio se u 90-tima pri razvoju računalnih igara Primjeri igara su: Doom III, Starcraft, Diablo, Warcraft III i World of Warcraft
  • 9. Osnovni temelji OOP-a Osnovni temelji objektno orijentirane paradigme su prije svega objekt i klasa (razred) te metode, nasljeđivanje, enkapsulacija, polimorfizam, apstrakcija i sučelja. Objekt je naziv za skup svojstava koja možemo objediniti u smislenu cjelinu. Klasa je skup pravila koja propisuju od čega je pojedini objekt sagrađen te kakva su njegova svojstva.
  • 10. Osnovni temelji OOP-a Konceptom objektnog programiranja uvodi se mogudnosti definiranja novih korisničkih tipova – klasa. Klase su temelj objektno orijentiranog programiranja. Ideja uvođenja objekata u programiranje došla je analiziranjem načina na koji funkcionira stvarni svijet. Promatanjem svijeta oko sebe dodi demo do zaključka da se mnoge stvari mogu vrlo jednostavno modellirati pomodu objekata.
  • 11. PrimjerKlasa: AutomobilBroj objekata: 10Atributi(svojstva):Boja, težina, brojkonja...Metode: Otvorivrata, upaliautomobil, otvoriprozor, uključibrisače...
  • 12. klasa i objekt Klasa - zamišljena svojstva automobila Objekt - stvarni automobili na slici
  • 13. Osnovni temelji OOP-a Objekti međusobno razmjenjuju informacije i traže jedan od drugoga usluge. Pritom okolina objekta ništa ne mora znati o njegovom unutarnjem ustrojstvu. Svaki objekt ima javno sučelje kojim se definira njegova suradnja s okolinom. Ono određuje koje informacije objekt može dati, te u kojem formatu. Također su definirane i sve usluge koje objekt može pružiti.
  • 14. Osnovni temelji OOP-a Funkcija koja inicijalizira objekt naziva se konstruktor Kada objekt više nije potreban posebna funkcija klasa pod nazivom destruktor uredno će uništiti objekt
  • 15. Apstrakcija Apstrakcija je određivanje bitnih osobina i funkcionalnosti bez uvođenja nepotrebnih detalja ili objašnjenja. Pomoću ovog procesa modeliraju se najvažniji elementi (atributi) i opis pripadnog ponašanja (metode) neke klase.
  • 16. Primjer
  • 17. Primjer
  • 18. Enkapsulacija (učahurivanje) Enkapsulacija je povezivanje bitnih informacija i elemenata nekog objekta te njegovog ponašanja (metoda) u povezane, izolirane cjeline na način da unutrašnji ustroj nije vidljiv vanjskom svijetu1. public: elementi su dio javnog sučelja 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. Nasljeđivanje Nasljeđivanje(eng. inheritance) je tehnika kojom se definiranje neke klase vrši korištenjem definicije postojeće klase (koja se naziva bazna klasa) Tako dobivena klasa naziva se izvedena klasa Kada se pomoću izvedenih klasa deklarira neki objekt, njegove članske funkcije i varijable postaju funkcije i varijable koje su kreirane u baznoj klasi
  • 21. Primjer Kada bi imali klasu vozilo, koji bi sve njegovi atributi bili? Kada bi imali klasu vozilo, koje bi sve njegove funkcije(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*b Console.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. Nasljeđivanje i konstruktor Konstruktor služi da bi kreirirali objekt nekog klasa Svaka klasa bi trebala imati svoj konstrutor
  • 25. Polimorfizam Polimorfizam je, uz enkapsulaciju, apstrakciju i nasljeđivanje trede važno svojstvo koje objektno orijentiran jezik mora podržavati Bez nasljeđivanja nema polimorfizma, a nasljeđivanje bez polimorfizma gotovo da i nema smisla poli – mnogo, form - oblici => više oblika
  • 26. Primjer Neka je bazna klasa Geometrijski_lik, a izvedeni klasi su Krug i Pravokutnik Svaki Geometrijski_lik ima svoju povrsinu, ali se ona za Krug izračunava na drugačiji način nego za Pravokutnik Za krug je radijus * radijus * PI, a za pravokutnik je duljina*širina, ali općenito svojstvo svakog geometrijskog lika je njegova površina kao što je prikazano na slici
  • 27. Sučelje Objekt definira svoju interakciju s vanjskim svijetom kroz funkcije koje podržava Npr. gumbi na televizoru čine njegovo sučelje koje odvaja elektroniku i način na koji je izvedena od krajnjeg korisnika (nas), koji želimo gledati neki program Bez obzira na proizvođača televizora i način na koji je elektronika organizirana mi očekujemo da demo svaki televizor modi upaliti, ugasiti, promijeniti kanal, smanjiti ili 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 80 ključnih riječi i desetak tipova Siguran je za upis koda jer debuger traži greške direktno pri upisu koda, a ne samo nakon pokretanja
  • 33. Hello Worldnamespace HelloWorld{ class HelloWorld { static void Main() { // Korištenje 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}, opet prvi: {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# podržava: Relacijske operatore (>, <, ==) Operatore dodjele (=) Matematičke operatore(*,/,-,+) Logičke operatore (&&, ||, !)
  • 47. Relacijski operatori Jednako (==) Nije jednako (!=) Veće (>) Veće ili jednako (>=) Manje (<) Manje ili jednako (<=)
  • 48. Matematički operator + string tekst1 = “hello”; string tekst2 = “ world”; string s3 = s1 + s2;
  • 49. Kratko pisanje matematičkihoperatora a += b; a -= b; a *= b; a /= b; a %= b;
  • 50. Logički operatori && (Logičko I) || (Logičko ILI) ! (Logičko NE)
  • 51. Web stranica http://www.microsoft.com/visualstudio/en- us/products/2010-editions/visual-csharp-express www.google.hr
  • 52. Podržani operacijski sustavi Windows XP (x86) with Service Pack 3 - all editions except Starter Edition Windows Vista (x86 & x64) with Service Pack 2 - all editions except Starter Edition Windows 7 (x86 & x64) Windows Server 2003 (x86 & x64) with Service Pack 2 Windows Server 2003 R2 (x86 & x64) Windows Server 2008 (x86 & x64) with Service Pack 2 Windows Server 2008 R2 (x64)
  • 53. Minimalna konfiguracija Computer that has a 1.6GHz or faster processor 1 GB (32 Bit) or 2 GB (64 Bit) RAM (Add 512 MB if running in a virtual machine) 3GB of available hard disk space 5400 RPM hard disk drive DirectX 9 capable video card running at 1024 x 768 or higher-resolution display DVD-ROM Drive
  • 54. Podržani proizvodi u Express verziji Visual Basic Express Visual Web Developer Express Visual C++ Express Visual C# Express SQL Server Express Express for Windows Phone
  • 55. Sintaksa tip[] identifikator; Primjer: int[] mojNizIntegera = new int[5];
  • 56. Nizovi kao objektint[] mojePoljeIntegera = new int[50]; mojePoljeIntegera[0] = 10; mojePoljeIntegera[1] = 20; mojePoljeIntegera[2] = 15; mojePoljeIntegera[3] = 90; mojePoljeIntegera[4] = 50; mojePoljeIntegera[5] = 60; Console.WriteLine(mojePoljeIntegera.Max().ToString()); Console.WriteLine(mojePoljeIntegera.Min().ToString()); Console.WriteLine(mojePoljeIntegera.Average().ToString()); foreach(int i in mojePoljeIntegera) { Console.WriteLine(i.ToString()); } Console.ReadLine();
  • 57. Foreach petljaforeach (int i in mojePoljeIntegera){ Console.WriteLine("{0}", i);}foreach(int i in mojePoljeIntegera){ Console.WriteLine(i.ToString());}
  • 58. .NET framework Jednostavnost razvoja aplikacija Brzina razvoja aplikacija Sigurnije aplikacije Višejezično programiranje
  • 59. Slojeviti model .NET Frameworka
  • 60. CLR CLR = Common Language Runtime Aplikacija koja se “vrti” na Windowsima Najvažniji dio .NET-a
  • 61. Što radi CLR? Provjerava sigurnost Učitava program Kešira program – svako novo pokretanje je puno brže od inicijalnog! Oslobađa resurse Koristi se sakupljac smeca (engl. Garbage collector) – briše objekte koji se više ne koriste Sprjecava se pojava “curenja memorije” (engl. memory leaks) – česta pojava u C++-u
  • 62. Što radi CLR? Provodi JIT (just in time compilation) kompilaciju 1. Program (npr. napisan u C#) kompilira u MSIL (Microsoft Intermediate Language) 2. Prilikom prvog izvršavanja programa, kôd u - MSIL se prevodi u strojni kod platforme – to je zapravo JIT kompilacija 3. Svako slijedece izvršavanje aplikacije uzima strojni kôd iz keša (cachea) – ubrzanje
  • 63. Što radi CLR? Pruža višejezično okruženje  CTS – Common Type System (Dio CLR-a)  Nasljedivanje kroz više jezika (npr. u C# se naslijedi klasa napravljena u VB.NET)
  • 64. BCL (Base Class Library) Sastoji se od stotina klasa koje developeru stoje na raspolaganju klasi su grupirani u prostore imena (engl. namespace) – npr:  System.Data – rad s podacima  System.Collections – rad s kolekcijama (skupovima objekata)  System.IO – rad s datotekama i mapama Zamjena za Windows API
  • 65. Prostori imena (namespace) “Pretinci” u koje se smještaju klasi Imaju hijerarhijsku strukturu  Na vrhu je System
  • 66. Programski jezici u .NETu Odabir jezika u kojem se programira je stvar stila! Program napisan u bilo kojem jeziku na kraju postaje program u MSIL-u Bitno je da kompajler za željeni jezik podržava CTS, tj. da napisan po CLS – Common Language Specification Danas postoji podrška za:  C#  VB  Eiffel  Fortran  Cobol  JScript  J#  I još mnogo drugih …
  • 67. Razvoj aplikacija u .NET-u Visual Studio IDE Notepad + komandna linija Alternativna razvojna okruženja
  • 68. Slojevi više razine – ADO.NET U njega spadaju klasi iz System.Data prostora imena Glavno pitanje na koje odgovara: kako dohvatiti podatke i raditi s njima? Dva glavna pružatelja podataka (engl. data provider):  SQL Server pružatelj podataka  OLEDB pružatelj podataka
  • 69. Slojevi više razine – ASP.NET klasi za razvoj Web aplikacija Koristi ADO.NET i BCL kako bi stvorio vlastite klase Njime se stvaraju tzv. Web Form stranice  Svaka Web Form stranica sastoji se od:  aspx datoteke (u njoj je HTML)  Datoteke s kôdom (npr .cs ili .vb) – tzv. code behind U VS IDE-u se koristi tzv. drag & drop za stvaranje stranica  Npr. dovuci gumb
  • 70. Slojevi više razine – WindowsForms klasi za razvoj MS Windows aplikacija (tzv. rich Windows application) Jako dobra podrška za razvoj korisničkih sučelja Glavni prostor imena je System.Windows.Forms U VS IDE-u se koristi tzv. drag & drop za stvaranje formi Windows Forme su moćnije od Web Formi  Web Forme su ograničene na ono što pruža standardni HTML  Windows Forme pružaju sve ono što i Windowsi
  • 71. Slojevi više razine – Web servisi Nova i obecavajuća tehnologija Web servis je komponenta (komad kôda)  Pokrece se preko Interneta (preko HTTP-a) Web servis se piše u bilo kojem jeziku (npr. C#) Web servisi se obavezno pokrece pomocu XML – SOAP-a  To znači da web servis napisanu u .NET-u na Windows serveru može bez problema pokrenuti neki klijent napisan u PHP-u s UNIX-a
  • 72. Uvod u C#
  • 73. Pokretanje Visual studio-a Pokrenite Visual Studio Imate ikonu na radnoj površini ili idete na start- >programs->Microsoft Visual Studio
  • 74. Pokretanje projekta Kada se upali Visual Studio Odaberite padajući 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 padajući izbornik File->New->Project
  • 77. Odabir projekta U ovom prozoru možete odabrati vrstu, naziv i lokaciju projekta
  • 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 upišite naziv projekta: vjezba1
  • 79. Izgled otvorenog projekta
  • 80. using using je najsličniji #include naredbi iz C prog.jezika.
  • 81. namespace “Pretinci” u koje se smještaju 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 znači da funkcija nema povratnu vrijednost tj. povratna vrijednost je NULL static ćemo obrađivati kasnije u predavanjima string[] args – pošto je konzolna aplikacija, preko command prompta može primiti ulazne argumente i staviti ih u polje args koje je tipa string PRIMJER: naredba format c: /q  Naredba koja služi za formatiranje  Poziva program format sa argumentima c: i /q  argument c: znači da program formatira particiju c:  argument /q znači da se napravi brzo formatiranje
  • 84. static void Main(string[] args) Mi u pravilu nećemo slati argumente svojim programima, ali to možemo 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 metodu konzole pod nazivom WriteLine Upišite unutar main-a: Console Primjetiti ćete da Visual Studio predlaže što možete upisati i ako je odabrano ono što želite možete dovršiti bez pisanja pritiščući tipku tab(tabulator) Nakon upisivanja Console upišite točku Console.
  • 86. Console Prvo polugodište ćemo raditi aplikacije u konzoli Kada nakon naziva objekta(u našem slučaju Console) pritisnemo točku, dobiti ćemo popis mogućih metoda i atributa tog objekta Prođite malo po njima te pogledajte koje sve metode i atribute ima objekt Console
  • 87. WriteLine Da bi ispisali nešto u konzolu možemo koristiti metodu npr. WriteLine kao i neke druge Nakon odabira Console.WriteLine otvorite zagradu ( Tu ćemo vidjeti da metoda WriteLine ima 19 overload mogučnosti ( o tome kasnije na predavanjima) Nakon otvaranja zagrade upišite navodnike i tekst: Hello World! te zatvorite navodnike, zatvorite zagradu i stavite točku-zarez Console.WriteLine("Hello World"); Nakon toga dodajte liniju Console.ReadLine(); Ta naredba će nam zadržati ekran kao naredba getch() u C programskom jeziku
  • 88. Pokrenite izvršavanje tipkom F5 Ili pritiskom na zeleni gumb start
  • 89. Atributi i metode Metode će biti označeni ljubičastom kockicom kao npr. SetWindowSize, dok su atributi označeni malim prozorom kao npr. Title
  • 90. Razlika u korištenju Uglavnom metode se koriste tako da se pozovu Npr. Console.WriteLine(); One mogu i ne moraju(zavisno o metode) primati argumente 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 možemo 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 vraća 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 Ispišite neki drugi tekst Saznajte i isprobajte zašto nam služe 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 zašto nam služe atributi konzole:  Console.Title  Console.BackgroundColor  Console.CapsLock  Console.ForegroundColor  Console.NumberLock  Console.WindowHeight  Console.WindowWidth
  • 94. Što je debuggiranje? Pronalaženje grešaka i nedostataka u programskom kodu Naziv potječe od stvarnog događaja – kod jednog od prvih računala “Mark I” dogodio se kvar u radu. Nakon dugotrajne potrage za greškom programeri su otkrili da je kvar izazvala jedna buba koja se uvukla u računalo. Otada se svaka greška ili nedostatak u radu računala zove “bug”.
  • 95. Vrste pogrešaka kod programiranja Sintaksne  Visual Studio će u gotovo svim situacijama pronaći pogrešku  formalne greške u jeziku Semantičke  Ako je program sintaksno dobar, može doći do pogreške prilikom pokretanja programa  program ne radi ono za što je namijenjen Greške izuzetka  pojavljuju se prilikom korištenja programa, neizbježne su, a uzroci mogu biti različiti
  • 96. Sintaksne pogreške osnovna vrsta grešaka, nastaje pogreškom u jeziku, tj. u pogrešno upisanom programskom kodu (npr. Nedostatak neke zagrade, nepravilno upisana ključna riječ naredbe ili dr.) Ove greške prilikom debug-iranja budu prikazane u prozoru s popisom grešaka (Error list)
  • 97. Semantičke pogreške Kod njih su naredbe formalno ispravno napisane, pa ih je teže pronaći od sintaksnih grešaka (ne vide se u prozoru Error list prilikom debug-iranja) To su greške značenja – program ne radi ono što bi trebao raditi, nego nešto drugo Mogu biti uzrokovane logičkim pogreškama u programskom kodu ili podacima koje unese korisnik One se vide tek prilikom izvršavanja programa (kada otkrijemo da program ne radi što bi trebao raditi, ali još uvijek nije jasno što treba ispraviti u programskom kodu)
  • 98. Greške izuzetaka Javljaju se, kao i semantičke greške, tek prilikom izvršavanja programa Izuzeci (eng. exceptions) će nastati bez obzira što programer poduzme da ih spriječi (neizbježne su) Uzrok može biti različit, ponekad je u semantičkim greškama, jer se logika programa ne uspije ostvariti zbog nekih specifičnih podataka koje korisnik unese Rukovanje ovim greškama (eng. Exception handling) biti će posebno obrađeno
  • 99. Zašto koristiti debugger? I najbolji programer na svijetu radi pogreške prilikom pisanja koda
  • 100. Uvod u klase Ugrađene klase npr. Console Vlastite klase npr. Tocka, Trokut, Pravokutink
  • 101. Što je tip u objektnomprogramiranju? Bit objektnog programiranja je kreiranje novih tipova. Ako smo kreirali tri dugmeta (OK, Cancel i Help), sva tri nasljeđuju svojstva koja ima tip “button”:  svojstvo visine, širine  text koji će pisati na dugmetu  položaj dugmeta na formi,  i druga svojstva zajednička svim instancama koje pripadaju tipu “button”
  • 102. Nasljeđivanje Ta se karakteristika objektnog programiranja zove NASLJEĐIVANJE. NASLJEĐIVANJE je mogućnost da objekti preuzimaju sva svojstva tipa kojem pripadaju.
  • 103. Klase KLASA je neki tip promatranih objekata. Klasa je adekvatna skupini ili vrsti kod bioloških bića, npr. skupina pasa, mačaka, 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 klase buttone klase, npr.
  • 104. Kreiranje klase Kada kreiramo neku vlastitu klasu, potrebno je definirati: njezina svojstva (properties) ili varijable kojima će dodjeljivati vrijednosti (ako se radi o javnim svojstvima, tada se koristi izraz “svojstvo” (eng. property), a ako se radi o privatnim varijablama koje će se koristiti samo u toj klasi, tada govorimo koristimo izraz “varijabla” metode koje određuju njezino ponašanje.
  • 105. Kreiranje klase Naredba za kreiranje nove klase počinje ključnom riječi 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 nazivom mojaKlasa, i njoj pripadajuću cjelobrojnu varijablu pod nazivom mojaVarijabla kojoj će se unutar klase mojaKlasa moći 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 izgleda ovako: (npr. Za kreiranje instance Pero klase Student) Student Pero = new Student(); Naredba sadrži na kraju zagrade (), pa izgled kao da poziva metodu. Zapravo, pri kreiranju nove instance poziva se jedna metoda koja se zove konstruktor (eng. constructor).
  • 109. Konstruktor Zadatak konstruktora je kreirati instancu (objekt) neke klase i omogućiti da se toj instanci dodijeli vrijednost kasnije u programu. Nakon što se konstruktorom kreira nova instanca, u memoriji se ostavlja prostor za vrijednosnu instancu. Ako ne specificiramo koji konstruktor pozivamo, CLR poziva standardni (default) konstruktor kojim se definira nova instanca klase i ne prosljeđuju mu se nikakve vrijednosti. Zato u zagradama kod ovog standardnog konstruktora ne pišemo ništa.
  • 110. Konstruktor - nastavak Ukoliko se želi koristiti neki vlastiti određeni konstruktor, tada se on mora deklarirati u programu prije samog korištenja.// 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 unutar klase. Ona je član (eng. member) klase. Metode definiraju što klase rade i kako se klase ponašaju. Metodama koje sami kreiramo možemo dati proizvoljne naziv, npr. Ispis(), Racunanje(), itd.
  • 112. Kreiranje metoda Kada se kreira neka metoda, ona također ima svoju deklaraciju. U deklaraciji se definira tip podatka koji de metoda vradati, zatim naziv metode i u zagradi parametre koji de se prosljeđivati metodi. Npr. ovako: Int mojaMetoda(int velicina);
  • 113. Kreiranje metoda Neke metode uopće ne vraćaju nikakve vrijednosti. Takve metode samo nešto izvode, i tada je tip metode void, a u zagradi se ne piše ništa, npr. ovako: void mojaMetoda( );
  • 114. Operator točka (.) Operator . koristi se: Za pristup metodi ili atributu unutar neke klase Primjer: Student.Pero.Visina=175; koristi instancu Pero klase Student, i njegovom svojstvu Visina dodjeljuje vrijednost 175.
  • 115. Statični članovi Pri korištenju metode Main() vidjeli smo da naredba sadrži ključnu riječ “static”: static void Main() Riječ “static” znači da se ta metoda može pozvati samostalno bez prethodnog pozivanja klase tj. Možete je koristiti bez da u imate objekt te klase
  • 116. Statični članovi Svojstva i metode neke klase mogu biti instance ili statični članovi. Ako su instance, moraju se pozivati preko operatora “.” tako da se najprije navede klasa kojoj pripadaju, npr. ako definiramo klasu Student, i u okviru nje instancu Pero, a zatim neku metodu Upisi() (kojom će se studenti upisivati na fakultet), tada se ta metoda poziva: a) ako prethodno nije definirana kao statična: Student.Pero.Upisi(); b) ako je prethodno definirana kao statična: Student.Upisi();
  • 117. Ključna riječ this Ključna riječ “this” odnosi se na trenutnu instancu neke klase (ili drugog objekta). “this” je skriveni pokazivač (pointer) na svaku nestatičnu metodu neke klase
  • 118. Izrada klase točka class Tocka { //ovdje dolazi deklaracija atributa i metoda }
  • 119. Atributi klase točka class Tocka { public int x, y; }
  • 120. Konstruktor klase točka 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 "Točka ima kordinate: " + x + " i " + y; } Ako je x = 10 i y = 10 onda će string koji se vraća izgledati: “Točka ima kordinate: 10 i 10”
  • 123. Klasa Math Klasa sa matematičkim metodama i atributima Slična 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 postupke čitanja i pisanja podatka u i iz tokova (streams) i datoteka npr. datoteka, U/I jedinica, TCP/IP utičnica, međuprocesni komunikacijski 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 Služe za stvaranje, kopiranje, brisanje, premještanje i preimenovanje datoteka i direktorija, otvaranje datoteka te za iteraciju kroz direktorije
  • 128. FileSystemInfo
  • 129. Dodatni atributi datoteka Archive Compressed Directory Encrypted Hidden Normal ReadOnly System
  • 130. klas DirectoryInfo klas DirectoryInfo uključuje postupke za stvaranje, premještanje (preimenovanje) i iteraciju (enumeraciju) kroz direktorije i poddirektorije
  • 131. klas FileInfo
  • 132. klas File

×