You are on page 1of 16

.

NET Framework

.NET Framework je razvojno okruenje koje omoguava kreiranje .NET aplikacija


Predstavlja osnovu .NET platforme
Sastoji se iz 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

kolekcija razvojnih frameworka (ASP.NET, WPF, WF, WCF)

Princip rada .NET Frameworka

Visual Studio .NET je integrisano razvojno okruenje (IDE) koje omoguava kreiranje .NET aplikacija

Kada se kompajlira aplikacija u Visual Studio .NET-u source kod se translira u tzv. Microsoft Intermediate Langusge
(MSIL)

Posle kompajliranja runtime upravlja izvravanjem aplikacije

Runtime ukljuuje karakteristiku koja se naziva JIT just in time compilation, transliranje MSIL koda u mainski kod
Osnove C# programa

Izvravanje programa poinje od Main() metode

U C# aplikaciji moe postojati samo jedna Main() metoda

Kljuna re using se odnosi na korienje .NET Framework biblioteke klasa

Klase u .NET Framework-u su organizovane u tzv. namespace ove (prostore imena)

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

C# razlikuje velika i mala slova

Klasa Console se nalazi u namespace-u System


Metode WriteLine() i ReadLine()

Pokretanje aplikacije F5 (debug mode) ili CTRL+F5

Ulazni parametar WriteLine() metode je string koji treba prikazati u konzoli (DOS- prozoru)

Posle ispisa teksta kursor prelazi u novi red

Odmah nakon ispisa teksta konzola se zatvara

Da bi tekst ostao na ekranu koristi se metoda ReadLine()

Metoda ReadLine() vraa liniju teksta (string) koji je uneo korisnik

Metoda ReadLine() eka korisniki unos koji se prosleuje metodi pritiskom na taster ENTER
Pisanje komentara

Komentar je tekst koji se ignorie od strane kompajlera

Komentar u jednoj liniji pie se korienjem znaka //

Komentar u vie linija /* */


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 vitiastih zagrada {}


Identifikatori

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)


Ugraeni tipovi podataka

Ugraeni tipovi podataka su oni koje obezbeuje C# i .NET frejmvork

Tipovi se koriste za deklarisanje promenljivih i konstanti

Promenljive se moraju deklarisati pre nego to mogu da se koriste

Promenljive uvaju razliite tipove podataka

Mogue je definisati sopstvene tipove podataka

C# tip

Veliina u bitovima

Sistemski tip

sbyte
short
int
long
byte
ushort
uint
ulong
char
bool
float
double
decimal
string
object
dynamic

8
16
32
64
8
16
32
64
16
8
32
64
128
nije raspoloivo
nije raspoloivo
nije raspoloivo

System.SByte
System.Int16
System.Int32
System.Int64
System.Byte
System.UInt16
System.UInt32
System.UInt64
System.Char
System.Boolean
System.Single
System.Double
System.Decimal
System.String
System.Object
System.Object

Konstante

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


Osnovni operator dodeljivanja

Izraz je sekvenca operatora i operanada

Konstante ili promenljive koje uestvuju u izrazima nazivaju se operandi

Operator je simbol koji precizira koju akciju treba izvriti nad operandima

Operacije nad jednim operandom nazivaju se unarne operacije, a operacije nad dva operanda nazivaju se binarne
operacije

Osnovni operator dodeljivanja je binarni i predstavlja se simbolom =

Osnovni operator dodeljivanja ( = ) prouzrokuje da se vrednost operanda na desnoj strani dodeli operandu na levoj
strani

Operatori dodeljivanja imaju najnii prioritet


Aritmetiki operatori

Aritmetike operacije su:

Mnoenje (*)

Deljenje (/)

Celobrojni ostatak (%)

Sabiranje i oduzimanje (+, -)

Najvei prioritet ima unarni minus, zatim multiplikativne operacije i na kraju su aditivne operacije
Inkrementiranje i dekrementiranje

Operacija inkrementiranja (++)

Operacija dekrementiranja (--)

Obe operacije mogu imati prefiksni oblik tj. nalaze se ispred promenljive i sufiksni oblik tj. nalaze se iza promenljive

Veeg su prioriteta od aritmetikih operatora


Operatori poreenja

Operacije poreenja su:

Vee (>)

Vee ili jednako (>=)

Manje (<)

Manje ili jednako (<=)

Jednako (==)

Razliito (!=)

Rezultat izvravanja operacije je logika vrednost true ako je uslov ispunjen, u suprotnom je false.


Manjeg su prioriteta od aritmetikih operatora
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


Grananja u programu
1. Naredba if
2. Naredba if-else
3. if-else if
4. Naredba viestrukog izbora switch
Programske petlje
1. While petlja
2. Petlja for

Naredba for koristi se u situacijama kada je unapred poznat broj ciklusa

Naredba for ima sledeu strukturu:


3. do-while petlja
Enumeracije

Enumeracioni tip specificira skup imenovanih konstanti

Prednosti korienja enumeracija:

Lake je odravanje koda jer se promenljivama dodeljuju samo oekivane vrednosti

Kod je lake itati jer se vrednostima dodeljuju imena koja je lako identifikovati

Lake je pisanje koda jer IntelliSense prikazuje listu moguih vrednosti koju moemo koristiti
Enumeracijski tip: Definie se unutar klase ili unutar namespace-a, Ne unutar metode !
Nizovi

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

Naredba foreach
Dvodimenzionalan niz

Osnovni koncepti OOP-a


Apstraktni tipovi podataka

Ugraeni (osnovni, primitivni tipovi podataka) npr. float, int, double, object,...

Ravnopravno se definiu korisniki definisani tipovi apstraktni tipovi podataka: TekuciRacun, Osoba, Student,

Proizvoljan broj primeraka nekog tipa i mogu se vriti operacije nad njima
Enkapsulacija

Enkapsulacija je sposobnost objekta da skriva svoje unutranje podatke i implementacione detalje

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


Odnos klase i objekata

Klasa :

To je model koji opisuje kako kreirati objekat

je kao ematski plan(skica)

Objekti:

Sadri podatke (polja) i metode


Objekat je predstava nekog entiteta iz realnog sveta
Instance klase
Moe biti vie objekata (instanci) klase

Methods
Properties
Events

Funkcionalnosti enkapsulirane unutar klase

Delegates
Constructors
Destructors

Kreiranje objekata
Constants

Objekti su inicijalno neoznaeni

Podrazumevana vrednost objekta je null


Enumerations

Da bi se koristila promenljiva tipa klase, klasa se mora instancirati

Nova instanca klase kreira se korienjem operatora new

Operator new prouzrokuje da:


Fields

CLR alocira memoriju za objekat

poziva konstruktor da inicijalizuje objekat

Da bi se pristupilo javnom lanu klase koristi se ime instance iza koga sledi operator taka
Metode klase

Metode klase predstavljaju funkcije lanice klase.

Svaka metoda sadri :

tip podataka koga metoda vraa (ili void ukoliko ne vraa podatke)

naziv(ime metode)

listu parametara

telo metode

Ukoliko metoda vraa neku vrednost, onda se unutar tela metode mora pozvati naredba return.
Definisanje prava pristupa lanovima klase
Deklaracija

Definicija

public

pristup nije ogranien

private

pristup je ogranien na klasu koja sadri tog lana

internal

pristup je ogranien na aplikaciju

protected

Pristup je ogranien na lanove klase i klase izvedenih iz te klase

Svojstva (Properties)
public decimal Plata
{
get { return plata; }
set { plata = value; }
}
Postavljanje privatnog set aksesora

class Osoba
{
public Guid Id { get; private set; }
public string Ime { get; set; }
public string Prezime { get; set; }
public Osoba()
{
this.Id = Guid.NewGuid();
}
}

Kreiranje anonimnog objekta


Kljuna re var ukazuje kompajleru da odredi tip na osnovu desne strane izraza za inicijalizaciju. To moe biti ugraeni tip,
anonimni tip ili korisniki definisani tip podataka.
Statiki lanovi klase

Pripadaju klasi a ne objektu klase

Pristupa im se preko imena klase

I metode i polja klase mogu biti statiki

Pozivaju se bez kreiranja objekata klase


Statike klase

Statike klase sadre samo statike lanove

Ne mogu se nasleivati

Statiki konstruktori se implicitno pozivaju (ne koristi se kljuna re new)

Modifikator pristupa nije dozvoljen kod statikih konstruktora

Nasleivanje i polimorfizam
Nasleivanje

Nasleivanje omoguava da se kreiraju novi tipovi podataka na osnovu ve postojeih tipova

Nasleivanje je vrsta relacije imeu osnovne(bazne) klase i izvedenih klasa

Izvedena klasa nasleuje sva polja i metode osnovne klase

Izvedena klasa ima lanove svojstvene samo izvedenoj klasi

Izvedena klasa postaje vie specijalizovana

Osnovna klasa se naziva jo i natklasa, bazna klasa, roditeljska klasa (parent class), super klasa

Izvedena klasa se naziva jo klasa potomak (child class) i podklasa

Izvedena klasa moe da nasledi samo jednu baznu klasu

Nasleivanje redukuje ponavljanje koda

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

Vrednosni tipovi su seald implicitno tj. ne mogu se nasleivati


Nasleivanje u .NET Frameworku

Svi tipovi u .NET frameworku su nasleeni direktno ili indirektno iz klase System.Object
Polimorfizam

Polimorfizam je ponaanje nasleenog tipa na njemu svojstven nain.


Prvo pravilo polimorfizma
Izvedena klasa se uvek moe tretirati kao njena bazna klasa
Drugo pravilo polimorfizma
Uvek se poziva najbolja metoda.
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
Pojam windows forme

Forma je osnovni elemenat korisnikog interfejsa

Forma je kontrola izvedena iz klase Form a koja je izvedena iz klase ContainerControl

Windows forme se kreiraju u sluajevima kreiranja desktop aplikacija i kada se oekuje da klijentski raunari imaju
dovoljno snage da izvre odgovarajuu obradu podataka

ASP.NET Web forme se kreiraju u sluajevima kada je korisniki interfejs web browser i za aplikacije koje se
objavljuju putem web-a

Svojstva windows forme

Name ovo svojstvo postavlje ime forme odnosno ime odgovarujue klase

public partial class Form1 : Form


AcceptButton pomou ovog propertija se postavlja koje e dugme biti kliknuto kada korisnik pritisne taster ENTER
CancelButton ovaj properti odreuje koje e dugme biti kliknuto kada se pritisne ESC taster
ControlBox odreuje da li forma sadri dugmad za minimizaciju , maksimizaciju,za zatvaranje prozora
MinimizeBox, MaximizeBox svojstva omoguavaju prikazivanje i sakrivanje dugmadi za maksimiziranje i
minimiziranje
Text property odreuje tekst koji e biti prikazan na naslovnoj liniji forme
StartPosition odreuje poetnu poziciju forme na ekranu
WindowState svojstvo omoguava prikaz forme u normalnoj veliiti, minimiziranu i maksimiziranu

Kontrola 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


Kontrola Button

Na dugme se moe kliknuti miem, pritiskom na taster ENTER, pritiskom na taster ESC ili pritiskom na SPACE
taster(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

Moe se koristiti DialogResult property dugmeta da bi se specificirala povratna vrednost ShowDialog() metode

Pozivom metode button1.PerformClick() simulira se klik korisnika na dugme button1


TextBox kontrola

Koristi se za prihvatanje ulaza od strane korisnika ili za prikaz vrednosti

Text property se koristi za itanje sadraja tekst boksa ili prikaz sadraja u tekst boksu

Metoda Clear() brie sadraj ove kontrole

Metoda Focus() postavlja fokus u odreenu TextBox kontrolu

MaxLength definisanje maksimalnog broja karaktera za TextBox

PasswordChar omoguava da se prikazuje odreeni znak kada korisnik unosi tekst

Enabled svojstvo postavljeno na false omoguava da se kreira read-only kontrola

Podrazumevani dogaaj ove kontrole je TextChanged koji se generie svaki put kada se promeni tekst u TextBox
kontroli

Dogaaj KeyDown generie se kada se pritisne neki taster na tastaturi pre nego to se otpusti
Obrada dogaaja KeyDown

private void textBox1_KeyDown(object sender, KeyEventArgs e)


{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Pritisnuli ste taster ENTER","Poruka");
}
}

Obrada Closing dogaaja forme


private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult rez = MessageBox.Show("Da li zelite da izadjete?", "Obavestenje",
MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (rez == DialogResult.No)
{
e.Cancel = true;
}
}

Osnovne karakteristike RichTextBox kontrole

Svojstvo Multiline je podrazumevano postavljeno na vednost true

Svojstvo AcceptsTab odreuje da li je mogue koristiti taster TAB unutar ove kontrole

Metoda AppendText(String) dodaje tekst na vee postojei tekst


Svojstvo Text ita ili setuje sadraj ove kontrole
Metoda Clear() brie sadraj kontrole
Metoda SaveFile() uva sadraj RichTextBox kntrole u fajl
Metoda LoadFile() uitava sadraj fajla u RichTextBox kontrolu

Metoda SaveFile()
Mora postojati folder Temp na fajl sistemu
Metoda LoadFile()
Metoda Clear()
CheckBox kontrola

U jednom trenutku moe biti ekirano vie od jednog ek dugmeta

Svojstvo Text definie tekst koji e se pojaviti pored polja za potvrdu

Svojstvo Checked slui za itanje ili setovanje stanja CheckBox kontrole

Dogaaj CheckedChanged se okida kada CheckBox kontrola prelazi iz stanja ekirano u stanje deekirano ili
obrnuto.
RadioButton kontrola

Samo jedno radio dugme u grupi moe biti ekirano u jednom trenutku

Svojstvo Text definie tekst koji e se pojaviti pored polja za potvrdu

Svojstvo Checked slui za itanje ili setovanje stanja CheckBox kontrole

Dogaaj CheckedChanged se okida kada RadioButton kontrola prelazi iz stanja ekirano u stanje deekirano ili
obrnuto.
Kreiranje nemodalne forme

private void button1_Click(object sender, EventArgs e)


{
Form2 f2 = new Form2();
f2.Show();
}

Zatvaranje nemodalne forme


Zatvaranjem nemodalne forme unitava se odgovarajui objekat forme u memoriji.
Kreiranje modalne forme
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
f2.Dispose();
}

Zatvaranjem modalne forme, objekat forme se ne unitava.

Rad sa stringovima i datumsko-vremenskim vrednostima


Klasa Object

Svaki objekat u C# je izveden iz bazne klase System.Object

Nadimak za ovu klasu je object

Tipu object se moe pridruiti bilo koji tip

public virtual string ToString(); - metoda vraa string koji opisuje instancu klase

Metoda GetType() daje tip instance objekta


Stringovi

String je nepromenjiva sekvenca unicode karaktera

Metoda koja menja string u stvari vraa promenjenu kopiju dok originalni string ostaje nepromenjen sve dok se ne
uniti od strane Garbage Collector-a

Stringovi se mogu sortirati, kopirati, konvertovati u druge tipove i mogua je njihova enumeracija korienjem foreach
petlje

Operator + se koristi za nadovezivanje stringova (konkatenaciju)


public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable

String.Format()
Metode EndsWith() i StrartsWith()
Metode ToUpper() i ToLower()
Poreenje stringova CompareTo()
Pronalaenje pozicije karaktera ili podstringa u stringu IndexOF()
Izdvajanje podstringa Substring()
Metoda Split()
Metode PadLeft() i PadRight()
Osobina nepromenljivosti stringova

Stringovi su nepromenljivi(immutable) tj. nakon toga to se string sauva u memoriji ta memorijska lokacija se ne
moe promeniti

Linija koda: s += i.ToString(); 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


Klasa StringBuilder

String bilder alocira inicijalnu vrednost od 16 karaktera i kako string postaje vei alocirana memorija se proirila da bi
se prilagodila duini stringa (slino kao kod kolekcija)
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
Pojam izuzetaka

Izuzetak je objekat koji sadri informacije o greci koja nastaje tokom izvravanja koda

Izuzetak je objekat izveden iz klase Exception ili klase koja je izvedena iz klase Exception

Izuzetak se izbacuje od strane CLR ili od strane koda

Izuzeci se obrauju korienjem kljunih rei try, catch i finally


Obrada izuzetaka

Blok try zahteva postojanje catch bloka i/ili finally bloka

Kod unutar try bloka moe da izbacuje razliite tipove izuzetaka

Naredbe unutar catch bloka se izvravaju ukoliko je izuzetak izbaen unutar try bloka.

Moe se definisati vie catch blokova od kojih svaki obrauje specijalizovanu klasu izuzetaka.

Blok finally omoguava da se oslobode resursi i da se specificira kod koji e se uvek izvriti nezavisno od toga da li je
dolo do izuzetka ili ne

Blok finally je opcioni blok


Korienje vie catch blokova

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.


Standardni windows dijalozi

Nalaze se u Dialogs sekciji Toolboxa

Instanciraju se prevlaenjem na windows formu

OpenFileDialog

SaveFileDialog

FontDialog

ColorDialog

FolderBrowserDialog

Nizovi

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
foreach

Pojam kolekcije

Kolekcije se upotrebljavaju za upravljenje grupama objekata i imaju vie funkcionalnosti nego nizovi

Veliina niza se mora unapred definisati dok to nije sluaj sa kolekcijama

Klase kolekcija nalaze se u prostoru imena System.Collections

Klase kolekcija su definisane na bazi jasno definisanih interfejsa

Negenerike kolekcije rade sa tipom podataka object

Primeri negenerikih kolekcija

Klase

ArrayList

Queue

Stack

Hashtable

Neophodno kastovanje lanova kolekcije u njihov stvaran tip

Ove kolekcije mogu miksovati razliite tipove podataka

Nisu type-safe
Interfejsi

IEnumerable sadri enumerator koji omoguava jednostavnu iteraciju kroz kolekciju


ICollection definie broj elemenata u kolekciji, enumeratore negenerike kolekcije
IList interfejs predstavlja negeneriku kolekciju stavki kojima se moe pristupiti na osnovu indeksa
IDictionary predstavlja negeneriku kolekciju parova(klju,vrednost)

Kolekcija ArrayList

Ova kolekcija podrava dinamike nizove

Elementima liste pristupa se preko indeksa kao i kod niza

Za razliku od niza nije neophodno unapred poznavati broj elemenata

Metoda Add(object) dodaje objekat na kraj liste

Metoda Clear() brie sve elemente iz liste

Metoda Insert(pozicija, vrednost) ubacuje objekat vrednost na pozicuju pozicija

Metoda RemoveAt(index) brie elemenat sa indeksom index iz liste

public class ArrayList : IList, ICollection, IEnumerable, ICloneable

Metoda Remove(object) uklanja prvo pojavljivanje specifinog objekta iz kolekcije

Svojstvo Count daje broj lanova kolekcije

Metoda Contains(object) odreuje da li se odreeni element nalazi u kolekciji

Metoda Sort() sortira elemente kolekcije

Metoda Reverse() prikazuje emente kolekcijeu inverznom redosledu

Metoda ToArray() kopira elemente liste u jednodimenzionalan niz


Generike liste - List<T>
Generiki Redovi (Queues)

Queue: FIFO struktura (first in, first-out)


Metoda Enqueue() dodaje objekat u red
Metoda Dequeue() skida najstariji elemenat (koji je prvi dodat u red) iz reda
Metoda GetEnumerator() vraa iterator (objekat tipa IEnumerator<T>) kojim se vri jednostavan prolaz kroz red

Generiki stekovi (Stacks)

Stack je LIFO(Last-in, first-out) struktura

Metoda Push() stavlja objekat na stek

Metod Pop() skida najmlai objekat(koji je posledni stavljen na stek) sa steka

Metoda GetEnumerator() takoe vraa iterator kojim se vri iteracija kroz elemente liste.

Generiki renici
Dictionary

Dictionary je kolekcija koja pridruuje klju (key) nekoj vrednosti (value)

Dictionary<TKey, TValue>

Pronalaenje vrednosti korienjem njemu pridruenog kljua je veoma brzo

Elementi renika su lanovi KeyValuePair<TKey,Tvalue> strukture

ComboBox kontrola

Svojstvo Items daje kolekciju stavki ComboBox kontrole


SelectedIndex svojstvo vraa indeks selektovane stavke kombo boksa

int selectedIndex = comboBox1.SelectedIndex;


SelectedItem vraa selektovanu stavku kombo boksa koja je tipa object

object selectedItem = comboBox1.SelectedItem;


Dodavanje stavki u kombo boks:

comboBox1.Items.Add(stavka1);

comboBox1.Items.AddRange(new object[] = {stavka1,stavka2,stavka3});

Svojstva ListBox kontrole

SelectedIndices svojstvo vraa kolekciju selektovanih indeksa


SelectedIndex
SelectionMode svojstvo odreuje koliko stavki moe biti selektovanano u ListBox kontroli

MultiSimple omoguava selektovanje vie stavki

MultiExtended omoguava korienje tastera SHIFT


SelectedItems vraa kolekciju selektovanih stavki
SelectedItem

ADO.NET

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


Prostori imena za rad sa podacima su

System.Data

System.Data.SqlClient

System.Data.OleDb

System.Data.SqlTypes

System.Xml

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


Korienje ADO.NET klasa u konektovanom scenariju

Otvaranje konekcije
Izvravanje komande
Zatvaranje konekcije

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
Korienje ADO.NET klasa u diskonektovanom scenariju

Otvaranje konekcije
Punjenje DataSet-a
Zatvaranje konekcije
Obrada podataka u DataSet-u
Otvaranje konekcije
Auriranje izvora podataka
Zatvaranje konekcije

Konekcije

Pre bilo kakvog rada sa bazom podataka potrebno je kreirati a zatim otvoriti konekciju

U ADO.NET se kreira objekat klase XxxConnection

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
SqlConnection objekat

Svaki SqlConnection objekat je izveden iz klase DbConnection koja se nalazi u prostoru imena System.Data.Common

Klasa DbConnection predstavlja konekciju na bazu podataka

Svojstva klase DbConnection

ConnectionString svojstvo definie string koji se koristi za otvaranje konekcije

Svojstvo DataSource specificira ime database servera na koji se vri konekcija

Svojstvo Database specificira ime baze na koju se vri konekcija

Svojstvo State specificira stanje konekcije

Svostvo ConnectionTimeout specificira vreme dozvoljeno za uspostavljenje konekcije nakon ega se generie poruka
o greci
Metode i dogaaji klase DbConnection

Metoda Open() otvara konekciju na bazu podataka koristei vrednosti specificirane u konekcionom stringu

Metoda Close() zatvara konekciju sa bazom podataka i oslobaa sistemske resurse

Metoda BeginTransaction() otpoinje transakciju nad bazom

Dogaaj StateChange se trigeruje kada se stanje konekcije menja (npr. iz otvorenog u zatvoreno)
Objekat SqlCommand

Koristi se za izvravanje SQL komandi i uskladitenih procedura nad bazom podataka

SqlCommand ili OleDbCommand

Objekat SqlCommand omoguava direktan pristup podacima u bazi u konektovanom okruenju

Pomou njega mogue je izvravati SELECT, INSERT, UPDATE i DELETE naredbe nad elementima baze podataka
Svojstva SqlCommand objekta

Svojstvo CommandText predstavlja tekst SQL komande ili naziv uskladitene procedure

CommandType svojstvo se setuje na vrednost CommandType.Text ili na vrednost CommandType.StoredProcedure

Connection svojstvo odreuje objekat SqlConnection koji e SqlCommand objekat koristiti

Parameters svojstvo daje kolekciju parametara SqlCommand objekta koji se koriste za izvravanje parametarskih
upita
Metode SqlCommand klase

Metoda ExecuteNonQuery() izvrava izvrava SQL komande ili uskladitene procedure koje ne vraaju vrednosti
(INSERT, UPDATE, DELETE)

Metoda ExecuteReader() izvrava komande koje vtaaju tabelarne podatke (SELECT)

Metoda ExecuteScalar() se koristi za izvravanje SQL komandi ili uskladitenih procedura koje vraaju jednu skalarnu
vrednost
SqlDataReader

SqlDataReader je brz (read-only,forward -only) kursor koji se pomera kroz skup zapisa

Pristup podacima korienjem objekta SqlDataReader sastoji se od sledeih koraka:

Kreira se objekat SqlConnection

Kreira se SqlCommand objekat sa odgovarajuim SELECT upitom

Otvara se konekcija

Izvrava se SqlCommand.ExecuteReader( ) metoda koja vraa objekat SqlDataReader

Koristei Read( ) metodu objekta DataReader prolazi se kroz sve vrste

Kada Read() metoda vrati false zatvara se objekat SqlDataReader i objekat SqlConnection
Svojstva i metode DataReader objekta

Read() metoda

uitava zapis

vraa true ako ima jo zapisa, false ukoliko se stiglo do poslednjeg zapisa

Podrazumevana pozicija SqlDataReader-a je ispred prvog zapisa

Pristup vrednosti u koloni odreenog reda na koga SqlDataReader pokazuje

Vraene vrednosti su u izvornom formatu i potrebno je izvriti njihovo kastovanje da bi mogle da se koriste

aReader[ImeKolone] ili aReader[PozicijaKolone].

GetDateTime(), GetDouble(),GetInt32() itd.

Metoda Convert.IsDbNull() testira da je vrednost kolone u tekuem zapis null vrednost

Rad sa parametrizovanim upitima


Parametri u SQL komandama

Parametri se mogu shvatiti kao promenljive koje se koriste za razmenu podataka izmeu aplikacije i baze podataka

Tip parametra se definie korienjem standardne System.Data.SqlDbType enumeracije


Tipian primer korienja parametra je WHERE klauzula u SQL upitu

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


Klasa SqlDataAdapter

Ova klasa predstavlja most izmeu izvora podataka i objekta DataSet

Objekat DataSet se koristi za uvanje lokalne kopije podataka iz baze

SqlDataAdapter prima podatke od objekta SqlConnection i prosleuje ih objektu DataSet (itanje iz baze)

Promene na podacima iz objekta DataSet prosleuje nazad do objekta SqlConnection kako bi se podaci aurirali u
samom izvoru podataka (upis u bazu auriranje)
Karakteristike objekta SqlDataAdapter

Koristi SqlCommand objekte da komunicira sa bazom

SelectCommand predstavlja komandu kojom se itaju podaci iz baze

Insert, Update i Delete komande se koristi da se promene nad podacima u DataSetu iskoriste za auriranje podataka u
bazi

Pri kreiranju SqlDataAdapter objekta mora se specificirati SELECT komanda


Svojstva i metode SqlDataAdapter klase

Svojstva:

SelectCommand

InsertCommand

UpdateCommand

DeleteCommand

Metode:

Fill

Update
DataSet objekat

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 DataSet-u

Podaci u DataSet-u se uvaju na slian nain kao to se uvaju u relacionoj bazi podataka

Podaci iz DataSet-a mogu se prikazati u XML formatu


Svojstva objekta DataSet

Tables property daje kolekciju DataTable objekata koji se nalaze u DataSet-u

Relations property predstavlja kolekciju objekata DataRelation, objekti DataRelations se koriste za opis veza izmeu
tabela u DataSet-u

Objekat DataTable ima sledee kolekcije

Columns (kolekcija objekata DataColumn)

Rows (kolekcija objekata DataRow)

Constraints (kolekcija objekata Constraint)

ChildRelations (kolekcija objekata DataRelation)


Filtriranje i sortiranje podataka

Metoda Select() objekta DataTable

Naredba LIKE

Netipizirani DataSetovi

Koriste se klase DataSet, DataTable, DataColumn i DataRow


Ove klase sadre kolekcije koje vraaju standardne objekte nezavisno od tipa podataka u DataSet-u
Npr. Columns kolekcija DataRow objekta uvek vraa objekte tipa DataColumn nezavisno od tipa podataka u tim
kolonama
Kolekcija Tables objekta klase DataSet uvek prikazuje objekte tipa DataTable nezavisno od toga koja se tabela koristi
Standardna DataSet klasa koje je ugraene u .NET biblioteku predstavlja netipizirani DataSet

Tipizirani DataSetovi

Visual Studio 2015 omoguava kreiranje i tzv. tipiziranih DataSetova


Tipizirani DataSetovi su klase koje su izvedene iz klase DataSet, i sadre svojstva i metode koje omoguavaju pristup
sadrajima unutar DataSeta na tipski bezbedan nain (type-safe)
Struktura tipskog DataSeta se predstavlja XML emom, tj. fajlom koji ima xsd ekstenziju

Povezivanje podataka

Povezivanje podataka (Data binding) je tehnika u kojoj se podaci iz baze podataka koriste za popunjavanje kontrola na
windows ili web formi uz minimalni napor od strane programera.

Povezivanje podataka sa kontrolom oznaava povezivanje nekog svojstva kontrole sa vrednou iz izvora podataka.

Npr. kod kontrola kao to su Label i TextBox vri se jednostavno povezivanje njihovog Text svojstva sa kolonom jedne
vrste tabele iz baze podataka (jedne elije tabele).

Takoe se mogu povezivati kontrole kao to su ComboBox, ListBox sa kolonom iz tabele u bazi podataka i tada se radi
o kompleksnom povezivanju.

Kompleksnije kontrole kao to su DataGridView omoguavaju prikaz kompletnog sadraj tabele ili pogleda.
BindingSource kontrola

Slui kao posrednik izmeu kontrole i izvora podataka.

Obezbeuje uobiajeni interfejs i funkcionalnost koja omoguava da se kontrola povee sa izvorom podataka.

Kada god se povezuje kontrola sa izvorom podataka u dizajn modu ili korienjem wizarda, kreira se BindingSource
kontrola.

Instanca ove kontrole se moe dodati na windows formu i manuelno.

Prvi korak u konfigurisanju BindingSource kontrole je definisanje njenog svojstva DataSource.


Metode BindingSource kontrole

Metoda EndEdit izvrava ekajue promene na pridruenom izvoru podataka (najee DataSet)

CancelEdit metoda ponitava operaciju editovanja

Metoda AddNew dodaju novu stavku u listu podataka sa kojom je povezana BindingSource kontrola (najee dodaje
red u DataTable objekat)

RemoveCurrent metoda uklanja tekui lan iz liste (najee red iz DataTable objekta)
BindingNavigator

BindingNavigator je kontrola koja je izvedena iz kontrole ToolStrip i omoguava navigaciju kroz podatke korienjem
standardnog interfejsa.

Omoguava kretanje kroz vrste neke tabele, skok na prvu vrstu ili na poslednju vrstu tabele.

Takoe postoje dugmad za dodavanje ili brisanje vrste iz DataSeta.

Njeno svojstvo BindingSource mora biti postavljeno na vrednost neke instance klase BindingSource.
Svojstvo DisplayMember definie kolonu iz tabele koju treba prikazati.
Svojstvo ValueMember odreuje vrednost stavke comboBox kontrole

DataGridView kontrola
Uvod u DataGridView

DataGridView je mona, fleksibilna kontrola, jednostavna za korienje, koja se koristi za prikaz tabelarnih podataka.

Moe da se povee sa jednom tabelom iz baze ili sa objektom koji je izveden iz tabele.

Korienjem svojstva DataSource povezuje sa sa objektom klase DataTable ili objektom klase koja je izvedena iz klase
DataTable.

Ako se izvri povezivanje sa objektom klase DataSet mora se specificirati i njeno svojstvo DataMember kojim se
naznaava sa kojom tabelom se vri povezivanje

DataGridView kreira jednu kolonu za svaku kolonu iz izvora podataka

Heder kolone kreira na osnovu naziva odgovarajueg atributa iz tabele

Dozvoljava razliite tipove selekcije: moe se selektovati jedna ili vie vrsta, jedna ili vie kolona, jedna ili vie elija,
ili cela tabela (klikom na eliju u gornjem levom uglu)
Osobine DataGridView kontrole

Korienjem tastera Tab prelazi se iz jedne u drugu eliju tabele

Ima automatski tooltip kojim se prikazuje ceo sadraj elije kada se pokaziva mia nalazi iznad nje

Podrava automatsko sortiranje, klikom na heder kolone

Dvostrukim klikom izmeu hedera kolona vri se automatsko podeavanje irine kolone.
Omoguava unos sadraja u eliju nakon dvostrukog klika na eliju

DataGridView objekti

Svojstvo Colums daje kolekciju DataGridViewColumn objekata

Svojstvo Rows daje kolekciju DataGridViewRow objekata

DataGridViewRow objekat ima svojstvo Cells kojim se prikazuje kolekcija DataGridViewCell objekata
Selekcija u DataGridView kontroli

DataGridView kontrola ima svojstvo SelectionMode koje moe imati sledee vrednosti:

CellSelect

FullColumnSelect

FullRowSelect

ColumnHeaderSelect

RowHeaderSelect

Svojstvo MultiSelect postavljeno na vrednost True omoguava selektovanje vie redova, kolona ili elija.
Svojstva DataGridView kontrole vezana za selekciju

SelectedCells svojstvo vraa kolekciju DataGridViewCell objekat nezavisno od moda selekcije DataGridView kontrole

SelectedRows

SelectedColumns
Klase izvedene iz klase DataGridViewColumn

DataGridViewButtonColumn prikazuje tekst kao dugme na koje se moe kliknuti, njoj odgovarajua klasa za eliju je
DataGridViewButtonCell.

DataGridViewLinkColumn (DataGridViewLinkCell) , funkcionalnost ovakve kolone je slina funkcionalnosti Button


kolone.

DataGridViewCheckBoxColumn (DataGridViewCheckBoxCell). Ovaj tip kolone se automatski kreira pri vizuelnom


povezivanju DataGridView kontrole za tabelu koja sadri Boolean tip podataka.

DataGridViewComboBoxColumn (DataGridViewComboBoxCell). Koristi se u situacijama kada je potrebno


ograniiti unos u eliju.

DataGridViewImageColumn (DataGridViewImageCell). Koristi se za prikaz slika.

DataGridViewTextBoxColumn (DataGridViewTextBoxCell). Ovakva kolona se koristi za prikaz teksta i predstavlja


podrazumevani tip kolone u DataGridView kontroli.

ListView kontrola

ListView omoguava da se prikae lista stavki kojima se mogu pridruiti slike kao u Windows eksploreru
Omoguava da se stavke prikazuju na jedan od etiri razliita naina:

prikaz teksta sa velikim ikonama

prikaz teksta sa malim ikonama

prikaz vertikalne liste

prikaz detalja
Stavke ListView kontrole su objekti klase ListViewItem

Svojstva ListView kontrole

Svojstvo Columns sadri kolekciju kolona koje e biti prikazani u reimu detalja

Svojstvo Items daje kolekciju ListViewItem objekata koji e biti prikazani u ListView kontroli

Svojstvo LargeImageList ukazuje na ImageList komponentu iz koje e biti prikazane slike u ListView kontroli kada je
njeno View svojstvo postavljeno na vrednost LargeIcon

Svojstvo SmalImageList ukazuje na ImageList komponentu iz koje se prikazuju slike kada je View svojstvo ListView
kontrole postavljeno na vrednost SmallIcon

Svojstvo View pokazuje nain na koji se kontrola ListView prikazuje

You might also like