Presentation is loading. Please wait.

Presentation is loading. Please wait.

C# Autori: Nebojša Lazarević, prof.informatike

Similar presentations


Presentation on theme: "C# Autori: Nebojša Lazarević, prof.informatike"— Presentation transcript:

1 C# Autori: Nebojša Lazarević, prof.informatike
Aleksandar Nikolić, student Elektronike

2 Istorijat programiranja
Proceduralno programiranje – Procedura ili funkcija je skup specifičnih instrukcija, izvršavaju se jedna za drugom. Podaci su bili potpuno odvojeni od procedura i programiranje se sastojalo u vođenju evidencije o tome koje funkcije i koji pozivi funkcija utiču na promenu podataka Strukturno programiranje – Na računarski program treba posmatrati kao da se sastoji od skupa poslova. Svaki posao koji je suviše složen je potrebno razbijati na skupove manjih poslova. Strukturno programiranje još uvek predstavlja veoma uspešan prilaz rešavanju kompleksnih problema. Objektno orijentisano programiranje (OOP) – U osnovi objektno orjentisanog programiranja leži ideja objedinjavanja u jednoj strukturi podataka i akcija nad njima (koje se u terminologiji OOP nazivaju metode) tj. pri ovakvom pristupu organizaciji podataka postoji tešnja veza između podataka i akcija. Objektno orjentisano programiranje se bazira na tri osnovna pojma: Enkapsulacija i skrivanje podataka (kombinovanje podataka sa procedurama i funkcijama gde se kao rezultat dobija novi tip koji se naziva klasa. Enkapsulacija omogućava da se korisnicima klase ograniči pristup poljima(promenljivima I podacima) i metodima klasa(funkcijama I procedurama).) Nasleđivanje (mogućnost korišćenja već definisanih klasa za građenje hijerarhije klasa gde svaki “naslednik” nasleđuje opise podataka “praroditelja” i pristup metodama njihove obrade. Polimorfizam (mogućnost definisanja jedinstvenog po imenu metoda (f-je ili procedure), primenljivog istovremeno na svim klasama hijerarhije nasleđivanja, pri čemu svaka od klasa može naznačiti specifičnosti realizacije te akcije.) Program za administraciju i kontrolu umreženih računarskih sistema

3 Program za administraciju i kontrolu umreženih računarskih sistema
Osnove programiranja Program je skup naredbi napisanih od strane programera ili izvršni softver. Reč program se koristi u dva značenja: da opiše pojedinačne instrukcije tj. Izvorni kod koji je kreirao programer i da opiše softver u celini. Izvorni kod se može transformisati u izvršni na dva načina: Interpretatori direktno prevode izvorni kod u računarske instrukcije i računar ih izvršava neposredno. Prevodioci uvode dodatne korake prevođenja i povezivanja koda. Debugger Editor Prevodilac Program.pas Program.obj F-je Povezivač Program.exe Punilac RAM OS Program za administraciju i kontrolu umreženih računarskih sistema

4 Nivoi programske reprezentacije
Apstrakcije temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Program u VPJ Program u asembleru Mašinski program Specifikacija kontrolnih signala Compiler lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) Assembler Mašinska interpretacija Jezik registrarskog prenosa ALUOP[0:3] <= InstReg[9:11] & MASK

5 Osnove objekto-orijentisanog programiranja
Delphi 6 je objektno-orijentisani programski jezik (OOP) koji koristi Object Pascal programski jezik kao proširenje standardnog Pascal jezika omogućavajući na vrlo lak način projektovanje grafičkog korisničkog interfejsa (GUI) u skladu sa specifikacijama koje je postavila firma Microsoft upotrebom koncepata vizuelnog programiranja. Osnovni element svake Windows aplikacije je forma – kontejner u koji se smeštaju vizuelne i nevizuelne komponente (dugmad (Buttons), meniji (Menus), liste, polja za odabir itd). Za svaki od objekata je definisano mnoštvo događaja na koje se može reagovati aktivirajući procedure ili funkcije za obradu tih događaja koje sadrže odgovarajući programski kod. Inicijalizacija procedura Inicijalizacija Obrada događaja Analiza podataka Procedura 1 Procedura 1 Događaji ... ... Procedura n Procedura n Deinicijalizacija Program standardne arhitekture - DOS Program zasnovan na događajima – Windows platforma Program za administraciju i kontrolu umreženih računarskih sistema

6 Program za administraciju i kontrolu umreženih računarskih sistema
I Uvod u klase i objekte Temelj OOP je predstavljen ključnom rečju class. Klasa je korisnički definisan tip podataka koji sadrži interne podatke i metode u formi procedura i funkcija i obično opisuje generičke karakteristike i ponašanje velikog broja sličnih objekata. Objekat (Object) je instanca klase, ili promenljiva tipa podataka definisanog klasom i predstavljaju stvarne entitete koji zauzimaju deo memorije za svoje potrebe. Veza između objekata i klasa je jednaka vezi između promenljive i tipa podataka. Svaki put kada se eksplicitno pravi objekat u kodu aplikacije je potrebno i osloboditi ga jer se u suprotnom memorija koju koristi objekat neće osloboditi. Metodi (Metods) su veoma slični procedurama i funkcijama ali je suštinska razlika u tome što metodi sadrže implicitni parametar Self, koji predstavlja referencu tj. pokazivač na aktuelni objekat koji ih je pozvao. Konstruktor (Constructor) je specijalni metod koji se može upotrebiti nad klasom da bi se postavila memorija za objekat pozivanjem metoda Create. Postoji unapred određeni konstruktor TObject.Create koji inicijalizuje sve podatke nove instance na nulu. Ukoliko se želi ne nulto inicijalizovanje instance potrebno je napisati svoj konstruktor upotrebom ključne reči constructor. Destruktor (Destroy) je specijalni metod deklarisan ključnom rečju destructor kojim se obavlja oslobađanje memorije i resursa pre nego što se objekat ukloni. Uklanjanje objekata je moguće izvesti pozivom metode Free kojim se proverava da tekući objekat (Self) nije nil pre nego što se pozove virtuelni destruktor Destroy. Preopterećeni (Overload) metodi i konstruktori omogućavaju postojanje više metoda istog naziva, ukoliko imaju različite parametre u broju ili tipu gde kompajler odlučuje koja verzije rutine se poziva. Iza svake verzije metoda mora slediti ključna reč overload. Program za administraciju i kontrolu umreženih računarskih sistema

7 Program za administraciju i kontrolu umreženih računarskih sistema
II Enkapsulacija Enkapsulacija (Encapsulation) omogućava skrivanje podataka unutar klase koja ih koristi gde svaka jedinica (modul) ima dva osnovna dela: interfejs (interface) i implementacija (implementation). Svaki identifikator (rutina, promenljiva ili nesto drugo) koji se deklariše u interfejs odeljku jedinice postaje dostupan bilo kojoj jedinici programa ukoliko postoji iskaz uses. Sve rutine i metodi deklarisane u interfejs bloku jedinice moraju kasnije biti u potpunosti definisane u implementacionom odeljku iste jedinice. Sa druge strane, svaki identifikator koji je deklarisan u implementacionom odeljku jedinice se ne može koristiti van te jedinice u kojoj je deklarisan. Za enkapsulaciju na osnovu klasa postoje tri specifikatora pristupa: Direktiva private – označava polja i metode klase kojima se ne može pristupiti van jedinice Direktiva protected se koristi da označi metode i polja sa ograničenom vidljivošću Direktiva public označava polja i metode kojima se može slobodno pristupati iz bilo kog dela programa Enkapsulacija pomoću svojstva omogućava direktno mapiranje na podatke ili metode radi čitanja i zapisivanja njihovih vrednosti korišćenjem ključnih reči property za naziv svojstva i direktiva read i write za promenu vrednosti. Program za administraciju i kontrolu umreženih računarskih sistema

8 Primer interfejs i imlementacionog odeljka klase TDate
unit Dates; interface type TDate = class private fDate: TDateTime; procedure SetDay(const Value: Integer); procedure SetMonth(const Value: Integer); procedure SetYear(const Value: Integer); function GetDay: Integer; function GetMonth: Integer; function GetYear: Integer; public constructor Create; overload; constructor Create (y, m, d: Integer); overload; procedure SetValue (y, m, d: Integer); overload; procedure SetValue (NewDate: TDateTime); overload; function LeapYear: Boolean; procedure Increase (NumberOfDays: Integer = 1); procedure Decrease (NumberOfDays: Integer = 1); function GetText: string; property Year: Integer read GetYear write SetYear; property Month: Integer read GetMonth write SetMonth; property Day: Integer read GetDay write SetDay; end; Program za administraciju i kontrolu umreženih računarskih sistema

9 Program za administraciju i kontrolu umreženih računarskih sistema
procedure TDate.SetValue(NewDate: TDateTime); begin fDate := NewDate; end; procedure TDate.SetDay(const Value: Integer); fDate := RecodeDay (fDate, Value); procedure TDate.SetMonth(const Value: Integer); fDate := RecodeMonth (fDate, Value); procedure TDate.SetYear(const Value: Integer); fDate := RecodeYear (fDate, Value); function TDate.GetDay: Integer; Result := DayOf (fDate); function TDate.GetMonth: Integer; Result := MonthOf (fDate); end. implementation uses SysUtils, DateUtils; procedure TDate.SetValue (y, m, d: Integer); begin fDate := EncodeDate (y, m, d); end; function TDate.LeapYear: Boolean; Result := IsInLeapYear(fDate); procedure TDate.Increase (NumberOfDays: Integer = 1); fDate := fDate + NumberOfDays; constructor TDate.Create (y, m, d: Integer); constructor TDate.Create; fDate := Date; Program za administraciju i kontrolu umreženih računarskih sistema

10 Program za administraciju i kontrolu umreženih računarskih sistema
III Nasleđivanje Nasleđivanje (Inheritance) omogućava definisanje nove klase direktno iz postojeće i čini jedan od fundamentalnih elemenata OOP jezika. type TForm1 = class (TForm) end; Ova jednostavna definicija označava da klasa TForm1 nasleđuje sve metode, polja, svojstva i događaje od klase TForm. Može se upotrebiti bilo koji javni metod klase TForm nad objektom tipa TForm1. Klasa od koje se nasleđuje je tzv. roditelj (parent) ili predak (ancestor) dok je klasa koja nasleđuje naslednik (descendant) ili dete – klasa (child class). Objekat klase naslednika može se koristiti svaki put kada se očekuje objekat klase pretka dok obratno nije dozvoljeno. TObject ... TForm TForm1 Program za administraciju i kontrolu umreženih računarskih sistema

11 Program za administraciju i kontrolu umreženih računarskih sistema
unit Anim; interface type TAnimal = class public constructor Create; function GetKind: string; private Kind: string; end; TDog = class (TAnimal) implementation constructor TAnimal.Create; begin Kind := 'An animal'; function TAnimal.GetKind: string; GetKind := Kind; constructor TDog.Create; Kind := 'A dog'; end. unit AnimF; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Anim; type TFormAnimals = class(TForm) LabelKind: TLabel; BtnKind: TButton; RadioAnimal: TRadioButton; RadioDog: TRadioButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure BtnKindClick(Sender: TObject); procedure RadioAnimalClick(Sender: TObject); procedure RadioDogClick(Sender: TObject); private MyAnimal: TAnimal; end; var FormAnimals: TFormAnimals; implementation {$R *.DFM} procedure TFormAnimals.FormCreate(Sender: TObject); begin MyAnimal := TAnimal.Create; end; procedure TFormAnimals.FormDestroy(Sender: TObject); MyAnimal.Free; procedure TFormAnimals.BtnKindClick(Sender: TObject); LabelKind.Caption := MyAnimal.GetKind; procedure TFormAnimals.RadioAnimalClick(Sender: TObject); procedure TFormAnimals.RadioDogClick(Sender: TObject); MyAnimal := TDog.Create; end. Program za administraciju i kontrolu umreženih računarskih sistema

12 IV Kasno povezivanje i polimorfizam
Funkcije i procedure Pascala se zasnivaju na statičkom (static binding) ili ranom povezivanju (early binding) što znači da poziv metodu rešava kompajler koji zamenjuje zahtev pozivom određene memorijske adrese na kojoj se nalazi funkcija ili procedura. Polimorfizam (polymorphism) je tehnika dinamičkog povezivanja (dynamic binding) ili kasnog povezivanja. U ovom slučaju stvarna adresa metoda koji treba pozvati se određuje u vreme izvršavanja na osnovu tipa instance klase koja je upotrebljena za poziv. U slučaju OOP-a, polimorfizam se odnosi na činjenicu da postoji nekoliko verzija konkretnog metoda sa istim parametrima u nekoliko klasa i da se metod u “roditeljskoj” klasi definiše kao virtuelni upotrebom ključne reči virtual, a za zaobilaženje kasnog povezivanja metoda u klasi “nasledniku” treba upotrebiti ključnu reč override. Virtualni metod je zasnovan na tabeli virtualnih metoda (virtual method table – VMT) koja je zapravo niz adresa metoda. Tipičan način zaobilaženja metoda podklase je upotreba ključne reči inhereted. Apstraktni metod polimorfizma se koristi za označavanje metoda koji će biti definisan samo u potklasama aktuelne klase. Određuje se ključnom rečju abstract i predstavlja direktivu koja u potpunosti definiše metod u roditeljskoj klasi a ne deklaracija koja se prosleđuje. Poziv ove metode u roditeljskoj klasi, kao i pokušaj definicije metoda izazvaće Delphijev izuzetak i pojavu greške. Program za administraciju i kontrolu umreženih računarskih sistema

13 Program za administraciju i kontrolu umreženih računarskih sistema
unit Anim; interface type TZivotinje = class public constructor Create; function GetKind: string; function Zvuk: string; virtual; abstract; private Tip: string; end; TDog = class (TZivotinje) function Zvuk: string; override; function Eat: string; virtual; TCat = class (TZivotinje) implementation uses MMSystem; constructor TZivotinje.Create; begin Tip := 'An animal'; end; function TZivotinje.GetKind: string; GetKind := Tip; constructor TDog.Create; Tip := 'A dog'; function TDog.Zvuk: string; Zvuk := 'Vau Vau'; PlaySound ('dog.wav', 0, snd_Async); function TDog.Eat: string; begin Eat := 'A bone, please!'; end; constructor TCat.Create; Tip := 'A cat'; function TCat.Zvuk: string; Zvuk := 'Miauuu'; PlaySound ('cat.wav', 0, snd_Async); function TCat.Eat: string; Eat := 'A mouse, please!'; end. Program za administraciju i kontrolu umreženih računarskih sistema

14 Program za administraciju i kontrolu umreženih računarskih sistema
V Obrada izuzetaka unit AnimF; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Anim; type TFormaZivotinje = class(TForm) LabelVoice: TLabel; BtZvuk: TButton; ZivotinjeKlik: TRadioButton; PasKlik: TRadioButton; MackaKlik: TRadioButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure BtZvukClick(Sender: TObject); procedure ZivotinjeKlikClick(Sender: TObject); procedure PasKlikClick(Sender: TObject); procedure MackaKlikClick(Sender: TObject); private MojaZivotinja: TZivotinje; public { Public declarations } end; procedure TFormaZivotinje.ZivotinjeKlikClick(Sender: TObject); begin MojaZivotinja.Free; MojaZivotinja := TZivotinje.Create; end; procedure TFormaZivotinje.PasKlikClick(Sender: TObject); MojaZivotinja := TDog.Create; procedure TFormaZivotinje.MackaKlikClick(Sender: TObject); MojaZivotinja := TCat.Create; end. var FormaZivotinje: TFormaZivotinje; implementation {$R *.DFM} procedure TFormaZivotinje.FormCreate(Sender: TObject); begin MojaZivotinja := TDog.Create; end; procedure TFormaZivotinje.FormDestroy(Sender: TObject); MojaZivotinja.Free; procedure TFormaZivotinje.BtZvukClick(Sender: TObject); LabelVoice.Caption := MojaZivotinja.Zvuk; Program za administraciju i kontrolu umreženih računarskih sistema

15 Program za administraciju i kontrolu umreženih računarskih sistema
V Obrada izuzetaka Ideja izuzetaka (exceptions) je da program učini robustnijim dodavanjem mogućnosti obrade softverskih i hardverskih grešaka na jednostavan i uniforman način. Ukoliko ni jedan deo koda ne obrađuje izuzetak, obrađuje ga samo integrisano okruženje Delphi prikazivanjem standardne poruke o grešci i pokušajem da nastavi izvršavanje programa obradom sledeće sistemske poruke. Ceo mehanizam se zasniva na sledećim ključnim rečima: try - označava početak zaštićenog bloka. except - označava kraj zaštićenog bloka koda i uvodi iskaze za obradu. finally - koristi se za označavanje bloka koda koji se mora uvek izvršiti, čak i kada se desi izuzetak. raise - iskaz kojim se generiše izuzetak i upotrebljava se da bi se ponovo pozvali na izuzetak PRIMER: try ... except on E:Exception do end; finally Program za administraciju i kontrolu umreženih računarskih sistema

16 Program za administraciju i kontrolu umreženih računarskih sistema
VI Pokazivači Operativna memorija je niz sekvencijalno označenih memorijskih lokacija koje su numerisane celim brojevima 0, 1, 2, ..., m-1 poznatim kao adresama (adress) gde je m kapacitet memorije. Najmanja memorijska lokacija koja može samostalno da se adresira obično je veličine 1 bajt (8 bitova). Podaci različitih tipova smeštaju se u jedan ili više uzastopnih bajtova što zavisi od tipa podataka (integer, real, char...). Pokazivač (pointer) je promenljiva koja čuva memorijsku adresu. To je prost podatak u koji može da se smesti adresa neke lokacije u memoriji. Pokazivači obično zauzimaju 2 ili 4 bajta što zavisi od mogućeg opsega adresa na datom računaru, a ne od broja bajtova koliko zauzimaju pokazivani podaci. Ako podatak zauzima više bajtova, pod adresom podatka podrazumeva se bajt sa najmanjim rednim brojem. 23 18 25 A 5 Memorijske Adrese 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Program za administraciju i kontrolu umreženih računarskih sistema

17 Program za administraciju i kontrolu umreženih računarskih sistema
PRIMER 1: var X, Y: Integer; // X i Y su Integer vrednosti P: ^Integer; // P je pokazivač na Integer tip podataka begin X := 17; // dodeljivanje vrednosti promenljivoj X P // dodeljivnje adrese promenljive X pokazivaču P Y := P^; // dodeljivanje vrednosti promenljivoj Y iz adrese na koju pokazuje end; pokazivač P tj. promenljive X type PInteger = ^Integer; R: Single; I: Integer; P: Pointer; PI: PInteger; ... P PI := PInteger(P); I := PI^; end; PRIMER 2: Program za administraciju i kontrolu umreženih računarskih sistema

18 VI Vizuelno programiranje
Delphi 6 sadrži biblioteke VCL i CLX, koje su alternativa jedna drugoj kada je reč o vizuelnim komponentama. VCL (Visual Component Library) obuhvata klase komponenata, kontrola, nevizualnih komponenata, skupove podataka, Internet komponenata i druge. CLX (Component Library for X-Platforms) je biblioteka komponenata za X-platformu (Linux distribucija). U vizuelnom programiranju, klase koje nisu direktno izvedene iz klase TComponent se ne mogu nalaziti na paleti Component Palette i ne mogu se direktno prebaciti na formular ali se njima može upravljati u prozoru Object Inspector. Klase koje sadrže komponente mogu se podeliti u dve glavne grupe: VIZUELNE KONTROLE – Imaju poziciju i veličinu na ekranu i prikazuju se na formularu u vreme izvršavanja Vizuelne komponente koje se zasnivaju na prozoru OS (windowed controls) i obuhvataju Windows API (Aplication Programing Interface), izvedene iz klase TWinControl. Vizuelne komponente koje se ne zasnivaju na prozoru OS-a (nonwindowed controls) , a iscrtava ih formular na kome se nalaze, izvedene iz klase TGraphicalControl. NEVIZUELNE KONTROLE – Sve komponente koje nisu kontrole tj. sve klase koje su izvedene iz klase TComponent , ali ne iz klase TControl. U vreme dizajniranja neke od ovih komponenata mogu biti vidljive (npr. okvir za dijalog), dok su druge nevidljive (npr. komponenta za tabele baze podataka) Program za administraciju i kontrolu umreženih računarskih sistema

19 Grafička prezentacija osnovnih grupa kontrola
TWinControl TButtonControl TButton Windowed controls TControl Vizuelna komponenta TGraphicControl TComponent Nonwindowed controls Komponenta Druge TComponent podklase Klase Nevizuelnih Komponenti Program za administraciju i kontrolu umreženih računarskih sistema

20 Sastav Delphi projekta
Forma Modul (.pas) Parametri (.OPT) Opis forme (.DFM) ... Forma1 Modul (.pas) Kompilacija Projekt (.DPR) Aplikacija Opis forme (.DFM) ... Modul2 (.pas) ... Resursi (.RES) Modul3 (.pas) Program za administraciju i kontrolu umreženih računarskih sistema

21 Izgled Delphi 6 radnog okruženja
Program za administraciju i kontrolu umreženih računarskih sistema

22 Program za administraciju i kontrolu umreženih računarskih sistema
Izgled palete Component Palette Program za administraciju i kontrolu umreženih računarskih sistema

23 Delphi je programski paket namenjen kreiranju Windows aplikacija (programa) za personalne računare. Krajnji proizvod Delphi-ja je izvršni proram koji rešava zadatke zbog kojih je kreiran u okruženju operativnog sistema Windows. Programski jezik koji koristi Delphi je modernizovana verzija Pascal-a poznata pod nazivom Object Pascal. Delphi spada u objektno-orijentisane programe (OOP). Objektno orijentisano programiranje omogućuje kreiranje komponenti za višestruko korišćenje u raznim korisničkim programima.Osnovni pojmovi OOP su: komponente, objekti, metode, svojstva i događaji. Komponente su elementi ugrađeni u Delphi-ju za višestruku upotrebu i koriste se pri formiranju objekta. Objekt je osnovni element Delphi programa koji ima odgovarajuća svojstva (karakteristike), metode koje definišu njegovo ponašanje i mogućnost prepoznavanja događaja na koje mogu reagovati. Metod je programski kod pridružen objektu, koji određuje kako će objekt manipulisati sa informacijama i kako će reagovati na događaje. Svojstva su karakteristike objekata kao što su: veličina, položaj, boja ili font teksta. Svojstva određuju pojavljivanje, a ponekad i ponašanje objekta. Događaji mogu biti prouzrokovani od strane korisnika ili od strane operativnog sistema Windows.

24 REFERENCE Marco Cantu, Majstor za Delphi 6, Kompjuter biblioteka, Čačak, 2001. Milan Čabarkapa, Računarstvo i informatika, Beograd, 2004.


Download ppt "C# Autori: Nebojša Lazarević, prof.informatike"

Similar presentations


Ads by Google