+ All Categories
Home > Documents > Osnove C.doc

Osnove C.doc

Date post: 22-Dec-2015
Category:
Upload: zmigavac3058
View: 251 times
Download: 3 times
Share this document with a friend
31
Osnove C# programa Ispisane linije koda predstavljaju strukturu C# aplikacije. using System; class HelloWorld { public static void Main() { System.Console.WriteLine("Hello, World"); } } Ključna reč using
Transcript
Page 1: Osnove C.doc

Osnove C# programa

Ispisane linije koda predstavljaju strukturu C# aplikacije.

using System;

class HelloWorld

{

public static void Main()

{

System.Console.WriteLine("Hello, World");

}

}

Ključna reč

using

referiše .NET Frejmvork(Framework) biblioteku klasa. Izvršavanje koda počinje od

Page 2: Osnove C.doc

Main

metode. Klase u .NET frejmvorku grupisane su u tzv. namespace-

ove ili prostore imena. Prostor imena System obezbeĎuje pristup resursima sistema u kome se aplikacija izvršava.

Formatiranje koda u C#

Svaka C# aplikacija ima

Main

metodu definisanu u jednoj od svojih klasa. Main metoda je statička metoda što znači da ne pripada

objektima klase nego samoj klasi. Klasa se ne mora instancirati

da bi se pozvala Main metoda, drugim rečim

a svi objekti(primerci,instance) klase dele istu Main metodu. Main metoda je javna.

Kod pisan u C#-

u je osetljiv na mala i velika slova. Ukoliko je potrebno pisati komentare npr. kao podsetnik programeru šta odreĎeni segment koda radi ili čemu služe pojedine promenljive, onda se koristi znak // ukoliko se želi komentar u jednoj liniji. Komentar koji treba da se proteže na više linija počinje sa kombinacijom znakova /* a završava se sa kombinacijom */. Kompajler ignoriše ko

mentar.

Metoda WriteLine

Page 3: Osnove C.doc

Ovo je metoda klase

Console

koja se nalazi u prostoru imena

System

. Koristi se za prikazivanje jedne linije teksta na standardnom

izlazu. Ulazni parametar metode je string tj. tekst napisan pod znacima navoda. Rezultat izvršavanja metode je prikazivanje t

eksta na ekranu i prelazak kursora u novi red. Treba napomenuti da se klasa Console koristi samo kod tzv. konzolnih aplikacija kod kojih se

rezultat izvršavanja aplikacije prikazuje u konzoli tj. DOS promptu Windows operativnog sistema. Pored konzolnih aplikaci

ja primenom

okruženja Microsoft Visual Studio.NET moguće je kreirati i druge tipove aplikacija kao što su Windows aplikacije, ASP.NET web

aplikace ASP.NET web servisi itd.

Ugra

đeni tipovi podataka

Tipovi podataka se koriste za definisanje promenljivi

h. Promenljive mogu čuvati različite tipove podataka. Kada se promenljiva deklariše treba imati na umu koju vrstu podataka će ona čuvati. Programski jezik C# i .NET

frejmvork definišu tzv. sistemske ili ugraĎene tipove podataka. Često se za sistemske tipo

ve podataka koristi i naziv

“predefinisani”. Naravno moguće je definisati i sopstvene tipove

podataka.

Page 4: Osnove C.doc

Kontrola toka

Naredba if dozvoljava kontrolu toka izvršavanja aplikacije u zavisnosti od vrednosti logičkog izraza koji se testira. Postoji

tri osnovne

verzije korišćenja if naredbe :

if

,

if else

i

if else if

.

Verzija 1:

if(uslov)

naredba1;

Page 5: Osnove C.doc
Page 6: Osnove C.doc

Verzija 2:

if (uslov)

naredba1;

else naredba2;

Verzija 3:

if(uslov)

{

naredba1;

naredba2;

}

else

{

Page 7: Osnove C.doc

naredba3;

naredba4;

}

Kod sve tri verzije naredbe if testira se neki logički uslov označen oznakom “uslov”. Kod osnovne verzije if naredbe, ukoliko

je logički iskaz tačan tj. ima vrednost true izvršava se naredba 1. Umesto naredbe 1 može se zahtevati izvršavanje

bloka naredbi koje se u tom

slučaju stavljaju izmeĎu vitičastih zagrada.

U drugoj i trećoj verziji predstavljena je sintaksa naredbe

if

else.

Ako je logički uslov tačan izvršava se naredba naredba1 a ukoliko nije izvršava se naredba naredba2. Slično je sa trećim primerom stim što se u ovom slučaju izvršavaju odgovarajući blokovi naredbi u zavisnosti od toga da li je logočki uslov koji se testira tačan ili nije. U nastavk

u predstavljena je i struktura naredbe

if else if.

if (uslov1)

Page 8: Osnove C.doc

{

B1; }

else if (uslov2)

{

B2; }

else

{

B3; }

Ako je uslov uslov1 istinit izvršava se blok naredbi simbolično označen sa B1, ukoliko uslov1 nije istinit proverava se da li

je uslov2

istinit, ako jeste izvršava se blok naredbi B2. Ukoliko ni jedan ni drugi uslov nije istinit izvršava se blok naredbi B3.

Page 9: Osnove C.doc
Page 10: Osnove C.doc

Naredba switch

Ovde je prikazan primer upotrebe switch naredbe.

switch(broj)

{

case 1:

Console.WriteLine("Uneli ste broj jedan");

break;

case 2:

Console.WriteLine("Uneli ste broj 2");

break;

default:

Console.WriteLine("Uneli ste broj koji nije niti 1 niti 2");

break;

Page 11: Osnove C.doc

}

Izvršavanje switch naredbe sastoji se iz nekoliko koraka:

1.

Izračunava se promenljiva broj

2.

Ako je vrednost promenljive broj jednak jednoj od konstantnih vrednosti u case rečenici izvršava se kod koji se nalazi iza te

case konstante

3. Ako ni jedna od vrednosti case labela nije jednaka vrednosti prome

nljive broj izvršava se default case labela

U okviru svakog case bloka nalazi se break naredba da bi se izvršavanje koda zaustavilo a ne prešlo na sledeći case blok.

Definisanje klase

Klasa predstavlja apstraktnu predstavu skupa objekata koji imaju iste osobine. Sastoji se od atributa i metoda. Atributi i metode se nazivaju

članice klase. Objekat predstavlja konkretan primerak

-

instancu klase. Klasu treba shvatiti kao skicu na osnovu koje će kasnije

Page 12: Osnove C.doc

biti kreirani objekti. U nastavku je prikazana klasa AutomatNovca koja ima dva javna atributa imePrezime i stanje.

public class AutomatNovca

{

public string imePrezime;

public double stanje;

}

Da bi se klasa definisala koristi se

ključna reč

class

ispred imena klase. Preporuka je da ime klase počinje velikim slovom. Ako se ime klase sastoji iz više reči tada svaka sledeća reč počinje velikim slovom. Klasa je korisnički definisani tip.

Instanciranje klase, tj. kreiranje objekata

klase vrši se upotrebom službene reči

new

. Funkcija koja se nalazi iza ključne reči new naziva se podrazumevani konstruktor i kao što joj samo ime kaže služi za konstruisanje objekata. Atributima objekta pristupa se prek

Page 13: Osnove C.doc

o

operatora .(“tačka”). Ovde je kreiran objekat označen sa an.

AutomatNovca an = new AutomatNovca();

an.imePrezime = “Pera Peric”;

an.stanje = 12345.67;`

Metode klase

Metoda klase je funkcija

članica klase. Svaka metoda treba da definiše tip podataka koji vraća ili ukoliko metoda

ne vraća ništa onda se povratni tip metode označava sa void. Ukolika metoda vrća neku vrednost onda se unutar tela metode koristi službena reč

return

.

Page 14: Osnove C.doc
Page 15: Osnove C.doc

Svaka metoda ima svoje ime. Uobičajeno da ime metode počinje malim slovom. Metoda može imati listu parametara ili može biti bez

parametara. Metoda prikazana u primeru ima ime

podizanjeNovca, ima jedan ulzni parametar tipa double i vraća rezultat tipa double.

public double podizanjeNovca(double iznos)

{

stanje -= iznos ; // stanje = stanje - iznos

return stanje ;

}

Metoda se koristi za postavljanje vrednosti atributa stanje (koji se nalazi unutar iste klase kojoj pripada i metoda podizanjeNovca).

Prevedeno na poslovnu terminologiju stanje na računu se samnjuje za podignuti iznos

.

Page 16: Osnove C.doc

Primer klase

Data je definicija klase

AutomatNovca koja služi za rad sa nekim tekućim računom. Klasa ima dva atributa imePrezime i stanje, gde atribut stanje predstavlja stanje na računu korisnika čije je ime i prezime sadržano u atributu

imePrezime. Klasa ima dve metode uplata

i podizanjeNovca. Svakom uplatom povećava se stanje na računu korisnika za odreĎeni iznos a svakim podizanjem novca vrednost

na

računu se smanjuje.

public class AutomatNovca

{

public string imePrezime;

Page 17: Osnove C.doc

public double stanje;

// metoda uplata

public void uplata(double iznos)

{

stanje += iznos;

}

// metoda podizanjeNovca

public double podizanjeNovca(double iznos)

{

stanje -= iznos ; // stanje = stanje - iznos

return stanje ;

}

}

Page 18: Osnove C.doc

Pozivanje metode

Da bi se metoda klase pozvala potrebno je napraviti

objekte te klase a zatim se metodi klase pristupa korišćenjem operatora .(“tačka”). Ovo važi za tzv. javne metode klase, odnosno metode uz koje stoji službena reč public. Ovde je kreiran tekući račun tj. objek

at klase AutomatNovca za korisnika pod imenom

Mika Mikic

” . Zatim su izvršene dve uplate na račun korisnika pozivanjem metode uplata. Obratiti pažnju da metoda uplata ima ulazni parametar tipa double i da ne vraća nikakvu vrednost. Na kraju je izvršeno jedno

podizanje

novca korišćenjem metode

podizanjeNovca.

Ova metoda ima ulazni parametar tipa double i vraća rezultat tipa double. Rezultat izvršavanja metode je prihvaćen u promenljivoj tipa double pod nazivom

trenutniIznos.

AutomatNovca an1 = new AutomatNovca();

an1.imePrezime = "Mika Mikic";

// uplate na racun

an1.uplata(12345.23);

an1.uplata(1000);

Page 19: Osnove C.doc

// podizanje novca i racunanje preostalog iznosa

double trenutniIznos = an1.podizanjeNovca(456);

Nasleđivanje

NasleĎivanje je jedan od osnovnih koncepata objektno orijentisanog programiranja. Klasa koja je izvedena iz osnovne klase nasleĎuje sve atribute i metode te klase. Za osnovnu klasu se u literaturi često sreće i naziv bazna klasa, natklasa ili superklasa. Često korišćeni

termin za izvedenu klasu je podklasa. U programskom jeziku C# izvedena kl

asa može da nasledi samo jednu baznu klasu. Koncept višestrukog nasleĎivanja prisutan u jeziku C++ je izbačen. Da bi se neka klasa definisala kao izvedena klasa neke druge klase

koristi se

operator: (“dve tačke”). Oznaka

public class B : A

označava da je

klasa B izvedena iz klase A. Posle ovakve oznake dolazi definicija

tela klase izvedene klase B unutar litičastih zagrada. U nekim situacijama će korisnik želeti da zabrani nasleĎivanje svoje k

lase. To se

postiže korišćenjem ključne reči final. Klasa koja u

svojoj definiciji ima reč final ne može se naslediti.

Page 20: Osnove C.doc

Osnovna klasa

Page 21: Osnove C.doc
Page 22: Osnove C.doc

Da bi se ilustrovao koncept nasleĎivanja u nastavku je definisana klasa A koja će se kasnije iskoristiti kao bazna klasa.

Radi ilustracije

prava pristupa i uticaja na nasleĎivanje, u klasi su definisana 3 atributa od kojih je jedan public, drugi private, a treći protected. U konstruktoru klase se ovi atributi označeni sa a1, a2 i a3 inicijalizuju na vrednosti 1, 2 i 3 respektivno. Klasa ima metodu

stampajA()

koja služi za štampanje

vrednosti svojih atributa.

public class A

{

public int a1;

private int a2;

protected int a3;

public A()

{

a1 = 1;

Page 23: Osnove C.doc

a2 = 2 ;

a3 = 3;

}

public void stampajA()

{

Console.WriteLine("Vrednosti a1 a2 i a3 su {0} {1} {2}",a1,a2,a3);

}

}

Izvedena klasa

U primeru je realizovana klasa B koja je izvedena iz klase A. Klasa B pored atributa a1, a2 i a3 koje je nasledila od klase A

uvodi još jedan dodatni atribut označen sa b. Konstruktor klase B inicijalizuje atribut b na vrednost 100. P

rilikom konstruisanja objekta izvedene

klase ukoliko se eksplicitno ne naznači najpre se poziva podrazumevani konstruktor bazne klase a tek onda pozvani konstruktor

izvedene klase.

Page 24: Osnove C.doc

Objekat klase B označen sa objB je nasledio atribute a1, a2 i a3 bazne klas

e kao i metodu stampajA. Iako je objekat B

nasledio atribut a2 unutar klase B ne može da mu se pristupi korišćenjem operatora . (“tačka”). To je zbog činjenice da je atribut a2 privatan. Atributu a1 se može pristupiti preko operatora . (“tačka”) jer je javan. Vrednost atributa a1 se može pročitati korišćenjem javne metode stampajA koju je objekat objB nasledio. TakoĎe se može pristupiti i atributu a2 jer je protected, a kao što je p

oznato

protected atribut se za članove izvedene klase ponaša kao public.

public class B : A

{

public int b ;

public B()

{

b= 100; }

[STAThread]

static void Main(string[] args)

{

Page 25: Osnove C.doc

B objB = new B();

// objB je nasledio a1,a2 i a3

Console.WriteLine("Pre setovanja vrednosti su : " );

objB.stampajA(); objB.a1 = 11;

objB.a3 = 13;

Console.WriteLine("Posle setovanja vrednosti su : " );

Page 26: Osnove C.doc
Page 27: Osnove C.doc

objB.stampajB();

Console.ReadLine();

}

U primeru je definisana i metoda stampajB karakteristična samo za izvedenu klasu. Unutar izvedene metode moguće je pozvati metodu osnovne klase korišćenjem ključne reči

base

, npr. base.stampajA().

public void stampajB()

{

// mogu da pozovem funkciju osnovne klase

base.stampajA();

Console.WriteLine(" Vrednost b je {0} ",b);

}

Page 28: Osnove C.doc

Recommended