2. 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...)
4. 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)
5. 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#...
..........................................................................
7. 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.
8. 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).
9. 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
10. 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.
11. 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.
12. Primjer
Klasa: Automobil
Broj objekata: 10
Atributi(svojstva):
Boja, težina, broj
konja...
Metode: Otvori
vrata, upali
automobil, otvori
prozor, uključi
brisače...
13. klasa i objekt
Klasa - zamišljena svojstva automobila
Objekt - stvarni automobili na slici
14. 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.
15. 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
16. 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.
19. 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 svijetu
1. public: elementi su dio javnog sučelja klase i dostupni su
svim drugim klasama
2. private: elementi su dostupni samo klasi u kojoj su
deklarirani.
3. protected: elementi su dostupni klasi u kojem su
deklarirani i podklasama.
21. 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
22. Primjer
Kada bi imali klasu vozilo, koji bi sve njegovi atributi
bili?
Kada bi imali klasu vozilo, koje bi sve njegove
funkcije(metode) bile?
23. Primjer
using 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)
}
}
24. Primjer
public 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)
}
}
25. Nasljeđivanje i konstruktor
Konstruktor služi da bi kreirirali objekt nekog klasa
Svaka klasa bi trebala imati svoj konstrutor
26. 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
27. 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
28. 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
32. Osnove C# programskog jezika
C# je dizajniran da bude:
Jednostavan
Siguran
Objektno-orijentiran
Internet-centriran
Brz
33. 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
34. Hello World
namespace HelloWorld
{
class HelloWorld
{
static void Main()
{
// Korištenje objekta Console
System.Console.WriteLine("Hello world");
}
}
}
54. 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)
55. 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
56. 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
59. Nizovi kao objekt
int[] 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();
60. Foreach petlja
foreach (int i in mojePoljeIntegera)
{
Console.WriteLine("{0}", i);
}
foreach(int i in mojePoljeIntegera)
{
Console.WriteLine(i.ToString());
}
61.
62. .NET framework
Jednostavnost razvoja aplikacija
Brzina razvoja aplikacija
Sigurnije aplikacije
Višejezično programiranje
64. CLR
CLR = Common Language Runtime
Aplikacija koja se “vrti” na Windowsima
Najvažniji dio .NET-a
65. Š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
66. Š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
67. Š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)
68. 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
69. Prostori imena (namespace)
“Pretinci” u koje se smještaju klasi
Imaju hijerarhijsku strukturu
Na vrhu je System
70. 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 …
71. Razvoj aplikacija u .NET-u
Visual Studio IDE
Notepad + komandna linija
Alternativna razvojna okruženja
72. 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
73. 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
74. Slojevi više razine – Windows
Forms
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
75. 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
77. Pokretanje Visual studio-a
Pokrenite Visual Studio
Imate ikonu na radnoj površini ili idete na start-
>programs->Microsoft Visual Studio
78. 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
81. Odabir projekta
U ovom prozoru možete odabrati vrstu, naziv i lokaciju
projekta
82. 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
87. 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
88. 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();
89. 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.
90. 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
91. 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
93. Atributi i metode
Metode će biti označeni ljubičastom kockicom kao
npr. SetWindowSize, dok su atributi označeni malim
prozorom kao npr. Title
94. 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
95. 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;
96. 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);
97. 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
98.
99. Š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”.
100. 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
101. 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)
102. 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)
103. 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
106. Uvod u klase
Ugrađene klase npr. Console
Vlastite klase npr. Tocka, Trokut, Pravokutink
107. Što je tip u objektnom
programiranju?
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”
108. Nasljeđivanje
Ta se karakteristika objektnog programiranja zove
NASLJEĐIVANJE.
NASLJEĐIVANJE je mogućnost da objekti preuzimaju
sva svojstva tipa kojem pripadaju.
109. 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.
110. 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.
111. 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.
112. Kreiranje klase
class 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.
113. Kreiranje objekta iz klase
class Student
{
// ovdje definiramo svojstva koja pripadaju toj klasi:
int Ocjena;
}
public void Main()
{
Student Pero = new Student();
Pero.Ocjena= 3;
}
114. 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).
115. 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.
116. Konstruktor - nastavak
Ukoliko se želi koristiti neki vlastiti određeni konstruktor, tada
se on mora deklarirati u programu prije samog korištenja.
// konstruktor
public Vrijeme(System.DateTime dt)
{
godina = dt.Year;
mjesec = dt.Month;
dan = dt.Day;
sat = dt.Hour;
minuta = dt.Minute;
sekunda = dt.Second;
}
117. 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.
118. 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);
119. 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( );
120. 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.
121. 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
122. 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();
123. 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
124. Izrada klase točka
class Tocka
{
//ovdje dolazi deklaracija atributa i metoda
}
128. 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”
129. Klasa Math
Klasa sa matematičkim metodama i atributima
Slična biblioteci math.h iz c programskog jezika
130. Metoda udaljenostOdIshodista()
public double udaljenostOdIshodista()
{
double udaljenost;
udaljenost = Math.Sqrt(Math.Pow(x, 2) +
Math.Pow(y, 2));
return udaljenost;
}
133. 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
134. Directory, DirectoryInfo, File, FileInfo
Služe za stvaranje, kopiranje, brisanje, premještanje i
preimenovanje datoteka i direktorija, otvaranje
datoteka te za iteraciju kroz direktorije
136. Dodatni atributi datoteka
Archive
Compressed
Directory
Encrypted
Hidden
Normal
ReadOnly
System
137. klas DirectoryInfo
klas DirectoryInfo uključuje postupke za stvaranje,
premještanje (preimenovanje) i iteraciju (enumeraciju)
kroz direktorije i poddirektorije