Objekti u Delphi-u

Početak » obrada » KLASE

KLASE

Advertisements

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.

Advertisements

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se /  Promeni )

Google+ photo

Komentarišet koristeći svoj Google+ nalog. Odjavite se /  Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se /  Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se /  Promeni )

Povezivanje sa %s

%d bloggers like this: