26
Uvod u programiranje i programske jezike Ciljevi lekcije U prvom delu lekcije se daje uvod u programiranje, paradigme programiranja i osnovne elemente objektno orijentisane paradigme sa sledećim ciljevima: Uvod u programiranje i paradigme. Upoznavanje sa objektno orijentisanom paradigmom. Upoznavanje pojma klase i objekta. Upoznavanje sa načinima za opis klasa, kreiranje objekata i pristup članovima klasa. Upoznavanje sa pojmom nasledjivanja i izvodjenja. Upoznavanje sa pojmom i namenom konstruktora i destruktora. U drugom delu lekcije se opisuje razvojno okruženje MS Visual Studio 2005 u kome će svi primeri u okviru kursa biti ilustrovani. Cilj ovog dela je: Upoznavanje sa osnovnom idejom okruženja za brzi razvoj aplikacija (RAD) okruženja. Upoznavanje sa načinom startovanja razvojnog okruženja MS Visual Studio 2005. Upoznavanje sa načinom kreiranja konzolne aplikacije iz razvojnog okruženja MS Visual Studio 2005. Neophodna predznanja Da bi se uspešno pratila ova lekcija poželjno je da polaznici kursa budu upoznati sa nekim vidom programiranja (najčešće proceduralno programiranje u bilo kom višem programskom jeziku npr. Pascal, C, Basic, itd.). Potrebno je da polaznici budu upoznati sa osnovnim pojmovima koji se sreću kod učenja programiranja i nekog programskog jezika npr.: naredba, linija koda, službena reč, 1

Uvod u Programiranje i Programske Jezike

Embed Size (px)

Citation preview

Page 1: Uvod u Programiranje i Programske Jezike

Uvod u programiranje i programske jezike

Ciljevi lekcije

U prvom delu lekcije se daje uvod u programiranje, paradigme programiranja i osnovne elemente objektno orijentisane paradigme sa sledećim ciljevima:

Uvod u programiranje i paradigme. Upoznavanje sa objektno orijentisanom paradigmom.

Upoznavanje pojma klase i objekta.

Upoznavanje sa načinima za opis klasa, kreiranje objekata i pristup članovima klasa.

Upoznavanje sa pojmom nasledjivanja i izvodjenja.

Upoznavanje sa pojmom i namenom konstruktora i destruktora.

U drugom delu lekcije se opisuje razvojno okruženje MS Visual Studio 2005 u kome će svi primeri u okviru kursa biti ilustrovani. Cilj ovog dela je:

Upoznavanje sa osnovnom idejom okruženja za brzi razvoj aplikacija (RAD) okruženja. Upoznavanje sa načinom startovanja razvojnog okruženja MS Visual Studio 2005.

Upoznavanje sa načinom kreiranja konzolne aplikacije iz razvojnog okruženja MS Visual Studio 2005.

  Neophodna predznanja

Da bi se uspešno pratila ova lekcija poželjno je da polaznici kursa budu upoznati sa nekim vidom programiranja (najčešće proceduralno programiranje u bilo kom višem programskom jeziku npr. Pascal, C, Basic, itd.). Potrebno je da polaznici budu upoznati sa osnovnim pojmovima koji se sreću kod učenja programiranja i nekog programskog jezika npr.:

naredba, linija koda,

službena reč,

promenljiva,

konstanta,

dodela,

potprogram (funkcija),

povratna vrednost,

...

1

Page 2: Uvod u Programiranje i Programske Jezike

Za jezik se može reći da predstavlja jednu od najvećih tekovina ljudske civilizacije. Prirodni jezici koji su u upotrebi u svakodnevnoj komunikaciji ljudi, nastali su iz potrebe za međusobnim sporazumevanjem u obavljanju različitih aktivnosti. Bogatstvo rečnika jednog prirodnog jezika zavisi od starosti i kulture naroda koji ga koristi, ali isto tako i od delatnosti kojima se taj narod bavi.

Pored prirodnih postoje i veštački jezici koji su nastali kao unapred definisan skup pravila za sporazumevanje u određenoj oblasti. Najbolji primer za to su matematika i računarske nauke gde su u širokoj upotrebi skupovi veštačkih entiteta poznati po imenu formalni jezici. Formalni jezici se, kao i prirodni, odlikuju skupovima karaktera, semantičkim i gramatičkim pravilima. Posebnu grupu veštačkih jezika čine programski jezici. Nastaju sa razvojem računara iz potrebe da se pojednostavi pisanje programa kojima se upravlja tokom obrade podataka na njima. Zbog toga se može reći da su programski jezici sredstvo komunikacije između ljudi i računara. Do danas je razvijen veliki broj programskih jezika i njihov broj prelazi 4000. U isto vreme broj aktivnih prirodnih (ljudskih) jezika se kreće oko brojke od pet hiljada.

Programski jezici se mogu klasifikovati u više kategorija po više različitih kriterijuma. Jedan od često korišćenih kriterijuma je i zavisnost od mašine na kojoj se izvršava. Tako postoje: mašinski zavisni i mašinski nezavisni jezici. U mašinski zavisne jezike svrstavaju se jezici koji su u direktnoj zavisnosti sa procesorom na kome se program izvršava. To su pre svega mašinski jezik i mašini orijentisani asemblerski i makro asemblerski jezici. Oni čine grupu jezika niskog nivoa. Grupu mašinski nezavisnih jezika čine programski jezici visokog nivoa ili proceduri orijentisani programski jezici kao i programski jezici veoma visokog nivoa, aplikativni ili problemu orijentisani programski jezici.

Sa razvojem programskih jezika uporedo je išao i razvoj programskih paradigmi i stilova programiranja pa tako imamo sledeće vrste programiranja: modularno, strukturno, rekurzivno, objektno, logičko, paralelno, simboličko, itd.

Najznačajnije programske paradigme medju programskim jezicima višeg nivoa su proceduralna i objektno orijentisana. Tradicionalno proceduralno programiranje se sastoji od niza funkcija i njihovih poziva dok se objektno orijentisano bazira na objektima i njihovoj medjusobnoj komunikaciji. Kako se svaki realan sistem može opisati kao skup objekata koji se nalaze u nekoj interakciji sasvim je prirodno da objektno orijentisana paradigma bolje i skladnije oslikava realni svet i omogućava logičnije projektovanje i realizaciju programa. Normalno, jedan problem se može rešiti i pomoću tradicionalnog proceduralnog programiranja i pomoću objektnog programiranja. Razlike su samo u naporu koji se ulaže u razvoj a kasnije i održavanje programa. Uopšteno rečeno objektno orijentisana paradigma donosi novine koje je čine osnovom velikog broja savremenih programskih jezika. Takav jezik je i C#.NET (nadalje u tekstu će biti pisano samo C#) koji će biti predmet ovog kursa. Još jedna značajna karakterisitika programskog jezika C# je i mogućnost razvijanja različitih vrsta aplikacija: konzolnih, Windows, Web. Zahvaljujući tome, sintaksom koja je nastala na bazi sintaksi široko rasprostranjenih jezika C++ i Java, kao i Microsoft-ovom razvojnom okruženju izuzetno jednostavnom za korišćenje, C# danas spada u kategoriju najpopularnijih programskih jezika.

Napomena

C# je programski jezik koji nam omogućuje pisanje kako konzolnih tako i Windows aplikacija, pa čak i aplikacija za Web. U prvom delu koji se odnosi na osnove programskog jezika C# primeri će se odnositi na delove koda neke konzolne aplikacije dok će se u drugom delu detaljnije objašnjavati razvoj Windows aplikacija te će i primeri biti sa odgovarajućim grafičkim korisničkim interfejsom.

Objektno orijentisana paradigma

2

Page 3: Uvod u Programiranje i Programske Jezike

  Bilo koji sistem se sastoji iz objekata koji međusobno komuniciraju. Svaki objekat ima neke karakteristike koje ga čine posebnim i razlikuju od drugih objekata. Veoma često neki objekti imaju iste vrste karakteristika ali različite vrednosti. Uzmimo, na primer, lopte za primere takvih objekata. Sve lopte imaju karakteristiku koja se zove boja čije vrednosti mogu biti različite od objekta do objekta. Tako vrednosti asocirane uz karakteristiku koja se zove boja mogu biti crvena, zelena, plava, itd. Objekat pored karakteristika koje se nazivaju i atributima ima u opštem slučaju i sposobnost nekakvog funkcionisanja tj. objekat se karakteriše i skupom funkcionalnosti koje se zadaju odgovarajućim funkcijma članicama tj. metodama. Tako na primer, neke lopte odskaču kada padnu na tlo više, a neke manje. Neke lopte mogu da plivaju (gumene), a neke ne mogu (lopte napravljene od olova tj. metalne kugle ).

  Programi se pišu sa ciljem da se reši neki problem tako što se svaki problem vezuje za neki sistem koji se opisuje (modeluje) na specifičan način. Stoga je najprirodniji način za rešavanje problema odgovarajućim programom, korišćenje objekata. Objekti predstavljaju osnovu objektno orijentisane (OO) paradigme. OO paradigma opisuje tj. modeluje sistem na prirodan način. Ako se ovako posmatraju stvari onda se grubo može reći da se programiranje korišćenjem OO paradigme sastoji od:

Identifikovanja objekata.

Identifikovanja atributa objekata kao i njihovih vrednosti.

Identifikovanje funkcionalnosti objekata.

Klasifikacija objekata prema atributima i funkcionalnostima u kategorije tj. klase. Rezultat klasifikacije je definicija klasa sa svim potrebnim svojstvima (atributima) i funkcionalnostima koje se nazivaju još i metode.

Identifikovanje komunikacije između objekata (koji objekti komuniciraju, kada i na koji način, tj. koje poruke razmenjuju.).

Generisanje klasa.

Generisanje objekata i njihova komunikacija.

Uništavanje objekata.

Pitanja

1) Šta su atributi objekta?

2) Šta su metode? 

3) Čime se karakteriše svaki objekat?

4) Koje su aktivnosti u programiranju primenom OO paradigme?

Klase i objekti

3

Page 4: Uvod u Programiranje i Programske Jezike

Klase su kao što smo rekli opisi koji definišu kako će se generisati objekti i koje osobine i funkcionalnosti ti objekti poseduju. Na primer, želimo da opišemo jednu školu kao sistem. Školu čine učenici i profesori. Svaki učenik se može okarakterisati velikim brojem osobina kao što su: ime, prezime, datum rodjenja, mesto rodjenja, itd. Takodje se i svaki profesor može okarakterisati osobinama kao što su ime, prezime, datum rodjenja, mesto rodjenja. Da li to znači da se učenici i profesori mogu posmatrati kao isti objekti u sistemu koji se zove škola? Očigledno ne, pošto i učenici i profesori imaju pored pobrojanih i neke specifične osobine. Tako učenik kao osobinu ima i razred koji pohadja, predmete i odgovarajuće ocene iz tih predmeta, itd. dok profesori imaju predmete koje drže, nivo školske spreme, datum zaposlenja, itd. Očigledno je da u modelu škole imamo dve osnovne klase: klasu Učenik i klasu Profesor. Instance ovih klasa tj. objekti su konkretni učenici i profesori škole.

Znači može se reći da klase predstavljaju opise tj. šablone za opis zajedničkih karakteristika grupe objekata. Klasom se vrši generalizacija grupe objekata tj. zanemaruju se karakteristike koje nisu jedinstvene za grupu objekata posmatranih u jednom kontekstu (na primer u kontekstu jedne škole nije bitno da li neki učenik ima plave ili crne oči ili pak da li neki učenik ima tetku u Americi). Klasa treba da sadrži samo one atribute i metode koji su bitni za sve objekte koje modeluje klasa u nekom kontekstu. Sve druge specifičnosti objekata se zanemaruju i ne ulaze u opis klase.  

Sa druge strane ako posmatramo neki objekat on ima svoje karakteristike tj. atribute i ispoljava neko ponašanje opisano metodama. Za druge objekte koji komuniciraju sa nekim objektom nije bitno kako objekat realizuje neke funkcionalnosti već samo koje funkcionalnosti on poseduje.

Razmotrimo klasu Automobil. On ima kao atribute izmedju ostalog: boju, broj vrata, dužinu, širinu, pogonsko gorivo (benzin, dizel, gas),  marku, godinu proizvodnje, predjenu kilometražu, itd. U kontekstu vožnje automobila interesantne su nam funkcije koje nam omogućavaju pokretanje motora vozila (recimo pomoću ključa ili pak kartice ili pak samo pritiskom na dugme), pokretanje vozila unapred, pokretanje vozila unazad, povećanje brzine, smanjenje brzine, zaustavljanje vozila i zaustavljanje rada motora. Sve ovo nam je potrebno da bi vozili neki automobil. Toliki ljudi poznaju ove funkcije automobila a veoma mali broj ljudi zna kako zapravo funkcioniše motor sa unutrašnjim sagorevanjem !!! Ali, da i im je to uopšte potrebno sa stanovišta vožnje automobila? Zaista nije! Znači kada opisujemo funkcionalnosti objekata neke grupe objekata modelirane nekom klasom realizacija samih funkcionalnosti će biti važna samo samoj klasi ali ne i drugim objektima koji koriste objekte te klase. Jednom rečju, jedna od postavki objektno orijentisane paradigme je i sakrivanje detalja koji nisu bitni za korisnike objekata. Da li je to fer? Jeste, jer delovima motora neka se bave konstruktori a mene interesuje samo kako da upravljam mojim automobilom! Ako nastavimo u ovom pravcu doći ćemo do sledećeg pitanja: da li je bitno da li automobil koristi benzin ili gas ako automobil posmatram smao kao sredstvo koje treba da me preveze od mesta A do mesta B a cena me ne interesuje? Očigledno da ne jer u oba slučaja se automobil koristi na isti način.

Iz ove priče   se može zaključiti da je pri definisanju klase  od mnoštva karakteristika objekata koji se modeliraju klasom potrebno izdvojiti samo one atribute i metode koji su bitni za kontekst u kome se posmatraju dati objekti. Isto tako, sve one koji koriste neki objekat potrebno je osloboditi poznavanja unutrašnjih detalja klase (objekta) koji mu ništa ne znače u kontekstu komunikacije sa objektom tj. korišćenja datog objekta.

Za razliku od proceduralnog programiranja gde su podaci bili razdvojeni od procedura za njihovu obradu u objektno orijentisanoj paradigmi se kroz pojam klase vrši objedinjavanje podataka i operacija koje mogu da se vrše nad njima. Ko može da pristupi kom podatku klase odnosno kojoj metodi klase zavisi od toga kako su im zadata prava pristupa odnosno kakav im je modifikator pristupa. U programskom jeziku C# postoje sledeći modifikatori pristupa:

private

4

Page 5: Uvod u Programiranje i Programske Jezike

public

protected

protected internal

internal

Ako niko spolja ne treba da pristupi članu klase onda se taj član proglašava privatnim (private). Ako pak član klase treba da bude dostupan svima onda se on proglašava javnim (public). Zaštićeni (protected) član je dostupan samo unutar klase ili unutar izvedenih klasa koje su izvedene iz date klase (o pojmu izvedenih klasa če biti više reči u narednim lekcijama). Protected internal član je dostupan samo unutar klase, unutar izvedenih klasa koje su izvedene iz date klase ili klasa u istom programu. Internal član je dostupan samo unutar klase ili klasa u istom programu. Kako je pravo pristupa izuzetno bitno to se na početku deklaracije svakog člana klase navodi pravo pristupa. Ako se ono izostavi podrazumeva se da je privatno. Prava pristupa će kasnije opet biti razmatrana sa odgovarajućim primerima.

Pitanja

1) Šta su klase?

2) Šta su objekti? 

3) Nabrojati modifikatore pristupa u programskom jeziku C#.

4) Šta važi za privatne članove klase?

5) Šta važi za javne članove klase?

Nasledjivanje

Veoma često se za dva programa može reći da su veoma slična jer modeluju slične sisteme koji imaju iste mnoge karakteristike ali imaju i neke specifičnosti. Ako je nivo sličnosti velik a nivo specifičnosti mali postavlja se pitanje da li ćemo razvijati novu aplikaciju "od nule" ili ćemo pokušati da iskoristimo postojeću. Ako nam je kriterijum efikasnost tj. vreme onda ćemo sigurno izabrati ovaj drugi pristup. Ako uporedimo objekte koji se sreću u ovim aplikacijama primetićemo da je veliki broj objekata veoma sličan.

Objektno orijentisana paradigma uvodi pojam nasledjivanja tj. izvodjenja koji predstavlja mogućnost da se jedna klasa definiše na osnovu neke druge klase pri čemu će ta nova klasa da ima sve osobine koje ima i postojeća klasa, neke osobine će biti promenjene a neke nove će biti dodate. To konkretno znači da ne moramo da prepisujemo postojeću klasu (poznati "copy-paste" pristup koji se često koristi u proceduralnom programranju i predstavlja izvor mnogih grešaka) već samo da navedemo od koje klase polazimo tj. koja je osnovna ili roditeljska klasa i da modifikujemo ili dodamo neke članice klase.

Primer Posmatrajmo klasu Profesor. U jednoj školi postoje i razredne starešine. Oni su takodje profesori ali imaju i dodatnu funkciju. Znači, možemo da definišemo klasu RazredniStaresina koja će biti izvedena iz klase Profesor. Dodati član klase RazredniStaresina je na primer odeljenje kome je dati profesor razredni starešina.

5

Page 6: Uvod u Programiranje i Programske Jezike

Klasa RazredniStaresina će imati sve one članove koje ima i klasa Profesor. Ovo je trivijalan primer koji treba samo da ilustruje koncept izvodjenja ili nasledjivanja. Kasnije će biti dato više detalja.

Pitanja

1)  Šta je nasledjivanje?

2)  Šta je izvodjenje?

Definicija klase u programskom jeziku C#

Klasa se u programskom jeziku C# (nadalje nećemo naglašavati da se radi o programskom jeziku C# jer će se nadalje sve odnositi na ovaj programski jezik) definiše na dva načina zavisno od toga da li je osnovna klasa ili klasa koja je izvedena iz jedne ili više drugih klasa. Osnovna klasa se definiše na sledeći način:

 

class NazivKlase

{

/*

* telo klase sa svim potrebnim svojstvima,

* metodima i događajima

*/

}

Kreiranje objekata

Objekti (instance klasa) se kreiraju pomoću operatora new kao u sledećem primeru.

Pravougaonik alfa = new Pravougaonik();

Ovom linijom koda se promenljiva (često se koristi i termin varijabla) alfa deklariše kao promenljiva tipa Pravougaonik a ujedno se i kreira objekat klase Pravougaonik i dodeljuje toj promenljivoj. Isti efekat se može postići i na sledeći način

     Pravougaonik alfa;

    alfa = new Pravougaonik();

tj. razdvajanjem deklaracije od kreiranja objekta.

Pitanja

6

Page 7: Uvod u Programiranje i Programske Jezike

1)  Šta je instanca klase?

2) Kako se kreira  objekat klase?

Pristup članovima klase

Članovi klase su podaci članovi (atributi) i funkcije članice (metode). Kada se kreira jedan objekat neke klase pristupanje njegovim članovima vrši se primenom operatora tačka tj.

pristupanje podacima članovima

imeObjektaKlase.ImeAtributa

pristupanje funkcijama članicama

                    imeObjektaKlase.NazivFunkcije(stvarni argumenti)

Primer

Pravougaonik prav1 = new Pravougaonik(2.5, 3.0);

System.Console.WriteLine("Povrsina je " + prav1.Povrsina());

U prvoj liniji je kreiran objekat prav1 klase Pravougaonik a zatim je u drugoj liniji na standardni izlaz (System.Console.WriteLine) ispisan tekst Povrsina je i površina objekta prav1 koja se dobija pozivom njegove metode Povrsina().

Podsetimo se da je neophodno deklarisati metodu Povrsina() kao javnu da bi moglo da joj se pristupi!

 Napomena

Može se primetiti da u prethodnom primeru konstruktor klase Pravougaonik ima dva argumenta.

Uočimo da System.Console.WriteLine  takođe predstavlja poziv metode!

Pitanja

1)  Šta su  članovi klase?

2)  Kako se pristupa  članovima klase?

Konstruktori

Konstruktori su funkcije koje karakteriše: isto ime kao i ime klase, nemaju povratnu vrednost. Sve ostale karakteristike koje važe za bilo koju funkciju važe i za konstruktore. Svaki put kada se kreira objekat neke klase zapravo se poziva konstruktor te klase. Veoma često se u konstruktorima vrši inicijalizacija podataka članova klase.

7

Page 8: Uvod u Programiranje i Programske Jezike

Konstruktori mogu biti bez argumenata (tada se zovu podrazumevani konstruktori ili default konstruktori) ili sa argumentima. Jasno je da može postojati samo jedan podrazumevani konstruktor i više konstruktora sa parametrima. Ako ne definišemo podrazumevani konstruktor sam sistem će ga kreirati i telo konstruktora će biti prazno. 

Znači, svaki put kada se kreira novi objekat neki konstruktor se poziva! 

Primer

Definišimo za klasu Pravougaonik podrazumevani konstruktor koji će da postavlja vrednosti atributa duzina i sirina na nulu i konstruktor koji ima dva parametra kojima se postavljaju početne vrednosti parametara duzina i sirina.

public class Pravougaonik

{

private float duzina;

private float sirina;

public Pravougaonik() // podrazumevani konstruktor{

duzina = 0;sirina = 0;

}

// konstruktor sa parametrima public Pravougaonik( float duz, float sir){duzina = duz;

sirina = sir; }

}

Pitanja

1)  Šta je konstruktor?

2)  Šta je podrazumevani konstruktor?

3) Koliko  konstruktora  sa  argumentima može imati jedna klasa?

Destruktori

Konstruktori se pozivaju svaki put kada se kreira neki objekat. Pri uništavanju objekata pozivaju se destruktori pre samog uništavanja objekta. Destruktori su funkcije koje imaju isto ime kao i ime klase tj. ime konstruktora sa dodatkom znaka ~

8

Page 9: Uvod u Programiranje i Programske Jezike

(tilda) kao prvog simbola imena. Za razliku od konstruktora destruktori nemaju definisan kvalifikator pristupa public. Takodje nemaju ni povratnu vrednost kao ni naredbu return u telu. Destruktori takodje nemaju ni parametre.

~Pravougaonik(){    // neki kod

}

Pitanja

1) Šta je destruktor?

2) Da li  destruktori imaju definisan kvalifikator pristupa?

3) Da  li  destruktori imaju povratnu vrednsot?

4) Da li destruktori mogu imati parametre?

Razvojno okruženje MS Visual Studio 2005

Podrazumeva se da će se za razvoj aplikacija odnosno demonstraciju primera koji su sastavni deo ovog kursa koristiti integrisano okruženje VisualStudio verzija 2005 odnosno programski jezik C#.NET 2005 (Moguće je koristiti i besplatnu verziju tkz C#.NET Express Edition). Stoga je neophodno upoznati se sa ovim okruženjem koje spada u kategoriju okruženja za brzi razvoj aplikacija ili RAD (Rapid application development) okruženja. Mnogi koncepti i osobine koje će biti pokazane u okviru kursa važe i u starijim verzijama MS Visual Studia odnosno u novijem okruženju MS VisualStudio 2008.

Napomena

Microsoft Express edition softverski proizvodi (VisualStudio, C#, VB, C++, ...) se mogu besplatno preuzeti i besplatno koristiti i za potrebe edukacije.

Najnovije verzije sa oznakom 2008 se mogu preuzeti sa sajta http://www.microsoft.com/express/download/

dok se verzija 2005 i prethodne verzije mogu preuzeti sa sajta http://msdn.microsoft.com/en-us/vstudio/cc952313.aspx

  RAD i razvojna okruženja

Stalna potreba za skraćivanjem vremena razvoja softvera dovela je do pojave integrisanih okruženja za razvoj aplikacija (IDE). Ova okruženja su objedinjavala sve alate potrebne za razvoj aplikacija tj. editor, kompajler, linker, debager, itd. Pojavom Windowsa i windows programiranja i razvojem objektno orijentisane paradigme i na njoj zasnovanih objektno orijentisanih programskih jezika doveli su do pojave novih okruženja koja pružaju mogućnost brzog razvoja aplikacija (Rapid Application Development). Razvoju ovih okruženja pogodovao je i novi pristup u razvoju aplikacija. Aplikacija se posmatra kao interfejs, sastavljen od više formi na kojima se nalaze odgovarajuće kontrole, preko koga korisnik komunicira sa aplikacijom. Korisnik pokreće aplikaciju koja očekuje akcije korisnika i kada ih prepozna pokušava da odgovori na njih tako što izvršava neku obradu. Akcije

9

Page 10: Uvod u Programiranje i Programske Jezike

korisnika se nazivaju dogadjajima (engl. event). Dogadjaji mogu biti ili izazvani pritiskom odgovarajućih tastera ili kombinacije tastera kao što su Enter, Tab, Alt + neki karakter, itd. ili pak pomoću miša kao na primer klik na levo dugme miša, klik na desno dugme miša, prelazak pointera miša preko neke kontrole itd. Programiranje se zapravo svodi na pisanje koda koji treba da se izvrši kao odgovor aplikacije na dogadjaje. Stoga se ovaj način progamiranja naziva i programiranje vodjeno dogadjajima (event driven programming). Za svaki dogadjaj se piše odgovarajuća funkcija koja se izvršava po aktiviranju dogadjaja. Razvoj neke aplikacije se zapravo svodi na dve faze:

fazu kreiranja interfejsa i fazu pisanja koda.

S druge strane sve Windows aplikacije po svom izgledu dosta liče jdna na drugu jer koriste slične elemente tj. kontrole. Zato RAD okruženja nude gotove klase za pojedine elemente interfejsa ili pak složenije često korišćene elemente (npr. Dijalog za otvaranje fajla ili pak dijalog za izbor boje). Sva RAD okruženja grubo rečeno liče po skupinama funkcionalnosti koje nude (npr. razvojno okruženje Delphi ili pak Visual Studio). Cilj je omogućiti što jednostavnije izvršavanje i faze kreiranja interfejsa aplikacije i faze kodiranja. Tako, sva RAD okruženja nude Toolbox sa velikim brojem kontrola koje predstavljaju elemente interfejsa standardne kod Windows aplikacija. Zatim tu se nalazi i centralni deo u kome se u modu za dizajn kreira vizuelni izgled interfejsa ili se pak prikazuje odgovarajući kod. Za pregled svih elemenata projekta postoji odgovarajući explorer. Za pregled osobina klasa tj. objekata klasa postoji prozor sa svim osobinama i njihovim vrednostima i dogadjajima koje može da prepozna odgovarajuća kontrola.

Elementi MS Visual Studio 2005

Pošto ćemo koristiti RAD okruženje VisualStudio 2005 kompanije Microsoft prikazaćemo detaljnije njegove elemente. Okruženje je prikazano na slici 1.:

10

Page 11: Uvod u Programiranje i Programske Jezike

Slika 1: Razvojno okruženje MS Visual Studio 2005

Pojedini elementi okruženja su označeni brojevima od 1 do 7. I to:

1 – Toolbox (deo u kome se nalaze gotove sistemske komponente koje nudi okruženje podeljene po kategorijama (CommonControls, Containers, Menus&Toolbars, Data, Components, Printing, Dialogs, Crystal Reports, General).

2 – Deo za dizajniranje formi i editor koda.

3 – Solution Explorer (pregled svih fajlova u projektu)

4 – Properties (prozor za prikaz i podešavanje osobina i dogadjaja za selektrovanu kontrolu).

5 – Deo za prikaz informacija (o greškama prilikom kompajliranja, upozorenjima, itd.)

6 – Linija menija

7 – Toolbar (Linija sa alatima)

11

Page 12: Uvod u Programiranje i Programske Jezike

Okruženje ima i mogućnost prilagodjavanja potrebama i navikama programera. Pored toga okruženje nudi i niz pogodnosti za razvoj aplikacije kako u fazi projektovanja tj. dizajna interfejsa tako i u fazi kodiranja. Na primer, u fazi dizajna pri postavljanju kontrola na formu pojavljuju se pomoćne linije radi lakšeg poravnavanja kontrola i podešavanja njihove veličine ili pak u fazi kodiranja se nakon navodjenja imena objekta i tačke odmah pojavljuje pomoćni prozor sa listom svih mogućih metoda i atributa koji su dostupni za dati objekat (tzv. Intelli Sense). Ako izaberemo metodu i napišemo otvorenu zagradu za početak unošenja argumenata odmah se pojavljuje pomoć koja nam prikazuje definiciju metode i pomaže da izvršimo unos pravih argumenata tj. argumenata odgovarajućeg tipa. Isto tako se dobija informacija ako postoji više metoda sa istim imenom tj. ako je došlo do preopterećenja metoda (više metoda sa istim imenom ali sa različitim brojem parametara ili pak različitim tipom parametara). Kao što ćemo videti kasnije dok testiramo naše primere sve ove stvari značajno skraćuju vreme potrebno za generisanje tj. razvoj aplikacije. Šta više, pokazaćemo kako je moguće dobiti aplikaciju bez ispisane i jedne linije koda! Proces kompajliranja i linkovanja je takodje pojednostavljen kroz stavke Build u meniju Debug. Ako dodje do greške okruženje prikazuje listu grešaka sa objašnjenjima i pruža mogućnost pozicioniranja na linije koje sadrže grešku. Ako je greška semantičke prirode tj. program ne radi onako kako smo predvideli da radi onda nam okruženje omogućuje relativno jednostavnu analizu programskog koda pomoću ugradjenog debagera o kome će kasnije biti više reči. Pobrojali smo samo deo mogućnosti koje nudi okruženje. Za potpuno upoznavanje sa mogućnostima okruženja potreban je dugotrajniji rad. Neke od mogućnosti okruženja ćemo upoznati i kroz realizaciju primera.

Pitanja

1)  Šta je IDE?

2) Šta je RAD?

3) Šta su dogadjaji?

4) Koji su osnovni elementi razvojnog okruženja MS Visual Studio 2005?

Startovanje Visual Studia 2005

Startovanje VisualStudia2005 se može učiniti u 4 koraka tj. klika (kao što je to prikazano na slici 2):

1. Klik na Start button (uobičajeni položaj je donji desni ugao ekrana)2. Klik na AllPrograms

3. Klik na Microsoft Visual Studio 2005

4. Klik na Microsoft Visual Studio 2005

12

Page 13: Uvod u Programiranje i Programske Jezike

Slika 2: StartovanjeVisualStudio 2005

Pitanja

1) Kako se startuje MS Visual Studio 2005?

 

Kreiranje konzolne aplikacije u razvojnom okruženju VisualStudio2005

Potrebna predznanja

Da bi radili sa DOS komandama (npr. izmena radnog direktorijuma i startovanje kreiranih programa iz DOS prozora) potrebno je :

znati kako se pokreće DOS prozor osnovne komande DOS operativnog sistema (npr. izmena radnog direktorijuma)

Za početak biće opisan način kako se kreira konzolna aplikacija u razvojnom okruženju Visual Studio 2005 kako bi mogli da proverimo date primere. Kasnije će biti više detalja o razvoju Windows aplikacija u ovom okruženju.

Po startovanju razvojnog okruženja treba kreirati novi projekat iz menija File – New – Project kao što je to prikazano na slici 3.

 

13

Page 14: Uvod u Programiranje i Programske Jezike

Slika 3: Kreiranje novog projekta

U prozoru za izbor projekta (prikazan na slici 4) treba izabrati tip projekta (Project type) i neka to bude Visual C# - Windows – Console Application. Treba navesti naziv projekta i putanju do direktorijuma gde će taj projekat biti memorisan. Na slici 3 je za naziv projekta izabrano NazivProjekta a za putanju D:\KursCSharp.

 

14

Page 15: Uvod u Programiranje i Programske Jezike

Slika 4: Izbor vrste projekta

Pritiskom na dugme OK kreira se projekat i prikazuje se prozor u kome se unosi kod kao što je to prikazano na slici 5. Uočite da prozor za pisanje koda nije prazan i da je izgenerisan namespace NazivProjekta, klasa Program i Main funkcija.

 

Da bi kreirali naš prvi program u telu funkcije Main treba uneti kod tako da funkcija Main izgleda kao: 

static void Main(string[] args)

System.Console.WriteLine("Ovo je konzolna aplikacija"); 

  }

 

15

Page 16: Uvod u Programiranje i Programske Jezike

Slika 5: Početni izgled prozora za unos koda

Da bi mogli da vidimo rezultat izvršenja našeg programa potrebno je izvršiti „build” operaciju i pokrenuti program. Najjednostavniji način je istovremeni pritisak na tastere Ctrl i F5 (kasnije će ovaj postupak biti objašnjen dataljnije). Kao rezultat dobija se DOS prozor sa ispisanom porukom „Ovo je konzolna aplikacija” a zatim obaveštenje korisniku da pritiskom na bilo koji taster dolazi do zatvaranja ovog prozora, kao što je to prikazano na slici 6. Ako bi želeli da izbegnemo pojavljivanje poruke „Press any key to continue” možemo da startujemo aplikaciju samo sa F5. Medjutim, po ispisu poruke „Ovo je konzolna aplikacija” prozor će se odmah zatvoriti. Da bi ovo izbegli dovoljno je da u telu funkcije Main unesemo sledeću liniju koda:

Console.ReadKey ();

Efekat ove linije je da se čeka da korisnik unese neki karakter. Po pritisku bilo kog tastera prozor aplikacije se zatvara.

Treći način za pokretanje aplikacije je pokretanje iz komandne linije (DOS prozor). Ako je folder (direktorijum, fascikla) u kome se nalazi projekat F (u našem primeru to je D:\KursCSharp) izvršna verzija programa se nalazi u folderu F\NazivProjekta\bin\Debug i zove se NazivProjekta.exe. Dovoljno je promeniti radni direktorijum na F\NazivProjekta\bin\Debug (startovanje slede'e DOS omande u DOS proyoru "cd F\NazivProjekta\bin\Debug"), otkucati NazivProjekta i aplikacija će se startovati.

16

Page 17: Uvod u Programiranje i Programske Jezike

Slika 6: Prva konzolna aplikacija

 

Pitanja 1) Kako se kreira konzolna aplikacija u MS Visual Studio 2005?

2) Kako se pokreće aplikacija u MS Visual Studio 2005?

Razvojno okruženje MS Visual Studio 2008

Activity Razvojno okruženje MS Visual Studio 2008 je u velikoj meri slično okruženju MS Visual Studio 2005 te ne bi trebalo da bude bilo kakvih problema da se sadržaj ovog kursa isprati  korišćenjem  bilo kog od ova dva okruženja.

Startovanje MS Visual Studia 2008

Activity

Startovanje  MS  Visual Studio  2008  je slično kao i startovanje prethodne verzije 2005.  Sličnost u radu  verzije 2008 sa verzijom 2005 je velika tako da će se samo u ovom delu napraviti paralela da bi se ta sličnost ilustrovala a nadalje će biti korišćena samo jedna verzija.

 

17

Page 18: Uvod u Programiranje i Programske Jezike

Slika 1: Startovanje MS Visual Studia 2008  

 

Kreiranje projekta - konzolna aplikacija

Activity

Kreiranje novog projekta se obavlja iz menija na način ilustrovan na slici 1 (File-New-Project...).

18

Page 19: Uvod u Programiranje i Programske Jezike

Slika 1: Kreiranje novog projekta

Po kreiranju projekta treba definisati o kojoj vrsti projekta se radi. Na slici 2 je ilustrovano kreiranje C#.NET projekta čiji je naziv MojPrviCSharpProjekat koji se nalazi u folderu D:\Users\Gaga\kursAkreditacija\2009\MaterijalZaKurs\exeLearnFiles\GotoviKurs\Verzija20102011 a koji predstavlja konzolnu aplikaciju (Console Application). Podrazumevano je isto ime i za projekat i za Solution (Name je isto sa Solution Name) ali i to moze da se promeni.

19

Page 20: Uvod u Programiranje i Programske Jezike

Slika 2: Kreiranje C# projekta konzolne aplikacije 

 Po kreiranju projekta otvara se file Project.cs (cs je extenzija za C# fajlove) u kome se može uočiti klasa Program i funkcija Main koja se izvršava kada startujemo aplikaciju (isto kao i u programskim jezicima C i C++).  Izgled okruženja datog projekta MojPRvicSharpProjekat je prikazan na slici 3.

20

Page 21: Uvod u Programiranje i Programske Jezike

Slika 3: Startovan projekat MojPrviCSharpProjekat

Telo funckije Main je inicijalano prazno.  Unesimo kod kao što je to prikazano na slici 4.

 

 

Slika 4: Main funkcija sa linijom koda za prikaz poruke Ovo je konzolna aplikacija

Unetom linijom se na izlaz (konzolu) prikazuje poruka Ovo je konzolna aplikacija. Ovaj prikaz je omogućen pozivom metode WriteLine klase Console iz System namespace-a.

21

Page 22: Uvod u Programiranje i Programske Jezike

Startovanje kreirane aplikacije se može obaviti na više načina. Jedan od njih je CTRL + F5 kada se program najpre bilduje i ako je sve korektno napisano ovaj proces će se završiti uspešno o čemu će biti ispisana poruka u donjem delu okruženja u prozoru Output (sa uobičajenom porukom ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========) i otvoriće se konzola sa startovanom aplikacijom. U našem slučaju će u konzoli biti ispisana poruka Ovo je konzolna aplikacija kao što je prikazano na slici 5.

Slika 5: Startovana konzolna aplikacija

Prethodni način pokretanja aplikacije se može izvršiti u dva koraka: u prvom koraku može da se porkene samo bildovanje aplikacije kao što je to prikazano na slici 6, a zatim se može pozvati aplikacija na izvršenje.

22

Page 23: Uvod u Programiranje i Programske Jezike

Slika 6: Bildovanje projekta 

Na slici 6 se može videti da je moguće bildovanej samo tekućeg projekta ili pak bildovanej celog Solution-a koji u opštem slučaju može sadržati veći broj projekata.    

23