Objekti u Delphi-u

KATEGORIJE ČLANAKA

Unesite svoju adresu e-pošte da biste pratili na ovaj blog i primali obaveštenja o novim člancima preko e-pošte.

Pridružite se 1 drugom pratiocu

KLASE

1. Vrsta Naziv = {upakiran} razred

Definicije …

{Klasa funkcija | postupak …}

kraj;

 

2 tip Ime = klasa (BaseClass).;

 

3 Tip Ime = klasa.;

 

4. Vrsta Naziv = {upakiran} razred (BaseClass)

Class definicija …

kraj;

 

5. Tip ime = {upakiran} klase (BaseClass {, sučelja})

Class definicija …

kraj;

 

6 Vrsta MetaClassName = klasa klase tipa.;

Opis

Klasa ključna je središnji dio objektno orijentiranog koda. Ona počinje definiciju doslovno ‘klase’ od objektnih tipova.

Ova definicija sadrži tzv ‘članove’ – podaci i metode (potprograme). Kad kreiramo objekat klase, to je samostojeći predmet – možete pristupiti podacima i metodama objekta nezavisno od bilo kojeg drugog objekta. To je kao Delphi slog, ali s aktivnim sastojcima – metodama.

Ovi elementi su definisani u definiciji klase tipa. Metode su opisane u posebnom delu Unit-a.

Klasa ima tipičan osnovni izgled:

 

vrsta

classname = klasa (BaseClass)

private

/ / Podaci / metode koji vaze u okviru ove jedinice

protected

/ / Data / metode koji vaze u ovoj klasi + potomci

public

/ / Podaci / metode upotrebljive sa svim objektima ove klase

published

/ / spolja  ispitivane javne definicije

kraj;

Parametri mogu biti usvojeni prilikom kreiranja objekta instance klase. Ovo se radi pomocu konstruktor metoda klase. Riječ konstruktor koristi se umesto funkcije ili metode. U okviru klase moze postojati veci broj konstruktora. To se ostvaruje upotrebom overload parametra koji se navodi nakon navodjenja metode.

Vidi kôd za primer.

Kada zelimo da unistimo objekat, pozivamo Destructor metodu. Normalno, ime destructor metoda je uništiti.

Postoji nekoliko upotreba reči Klasa:

 

1. Definicije klase na temelju TObject klase po defaultu.

2. Class definicija temelji se na određenom razredu, ali bez lokalnih dopune ili promjene. Imate novu klasu koja djeluje identično na BaseClass

3. Forward klase deklaracije(unapred navodite imena klasa koje zelite da koristite).

4. Class definicija temelji se na određenom razredu. Kao jedan iznad, ali možete odrediti koji razred ste temeljeći svoju novu klasu na istu. Vaša klasa opet će biti mješavina predaka i lokalne deklaracije.

5. Klasa može sadržavati implementacije izvan nje predefiniranih sučelja.

6. Metarazred referenca omogućuje varijable koje se koriste za upućivanje na klasu a ne na  objekt.

 

Vazne  naredbe

constructor                  Određuje metodu kojom se kreira objekt iz klase

interface          Koristi se za vanjske jedinice definicijama, a kao klase kostura

Object                         Omogućuje tip potprogram podaci se odnose na objekt metodom

Private                         Pokreće dio privatnih podataka i metoda u klasi

property                       Definira kontrolirani pristup klase polja

protected                     Pokreće dio klase privatnih podataka dostupna pod-klase

public              Počinje eksterno dostupan odjeljak razreda

published                     Počinje objavljenog izvana dostupan odjeljak razreda

TObject                       Vrsta baze klasa koja je predak za sve ostale razrede

Virtual             Omogućuje klasa metoda biti drukčije određeno u izvedenim klasama

Dynamic                      Omogućuje klasa metoda biti drukčije određeno u izvedenim klasama

Jedinica Unit1;

 

interface

 

uses

SysUtils, Forms, Dialogs;

 

type

TForm1 = class; / / Ovo je naprijed klasa definicija

 

TFruit = class (TObject) / / Ovo je stvarna klasa definicija:

 

private
isRound  : Boolean;
length   : single;
width    : single;
diameter : single;
// polja I metode su dostupna iz ove klase I naslednika
protected
// zasticena polja I metode
public
// 2 constructora – jedan za okruglo voce a jedan za drugo voce
constructor Create(diameter : single);               overload;
constructor Create(length : single; width : single); overload;
//
published
//
property round : Boolean
read   isRound;
property len   : single
read   length;
property wide  : single
read   width;
property diam  : single
read   diameter;
end;
TForm1 = Class(TForm)
procedure FormCreate(Sender: TObject);
procedure ShowFruit(fruit : TFruit);
private

public

end;

var
Form1: TForm1;

implementation

{$R *.dfm}

constructor TFruit.Create(diameter: single);
begin

isRound       := true;
self.diameter := diameter;
end;

constructor TFruit.Create(length, width: single);
begin

isRound     := false;
self.length := length;
self.width  := width;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
apple, banana : TFruit;
begin

apple  := TFruit.Create(3.5);
banana := TFruit.Create(7.0, 1.75);

ShowFruit(apple);
ShowFruit(banana);
end;

procedure TForm1.ShowFruit(fruit: TFruit);
begin
if fruit.round
then ShowMessage(‘We have a round fruit, with diam = ‘+
FloatToStr(fruit.diam))
else
begin
ShowMessage(‘We have a long fruit’);
ShowMessage(‘    it has length = ‘+FloatToStr(fruit.len));
ShowMessage(‘    it has width  = ‘+FloatToStr(fruit.wide));
end;
end;

end.

KOMPONENTE U DELPHI- U

Komponente čine Delphi ovim što jeste. U narednoj tabeli se nalaze sve ugrađene komponente i njihovo kratko objašnjenje.

Standard
MainMenu Glavni meni ( npr File, Edit… )
PopupMenu Meni koji se otvara desnim klikom miša
Label Tekst
Edit Prostor za unos teksta
Memo Prostor za unos teksta sa većim kapacitetom
Button Dugme
CheckBox Kutija za označavanje jedne ili više opcija
RadioButton Kutija za označavanje jedne od opcija
ListBox Lista
ComboBox Padajuća lista
ScrollBar  –
GroupBox Grupa komponenti
RadioGroup Grupa RadioButtona-a
Panel Panel
ActionList Lista Akcija
Additional
BitBtn Dugme sa slikom pored teksta
SpeedButton Dugme sa slikom umjesto teksta, ali sa mogućnošću ispisa teksta
MaskEdit Prostor za unos maskiranog teksta
StringGrid Vrsta Tabele za tekst
DrawGrid Vrsta Tabele koja se može docrtavati
Image Slika
Shape Oblik
Bevel Kutija
ScrollBox Kutija sa ScrollBar-ovima
CheckListBox ListBox sa mogućnošću za označavanje
Splitter Rastavljač
StaticText Tekst sa okvirom
ControlBar Toolbar
Chart Grafikon
Win32
TabControl Dijeli prostor na table
PageControl Dijeli prostor na stranice
ImageList Lista slika
RichEdit Prostor za unos teksta sa vrlo velikim kapacitetom
TrackBar Bar sa klizačem
ProgressBar Bar sa postotkom
UpDown Dva dugmeta za gore i dole
HotKey Pokazuje koji su tasteri stisnuti
Animate Pušta animaciju ili film
DateTimePicker Bira datum i vrijeme
MonthCalendar Kalendar
TreeView Tree ( drvo ) pregled
ListView Pregled u vidu liste
HeaderControl Zaglavlje
StatusBar Statusbar
ToolBar Bar sa alatkama
CoolBar ToolBar
PageScroller Uljepšani ScrollBar
System
Timer Štoperica
PaintBox Kutija za crtanje
MediaPlayer Player multimedijalnog sadržaja
OleContainer Kontejner za jednu aplikaciju
DdeClientConv Služi za uspostavljanje DDE razgovora (stara tehnologija )
DdeClientItem  –
DdeServerConv  –
DdeServerItem  –
DdeClientConv  –
Internet
ClientSocket Služi za stvaranje TCP/IP aplikacija
ServerSocket Služi za stvaranje TCP/IP servera
WebDispatcher Manipuliše Web akcijama
PageProducer Konvertira u HTML
QueryTableProducer  –
DataSetTableProducer  –
DataSetPageProducer  –
NMDayTime Nalazi datum i vrijeme sa internet servera
NMEcho Šalje tekst i vraća ga
NMFinger Nalazi podatke o korisniku
NMFTP Služi za prenos podataka
NMHTTP Otvara HTTP bez downloada
NMMsg Šalje tekstualne poruke preko interneta
NMMSGServ Prima gore navedene poruke
NMNNTP Čita News servere
NMPOP3 Čita Pop3 e-mail
NMUUProcesor Dekodira NMUU file-ove
NMSMTP Čita SMTP e-mail
NMStrm Šalje stream podatke
NMStrmServ Prima stream podatke
NMTime Čita datum i vrijeme sa interneta
NMUDP Povezuje se sa UDP serverom
PowerSock Osnova za kreiranje protokola
NMGeneralServer Osnova za čitanje višestrukih servera
HTML Čita HTML
NMURL Dekodira URL
Data Access
DataSource Posrednik između data kontrola
Table Čita podatke iz baze podataka
Query SQL pretraživač baza
StoredProc Omogućava aplikaciji kontakt sa BDE serverom
Database Stvara konekciju sa bazom
Session Pruža kontrolu nad svim bazama
BatchMove Omogućava mijenjanje formata baze
UpdateSql Obnavlja SQL
NestedTable Izdvaja podatke iz višestrukih baza
Data Control
DBGrid Ispisuje podatke u vidu tabele
DBNavigator Omogućava navigaciju kroz bazu pomoću dugmića Prvi, Prošli, Sljedeći…
DBText Ispisuje jedan podatak kao tekst
DBEdit Ispisuje podatak kao tekst koji se može mijenjati
DBMemo Ispisuje neki veći podatak kao tekst koji se može mijenjati
DBImage Prikazuje sliku iz baze
DBListBox Prikazuje podatke iz baze kao listu
DBComboBox Prikazuje podatke iz baze kao padajuću listu
DBCheckBox Prikazuje Boolean podatke iz baze
DBRadioGroup Prikazuje podatke kao RadioGroup
DBLookupListBox Stvara listu pomoću podataka
DBLookupComboBox Stvara padajuću listu pomoću podataka
DBRichEdit Ispisuje neki veći podatak kao tekst koji se može mijenjati
DBCtrlGrid Prikazuje podatke u višestrukoj tabeli
DBChart Prikazuje podatke kao grafikon
Midas
ClientDataSet Stvara dataset bez baze
DCOMConnection Uspostavlja DCOM konekciju
CorbaConnection Uspostavlja CORBA konekciju
SocketConnection Uspostavlja TCP/IP konekciju
OLEnterpriseConnection Uspostavlja OLEnterprise konekciju
DataSetProvider Dekodira podatke iz dataseta-a
Provider Prošireni DataSetProvider
SimpleObjectBroker Locira server
RemoteServer Uspostavlja DCOM konekciju u oba smjera
MidasConnection Uspostavlja DCOM, TCP/IP i OLEnterprise konekcije u isto vrijeme
Decision Cube
DecisionCube Višedimenzionalna baza podataka
DecisionQuery Specijalizovan Query za DecisionCube
DecisionSource Određuje stanje DecisionCube-a
DecisionPivot Upravlja DecisionCube-om pomoću dugmića
DecisionGrid Ispisuje jednu dimenziju kao tabelu
DecisionGraph Ispisuje jednu dimenziju kao grafikon
QReport
QuickRep Report form
QRSubDetail Povezuje bazu sa reportom
QRStringsBand Tekstualni kanal u reportu
QRBand Manipuliše kanalima
QRChildBand Kanal u kanalu
QRGroup Grupa komponenti u reportu
QRLabel Tekst
QRDBText Tekst iz baze
QRExpr Ispisuje izraze i proračune
QRSysData Ispisuje sistemske informacije
QRMemo Veći tekst
QRExprMemo Veća količina izraza i proračuna
QRRichText Tekst velikog kapaciteta
QRDBRichText Tekst velikog kapaciteta iz baze
QRShape Crtež ( npr. pravougaonik )
QRImage Slika
QRDBImage Slika iz baze
QRCompositeReport Složeni report
QRPreview Preview report-a
QRTextFilter Tekst filter
QRCSVFilter CSV filter
QRHTMLFilter HTML filter
QRChart Grafikon
Dialogs
OpenDialog DialogBox za otvaranje file-ova
SaveDialog DialogBox za čuvanje file-ova
OpenPictureDialog DialogBox za otvaranje slika
SavePictureDialog DialogBox za čuvanje slika
FontDialog DialogBox za biranje fonta
ColorDialog DialogBox za biranje boje
PrintDialog DialogBox za štampanje
PrinterSetupDialog DialogBox za biranje printera
FindDialog DialogBox za traženje
ReplaceDialog DialogBox za zamjenu
Samples
Gauge Prikazuje procenat isteka vršene radnje
ColorGrid Tabela boja
SpinButton UpDown
SpinEdit SpinButton vezan za Edit
DirectoryOutline Spisak direktorijuma u vidu drveta
Calendar Kalendar
IBEventAlerter Alarm za određene događaje
ActiveX
Chartfx Grafikon sa mnogo opcija
VSSpell Provjerava spelling
F1Book Ispisuje formule
VtChart 3D grafikon
Graph 2D grafikon

OSOBINE OBJEKATA I NJIHOVO MENJANJE

Osobine objekata se menjaju na dva načina.
Onaj koji se prvi nauči je pomoću Object Inspectora. To je prozor koji se nalazi sa leve strane i uvijek je otvoren. On sadržava osobine svih objekata koje trenutno programer koristi, ali je samo jedna vidljiva i to ona koja je pod fokusom ( na koju je kliknuto mišem ). Tako recimo Form, kao glavni objekt, sadrži sledeće osobine:

Action

Izaberete neku proceduru koja će biti obavljena pri otvaranju prozora

ActiveControl

Pokazuje objekat koji je aktivan nakon otvaranja prozora

Align

Prijanjanje uz neku od ivica ekrana

Anchors

Pokazuje kako je objekat vezan za ‘roditelj’ objekat

AutoScroll

Određuje da li će se automatski pojaviti scrollbarovi ako je to potrebno

AutoSize

Određuje da li će objekt tako prilagoditi veličinu da nema slobodnog prostora

BiDiMode

Pravac objekata

BorderIcons

Ikone poput minimize, maximize, close

BorderStyle

Određuje stil prozora ( npr. Sizeable – moguće je mijenjati veličinu u radu )

BorderWidth

Širina okvira

Caption

Naslov ( npr. u ovom prozoru je naslov ‘Programiranje: Osobine…’ )

ClientHeight

Visina ‘korisnog’ dijela prozora

ClientWidth

Širina ‘korisnog’ dijela prozora

Color

Boja

Constraints

Ograničenja ( npr. visine )

Ctl3D

Određuje da li će objekat biti 3D renderisan

Cursor

Određuje kakav će kursor biti iznad objekta

DefaultMonitor

Određuje koji objekat će biti glavni

DockSite

Određuje da li je objekat vezan

DragKind

Određuje vrstu povlačenja objekta

DragMode

Određuje način povlačenja objekta

Enabled

Pokazuje da li je objekat ‘živ’

Font

Određuje font na objektu

FormStyle

Stil prozora ( npr. MDIChild – prozor unutar drugog prozora )

Height

Visina objekta ( dimenzija po y-osi )

HelpContext

Dio Help file koji će biti prikazan po pritisku na ‘What’s this?’

HelpFile

Određuje koji file služi kao Help file

Hint

Tekst koji se nalazi u žutom okviru koji služi kao objašnjenje

HorzScrollBar

Određuje osobine horizontalnog scrollbara

Icon

Ikona u gornjem lijevom uglu prozora

KeyPreview

Određuje da li će objekat reagovati na tastaturu prije aktivne kontrole

Left

Udaljenost objekta od lijeve strane ‘roditelj’ objekta ( ovdje ekrana )

Menu

Pokazuje na meni tog prozora

Name

Ime objekta ( automatski je Form1, ali se može mijenjati )

ObjectMenuItem

Pokazuje na jedan dio menija

OldCreateOrder

Određuje kreiranje i uništavanje objekta

ParentBiDiMode

Nasleđivanje BiDiMode

ParentFont

Nasleđivanje fonta

PixelsPerInch

Broj tačaka po inču

PopupMenu

Određuje popup meni za objekat

Position

Određuje poziciju prozora ( npr. ScreenCentar – uvijek u centru ekrana )

PrintScale

Skala za printanje

Scaled

Skaliranje

ShowHint

Određuje da li će Hint biti prikazan

Tag

Brojna oznaka objekta

Top

Udaljenost objekta od gornje strane ‘roditelj’ objekta ( ovdje ekrana )

UseDockManager

Određuje korištenje dock managera pri pomjeranju prozora

VertScrollBar

Određuje osobine vertikalnog scrollbara

Visible

Pokazuje da li je objekat vidljiv

Width

Određuje širinu objekta ( dimenzija po x-osi )

WindowMenu

Određuje meni ako je FormStyle MDIForm

WindowState

Stanje prozora ( npr. Maximized – starta se maximizovan )

Naravno, nisu iste osobine za sve objekte, ali je princip isti.

Drugi način mijenjanja osobina je mijenjanje u radu. Ovo je programerski način. Naime, dok program radi programer nema mogućnost menjati osobine pomoću Object Inspectora.
Tako recimo ako hoćemo da u toku rada programa, prozor ( npr. Form1 ) promeni visinu ( koja je iznosila npr. 375 ) na 400, treba da ukucamo ovo:

Form1.Height := 400;

Dakle, prvo upisujemo ime objekta, pa stavljamo tačku. Delphi je toliko razvijen da će automatski izbaciti listu osobina, pa se lako može izabrati Height ( visina ). Ko je nestrpljiv može sam da ukuca ovo Height. Mala i velika slova nisu važna, tj Delphi ne pravi razliku, ali je korištenje istih preporučljivo radi  lakšeg snalaženja, ali i estetike.
Poznavaoci Pascal-a prepoznaju ovde standardni način dodeljivanja vrednosti promenljivoj.
Važno je napomenuti da ovaj kod možemo kucati samo kao dio neke procedure.

OBJEKTI

Objekti su ustvari suština  Delphija. Nema Delphija bez objekata. Naime, sve što vidite u Delphiju i sa čime radite su objekti. Tako, recimo, čim otvorite Delphi, dobijate prvi i glavni objekt sa kojim ćete raditi, a to je Form. Form je ustvari prozor na koji se stavljaju ostali objekti. Naravno, Delphi ne bi bio to što jeste da se objektima ne može manipulisati. Tako možemo pored fizičkih promjena ( mijenjanje širine, visine, boje… ) stvarati i akcije za taj objekt ( na pritisak miša, na pomeranje miša… ).  Vrlo važna odlika objekata je nasleđivanje. Naime, kad god se jedan objekat stavi na drugi ( npr. Label na Form ) ovaj prvi postaje ‘dete’ ( engl. Child ), a drugi ‘roditelj’ ( engl. Parent ), te će, po toj logici, prvi objekt naslediti neke osobine od drugog ( npr. boju, font… ). Važno je napomenuti da broj ‘dete’ objekata uopšte nije ograničen za jedan ‘roditelj’ objekt. To dopušta itekako veliku slobodu programeru.  Kao i sve u Delphiju,  programer može sam stvarati objekte po svom nahođenju i svojim željama. Najvažnije na kraju: za svaki objekt vezane su njegove osobine (engl. Properties). Pomoću njih se manipuliše objektima.

oop[1] 1

Animacija za učesnike

Ukrcavanje je počelo na lađu, kojom se upućujemo u nove binarne kompjuterske avanture. Onima koji se ukrcaju, obećavam nove horizonte (računarske), pranje palube (listanje literature) i ozbiljne morske bolesti (rešavanje problema)!

Delphi7PE_ide

Sa srećom, u nove pohode na znanje pozdravlja vas vaš kapetan Goxy!

Prvi članak

Savremeni tokovi u programiranju izmeštaju težište sa funkcijskog na objektno-orijentisan pristup u domenu metodologije izgradnje softvera. Opravdanja za korenitu izmenu u razvojnom pristupu aplikacija mogu se pronaći u obimu i složenosti pojedinih projekata.
Nasuprot proceduralnim metodama u objektno orijentisanom pristupu, teži se uspostavljanju aplikativnog rešenja koje zadovoljava sve elementarne, unapred definisane ciljeve uz projektovanje funkcionalne, aplikativne osnove, pogodne za ponovnu upotrebu u istim ili srodnim projektima, ali i olakšanu nadogradnju fizičkih mogućnosti strukture koda.
Moglo bi se reći da je prednost usvajanja objektno orjentisanog pristupa višestruka budući da omogućava:
– postizanje viših nivoa modularnosti projektovanih rešenja,
– omogućava višestruku upotrebu koda u istim ili sličnim projektima.
– pruža olakšanu nadogradnju aplikacije novim mogućnostima bez potrebe za korenitim izmenama u samom jezgru koda.

Postoje mnoga programska okruženja koja nam omogućavaju objektno-orijentisano programiranje, među kojima se svojom lakoćom rada izdvaja Borlandovo okruženje Delphi ili njihova besplatna verzija Lazarus, pa otuda i naziv mog bloga.

Ovaj blog bi trebao svojom strukturom, po stranicama, da učenike ili kolege provede korak po korak kroz kratak kurs u kreiranju klasa tj. objekata. Cilj mi je da na kraju kursa svi budu u stanju da razviju jednu multifunkcionalnu aplikacijju npr. Informacioni servis škole.

RTB BOR


RTB Bor