Professional Documents
Culture Documents
Beograd 2008.
Tipovi programa
Mainski programi
Raunar ih moe neposredno razumeti
Program se sastoji samo od 0 i 1
Asemblerski programi
Sastoje se od naredbi kojima se
jednoznano pridruuju mainske
naredbe
Naredbe su mnemonike skraenice rezumljive
oveku npr. LD (LoaD)
Programi pisani na jeziku visokog nivoa
Naredbe programa visokog nivoa su
bliske engleskom jeziku
4
Mainski program
11000010 00000000 00101000 00101100
11000100 00000000 00101000 00110000
10000110 10001000 11000000 00000000
Asemblerski program
LD R1, x
LD R2, y
ADD R0, R1, R2
Uitaj sadraj promenljive x u registar R1
procesora
Uiraj sadraj promenljive y u registar R2
procesora
Saberi sadraj registara R1 i R2 i rezultat
sauvaj u registru R0
Ono to elimo programom je x+z
6
Proceduralno programiranje
Modularno programiranje
10
11
ta je
objekat ?
Neformalno, objekat pretstavlja neki
entitet bilo fiziki, konceptualni ili
logiki(software)
Fiziki entitet
Kamion
Konceptualni entitet
Hemijski proces
Softverski entitet
Jednostruko spregnuta lista
13
14
Apstrakcija podrazumeva
eliminisanje detalja da bi se
ilustrovale glavne take nekog
koncepta
15
Primer apstakcije
Prodavac
Bez navoenja Koji prodavac samo
prodavac u optem smislul!!!
Proizvod
Kupac
16
ta je
klasa?
Klasa je opis (model) grupe
objekata koji poseduju skup
zajednikih: svojstava
(atributa), ponaanja
(operacije/metode), veza i
znaenja
Skup atributa
Skup operacija
Objekti:
Objekat je predstava nekog entiteta iz
realnog sveta
Instance klase
Moe biti vie objekata (instanci) klase
18
19
C# i .NET Framework
20
.NET Framework
.NET Framework je razvojno
okruenje koje omoguava kreiranje
.NET aplikacija
Predstavlja osnovu .NET platforme
Sastoji se iz dve komponenti:
Common Language Runtime (CLR)
virtualna maina odgovorna za
izvravanje koda
.NET framework biblioteka klasa, biblioteka
klasa koja omoguava kreiranje windows,
web aplikacija
i web servisa
21
22
24
Konzolna aplikacija
26
Prvi C#
program
Formatiranje koda u C#
svaka aplikacija ima Main() metodu
definisanu
u jednoj od njenih klasa
Main() metoda je statika to znai da
je globalna, i klasa se ne mora
instancirati da bi se metoda pozvala
Main() metoda je javna
C# razlikuje velika i mala slova
Klasa Console se nalazi u namespaceu
System
28
29
Pisanje komentara
Osnove C#
jezika
31
Formatiranje C# koda
Program je skup instrukcija naredbi
Naredba se zavrava oznakom ;
Iako je mogue pisati vie naredbi u
istoj liniji, dobra je praksa da se u
svakoj liniji pie samo po jedna
naredba
Prazan prostor u editoru koda se
ignorie od strane kompajlera
Grupisanje naredbi (kreiranje bloka naredbi)
vri se korienjem litiastih zagrada {}
32
Identifikat
ori
Imena ili identifikatori se koriste
za oznaavanje osnovnih objekta
jezika : konstanti promenljivih,
funkcija i tipova podataka
Ime moe sadrati slovo, cifru
i znak podvlaenja _
Ime ne sme poinjati cifrom
U svojstvu imena ne smeju se
koristiti rezervisane rei jezika
Velika i mala slova se razlikuju (x i X
su dve razliite promenljive)
33
Tipovi
podataka
Realni tip
float
double
decimal
Znakovni tip:
char
string
35
36
Celobrojni
tip
37
Realni
tip
float realni brojevi jednostruke tanosti (4
bajta)
double realni brojevi dvostruke tanosti (8
bajtova)
Promenljive tipa double zauzimaju
dva puta memorijskog prostora od
tipa float
Kada se napie broj sa decimalnom
takom , onda je on tipa double
ukoliko e drugaije ne naznai
38
Deklarisanje i inicijalizacija
promenljiv
ih
Promenljiva
je objekat
jezika
koji ima
ime i
kome
mogu
dodeljivati
razliite
vrednosti
tokomse
izvravanja
programa
Deklarisanje
Navodi se tip i identifikator (ime) promenljive
Deklaracija se zavrava oznakom ;
int brojStudenata;
string zanimanje;
Deklarisanje vie promenljivih istog tipa
int x, y;
Deklarisanje i inicijalizacija
Promenljivoj se dodeljuje identifikator i
inicijalna vrednost
string zanimanje = student;
Deklaracija i inicijalizacija vie promenljivih istog tipa
int p = 2, q = 3;
39
Primeri deklaracija
int mojInt;
mojInt = 1;
ili
int mojInt = 1;
Broj sa decimalnom takom podrazumevano je tipa double
decimal stanjeNaRacunu = 3433.20; // greka !!!
decimal stanjeNaRacunu = 3433.20M;
40
float f = 12.3F;
41
Karakte
ri
Karakteri (char) tip podataka se
inicijalizuje navoenjem
odgovarajueg karaktera izmeu
jednostrukih znakova navoda
Za uvanje promenljive tipa char
koristi se dva bajta (unicode karakteri)
Znakovna konstanta je ceo broj
ije je vrednost jednaka kodu
navedenog znaka prema unicode
standardu
42
Escape karakteri
43
Deklaracija i inicijalizacija
stringova
String je sekvenca alfanumerikih karaktera
Stringovi se piu izmeu dvostrukih
znakova navoda
string s = "Hello World ; // Hello World
string s = "\"Hello\""; // "Hello"
string s = "Hello\nWorld"; // dodaje se nova linija
string s = @"Hello\n"; // Hello\n
Verbatim string
44
Konstan
te
Objekti jezika koji dobijaju vrednost
pre nego to pone izvravanje
programa i u toku rada programa ne
menjaju vrednost nazivaju se
konstante
Konstante se koriste za uvanje
vrednosti koje se ne mogu promeniti u
toku izvravanja programa
Deklariu se korienjem kljune rei const
Moraju se inicijalizovati u trenutku deklaracije
const int earthRadius = 6378;//km
const long meanDistanceToSun = 149600000;//km
const double meanOrbitalVelocity = 29.79D;//km sec
45
Operato
ri
46
y = x;
x = x + 1;
48
Pregled operatora
Aritmetiki operatori
Inkrementiranje i Dekrementiranje
Operatori poreenja
Logiki operatori
49
Aritmetiki operatori
Aritmetike operacije su:
Mnoenje (*)
Deljenje (/)
Celobrojni ostatak (%)
Sabiranje i oduzimanje (+, )
51
Inkrementiranje i dekrementiranje
Operacija inkrementiranja (++)
Operacija dekrementiranja ()
Obe operacije mogu imati prefiksni
oblik tj. nalaze se ispred promenljive i
postfiksni oblik tj. nalaze se iza
promenljive
Veeg su prioriteta od aritmetikih operacija
y = ++x;
x =x+1;
y =x;
y = x++;
y =x;
x =x+1;
52
53
// x = x+2;
// x = x*2;
// x = x-2;
// x = x/2;
// x = x%2;
54
Operatori poreenja
55
56
Logike operacije
Negacija (!)
Konjukcija logiko I (&&)
Disjunkcija logiko ILI (||)
Rezultat logikih operacija je bool promenljiva true ili false
Operacija negacije je unarna i daje true ako je operand false
Operacija konjukcije je binarna i daje true ako oba
operanda imaju vrednost true
Operacija disjunkcije je binarna i daje true ako je
bar jedan od operanada ima vrednost true
Imaju nii prioritet od operacija poreenja
Najvei prioritet ima operacija negacije, zatim
konjukcija i na kraju disjunkcija
57
58
Korienje zagrada
Operator dodeljivanja je desno
asocijativan tj. Izraunava se sa desne
na levu stranu
Binarni operatori su levo
asocijativni tj. Izraunavaju se sa
leve na desnu stranu
Redosled izvravanja operatora u
izrazu moe se promeniti korienjem
zagrada
59
Grananja u programu
60
Naredba
if
if(izraz)
naredba1;
Ako je rezultat izraunavanja vrednosti izraza
izraz logiki istinita vrednost tj. true izvrava
se naredba1
i
prelazi se
na sledeu
naredbu programa. Ukoliko je vrednost izraza
izraz false ne izvrava se naredba naredba1
ve se prelazi na sledeu naredbu programa.
if ( izraz )
{ naredba
1;
naredba2;
}
61
int b = -3;
//int b = 5;
if( b > 0)
Console.WriteLine("Broj je pozitivan\n");
Console.WriteLine("Kraj programa\n");
62
if(izraz)
naredba1;
else
naredba2;
Naredba if
else
If(izraz)
{
naredba1;
naredba2;
}
else
naredba3;
{
naredba4;
}
63
64
if(izraz1)
naredba1;
else if(izraz2)
naredba2;
else
naredba3;
ifelse
if
if ( uslov1 )
{
B1;
}
else if ( uslov2 )
{
B2;
}
else
{
B3;
}
65
66
Petlj
e
68
While
petlja
Opti oblik while petlje je:
while(izraz)
naredba;
while(izraz)
{
naredba1;
....
naredban;
}
70
int brojac = 0;
while (brojac != 10)
{
Console.WriteLine("{0}\n", brojac);
brojac += 4;
}
71
Petlja
for
Naredba for koristi se u
situacijama kada je unapred
poznat broj ciklusa
Naredba for ima sledeu strukturu:
for(inicijalizacija; provera_uslova;korekcija)
naredba;
for(inicijalizacija; provera_uslova;korekcija)
{ naredba_
1;
naredba_2;
.....
naredba_n;
}
72
73
int j = 0;
for (int i = 0; i < 10; i++)
{
j = 2 * i + 1;
Console.WriteLine("i = {0}\t j = {1}\n", i,j);
}
75
76
for (; ; )
{
Console.WriteLine("Pozdrav.\n");
}
77
Naredba
break
Koristi se za prevremeni zavretak ciklusa
int i = 0;
for (; ; )
{
Console.WriteLine("Pozdrav.\n");
if (i > 9)
break; i+
+;
}
78
Naredba continue
Naredba continue prekida izvravanje
tekue iteracije ciklusa i prelazi na
sledeu iteraciju
int i;
for (i = 0; i < 10; i++)
{
if (i % 2 == 1)
continue; // ako je i neparan predji na sledecu iteraciju
Console.WriteLine("i={0}\n", i);
}
79
80
Uslovna naredba ?:
Koristi se za skraeno zapisivanje naredbe if-else.
(izraz1) ? izraz2 : izraz3
81
82
83
break;
}
84
int n;
string sn;
Console.WriteLine("Ucitaj broj n:\n");
sn = Console.ReadLine();
n = Convert.ToInt32(sn);
Console.WriteLine("Uneli ste ili neparan broj ili paran broj koji nije manji od 10\n");
Console.WriteLine("tj. nesto sto nije trazeno.\n");
break;
}
85
87
do
{ naredba_
1;
naredba_2;
...
naredba_n;
}
while(izraz);
88
89
90
91
Enumeracijski tipovi
enum Planet {
Mercury,
Venus,
Earth,
Mars
}
Definie se unutar klase ili unutar namespace-a,
Ne unutar metode !
92
93
94
95
Enkapsulac
ija
Grupisanje podataka i koda koji manipulie podacima
Enkapsulacija se ostvaruje korienjem klase kao
novog tipa podataka
Realizija nekog tipa podataka moe i treba da se
sakrije od ostatka sistema tj. onih koji ga koriste
Korisnicima se definie ta se sa tipom moe uraditi
a nain na koji se to radi se skriva
96
Objekti:
Objekat je predstava nekog entiteta iz
realnog sveta
Instance klase
Moe biti vie objekata (instanci) klase
97
Covered Porch
Bath
Office
kitche
n
Famil
Dinin
g
Roo
m
Living
Room
Roo
m
Objekti
Objekti
98
100
Definisanje klase
Klasa predstavlja apstraktnu predstavu skupa objekata koji imaju
iste osobine. Sastoji se od atributa i metoda.Atributi i metode
se nazivaju lanice klase. Objekat predstavlja konkretan
primerak- instancu klase.
class TekuciRacun
{
public string imePrezime;
public decimal stanjeNaRacunu;
}
101
102
Metode
klase
Metode klase predstavljaju funkcije lanice klase.
Svaka metoda sadri :
tip koji vraa (ili void ukoliko ne vraa nikakav tip)
naziv(ime metode)
listu parametara
telo metode
Ukoliko metoda vraa neku vrednost, onda se unutar tela metode mora
pozvati naredba return.
103
Primeri
metoda
public decimal podizanjeNovca(decimal iznos)
{
// stanjeNaRacunu = stanjeNaRacunu - iznos;
stanjeNaRacunu -= iznos;
return stanjeNaRacunu;
}
104
Konstruktori, predavanje
parametara metodi
106
Definisanje konstruktora
Konstruktor predstavlja specijalnu metodu klase pomou koje
se vri inicijalizacija objekata klase. Konstruktor ima isto ime kao i klasa.
Konstruktor ne vraa nikakav tip podataka, ak ni void.
// podrazumevani konstruktor
public TekuciRacun()
{
imePrezime = "";
stanjeNaRacunu = 0.0M;
}
// parametarski konstruktor
public TekuciRacun(string imeP, decimal stRac)
{
imePrezime = imeP;
stanjeNaRacunu = stRac;
}
107
Poziv konstruktora
// poziv podrazumevanog Konstruktora
TekuciRacun tr1 = new TekuciRacun();
tr1.imePrezime = "Pera Peric";
tr1.stanjeNaRacunu = 34567.45M;
// poziv parametarskog kontruktora
TekuciRacun tr2 = new TekuciRacun("Laza Lazic", 38999.56M);
108
Predavanje parametara po
vrednos
ti
// metodi se prosledjuje parametar po vrednosti
public void citajStanje(decimal ocitanoStanje)
{
ocitanoStanje = stanjeNaRacunu;
}
Rezultat predavanja
parametara po vrednosti
Promenljiva novoStanje e i posle pozivanja metode
citajStanje imati vrednost 0. Razlog tome je to
se unutar
f-je
citajStanje
kreira
lokalna
kopija
promenljive
novoStanje , dok sama promenljiva ostaje ne
promenjena.
Dakle, ako se promenljiva predaje funkciji po
vrednosti ona ne moe biti promenjena unutar tela te
funkcije !!!
110
111
113
114
115
116
Deklarcija
public
private
internal
protected
protected internal
117
118
Svojstva(Properties)
class TekuciRacun
{
public string imePrezime;
private double stanjeNaRacunu;
public double Stanje
{
get
{
return stanjeNaRacunu;
}
set
{
stanjeNaRacunu = value;
}
}
}
119
Upotreba svojstva
static void Main(string[] args)
{
TekuciRacun tr1 = new TekuciRacun();
tr1.imePrezime = "Mika Mikic";
tr1.Stanje = 23456.56; // set deo
Console.WriteLine("Korisnik {0} ima na racunu {1} dinara \n",
tr1.imePrezime, tr1.Stanje); // get deo
Console.ReadLine();
}
120
121
Nasleivan
je
Nasleivanje je vrsta relacije imeu osnovne(bazne)
klase i izvedenih klasa
Izvedena klasa nasleuje podatke i metode
osnovne klase
Izvedena klasa ima lanove
svojstvene samo izvedenoj klasi
Izvedena klasa postaje vie specijalizovana
Zivotinja
Pas
122
Nasleivan
je
Predstavlja jedan od osnovnih koncepata
objektno orijentisanog programiranja
Klasa koja je izvedena iz osnovne klase
nasleuje sve atribute i metode osnovne
klase
Osnovna klasa se naziva jo i natklasa,
bazna klasa ili super klasa
Izvedena klasa se naziva jo i podklasa
Izvedena klasa moe da nasledi samo jednu natklasu
public class B : A { telo klase B } //(klasa B
izvedena iz klase A)
public seald class NekaKlasa {telo
klase} tada se iz ovakve klase ne moe
vriti nasleivanje
123
Osnovna klasa
class A
{
public int a1;
private int a2;
protected int a3;
public A()
{
a1 = 1;
a2 = 2;
a3 = 3;
}
public void stampajA()
{
Console.WriteLine("Vrednosti a1 a2 i a3 su {0} {1} {2}\n", a1, a2, a3);
Console.WriteLine("---------------------------");
}
}
124
Izvedena
klasa
class B:A
{
public int b;
public B()
{
b = 100;
}
public void stampajB()
{
// mogu da pozovem funkciju osnovne klase
base.stampajA();
Console.WriteLine("Vrednost b je {0} ", b);
Console.WriteLine("***************************");
}
static void Main(string[] args)
{
// main metoda je smestena unutar klase B radi ilustracije
// protected prava pristupa
}
125
126
Polimorfiza
m
Objekti klase ivotinja
Pozvana metoda
Karakteristika
Slon
Jede ()
Jede travu
Maka
Jede ()
Jede mia
Mi
Jede ()
Jede sir
128
Virtuelne metode
Kada se kreira metoda u baznoj
klasi za koju se oekuje da e
biti promenjena u izvedenoj
klasi , metoda se definie kao
virtuelna.(virtual)
Metoda u izvedenoj klasi koja ima
isto ime kao i virtuelna metoda u
baznoj klasi vri
prebrisavanje (override) metode
iz bazne klase
129
130
131
class B:A
{
private int b;
public B()
{
b = 11;
Console.WriteLine("Poziv podrazumevanog konstruktora izvedene klase");
}
// poziv parametarskog konstruktora osnove klase
// inace bi se pozivao podrazumevani konstruktor osnovne klase
public B(int nekoA, int nekoB) :base(nekoA)
{
Console.WriteLine("Poziv parametarskog konstruktora izvedene klase");
b = nekoB;
}
public override void stampaj()
{
// mogu da pozovem funkciju osnovne klase
base.stampaj();
Console.WriteLine(" \nVrednost b je {0} ", b);
}
}
132
133
Bazna klasa
134
Izvedena klasa
class Student : Osoba
{
private string brIndeksa;
private int godina;
public Student()
{
brIndeksa = "";
godina = 0;
}
public Student(string JMBG1, string ImePrezime1, string Adresa1, string BrojIndeksa1, int
Godina1)
: base(JMBG1, ImePrezime1, Adresa1)
{
brIndeksa = BrojIndeksa1;
godina = Godina1;
}
public override void prikazi()
{
base.prikazi();
Console.WriteLine("Broj indeksa: " + brIndeksa + " Godina: " + godina);
Console.WriteLine("-----------------------------------");
}
}
135
136
137
Apstraktne klase
Apstraktna metoda je prazna metoda tj.
metoda koja nema implementaciju (nema
ni prazno telo)
Klasa koja ima bar jedan apstraktniu
metodu naziva se apstraktna klasa
Ispred apstraktnih metoda i apstraktnih
klasa stavlja se kljuna re abstract
Apstraktna klasa ne moe da se instancira
Apstraktna klasa moe imati i metode
koje nisu apstraktne
Klasa izvedena iz apstraktne klase
mora da realizuje(da implementaciju)
svih apstraktnih metoda
138
139
Interfej
si
Interfejs je koncept koji razdvaja
specifikaciju metode od njene
implementacije
Svaka metoda u interfejsu ima samo
specifikaciju bez implementacije
Interfejs se ne moe instancirati
Koristi se kljuna re interface
Interfejs moe da nasledi vie interfejsa
Klasa moe da nasledi vie interfejsa
Metoda koja realizuje metodu iz interfejsa
mora biti javna
140
Dodavanje interfejsa
141
Definisanje interfejsa
interface IOsoba
{
void Napuni(string MLB1,string ImePrezime1,string Adresa1,
string BrojIndeksa1, int Godina1);
void Prikazi();
}
142
Implementiranje interfejsa
class Student:IOsoba
{
private string MLB;
private string ImePrezime;
private string Adresa;
private string BrojIndeksa;
private int Godina;
public void Napuni(string MLB1, string ImePrezime1, string Adresa1)
{
MLB = MLB1;
ImePrezime = ImePrezime1;
Adresa = Adresa1;
}
public void studentskiPodaci(string brojIndeksa1, int godina1)
{
BrojIndeksa = brojIndeksa1;
Godina = godina1;
}
public void Prikazi()
{
Console.WriteLine("MLB: " + MLB + " ImePrezime: " + ImePrezime + " Adresa:" + Adresa);
Console.WriteLine("Broj indeksa: " + BrojIndeksa + " Godina: " + Godina);
}
}
143
144
Windows
forme
145
146
147
Load
GotFocus
Activated
Closing
Closed
Deactivate
LostFocus
Dispose()
148
149
150
151
152
Klasa
Label
Koristi se za predstavljenje
opisnog teksta korisniku
Obino se koristi u kombinaciji sa
kontrolama za unos i editovanje
teksta
Text propery definie tekst koji
e se pojaviti na labeli
Korisnik ne moe menjati
tekst na labeli
Labela ne moe da dobije fokus
153
Klasa
Button
Klasa Button predstavlja windows kontrolu Button
Na dugme se moe kliknuti miem, pritiskom na
taster ENTER ili pritiskom na SPACE kada dugme ima
fokus
Ako se kao AcceptButton (CancelButton)
forme postavi odgovarajue dugme tada
se pritiskom na taster ENTER (Esc)
izvrava klik na to dugme
Najee korieni dogaaj za dugme je Click
Event Handler se generie dvostrukim klikom
na dugme u dizajn modu
Pozivom metode dugme.PerformClick()
simulira se klik korisnika na dugme
154
155
TextBo
x
156
157
158
159
160
161
162
163
DialogRezult enumeracija
Koristi se za odreivanje akcije korisnika
Npr. ako se prikae MessageBox koji
sadri OK i Cancel dugmad treba
odrediti ta je korisnik kliknuo
Ako je vraena vrednost DialogResult.OK
korisnik je kliknuo dugme OK
Ako je vraena vrednost
DialogResult.Cancel korisnik je
kliknuo dugme Cancel
Pomou propertyja DialogResult
moe se postaviti odgovarjua
vrednost enumeracije DialogResult
za dugme
Metode klase Form : Show() i
ShowDialog() vraaju vrednost tipa
DialogResult tj neku od vrednosti ove
enumeracije.
164
165
166
167
CheckB
ox
168
168
169
Svojstvo Checked
private void buttonSalji_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox1.AppendText("Odabrali ste :" + Environment.NewLine);
if(checkDorucak.Checked)
textBox1.AppendText("dorucak" + Environment.NewLine);
if (checkRucak.Checked)
textBox1.AppendText("rucak" + Environment.NewLine);
if (checkVecera.Checked)
textBox1.AppendText("vecera" + Environment.NewLine);
}
170
Dogaaj CheckedChanged
private void checkPrikazi_CheckedChanged(object sender, EventArgs e)
{
if (textBox1.Visible == false)
textBox1.Visible = true; else
textBox1.Visible = false;
}
171
RadioButt
on
Radio dugmad se obino nalaze u Grupi
najpre se na formu dodaje kontrola
GroupBox koja se nalazi u Containers
sekciji Toolboxa
zatim se dodaju radio dugmad u grupu
samo jedno radio dugme u grupi u jednom
trenutku moe biti selektovano
Property Checked radio dugmeta vraa
true ako je ono ekirano ili false ako nije
172
172
173
174
175
176
177
178
SelectedIndexChanged dogaaj
179
ListBox
primer
180
ListBox SelectedIndexChanged
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("Odabrali ste: " + listBox1.SelectedItem.ToString());
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
// ako je pritisnut taster ENTER
listBox1.Items.Add(textBox1.Text);
textBox1.Clear();
}
}
181
RichTextBox
Omoguava korisniku unos teksta
ali mu daje naprednije mogunosti
za editovanje.
Metoda LoadFile omoguava
uitavanje tekstualnog fajla(ist
tekst ili rtf format) u tekst boks
Metoda SaveFile omoguava
uvanje sadraja teksboksa u
tekstualni fajl
Metoda Clear() brie sadraj tekst
boksa.
Svojstvo SelectionFont daje ili setuje
font selektovanog teksta ili od
naznaene take
SelectionColor daje ili setuje boju
selektovanog teksta ili tu boju
primenjuje poevi od naznaene
take
182
182
183
RichTextBox primer1
private void buttonCuvaj_Click(object sender, EventArgs e)
{
richTextBox1.SaveFile(@"C:\Temp\proba.rtf");
MessageBox.Show("Tekst sacuvan");
}
private void buttonCitaj_Click(object sender, EventArgs e)
{
richTextBox1.LoadFile(@"C:\Temp\proba.rtf");
}
private void buttonBrisi_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
}
184
RichTextBox primer2
private void buttonBold_Click(object sender, EventArgs e)
{
Font tekuciFont = richTextBox1.SelectionFont;
FontStyle noviStilFonta;
if (richTextBox1.SelectionFont.Bold == true)
{
noviStilFonta = FontStyle.Regular;
}
else
{
noviStilFonta = FontStyle.Bold;
}
richTextBox1.SelectionFont = new Font(tekuciFont.FontFamily,
tekuciFont.Size,
noviStilFonta
);
}
185
RichTextBox primer3
private void button1_Click(object sender, EventArgs e)
{
// Postavi font
richTextBox1.SelectionFont = new Font("Arial", 14,FontStyle.Italic);
richTextBox1.SelectionColor = Color.Red;
string selektovano = richTextBox1.SelectedText;
richTextBox1.SelectedText = selektovano;
}
186
RichTextBox primer4
private void Form1_Load(object sender, EventArgs e)
{
standardniTekst();
}
private void buttonStandard_Click(object sender, EventArgs e)
{
standardniTekst();
}
private void standardniTekst()
{
richTextBox1.SelectionFont = new Font("Times New Roman", 12,
FontStyle.Regular);
richTextBox1.SelectionColor = Color.Black;
}
187
Izuze
ci
188
Pojam izuzetaka
Izuzetak je sluaj koji se deava
tokom izvravanja programa koji
moe da poremeti normalan rad
programa
Izuzetak je objekat izveden iz klase
Exception
Izuzeci se obrauju
korienjem kljunih rei
try, catch i finally
189
Obrada izuzetaka
try
{
// deo koda u kome moze doci do izuzetka
}
catch(Exception ex)
{
// hendlovanje izuzetaka
}
190
GUI
aplikacije
191
Ko
d
private void buttonIzracunaj_Click(object sender, EventArgs e)
{
double a = Convert.ToDouble( textPrvi.Text);
double b = Convert.ToDouble(textDrugi.Text);
double zbir = a + b;
MessageBox.Show("Zbir je: " + zbir);
}
192
193
194
IndexOutOfRangeException
InvalidCastException
FormatException
OverflowException
DividebByZeroException
ArithmeticException
195
Ukoliko postoji vie catch blokova tada treba prvo hendlovati izuzetke koji
su vie specijalizovaniji, a zatim optije. Npr. DivideByZeroException
klasa je izvedena iz klase ArithmeticException. Ako se catch je
ArithmeticException pre DivideByZeroException tada se izuzetak
DivideByZeroException nee uhvatiti.
196
finally
blok
Ukoliko se eli da se neki blok koda izvri posle catch bloka (blokova)
nezavisno od toga da li je dolo do izuzetka ili ne koristi se finally blok.
try
{
// otvori konekciju
// radi sa bazom
}
catch
{
// catch exceptions
}
finally
{
// zatvori konekciju
}
197
198
200
OpenFileDialog
SaveFileDialog
FontDialog
ColorDialog
PrintDialog
FolderBrowserDialog
201
202
203
ColorDial
og
private void buttonBoja_Click(object sender, EventArgs e)
{
Font tekuciFont = richTextBox1.SelectionFont;
DialogResult rez = colorDialog1.ShowDialog();
if (rez == DialogResult.OK)
{
if (richTextBox1.SelectionFont != null)
{
richTextBox1.SelectionFont = new Font(tekuciFont.FontFamily,
tekuciFont.Size, tekuciFont.Style);
richTextBox1.SelectionColor = colorDialog1.Color;
}
}
}
204
FontDial
og
private void buttonFont_Click(object sender, EventArgs e)
{
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.SelectionFont = fontDialog1.Font;
}
}
205
FolderBrowserDialog
private void buttonFolder_Click(object sender, EventArgs e)
{
folderBrowserDialog1.ShowNewFolderButton = true;
folderBrowserDialog1.Description = "Odaberite podrazumevani folder";
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
Environment.CurrentDirectory = folderBrowserDialog1.SelectedPath;
}
}
206
OpenFileDial
og
private void buttonOtvori_Click(object sender, EventArgs e)
{
openFileDialog1.InitialDirectory = folderBrowserDialog1.SelectedPath;
openFileDialog1.Filter = @" Rich Tekst|*.rtf|Text fajl|*.txt";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.LoadFile(openFileDialog1.FileName);
}
}
207
SaveFileDial
og
private void buttonSacuvaj_Click(object sender, EventArgs e)
{
saveFileDialog1.InitialDirectory = folderBrowserDialog1.SelectedPath;
saveFileDialog1.Filter = @" Rich Tekst|*.rtf|Text fajl|*.txt";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.SaveFile(saveFileDialog1.FileName);
}
}
208
Jednodimenzionalni nizovi
209
Nizo
vi
Skup podataka istog tipa
Nizovi su indeksirani
Prvi element niza ima indeks nula
Mogu biti
jednodimenzionalni i
viedimenzionalni
niz u C# je objekat i mora se instancirati
210
Kreiranje
niza
//Deklarisanje niza:
int[ ] mojCelobrojniNiz ;
//Instanciranje niza:
mojCelobrojniNiz = new int[5];
// inicijalizacija niza
int[ ] mojCelobrojniNiz = new int[5] = {1,2,5,6,7};
// ako se niz inicijalizuje ne mora se koristiti kljuna re new
int[ ] mojCelobrojniNiz1 = {5,5,6,7,8};
211
Boxing i unboxing
int x = 25;
object boxedValue = (object) x ;
int y = (int) boxedValue ;
212
Naredba foreach
private void button1_Click(object sender, EventArgs e)
{
int[ ] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
foreach (int i in numbers)
{
listBox1.Items.Add(i);
}
}
213
214
215
Kljuna re params
public int sumaNiza(params int[] x)
{
int total = 0;
foreach (int i in x)
{
total += i;
}
return total;
}
...
Nizovi niz = new Nizovi();
int zbir = niz.sumaNiza(1,3,5,7,9,11);
MessageBox.Show(zbir.ToString());
216
Viedimenzionalni nizovi i
indekse
ri
217
Viedimenzionalni nizovi
int[,] x = new
int[3, 4];
x[0, 0] = 1;
x[0, 1] =
2; x[0, 2]
= 3; x[0,
3] = 2;
x[1, 0] =
4; x[1, 1]
= 5; x[1,
2] = 6;
x[1, 3] =
5; x[2, 0]
= 7; x[2,
1] = 8;
x[2, 2] =
9; x[2, 3]
= 10;
int[,] y = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
218
stampajNiz(x, 3, 4);
stampajNiz(y, 3, 3);
219
Indekser
public class
IndexerClass
{
private int[ ] mojNiz ;
public IndexerClass()
{
mojNiz = new int[100];
}
public int this [int index] // deklaracija Indexer a
{
get
{
return mojNiz[index];
}
set
{
mojNiz[index] = value ;
}
}
}
220
Upotreba indeksera
KlasaIndekser objekat = new KlasaIndekser();
// objekat klase se sada zahvaljuci indekseru tretira kao niz
for (int i = 0; i < 100; i++)
{
objekat[i] = 5 * i + 1;
listBox1.Items.Add(objekat[i]);
}
int[] x = new int[100];
for (int j = 0; j < 100; j++)
{
x[j] = objekat[j];
}
//MessageBox.Show(maxClan(x).ToString());
221
222
Kolekcij
e
223
Nizo
vi
Nizovi su jedina kolekcija koja je ugraena
u C# jezik
Sve ostale kolekcije se nalaze u
prostoru imena
System.Collections
Kreiranjem niza vri se instanciranje klase
Array
Svojstvo Length ove klase
daje broj elemeneta niza
Rank svojstvo daje broj dimenzija niza
224
Klasa
Array
225
ArrayList
Queue
Stack
Hashtable
........
Interfejsi:
ICollection
IEnumerable
IEnumerator
IDictionaryEnumerator
IList
.....
226
Interfej
si
ICollection definie veliinu i
enumeratore za sve kolekcije
IComparer sadri metode za
komparaciju dva objekta
IDictionary predstavlja
kolekciju
parova(klju,vrednost)
IDictionaryEnumerator enumeracija kroz
elemente renika
IEnumerable sadri enumerator koji
omoguava jednostavnu iteraciju kroz
kolekciju
IEnumerator jednostavna iteracija kroz kolekciju
IList interfejs predstavlja kolekciju objekata
kojima se moe pristupati preko indeksa
227
Klasa
ArrayList
228
229
Redovi (Queues)
Queue: FIFO struktura (first in, firstout)
Metoda Enqueue(object) dodaje objekat u listu
Metoda Dequeue() skida najstariji
elemenat (koji je prvi dodat na listu) sa
liste
Metoda GetEnumerator() vraa iterator
(objekat tipa IEnumerator) kojim se vri
jednostavan
prolaz kroz listu
230
Stekovi
(Stacks)
Upotreba stacka
Stack mojStack = new Stack();
mojStack.Push("Hello");
mojStack.Push(1);
mojStack.Push("World");
mojStack.Push("!");
mojStack.Pop();
mojStack.Pop();
IEnumerator mojEnumerator = mojStack.GetEnumerator();
while (mojEnumerator.MoveNext())
{
richTextBox1.AppendText(mojEnumerator.Current + "\n");
}
1
Hello
233
Hash
tabele
234
235
Klasa
Object
Svaki objekat u C# je izveden iz bazne klase
System.Object
object je nadimak za ovu klasu
tipu object se moe pridruiti bilo koji tip
double a =12.34;
object obj = a; // boxing
double d = (double) obj ; // unboxing
236
Klasa
Object,
rad sa stringovima, klasa DateTime
237
Klasa
Object
Svaki objekat u C# je izveden iz bazne klase
System.Object
object je nadimak za ovu klasu
tipu object se moe pridruiti bilo koji tip
double a =12.34;
object obj = a; // boxing
double d = (double) obj ; // unboxing
238
Equals
vraa true ako su dva objekta jednaka
a.Equals(b)
GetType
vraa tip instance objekta
239
Rad sa stringovima
tip string je nadimak za klasu
System.String
operator + se koristi za
nadovezivanje stringova
(konkatenaciju)
string je niz elemenata tipa char
Metoda public string Substring( int
startIndex, int length ) vraa podstring
poev od indeksa startIndex i duine length
Length property daje broj
karaktera stringa
Trim() metoda skida blanko
karaktere sa poetka i kraja
stringa
240
241
Kl
as
a
Sy
st
e
m.
Co
nv
er
t
ko
nvertuje
neki osnovni tip podataka u
drugi tip
242
243
244
245
Osobina nepromenljivosti
stringo
va
for(int i=0; i< 10; i++)
{
s = string.Concat(s, i.ToString());
}
Stringovi su nepromenljivi(immutable) tj . nakon toga to se string
sauva u memoriji ta memorijska lokacija se ne moe
promeniti. Metoda string.Concat kreira novi string i onda rezultat
uva na novoj memorijskoj lokaciji. I stara i nova verzija
stringa se uvaju privremeno u memoriji. Stara verzija
stringa
e
se
obrisatu
u procesu odnoenja smea
(garbage collection). Ako aplikacija esto manipulie stringovima
u memoriji se uvaju nepotrebni podaci ekajui sledei period
odnoenja
smea.
Reenje
klasa StringBuilder koja se
nalazi u namespace-u System.Text
246
Klasa StringBuilder
StringBuilder sb = new StringBuilder();
for(int i=0; i< 10; i++)
sb.Append(i);
247
249
250
Toolstrip kontrola
251
ToolStri
p
Predstavlja osnovu kontrola MenuStrip, StatusStrip i
ContextMenuStrip
Kreira se prevlaenjem kontrole ToolStrip
koja se nalazi u Menus & Toolbars sekciji
toolboxa
Svojstvo LayoutStyle odreuje poloaj
ToolStrip kontrole na formi
Sastoji se od kolekcije objekata ToolStripItem
ToolStripItem objekti mogu biti labele,
dugmad, kombo boksovi itd.
2252
Primer ToolStripa
2253
2254
2255
Tool Strip
Items
U ToolStrip mogu se dodavati sledee kontrole:
ToolStripLabel
ToolStripButton
ToolStripTextBox
ToolStripComboBox
ToolStripProgressBar
ToolStripSplitButton
ToolStripDropDownButton
ToolStripSeparator
2256
ToolStripItems
Svojstvo ToolTipText svake od
ToolStripItems kontrola odreuje tekst koji
e se prikazati kada se pokaziva mia
nae iznad ovih kontrola
U zavisnosti koju kontrolu predstavlja stavka
ToolStrip kontrole mogue je definisati
odgovarajue dogaaje kao to su :
Click
DoubleClick
SelectedIndexChanged itd.
2257
ToolStripLab
el
2258
ToolStripLabel primer
private void toolStripLabel1_Click(object sender, EventArgs e)
{
MessageBox.Show("Kliknuli ste stavku " + ((ToolStripItem)sender).Text);
}
2259
2260
ToolStripButton
2262
2263
ToolStripContainer
2264
Spajanje ToolStripova
Korienjem ToolStripManager statike klase
u toku izvravanja koda moe se vriti
spajanje
razliitih ToolStripova
2265
2266
MenuStrip
kontrola
267
Men
i
Koristi se za brz pristup vanim komandama aplikacije
Poev od .NET frejmvorka 2.0 za kreiranje menija
koristi se kontrola MenuStrip
MenuStrip kontrola je izvedena iz kontrole ToolStrip
Kontrole MenuStrip moe da hostuje sve ToolStrip stavke ali
je prvenstveno namenjena za hostovanje ToolStripMenuItems
stavki
ToolStripMenuItem je kontrola koje se koristi za
vizuelnu predstavu stavki menija
268
HorizontalStackWithOverFlow
VerticalStackWithOverFlow
StackWithOverflow
Flow
Table
269
270
271
MenuStri
p
Koristi se za kreiranje glavnog menija
ToolStripMenuItem
ToolStripComboBox
ToolStripTextBox
Kreiranje MenuStripa
273
ContextMenuStrip kontrola,
Timer komponenta
274
ContextMenuStrip
Koristi se za kreiranje kontekstnog menija
Pridruuje se nekoj kontroli npr. dugmetu
Aktivira se desnim klikom na
pridruenu kontrolu
U kontekstni meni moe se dodati
ToolStripMenuItem
ToolStripComboBox
ToolStripSeparator
ToolStripTextBox
2275
2276
Timer komponenta
2278
2279
StatusStrip kontrola
280
StatusStrip kontrola
StatusStrip kontrola je podskup
ToolStrip kontrole
Koristi se za realizaciju status bara
Uobiajenoje dokovanje za dno windows prozora
U status bar se mogu dodati:
ToolStripStatusLabel kontrola
ToolStripProgressBar kontrola
ToolStripDropDownButton kontrola
ToolStripSplitButton kontrola
281
ProgressBar kontrola
Koristi se da se vizuelno prikae napredovanje
vremenski zahtevnog posla
Svojstvo Maximum odreuje maksimalnu
vrednost ove kontrole
Svojstvo Minimum odreuje minimalnu vrednost ove kontrole
Step predstavlja vrednost koja e se dodati
Value svojstvu kontrole kada se pozove
PerformStep metoda
Value je tekua vrednost ProgressBar kontrole , i ova
vrednost se kree izmeu minimalne i maksimalne
vrednosti
282
283
LinkLabel kontrola
Omoguava kreiranje web linkova
Svojstvo ActiveLinkColor postavlja boju
aktivnog linka
LinkArea definie oblast Labele koja
funkcionie kao link
LinkBehavior definie ponaanje linka
LinkColor definie boju linka
LinkVisited pokazuje da li je web adresa ve
poseivana
VisitedLinkColor boja poseivanih web adresa
285
286
WebBrowser kontrola
287
WebBrowser kontrola 1
Obezbeuje funkcionalnost za
uitavanje i prikazivanje HTML
strana
Svojstvo AllowWebBrowserDrop odreuje da
li dokument prevuen u ovu kontrolu biva
automatski otvoren
CanGoBack omoguava navigaciju unazad
CanGoForward omoguava navigaciju unapred
Document vraa tekui HTML dokument unutar
WebBrowser kontrole
DocumentStream vraa tok pridruen
tekuem dokumentu
288
WebBrowser kontrola 2
DocumentText svojstvo vraa string koji
predstavlja tekui dokument
DocumentTitle svojstvo vraa naslov
tekueg dokumenta
DocumentType svojstvo vraa tip
tekueg dokumenta
IsOffline svojstvo pokazuje da li sistem radi offline
IsWebBrowserContextMenuEnabled pokazuje
da li je za IE omoguen kontekstni meni
URL daje url adresu tekueg dokumenta
289
290
291
Primer WebBrowser
292
293
294
295
NotifyIcon komponenta
Obino se koristi sa aplikacijama koje
rade kao pozadinski procesi
Svojstvo BallonTipIcon odreuje ikonicu (.ico) fajl koji
e biti prikazan u balonu
Svojstvo BalloonTipText definie tekst u balonu
Svojstvo BalloonTipTitle definie naslov balona
Metoda ShowBalloonTip definie vreme
prikazivanja balona u sekundama
296
NotifyIcon primer
notifyIcon1.ShowBalloonTip(12);
297
TrackBar kontrola
Maximum svojstvo definie maksimalnu vrednost na
TrackBaru
Minimum svojstvo definie minimalnu vrednost na TrackBaru
SmallChange svojstvo odreuje broj pozicija
pomeranja klizaa pri pritiskanju strelica sa
tastature
LargeChange odreuje broj pozicija pomeranja
klizaa pri pritiskanji tastera PageUp i
PageDown
Value predstavlja tekuu vrednost klizaa
TickFrequency odreuje broj podela klizaa
Scroll dogaaj se generie pri pomeranju klizaa
298
TrackBar primer
299
Klasa
Process
Obezbeuje pristup lokalnim i udaljenim
procesima i omoguava pokretanje i
zaustavljanje lokalnih sistemskih procesa
Pripada prostoru imena System.Diagnostics
Proces je u najjednostavnijem smislu aplikacija
Process.Start() metoda:
Process.Start (String)
Process.Start (String, String)
Process.Start (ProcessStartInfo)
301
303
DateTimePicker Kontrola
Omoguava setovanje datuma ili
vremena korienjem jednostavnog
grafikog interfejsa
Svojstvo Format omoguava setovanje
formata prikaza u kontroli
Svojstvo Value odreuje trenutno setovani
datume ili vreme
Ukoliko se kao Fomat setuje Time, treba
postaviti svojstvo ShowUpDown na
vrednost True
304
305
306
Oitavanje vrednosti iz
dateTimePicker
kontrol
e
private void buttonRezervacija_Click(object sender, EventArgs e)
{
DateTime dt1 = dateTimePicker1.Value;
StringBuilder sb1 = new StringBuilder();
sb1.Append("Vas datum leta je :\n");
sb1.Append(dt1.ToShortDateString() + "\n");
DateTime dt2 = dateTimePicker2.Value;
sb1.Append("Vase vreme polasaka je:\n");
sb1.Append(dt2.ToShortTimeString());
richTextBox1.AppendText(sb1.ToString());
}
307
MonthCalendar kontrola
Uvod u
grafiku
308
MonthCalendar kontrola
Omoguava korisniku da selektuje
opseg datuma
Svojstvo MaxSelectionCount odreuje
maksimalan broj dana koji se moe
selektovati korienjem ove kontrole
Svojstvo SelectionStart odreuje
poetni datum selektovanog
intervala
Svojstvo SelectionEnd odreuje zavrni
datum selektovanog intervala
309
310
311
Uvod u
grafiku
Prostor imena System.Drawing omoguava:
Dodavanje krugova, elipsi, linija I drugih oblika na UI
Kreiranje grafikona
Editovanje i manipulaciju slikom itd
Bitmap
Brush
Font
Graphics
Icon
Image
Pen
Color
Point
Itd
312
Najpre se kreira Graphics objekat forme koji slui kao papir za crtanje
Kreiraju se odgovarajue olovke za crtanje instanciranjem klase Pen
Kreiraju se odgovarajue etke za bojenje i popunjavanje
zatvorenih regiona instanciranjem klase Brush
Moe se ukljuiti i prostor imena using System.Drawing.Drawing2D;
Pozivaju se metode graphics objekta za crtanje:
313
314
315
// poligon
Point[] points =
{ new Point(10, 10),
new Point(10, 100),
new Point(50, 65),
new Point(100, 100),
new Point(85, 40)
};
g.DrawPolygon(p, points);
Brush br = Brushes.Beige;
g.FillPolygon(br, points);
// elipsa1 = krug
Pen p1 = new Pen(Color.Turquoise, 3);
g.DrawEllipse(p1, 100, 175, 60, 60);
// elipsa 2
g.DrawEllipse(p1, 250, 225, 100, 50);
// tekst
Font f = new Font("Arial", 12);
Brush cetka = Brushes.Black;
g.DrawString("C# pisanje", f, cetka, 70, 350);
316
Rad sa
slikom
317
PictureBox kontrola
PictureBox kontrola je osnovna kontrola za
prikaz slike u korisnikom interfejsu
Svojstvo Image slui za itanje i setovanje slike koja
je uitana odnosno koja e biti postavljana unutar
PictureBox kontrole
318
319
320
321
Prime
r
322
ImageList komponenta
Koristi se za kreiranje liste slika koje se
kasnije mogu koristiti u aplikaciji
Svojstvo Images vraa kolekciju
slika ove komponente
pictureBox2.Image = imageList1.Images[0];
324
Prime
r
Kreirati ImageList kolekciju koja sadri odreeni skup slika. Posle uitavanja
windows forme se svake 2 sekunde u PictureBox kontroli prikazuje razliita slika
iz ImageList kolekcije.
325
Reenj
e:
// private int brojac=0; // clan klase private void menjajSliku()
{
pictureBox2.Image = imageList1.Images[brojac1];
brojac1++;
if (brojac1 > imageList1.Images.Count - 1)
brojac1 = 0;
}
326
327
329
330
331
Slanje
maila
Slanju mejla se moe pristupiti tek poto je objekat klase
MailMessage prethodno kreiran i inicijalizovan
Instancira se klasa SmtpClient klijent, gde u
konstruktoru treba navesti adresu smtp servera
odreenog provajdera
Kreira se objekat klase NetworkCredential
(System.Net) kome se pridruuju korisniko ime i
ifra za pristup
Korienjem svojstva Credentials se
SmtpClient objektu pridruuje objekat kalse
NetworkCredential
U odreenim sluajevima je podrebno naglasiti da se radi o
SSL slanju maila (EnableSsl)
U odreenim sluajevim je potrebno definisatri port
SmtpClienta
Poziva se Send metoda objekta SmtpClient klase
332
333
Ulaznoizlazni
tokovi
334
Klasa Environment
335
Klasa
Path
336
Klasa DirectoryInfo
Koristi se za rad sa folderima
Svojstvo Parent daje roditeljski folder tekueg foldera
Svojstvo Root daje DirectoryInfo klasu Root foldera
Metoda GetDirectories daje niz podfoldera
(DirectoryInfo objekata) tekueg foldera
Metoda GetFiles daje niz objekata FileInfo koji
predstavljaju fajlove u tom folderu
Metoda Create kreira folder specificiran DirectoryInfo klasom
Metoda CreateSubdirectory kreira podfolder tekueg foldera
337
338
Klasa
FileInfo
Svojstvo Directory daje DirectoryInfo
objekat koji predstavlja folder kome
pripada posmatrani fajl
Svojstvo DirectoryName daje ime
folder kome pripada posmatrani fajl
Svojstvo IsReadOnly je get, set
svojstvo koje odreuje da li se fajl
moe modifikovati
Svojstvo Length daje veliinu fajla u
bajtovima
Metoda CopyTo kreira kopiju fajla na
novoj lokaciji
Metoda Create kreira
fajl
339
340
Klasa
DriveInfo
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
richTextBox1.AppendText( drive.Name + "\t");
richTextBox1.AppendText(drive.DriveType + "\n");
}
341
na
odre
eno
mest
o
unuta
r
strea
m a
342
StreamReader klasa
Klasa StreamReader ita linije iz
standardnog tekstualnog fajla kao to
je npr, log fajl
Obezbeuje funkcionalnost za itanje
podataka Metoda Read ita skup karaktera u
strimu
Metoda ReadLine ita liniju karaktera u strimu
Metoda ReadToEnd ita ceo strima
Metoda Close zatvara rider i strim koji
mu je pridruen
343
richTextBox1.AppendText(sr.ReadToEnd());
344
Klasa StreamWriter
private void buttonPisi_Click(object sender, EventArgs e)
{
string imeFajla = "MojFajl.txt";
Environment.CurrentDirectory = @"C:\Temp";
if (File.Exists(imeFajla))
{
MessageBox.Show("Vec postoji fajl sa tim imenom");
return;
}
//StreamWriter sr = File.CreateText(imeFajla);
StreamWriter sr = new StreamWriter(@"C:\Temp\MojFajl.txt");
sr.WriteLine("Ovo je prva linija fajla.");
sr.WriteLine(2.56);
sr.WriteLine("Vrednost");
sr.WriteLine(8.45f);
MessageBox.Show("Fajl kreiran");
sr.Close();
}
345
Kontejnerske kontrole
346
Vrste
kontrola
Panel
FlowLayoutPanel
GroupBox
TableLayoutPanel
TabControl
SplitContainer
347
349
Panel
kontrola
Kreira podsekciju na formi koja
moe da hostuje druge kontrole
Svojstvo AutoScroll odreuje da li
panel prikazuje skrol barove kada se
vri hostovanje kontrola van vidljive
oblasti panela
BorderStyle svojstvo definie da li je
border Panel kontrole vidljiv i ukoliko
jeste kako izgleda
350
FlowLayoutPanel
Ovo je podklasa izvedena iz Panel kontrole
Kontrole se dodaju na formu sleva na desno
poevi od gornjeg levog ugla panela
podrazumevano FlowDirection setovanje
Kada elimo da prekinemo tok onda se
svojstvo FlowBreak poslednje kontrole u
toku postavlja na vrednost true nakon
ega se kreira novi tok
351
TableLayoutPanel
352
TabContr
ol
Omoguava grupisanje kontrola
korienjem kartica
TabPages svojstvo ove kontrole
omoguava definisanje eljenih
kartica
Svojstvo Multiline ppostavljeno na
vrednost true omoguava da se
tabovi definiu u vie
od jedne linije
Svojstvo Text odreuje tekst koji e
pojavljuje na jeziku same kartice
353
TabContr
ol
354
SplitContain
er
Omoguava podelu windows forme na
panele po horizontali ili vertikali
Unutar ove kontrole kreiraju se dve
kontrole SplitterPanel kojima se
pristupa
korienjem
svojstava
Panel1 i Panel2
355
356
Uvod u ADO.NET
357
ADO.NE
T
ADO.NET je skup klasa za rad sa podacima
.NET snabdevai podataka su klase
koje obezbeuju mogunost
konektovanja na izvor podataka
SQL Server snabdeva podataka
OLE DB snabdeva podataka
ostali snabdevai podataka
System.Data
System.Data.SqlClient
System.Data.OleDb
System.Data.SqlTypes
System.Xml
358
Konektovani scenario
Resursi se uzimaju sa servera
sve dok se konekcija ne zatvori
korisnik je konstantno
povezan na izvor podataka
podaci su aurni
konkurentnost se lake kontrolie
mora postojati konstantna
mrena konekacija
359
360
361
362
Diskonektovani scenario
U diskonektovanom scenariju podskup
podataka iz baze podataka se kopira
lokalno
Dok se korisnik nalazi u
diskonektovanom radu ostali korisnici
mogu da koriste konekciju
Diskonektovani rad poveava skalabilnost aplikacije
Podaci nisu uvek aurni
Kada se podacima iz lokalne kopije
podataka aurira baza moe doi do
konflikta
363
364
365
366
367
369
Konekcij
e
Pre bilo kakvog rada sa bazom podataka
potrebno je kreirati a zatim otvoriti
konekciju
U ADO.NET se kreira objekat klase Connection
System.Data.SqlClient.SqlConnection
omoguava kreiranje konekcije na SQL
Server bazu podataka
System.Data.OleDb.OleDbConnection
omoguava kreiranje konekcije na
svaki izvor podataka sa pridruenim
OLE DB provajderom
371
Objekat Connection
Predstavlja konekciju na izvor podataka
U ADO.NETu su raspoloivi sledei
Connection objekti
SqlConnection za uspostavljanje konekcije na
SqlServer bazu podataka poev od verzije
2000
OleDbConnection za uspostavljanje konekcije na OLEDB
izvor podataka kao to je npr. Access
OdbcConnection za uspostavljanje konekcije na ODBC
izvor podataka
OracleConnection za uspostavljanje konekcije
na Oracle bazu podataka poev od verzije 7.3
372
Connection objekat
Svaki Connection objekat ije
izveden iz klase DbConnection
koja se nalazi u prostoru imena
System.Data.Common
Klasa DbConnection predstavlja
konekciju na bazu podataka
373
375
Windows autentifikacija:
SqlConnection con = new SqlConnection();
string konekcioniString = @"Data Source=(local)\SqlExpress;
Initial Catalog=Northwind;Integrated Security=true";
376
Primer konekcije WA
private void button1_Click(object sender, EventArgs e)
{
SqlConnection konekcija = new SqlConnection();
string konekcioniString = @"Data Source=(local)\SqlExpress;
Initial Catalog=Northwind;Integrated Security=true";
konekcija.ConnectionString = konekcioniString;
try
{
konekcija.Open();
}
catch(Exception exc)
{
MessageBox.Show(exc.Message);
}
MessageBox.Show(konekcija.State.ToString(), "Stanje konekcije");
}
}
377
378
OLE DB konekcija
connectionString=@Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Temp\Northwind.mdb"
using System.Data.OleDb;
379
380
381
382
383
384
385
386
con.Open();
// (Izvrsavanje ADO.NET komandi)
}
catch (SqlException err)
{
MessageBox.Show(err.ToString());
}
finally
{
con.Close();
}
388
389
Objekat Command
Koriste se za izvravanje SQL komandi
i uskladitenih procedura nad bazom
podataka
SqlCommand ili OleDbCommand
Objekat Command omoguava
direktan pristup podacima u bazi u
konektovanom okruenju
Pomou njega mogue je izvravati
SELECT, INSERT, UPDATE i DELETE
naredbe nad elementima baze
podataka
390
Kreiranje i konfigurisanje
Command objekta
private SqlConnection cnnNorthwind = new SqlConnection(
@"Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated
Security=True");
393
Kreiranje i konfigurisanje
Commanad objekta koji izvrava
uskladitenu proceduru
SqlCommand cmdProcedura = new SqlCommand();
cmdProcedura.Connection = cnnNorthwind;
cmdProcedura.CommandType = CommandType.StoredProcedure;
cmdProcedura.CommandText = "Ten Most Expensive Products";
394
395
396
397
398
DataRead
er
DataReader je brz(readonly,forward
only) kursor koji se pomera kroz skup
zapisa
Pristup podacima korienjem objekta
DataReader sastoji se od sledeih koraka:
Kreira se objekat Connection
Kreira se Command objekat sa odgovarajuim SELECT upitom
Otvara se Connection objekat
Izvrava se Command.ExecuteReader( ) metoda
koja vraa objekat DataReader
Koristei DataReader.Read( ) metodu objekta
DataReader prolazi se kroz sve vrste
Kada Read() metoda vrati false zatvara se objekat
DataReader i objekat Connection
399
uitava zapis
vraa true ako ima jo zapisa, false ukoliko se stiglo do
poslednjeg zapisa
400
402
Tipovi parametara
Input ulazni parametri se koriste u
komandnim objektima za slanje podataka
bazi
Output izlazni parametri se koriste za
prihvatanje podataka od baze podataka
nakon izvravanja odreenih upita
InputOutput ulazno/izlazni parametri
opmoguavaju i slanje i prihvatanje
podataka
403
Blanko mesto -
404
Kreiranje parametara
// Kreiraj @City parametar
SqlParameter CityParameter = new SqlParameter("@City",SqlDbType.NVarChar);
// NULL vrednosti su dozvoljene
CityParameter.IsNullable = true;
cmdKorisnikIzGrada.Parameters.Add(CityParameter);
CityParameter.Value = CityTextBox.Text;
405
406
Kreiranje uskladitenih
procedu
ra
CREATE PROCEDURE UpdateCategory
(
@CategoryID int,
@CategoryName nvarchar(15)
)
AS
UPDATE Categories SET CategoryName=@CategoryName
WHERE CategoryID=@CategoryID
407
408
Uskladitene procedure sa
izlaznim
parametri
ma
CREATE Procedure DodajKorisnika
(
@ImePrezime nvarchar(50),
@Email varchar(20),
@Sifra nvarchar(30),
@KorisnikID int OUTPUT
)
AS
INSERT INTO Korisnici ( ImePrezime, Email, Sifra )
VALUES ( @ImePrezime, @Email, @Sifra )
SELECT @KorisnikID = @@Identity
GO
409
411
412
413
Klasa DataAdapter
Ova klasa predstavlja most izmeu
izvora podataka i objekta DataSet
Objekat DataSet se koristi za uvanje
lokalne kopije podataka iz baze
DataAdapter prima podatke od objekta
Connection i prosleuje ih objektu DataSet
(itanje iz baze)
Promene na podacima iz objekta
DataSet prosleuje nazad do objekta
Connection kako bi se podaci aurirali
u samom izvoru
podataka (upi u bazu auriranje)
414
Funkcionisanje DataAdapter
objekt
a
415
416
Metode:
Fill
Upadate
417
418
419
420
DataS
et
DataSet je memorijska predstava
podataka, koja ukljuuje tabele,
relacije izmeu tabela i ogranienja
Konekcija sa bazom podataka
nije neophodna da bi se
manipulisalo sa podacima u
DataSetu
Podaci u DataSetu se uvaju na
slian nain kao to se uvaju u
relacionoj bazi podataka
Podaci iz DataSeta mogu se prikazati u XML
formatu
421
422
423
424
425
427
428
DataRow orderDetailDataRow =
orderDetailsDataTable.Rows.Find(orderDetails);
foreach (DataColumn kolona in orderDetailsDataTable.Columns)
{
richTextBox1.AppendText(kolona.ColumnName + ": " +
orderDetailDataRow[kolona] + "\n");
}
430
431
432
433
434
434
436