C# predavanja
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,086
On Slideshare
1,086
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
41
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