10
Grafičke aplikacije – grafički UI Grafičke windows aplikacije se počev od .NET Framework 3.0 mogu razvijati u WPF-u (Windows Presentation Foundation) WPF je novi grafički podsistem Windows-a za prikazivanje (rendering) grafičkog korisničkog inteface-a (u početku nazvan Avalon) WPF se bazira na XAML (eXtensible Application Markup Language) koji se koristi za definisanje grafičkog izgleda aplikacije (grafičkog korisničkog sučelja) WPF omoguduje da se definiše izgled grafičke aplikacije nezavisno od kôda koji se nalazi u pozadini WPF tip projekta WPF tip projekta u VS 2010/2012 omoguduje da se veoma jednostavno kreiraju grafičke aplikacije pri čemu VS kreira kostur grafičke aplikacije i time programera oslobađa od mnogih zadataka, poput detaljnog poznavanja WPF-a U osnovi korištenja XAML-a za WPF je ideja slična HTML-u koji definiše grafički izgled web strane, dok se za pisanje kôda aplikacije koristi Java Script jezik U WPF-u se, dakle, za grafičko korisničko sučelje aplikacije koristi XAML, a za pisanje kôda aplikacije neki od .NET jezika : C#, VB, C++ XAML XAML je deklarativni jezik tipa XML-a koji se osim za WPF koristi još i za : Silverlight(grafički sistem sličan WPF-u koji se koristi na web-u za omogudavanje raznih funkcionalnosti kao kod Adobe Flash-a, koji objedinjuje multimediju, grafiku, animacije), WF(Windows Workflow Foundation, što je tehnologija za deklarativno programiranje gde se ne navodi eksplicitna logika kako se nešto izvršava, ved se opisuje zadatak – šta treba uraditi) Kod WPF-a, XAML se koristi za kreiranje vidljivih elemenata korisničkog interface-a i za odvajanje logike programa koji ih koristi. Klasa Window Korisnici komuniciraju sa WPF aplikacijom preko prozora. Osnovna funkcija prozora je da se u njega smjeste svi vizuelni elementi koji se koriste za komunikaciju sa korisnikom. Za kreiranje prozora se koristi Window klasa koja omoguduje: Prikazivanje prozora Podešavanje veličine, pozicije i izgleda prozora Prikaz specifičnog grafičkog sadržaja aplikacije Upravljanje životnim vijekom prozora Implementacija prozora Implementacija prozora obuhvata dva aspekta i to : izgled prozora i funkcionalni aspekt koji određuje način komunikacije sa korisnikom Kod WPF-a, implementacija izgleda i ponašanja se može postidi preko XAML-a i putem kôda-u .NET programskom jeziku Uobičajeno je da se izgled prozora implementira putem XAML-a, dok se funkcionalnost implementira preko kôda programskog jezika (C#) u pozadini prozora (tzv. Code Behind) XAML file koji definiše izgled prozora se povezuje sa korespodentnim file-om koji sadrži programski kôd. XAML file <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Project.MainWindow"> <!-- Client area (for content) --> </Window> XAML element Window (prozor) sadrži nekoliko atributa, i to dva atributa za imenski prostor xmlns (xml namespace) i xmlns:x kao i atribut x:Class Dva atributa, podrazumijevani xmlns i xmlns:x određuju dva imenska prostora i to xmlns za WPF i xmlns:x za XAML Oba imenska prostora su data u formi URI-a http:// (URI je kratica za uniform resource identifier, za http ima oblik //www.domena.tld/putanja_do_sadržaja) Podrazumijevani xmlns za WPF je dio xmlns:x-a za XAML. Razlog za to je, jer je WPF samo jedan vid korištenja XAML- a koji se još koristi i za Silverlight i WF. Da bi se imenski prostori razlikovali, koristi se prefix x: za XAML jer se češde koriste elementi WPF-a koji se nalaze u podrazumijevanom xmlns-u Za povezivanje XAML file-a sa programskim file-om (C#) koristi se atribut x:Class sa x prefiksom pošto se odnosi na XAML, sa vrijednošdu koja predstavlja potpuno ime partial klase koja je nasljednik od klase Window.

SU-I-i-II-test

Embed Size (px)

DESCRIPTION

SU PITANJA KOJA SE MOGU PRONAĆI NA TESTU

Citation preview

Page 1: SU-I-i-II-test

Grafičke aplikacije – grafički UI • Grafičke windows aplikacije se počev od .NET Framework 3.0 mogu razvijati u WPF-u (Windows Presentation

Foundation) • WPF je novi grafički podsistem Windows-a za prikazivanje (rendering) grafičkog korisničkog inteface-a (u početku

nazvan Avalon) • WPF se bazira na XAML (eXtensible Application Markup Language) koji se koristi za definisanje grafičkog izgleda

aplikacije (grafičkog korisničkog sučelja) • WPF omoguduje da se definiše izgled grafičke aplikacije nezavisno od kôda koji se nalazi u pozadini

WPF tip projekta • WPF tip projekta u VS 2010/2012 omoguduje da se veoma jednostavno kreiraju grafičke aplikacije pri čemu VS kreira

kostur grafičke aplikacije i time programera oslobađa od mnogih zadataka, poput detaljnog poznavanja WPF-a • U osnovi korištenja XAML-a za WPF je ideja slična HTML-u koji definiše grafički izgled web strane, dok se za pisanje

kôda aplikacije koristi Java Script jezik • U WPF-u se, dakle, za grafičko korisničko sučelje aplikacije koristi XAML, a za pisanje kôda aplikacije neki od .NET

jezika : C#, VB, C++ XAML

• XAML je deklarativni jezik tipa XML-a koji se osim za WPF koristi još i za : Silverlight(grafički sistem sličan WPF-u koji se koristi na web-u za omogudavanje raznih funkcionalnosti kao kod Adobe Flash-a, koji objedinjuje multimediju, grafiku, animacije), WF(Windows Workflow Foundation, što je tehnologija za deklarativno programiranje gde se ne navodi eksplicitna logika kako se nešto izvršava, ved se opisuje zadatak – šta treba uraditi)

• Kod WPF-a, XAML se koristi za kreiranje vidljivih elemenata korisničkog interface-a i za odvajanje logike programa koji ih koristi. Klasa Window

• Korisnici komuniciraju sa WPF aplikacijom preko prozora. • Osnovna funkcija prozora je da se u njega smjeste svi vizuelni elementi koji se koriste za komunikaciju sa korisnikom. • Za kreiranje prozora se koristi Window klasa koja omoguduje: • Prikazivanje prozora • Podešavanje veličine, pozicije i izgleda prozora • Prikaz specifičnog grafičkog sadržaja aplikacije • Upravljanje životnim vijekom prozora

Implementacija prozora

• Implementacija prozora obuhvata dva aspekta i to : • izgled prozora i • funkcionalni aspekt koji određuje način komunikacije sa korisnikom • Kod WPF-a, implementacija izgleda i ponašanja se može postidi preko XAML-a i putem kôda-u .NET programskom

jeziku • Uobičajeno je da se izgled prozora implementira putem XAML-a, dok se funkcionalnost implementira preko kôda

programskog jezika (C#) u pozadini prozora (tzv. Code Behind) • XAML file koji definiše izgled prozora se povezuje sa korespodentnim file-om koji sadrži programski kôd.

XAML file <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Project.MainWindow"> <!-- Client area (for content) --> </Window>

• XAML element Window (prozor) sadrži nekoliko atributa, i to dva atributa za imenski prostor xmlns (xml namespace) i xmlns:x kao i atribut x:Class

• Dva atributa, podrazumijevani xmlns i xmlns:x određuju dva imenska prostora i to xmlns za WPF i xmlns:x za XAML • Oba imenska prostora su data u formi URI-a http://

(URI je kratica za uniform resource identifier, za http ima oblik //www.domena.tld/putanja_do_sadržaja) • Podrazumijevani xmlns za WPF je dio xmlns:x-a za XAML. Razlog za to je, jer je WPF samo jedan vid korištenja XAML-

a koji se još koristi i za Silverlight i WF. • Da bi se imenski prostori razlikovali, koristi se prefix x: za XAML jer se češde koriste elementi WPF-a koji se nalaze u

podrazumijevanom xmlns-u • Za povezivanje XAML file-a sa programskim file-om (C#) koristi se atribut x:Class sa x prefiksom pošto se odnosi na

XAML, sa vrijednošdu koja predstavlja potpuno ime partial klase koja je nasljednik od klase Window.

Page 2: SU-I-i-II-test

Programski – C# file usingSystem.Windows; // Window namespace SDKSample { public partial class MainWindow : Window { publicMainWindow() { InitializeComponent(); } } } Veza XAML – C# file-ova

• Na osnovu vrijednosti x:Class atributa kreira se parcijalna klasa koja je nasljednik klase Window sa imenom navedenim u x:Class atributu.

• Na taj način se preko potpunog naziva parcijalne klase u x:Class atributu povezuju XAML i programski C# file. • U konstruktoru parcijalne klase se poziva metod InitializeComponent() koji registruje događaje i postavlja svojstva

koja su implementirana, tj. navedena u XAML file-u. Primjer aplikacije <Window x:Class=”Prvi.MainWindow” xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” Title=”MainWindow” Height=”300” Width=”300”> <Grid> </Grid> </Window> Vrijednost atributa x:Class daje potpuno ime klase Prvi.MainWindow koja implementira prozor. Vrijednost atributa Title daje naziv prozora u title bar-u, Vrijednosti atributa Height i Width daju dimenziju prozora. Vrijednosti atributa se mogu promjeniti u XAML file-u ili preko Properties prozora VStudio-a ili u C# kôdu. Grid element Element Window sadrži podrazumijevani panel element Grid. Panel elementi : Grid, StackPanel, WrapPanel, DockPanel i Canvas, sadrže kontrole i određuju raspored elemenata koje sadrže :

• Grid panel omoguduje određivanje tačne pozicije svake kontrole koju sadrži, pri dizajniranju – design time. Grid je tabela koja inicijalno ima 1 red i 1 kolonu, a može ih imati više,

• StackPanel automatski raspoređuje elemente koje sadrži po vertikali sve dok ih ima. • WrapPanel automatski raspoređuje elemente po horizontali sa prelaskom u novi red ako u prethodni svi elementi ne

mogu stati. • DockPanel se koristi za pozicioniranje elemenata na rubovima kontejnera. • Canvas je najosnovniji izgled u WPF. Njegovi elementi se postavljaju zadavanjem koordinata. Koordinate se mogu

navesti u odnosu na bilo koju stranu ploče koristedi svojstva (propertije) : Canvas.Left, Canvas.Top, Canvas.Bottom i Canvas.Right. Pozicioni paneli

• Pomenuti pozicioni paneli određuju kako se pomjeraju kontrolena formi kada se u run time-u mijenja veličina forme. • Kontrole se pri promjeni veličine forme automatski pomjeraju i mijenjaju veličinu prema tipu pozicionog panela u

kome se nalaze. Grid panel omoguduje da se precizno definiše mjesto gdje de se jedna ili više kontrola nalaziti na formi. Podešavanjeizgleda elemenata prozora

• Izgled elemenata prozora se može podešavati na razne načine: – podešavanjem atributa u prozoru Properties od VisualStudia – direktnim editovanjem atributa pojedinačnih elemenata u XAML kôdu – podešavanjem atributa elemenata iz kôda aplikacije koja je povezana sa prozorom– nalazi se u “pozadini”

WPF aplikacija • WPF aplikacija može da sadrži proizvoljno mnogo prozora koji se nalaze u posebnim file-ovima *.xaml • Početni prozor, tj. prozor od kojeg počinje izvršavanje WPF aplikacije se obilježava sa vrijednošdu svojstva StartupUri

elementa Application koji se nalazi u file-u App.xaml : StartupUri=”MainWindow.xaml”> <Application x:Class=”Project.App”

Page 3: SU-I-i-II-test

xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” StartupUri=”MainWindow.xaml”> <Application.Resources> .... </Application.Resources> </Application>

• Kada se aplikacija prevodi – kompajlira – build-uje, od App.xaml file-a se kreira objekat Application. • Ovaj objekat određuje životni vijek aplikacije i startuje početni prozor aplikacije određen sa vrijednošdu svojstva

StartupUri. • Application objekat i početni prozor su analogni klasi koja sadrži main metod od koga počinje izvršavanje konzolnih

programa • Da bi izvršavanje aplikacije otpočelo sa nekim drugim prozorom, treba samo promjeniti svojstvo StartupUri

WPF kontrole

• Kontrole kao što su TextBox, ComboBox, CheckBox, ListBox i druge se nalaze u WPF biblioteci. • Kada je prozor za dizajn u fokusu, sa ToolBox bar-a se prevlače kontrole na formu, što automatski uzrokuje ažuriranje

xaml kôda koji opisuje izgled forme. WPF Layout filozofija

• WPF prozor (Window) može sadržavati samo jedan element. • Za njegovo punjenje sa više elemenata i kreiranje praktičnijeg korisničkog sučelja potrebno je postaviti kontejner u

prozor i onda dodavati druge elemente u taj kontejner. • Tipično korisničko sučelje počinje sa Grid, WPF-ovim najsposobnijim kontejnerom, i sadrži druge layout kontejnere

koji služe za raspoređivanje manje grupe elemenata kao što su naslovljeni tekst boxovi, stavke u listi, ikone na alatnoj traci, kolona dugmadi i tako dalje. Layout kontejneri (kontejneri za raspoređivanje)

• Svi WPF kontejneri za raspoređivanje su ploče koje proizlaze iz apstraktne klase abstract System.Windows.Controls.Panel class

• Sama, bazna klasa Panel je polazište za druge specijaliziranije klase. • WPF nudi niz klasa izvedenih iz Panel klase koje se mogu koristiti za organiziranje rasporeda. • Ove klase nalaze se u System.Windows.Controls namespace-u. • Najosnovnije od ovih klasa su navedene u tabeli.

Klase za organiziranje rasporeda

Page 4: SU-I-i-II-test

StackPanel StackPanel je jedan od najjednostavnijih layout kontejnera. U njemu se elementi (djeca) redaju u jedan red ili kolonu.

StackPanel-LayoutProperties of Children

WrapPanel

• WrapPanelprikazuje elemente (kontrole) u koloni ili redu • Po default-u WrapPanel.Orientation svojstvo(property) je postavljeno na Horizontal. U ovom slučaju kontrole se

redaju s lijeva na desno u tekudem redu i zatim u sljededem redu. • Ukoliko odaberemo Vertical orijentaciju, kontrole se redaju odozgo nadolje u tekudem stupcu (koloni) i zatim u

sljededem stupcu. DockPanel

• Elementi-djeca se redaju duž ivica prozora (lijevo, gore, desno, dolje i posljednji element dolazi u sredinu prozora. • Za odabir ivice prozora za koju želimo zakačiti element.dijete koristimo svojstvo (property) Dock koji se može

postaviti na Left, Right, Top ili Bottom. Grid

• Omoguduje pozicioniranje elementa-djeteta u tačno određenu deliju/ delije zamišljene tabele (delija je presjek reda i kolone).

• Ako koistimo default-ni Grid layout mode, element-dijete, ako se ne definiše, postavlja se u deliju 0 (presjek prvog reda i prve kolone)

• Za svaki UI element u Grid kontejneru možemo postaviti vrijednosti za 4 margine koje određuju poziciju u deliji (top, left, bottom i right ).

• Element-dijete može zauzimati više delija (svojstvo RowSpan). UniformGrid

• Eksplicitno se navodi broj redova i kolona. • Specijalna kontrola koja uniformno raspoređuje elemente. • Elementi-djeca ove kontrole de biti istih dimenzija.

Canvas • Dozvoljava da postavljate objekte koristedi pozicioniranje po x i y osi. • Idealan je za predstavljanje kompleksnih grafičkih podataka. • Kada se koriste unutar Canvas panela, ne postoje nikakava ograničenja za elemente-djecu po pitanju njihove

pozicije. Oni se mogu preklapati, sjedi, dodirivati, ne dodirivati itd. • Zadnji element, ukoliko se pozicionira preko prethodno kreiranog elementa, je vidljiv. Vidljivost elemenata ovisi o

redoslijedu njihovog ubacivanja u canvas. • Možemo koristedi svojstvo Panel.ZIndexpromijeniti redoslijed prikaza elemenata.

InkCanvas • Ova kontrola omoguduje korisniku crtanje preko platna (Canvas) i kao rezultat daje sliku spremljenu u bajtima. • To je vrlo modan panel na kojem se može proizvesti objekat nacrtan korisnikovim slobodnim potezima na platnu. • Samo stavite InkCanvas kontrolu na WPF Window i korisnik de modi crtati preko ekrana.

EditingMode nam daje nekoliko načina za uređivanje InkCanvas. Kontrole

Page 5: SU-I-i-II-test

Šta je .NET okruženje?

.NET okruženje je nova i revolucionarna platforma za razvoj aplikacija napravljena od strane Microsofta.

Jedan od ključnih razloga za razvoj ove tehnologije je namjera da ona postane sredstvo kojim se vrši integracija različitih operativnih sistema(Windows, Linux, Macintosh, i dr.)

.NET okruženje daje mogudnost izrade Windows aplikacija, Web aplikacija, Web servisa i skoro svega ostalog što se može zamisliti.

.NET okruženje dizajnirano je tako da se može koristiti iz bilo kog jezika: C#, Managed C++, Visual Basic .NET, JScript

.NET, kao i raznih drugih.

Ne samo da svi oni imaju pristup .NET okruženju, ved mogu i međusobno komunicirati. Sasvim je mogude kod programiranja u jeziku C# koristiti kod napisan u Visual Basic .NET-u, kao i obrnuto.

Šta se nalazi unutar .NET okruženja?

.NET okruženje se najvedim dijelom sastoji od ogromne biblioteke kôda koju upotrebljavamo preko klijentskih jezika (kao što je C#) koristedi tehnike objektnoorijentisanog programiranja (OOP).

Ova biblioteka podijeljena je na različite module koje koristimo u zavisnosti od zadatka. Na primjer, jedan modul sadrži dijelove potrebne za pravljenje Windows aplikacija, drugi je vezan za mreže, a tredi za razvoj Weba. Neki moduli su podeljeni u različite podmodule, kao što su moduli za pravljenje Web servisa unutar modula za razvoj Weba.

Jedan dio biblioteke .NET okruženja definiše samo osnovne tipove. Tip je, ustvari, način na koji se predstavlja podatak (kao što je recimo sa int označena 32-bitna cjelobrojna veličina), a definicijom fundamentalnih tipova podataka olakšava se interoperatibilnost izmedu jezika koji koriste .NET okruženje.To se naziva sistem zajedničkih tipova tj. (engl. Common Type System - CTS).

Okruženje osim biblioteke posjeduje i .NET zajedničko izvršno jezičko okruženje (engl. Common Language Runtime- CLR), koje je odgovorno za izvršavanje svih aplikacija razvijenih uz pomod .NET biblioteke.

Kako napisati aplikaciju koristedi .NET okruženje?

Pisanje aplikacija unutar .NET okruženja, ustvari , znači pisanje kôda uz pomod .NET biblioteke kôda.(Koristi se bilo koji jezik koji podržava ovo okruženje)

Da bi se C# kôd izvršio neophodno ga je prevesti u jezik koji operativni sistemrazumije, poznat kao prirodni kôd (native kôd). Ovo prevođenje se još naziva i kompajliranje kôda, funkcija koju obavlja kompajler.

Unutar .NET okruženja ta operacija ima dvije faze :MSIL i JIT

I)

Kada kompajliramo kôd koristedi biblioteku .NET okruženja, ne pravimo odmah prirodni kod specifičan za operativni sistem. Umjesto toga, kompajliramo u Microsoftov posredni jezik (engl. Microsoft Intermediate Language - MSIL). Ovaj kôd nije određen ni jednim operativnim sistemom i nije namijenjen samo za jezik C#. Ostali .NET jezici - na primjer, Visual Basic .NET - takođe se kompajliraju u njega u svojoj prvoj fazi. VStudio de izvesti ovaj korak ukoliko ga koristimo pri razvoju C# aplikacija.

II)

Da bi se program izvršio, očigledno je potrebno još rada. Za taj posao zadužen je kompajler u pravo vrijeme (engl. Just-In-Time- JIT), koji prevodi MSIL u prirodni kôd specificiran od strane operativnog sistema i arhitekture same mašine na kojoj se program izvodi. Tek tada operativni sistem može izvršiti program. Pojam „u pravo vrijeme" označava da se MSIL kôd kompajlirasamo kada je to potrebno.

Page 6: SU-I-i-II-test

Sklopovi (engl. assembly)

Kada kompajliramo aplikaciju, MSIL kôd se smješta u posebne sklopove (engl. assembly).

Takvi sklopovi sadrže i izvršne programske datoteke koje mogu biti startovane direktno iz Windowsa bez potrebe za nekim drugim programima (imaju .exe nastavak) i biblioteke koje koriste i druge aplikacije (imaju .dll nastavak).

Sklopovi pored MSIL sadrže i takozvane meta informacije (odnosno podatke o podacima sadržanim u sklopu, nazvane još i metapodaci), kao i opcione resurse (dodatne podatke koje koristi MSIL, kao što su zvukovi i slike). Metapodaci dozvoljavaju sklopovima da budu potpuno samoopisujudi. Ne trebaju nam nikakve dodatne informacije da bi smo koristili sklopove

Upravljivi kod

Uloga CLR-a se ne zaustavlja onog trenutka kada smo kompajlirali kôd u MSIL, niti kada JIT kompajler sve to prevede u prirodni kôd.

Kôd napisan u .NET okruženju je upravljiv tokom svog izvršenja (ova faza se obično naziva izvršna). To znači da CLR vodi računa o našoj aplikaciji kroz upravljanje memorijom, obezbjeđivanje sigurnosti, dozvoljava međujezičko otklanjanje grešaka i tako dalje.

Suprotno ovome, aplikacije koje ne rade pod kontrolom CLR-a nazivaju se neupravljive, određeni jezici kao što je C++ mogu se koristiti za pisanje takvih aplikacija (na primjer, da bi se pristupilo funkcijama niskog stepena operativnog sistema).

U jeziku C# možemo napisati samo onaj kôd koji radi pod upravljivim okruženjem.

Sakupljanje otpada

Jedna od najvažnijih mogudnosti upravljivog kôda jeste koncept sakupljanja otpada. Ovo je metod .NET-a koji se stara o tome da memorija koju je aplikacija koristila tokom svog izvršenja bude obavezno ispražnjena kada aplikacija nije više u upotrebi. (Prije pojave .NET-a to je najčešde bila briga samih programera, te je usljed nekoliko malih grešaka memorija misteriozno gubila čitave blokove. To je najčešde bilo pradeno usporavanjem računara i obaveznim padom sistema. )

Sakupljanje otpada se odvija tako što učestalo ispituje memoriju računara i odbacuje sve što nije više potrebno. Ono nema neki vremenski okvir izvršavanja, može se dogoditi hiljadu puta u sekundi, jednom u nekoliko sekundi, ili kad god, ali de se sigurno dogoditi.

Uklapanje u cjelinu

1. Kôd za aplikaciju piše se korištenjem .NET kompatibilnog jezika kao što je C#:

2. Ovaj kôd se kompajlira u MSIL, koji je smješten u sklop:

3. Kôd koji se izvršava (bez obzira da li je sam po sebi izvršni ili ga koristi neki drugi kôd) mora se prethodno kompajlirati kroz JIT kompajler u prirodni kôd:

4. Prirodni kod se izvršava u kontekstu upravljanog CLR, zajedno sa bilo kojom drugom aplikacijom ili procesom:

Page 7: SU-I-i-II-test

Povezivanje Postoji jedan dodatak gore pomenutom procesu. C# kôd koji se kompajlira u MSIL u koraku 2 ne mora da bude smješten u jednu datoteku. Mogude je podijeliti kôd aplikacije u različite datoteke koji de se tokom kompajliranja objediniti u sklop. Ovaj proces je poznat i kao povezivanje i veoma je koristan. Ta podjela se vrši jer je mnogo lakše raditi sa više manjih datoteka nego sa jednom ogromnom. Možemo izdijeliti kôd na logičke cjeline i smjestiti ih u nezavisne datoteke na kojima se može nezavisno raditi. Ovo nam olakšava pronalaženje određenih dijelova kôda kada nam zatrebaju. Takođe omoguduje programerskim timovima da podijele teret na manje dijelove kojima je lakše rukovati, kao i to da ukoliko dođe do provjere nekog od tih dijelova ne postoji rizik da se ugroze cjelina programa ili njegovi dijelovi na kojima se radi. Također, cijelo MSJIT kompajliranje može se predstaviti i u cjelini što nam može pomodi da sagledamo na drugi način:

Šta je C# ?

C# je jedan od jezika koji služi za izradu aplikacija koje mogu raditi pod .NET CLR-om. On predstavlja evoluciju jezika C i C++ koju je kreirao Microsoft da bi se radilo sa .NET okruženjem. Razvoj aplikacija u jeziku C# je jednostavniji nego u C++, jer je sintaksa prostija. Pa ipak, C# je modan jezik i postoji

veoma mali broj stvari koje bismo uradili u C++ jeziku prije nego u C#-u. Prednost C#-a je u tome što je jedini napravljen od početka baš za .NET okruženje, pa samim tim može biti i vodedi jezik

korišten za verzije .NET-a namijenjene drugim operativnim sistemima. VB.NET je, međutim, napravljen tako da bude što sličniji svojim prethodnicima i stoga ne može da iskoristi .NET

biblioteku kôda u potpunosti. Suprotno njemu, jezik C# je napravljen tako da može iskoristiti svaki dio biblioteke kôda .NET okruženja koju ovo

okruženje može da ponudi. Razlike :C# vs. C++ ?

Najvažnija razlika između ta dva jezika je to što C# ne sadrži poziv datoteke zaglavlja, što znači da je sav kod «umetnut» u datoteku.

Kao što smo ved spomenuli, .NET izvršni sistem u kojem se izvodi C# kôd upravlja memorijom, te preuzima brigu o zadacima poput skupljanja smeda (Garbage Collection).

Razumijevanje tipova podataka u C# je znatno kompleksnije od razumijevanja C++ tipova podataka. Svi tipovi podataka u C#-u izvedeni su iz 'object' tipa. Također postoje i razlike u načinu kako se određeni tipovi podataka mogu koristiti. Kakve aplikacije možemo pisati u C#-u?

Windows aplikacije - To su aplikacije tipa Microsoft Office koje imaju izgled Windows Os-a i odlično se slažu sa njim. Ovo je uprošteno korištenjem modula Windows obrasca unutar .NET okruženja, koji u stvari čini biblioteka kontrola (kao što su dugmad, palete alatki, meniji itd), a koje nam koriste pri izradi Windows korisničkog interfejsa (UI).

Web aplikacije - Web strane koje možemo vidjeti kroz bilo koji čitač. .NET okruženje pruža veoma modan sistem generisanja Web sadržaja i to dinamički, dozvoljavajudi personalizaciju, sigurnost i još mnogo toga. Ovaj sistem se naziva Active Server Pages .NET (ASP.NET), a jezik C# možemo koristiti za izradu ASP.NET aplikacija uz pomod Web obrazaca.

Web servisi – Predstavljaju način izrade raznovrsnih distribuiranih aplikacija. Koristedi Web servise preko Interneta možemo razmjenjivati bilo koju vrstu podataka, koristedi prostu sintaksu, ne vodedi računa o tome u kom jeziku je napisana aplikacija niti na kom sistemu je postavljena.

Page 8: SU-I-i-II-test

Arhitekta i idejni tvorac uzora Christopher Alexander (1977.) :Alexander: U arhitektonskim sistemima

postoji objektivna osnova. Procjena da građevina nije lijepa nije samo stvar ukusa. Ljepota se može opisati preko objektivne osnove koja se može izmjeriti

- Kulturološka antropologija: Naučnici tvrde da se unutar jedne kulture pojedinci uglavnom slažu oko toga

šta predstavlja „dobar projekat”, šta je lijepo. Kulture donose sud o dobrom projektu koji nadmašuje

pojedinačna ubjeđenja. Postoje nadiskustveni obrasci koji služe kao objektivna osnova za procjenu

projekata. Glavna grana kulturološke antropologije istražuje te obrasce da bi opisala ponašanje i vrijednosti jedne kulture.

-Alexander: Ako je kvalitet softvera objektivan =>možemo prepoznati šta projekat čini dobrim, a šta

lošim. Otkrio je da u arhitektonskim djelima dobre građevine imaju zajedničke osobine. Arhitektonska rješenje se međusobno razlikuju, čak i ako su istog tipa, a ipak oba mogu biti visokokvalitetna.

Alexander je otkrio da se posmatranjem građevina koje rješavaju slične probleme, mogu uočiti sličnosti

između kvalitetnih projekata. Te sličnosti nazvao je obrascima ili uzorima (engl. patterns). Definisao je

obrazac kao „opde rješenje problema”. „Svaki obrazac opisuje problem koji se stalno pojavljuje u našem okruženju i zatim opisuje srž rješenja tog problema, tako da se to rješenje može koristiti milion puta na različit način.”

Alexander: Opis obrasca sadrži 4 elementa: ime obrasca svrha obrasca (problem koji rješava) opis

rješenja ograničenja i sile koje moramo uzeti u obzir da bismo dobili dobro rješenje. Obrasci mogu

riješiti svaki arhitektonski problem. Za rješavanje kompleksnih arhitektonskih problema treba kombinovati više obrazaca.

-Najznačajniji događaj sa aspekta popularizacije uzora u domenu kompjuterskih nauka, svakako je objavljivanje knjige Design Patterns: Elements of Reusable Object-Oriented Software 1994. godine, čiji su autori Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides (Gang of Four - Velika četvorka).

- "knjiga velike četvorke„ (GoF) postala skradenica za originalno ime. U knjizi su opisana 23 obrasca koja

autori nisu napravili, nego prepoznali kao ved postojede unutar softverskih projekata. Ovi obrasci su

odabrani jer predstavljaju rješenja za zajedničke probleme u razvoju softvera.

-Obrasci Omoguduju da: Ponovo koristimo rješenja - Korištenjem gotovih projekata dobijamo početnu prednost u odnosu na probleme i izbjegavamo zamke. Izvlačimo korist iz učenja na tuđim iskustvima. Ne

moramo da izmišljamo rješenja za probleme koji se stalno ponavljaju. Utvrdimo opdu terminologiju – Komunikacija i timski rad zahtijevaju zajednički rječnik i zajedničko sagledavanje problema. Projektni obrasci predstavljaju zajedničku polaznu tačku u fazama analize i projektovanja.Sa višeg nivoa posmatramo problem i postupak objektno orijentisanog projektovanja. To nas oslobađa napora koji donosi

prerano udubljivanje u detalje i pravi od nas dobrog analitičara.Doprinose pojedinačnom učenju i timskom radu. Mlađi članovi tima vide da starije kolege koje poznaju projektne obrasce posjeduju nešto

vrijedno, pa i oni to žele. To ih motiviše da uče te modne tehnike. Omoguduju nam da procijenimo da li

imamo pravi projekat , ne samo onaj koji radi. Vedina softverskih obrazaca čini softver fleksibilnijim, jer

su prošli test vremena pa su se razvili u strukture koje spremno prihvataju promjene. Softverski uzori, kada su pravilno naučeni, mogu poboljšati razumijevanje osnovnih načela OO programiranja (kapsuliranje, nasljeđivanje i polimorfizam).

- Uobičajeno je da se uzori predstavljaju kroz skup sekcija, ali sadržaj tog skupa nije propisan, tako da on

varira od autora do autora. Neki od značajnijih oblika predstavljanja uzora su: Kanonski oblik GoF oblik

Coplien-ov oblik Alexander-ov oblik

- Kanonski oblik -Sekcije su: • Ime (Name). Ime može biti jedna riječ (imenica ili glagol), ili krada imenična ili glagolska fraza, koja jasno ukazuje na suštinu samog uzora (problem, kontekst ili rješenje). Snaga imena leži prije svega u tome, što ono vremenom postaje dio standardnog rječnika inženjera, što znatno olakšava komunikaciju (da bi se referencirao neki uzor, dovoljno je imenovati ga, a ne nabrajati njegove karakteristike). • Problem (Problem). U ovoj sekciji se daje opis problema koji uzor rješava, i objašnjava koji su ciljevi koje treba dostidi u datom kontekstu i pod uticajem datih sila. • Kontekst (Context). Preduslovi uzora pod kojima se problem javlja, odnosno struktura sistema prije primjene uzora. Sile (Forces). Sile ukazuju na ograničenja i teškode koje postoje u problemu, i predstavljaju njegov dio. Ovdje se ukazuje koje

Page 9: SU-I-i-II-test

su sile relevantne, i na koji način su suprotstavljene jedna drugoj kao i rješenju. Konkretnije, pod silama se podrazumijeva kompleks ponašanja sistema, odnosno operacije koje se izvršavaju nad strukturom sistema. • Rješenje (Solution). Detaljan opis načina rješavanja problema, koji uključuje i upotrebu dijagrama i slika. U ovoj sekciji se opisuje konkretna struktura uzora sa svojim elementima (statička struktura), kao i međusobna saradnja tih elemenata (dinamičko ponašanje), kojima se problem rješava, odnosno sile uzora dovode u stanje balansa.Primjeri (Examples). Jedan ili više primjera koji ilustruju praktičnu upotrebu uzora. • Rezultujudi kontekst (Resulting Context). Postuslovi uzora, odnosno stanje, ili konfiguracija sistema nakon upotrebe uzora. Ovdje se navode i sve pozitivne, ali i negativne posljedice upotrebe uzora i, sa tim u vezi, svi novi problemi koji proizilaze iz rezultujudeg konteksta. Drugim riječima, opisuje se koje su sile razriješene, koje su ostale nerazriješene, i koji uzori bi se mogli dalje primjeniti. • Obrazloženje (Rationale). Kako uzor, ili pojedini koraci ili pravila iz uzora, na željeni način, razrješavaju sile koje djeluju u kontekstu. Ovdje se zapravo razjašnjava zašto je uzor dobar, i kako on funkcioniše.Povezani uzori (Related Patterns). Svi uzori koji su na neki način povezani sa razmatranim uzorom. Oni najčešde imaju sa razmatranim uzorom kompatibilan inicijalni ili rezultujudi kontekst. To mogu biti uzori koji prethode razmatranom uzoru, uzori koji mu slijede, zatim alternativni uzori koji daju drugačije rješenje istog problema, ali u nekom drugom kontekstu sa drugačijim ograničenjima. • Poznata korišdenja (Known Uses). Primeri primjene uzora u okviru realnih sistema, čime se pokazuje da je uzor zaista, u praksi dokazano, rješenje nekog problema koji se često javlja.

-GoF (Gang of Four) oblik se sastoji iz sljededih sekcija: • Ime uzora i klasifikacija (Pattern Name and Classification). • Svrha (Intent). Objašnjava šta uzor treba da radi, odnosno koji problem rješava. • Takođe poznat kao (Also Known As). Alternativna imena uzora, ukoliko postoje. • Motivacija (Motivation). Scenario koji ilustruje problem projektovanja i kako struktura koju uzor promoviše, rješava taj problem. • Primjena (Applicability). Situacije u kojima je mogude primjeniti uzor, odnosno tipični primjeri lošeg dizajna (projektovanja) koji se uzorom mogu poboljšati.Struktura (Structure). Dijagrami klasa i interakcioni dijagrami koji objašnjavaju strukturu i ponašanje uzora. • Učesnici (Participants). Klase iz dijagrama klasa i njihove odgovornosti. • Saradnja (Collaboration). Opis saradnje klasa. • Posljedice (Consequences). Pregled pozitivnih i negativnih rezultata primjene uzora. • Implementacija (Implementation). Preporučene tehnike primjene uzora i pregled kritičnih mjesta gdje se uglavnom prave greške. • Primjer koda (Sample Code). Dijelovi kôda kojima se ilustruje implementacija uzora. • Poznata korišdenja (Known Uses).• Povezani uzori (Related Patterns).

-Coplien-ov oblik, slično kanonskom obliku, sadrži sljedede sekcije: • Ime uzora (The Pattern Name). • Problem (The Problem). • Kontekst (The Context). • Sile (The Forces). • Rješenje (The Solution). • Obrazloženje (A Rationale). • Rezultujudi kontekst (Resulting Context).

-Alexander-ov oblik : Izvorni oblik predstavljanja uzora. Za razliku od prethodno navedenih oblika,

nema eksplicitno izdvojene i imenovane sekcije. Opis uzora počinje slikom koja ilustruje arhitekturu

razmatranog uzora. Slijedi paragraf u kome se opisuje kontekst problema, a nakon njega dio u kome se

opisuje sâm problem. Zatim slijedi rješenje problema koje je centralni dio uzora, i koje je dato u vidu uputstva šta treba da se uradi da bi se izgradio uzor. Nakon toga je dat dijagram rješenja sa jasno

naznačenim komponentama. Na samom kraju je izložena veza razmatranog uzora sa svim manjim uzorima koji ga sačinjavaju.

- Jedna podjela :Uzori arhitekture (architectural patterns), koji predstavljaju uzore sistemskog nivoa kojima se definiše fundamentalna strukturna organizacija softverskih sistema. Oni obezbjeđuju skup predefinisanih podsistema, utvrđuju njihove međusobne odnose, i specificiraju njihove odgovornosti

unutar sistema. Uzori projektovanja (design patterns), koji predstavljaju uzore srednjeg nivoa kojima se definiše složena struktura koja rješava neki problem projektovanja, i koja nije dovoljno velika da bi se za nju moglo redi da predstavlja podsistemIdiomi (idioms), uzori najnižeg nivoa uslovljeni specifičnostima programskog jezika na koji se odnose.Predstavljaju uzore sistemskog nivoa kojima se definiše fundamentalna strukturna organizacija softverskih sistema. Oni obezbjeđuju skup predefinisanih

podsistema, utvrđuju njihove međusobne odnose, i specificiraju njihove odgovornosti unutar sistema

- Tronivojska arhitektura (three-tier) Dijeli sistem na tri nivoa: • Korisnički interfejs. Nivo koji predstavlja ulazno/izlaznu reprezentaciju softverskog sistema. Jedino sa njim korisnik ostvaruje neposrednu interakciju. • Aplikaciona logika. Nivo u okviru koga se nalazi cjelokupna struktura i ponašanje sistema. • Skladište podataka. Nivo koji čuva stanje atributa

Page 10: SU-I-i-II-test

sistema. Kada korisnik, u interakciji sa korisničkim interfejsom, inicira neki događaj, on se interpretira kao zahtjev za izvršenje sistemske operacije. Ovaj zahtjev se prosljeđuje sloju aplikacione logike, koji je u stanju da pročita sve neophodne podatke iz skladišta podataka, kao i da ih tamo upisuje, i u kome se nalazi sama logika obrade tih podataka. Po izvršenju sistemske operacije, rezultat obrade se korisniku prikazuje putem korisničkog interfejsa.U tronivojskoj arhitekturi, niži nivoi nisu svjesni viših nivoa. Osim toga, svaki nivo može da komunicira isključivo sa prvim sljededim nižim nivoom.

-Model-view-controller (MVC) uzor arhitekture Dijeli sistem na tri komponente: • Model. Komponenta koja sadrži poslovnu logiku. Dakle, ovdje se nalaze podaci, i operacije obrade podataka. • View. Komponenta koja obezbjeđuje korisnički interfejs pomodu koga sistem komunicira sa korisnikom. • Controller. Komponenta sa zaduženjem da upravlja izvršavanjem sistemskih operacija. Kada korisnik, u interakciji sa view komponentom, inicira neki događaj, controller komponenta vrši obradu tog događaja, odnosno prihvata korisnički zahtjev, i sarađuje sa komponentom model u ispunjenju tog zahtjeva, pozivajudi operacije koje su u njoj definisane. Po završetku operacija obrade, view se osvježava na osnovu

podataka iz komponente model.Controller sa ostale dvije komponente

komunicira direktno, pošto su mu one „vidljive“. Komunikacija komponente view sa controller-om, odnosno komponente model sa komponentom view, vrši se indirektno, odnosno pomodu događaja.