Formuly Hartli i Shennona

Автор работы: Пользователь скрыл имя, 03 Мая 2013 в 15:13, реферат

Краткое описание

Inf-ka - eto molodaya nauchnaya disciplina, izuchayuschaya voprosy, svyazannye s poiskom, hraneniem, polucheniem, preobrazovaniem i ispol'zovaniem informacii vo vseh sferah obschestvennoy jizni.
Predmet inf-ki, obschie zakonomernosti, svoystvennye informacionnym processam, sostavlyayut:
1. apparatnoe obespechenie sredstv vychislitel'noy tehniki;
2. PO sredstv vychislitel'noy tehniki;
3. sredstva vzaimodeystviya apparatnogo i PO;
4. sredstva vzaimodeystviya cheloveka s apparatnymi i programmnymi sredstvami.

Содержимое работы - 1 файл

V1.doc

— 324.00 Кб (Скачать файл)

function <imya funkcii> ( <spisok formal'nyh parametrov> ): <tip rezul'tata>;

const ...;

type  ...;

var   ...;

begin

  <operatory>

end;

V tele funkcii doljen nahodit'sya po krayney mere odin operator, prisvaivayuschiy znachenie imeni funkcii ili neyavnoy lokal'noy peremennoy Result. Esli takih prisvaivaniy neskol'ko, to rezul'tatom funkcii budet znachenie poslednego iz etih operatorov. Preimuschestvo ot ispol'zova-niya peremennoy Result sostoit v tom, chto ona mojet uchastvovat' v vyrajeniyah kak operand.

Parametry procedur i funkciy Parametry slujat dlya peredachi ishodnyh dannyh v podpro-grammy i dlya priema rezul'tatov raboty etih podprogramm.

Ishodnye dannye peredayutsya v podprogrammu s pomosch'yu vhodnyh parametrov, a rezul'taty rabo-ty podprogrammy vozvraschayutsya cherez vyhodnye parametry. Parametry mogut byt' vhodnymi i vyhodnymi odnovremenno.

Vhodnye parametry ob"yavlyayutsya s pomosch'yu klyuchevogo slova const; ih znacheniya ne mogut byt' izmeneny vnutri podprogrammy: function Min(const A, B: Integer): Integer;

Dlya ob"yavleniya vyhodnyh parametrov slujit klyuchevoe slovo out: procedure GetScreenResolu-tion(out Width, Height: Integer);

Esli parametr yavlyaetsya odnovremenno i vhodnym, i vyhodnym, to on opisyvaetsya s klyuchevym slo-vom var:

procedure Exchange(var A, B: Integer);

var

  C: Integer;

Esli pri opisanii parametra ne ukazano ni odno iz klyuchevyh slov const, out, ili var, to para-metr schitaetsya vhodnym, ego mojno izmenyat', no vse izmeneniya ne vliyayut na fakticheskiy argument.

Suschestvuet raznovidnost' parametrov bez tipa. Oni nazyvayutsya netipizirovannymi i predna-znacheny dlya peredachi i dlya priema dannyh lyubogo tipa. Netipizirovannye parametry opisyvayutsya s pomosch'yu klyuchevyh slov const i var, pri etom tip dannyh opuskaetsya:

procedure JustProc(const X; var Y; out Z);

Peredacha fakticheskih argumentov v podprogrammu osuschestvlyaetsya cherez special'nuyu oblast' pa-myati - stek. V stek pomeschaetsya libo znachenie peredavaemogo argumenta (peredacha znacheniya), libo adres argumenta (peredacha ssylki na znachenie). Konkretnyy sposob peredachi vybiraetsya kompilya-torom v zavisimosti ot togo, kak ob"yavlen parametr v zagolovke podprogrammy.

Parametr  Var  Naznachenie Vhodnoy i vyhodnoy Mojno ne ukazyvat' tip Da Vozmojnost' iz-meneniya znacheniya Da; <otsutstvuet>- Vhodnoy-Net-Da; const- Vhodnoy- Da- Net; Out- Vyhodnoy- Da- Da.

Peremennye i prochie ob"ekty, ispol'zuemye v programme, opisaniya kotoryh soderjatsya v pod-programme, yavlyayutsya lokal'nymi i deystvuyut tol'ko vnutri etoy podprogrammy. Nikakoy svyazi mejdu nimi i ob"ektami vyzyvayuschey programmnoy edinicy, imeyuschimi (vozmojno, sluchayno) takie je imena (identifikatory), net. Oni polnost'yu nezavisimy.

S drugoy storony, v podprogramme mojno ispol'zovat' identifikatory, opisannye tol'ko v vy-zyvayuschey programmnoy edinice, no ne v samoy podprogramme. Smysl i znachenie etih Identifikatorov budut odinakovy i tam, i tam. Takie identifikatory nazyvayutsya global'nymi. Oblast' deystviya opisaniya konkretnogo identifikatora nazyvaetsya ego oblast'yu vidimosti. Drugimi slovami, oblast' vidimosti peremennoy – eto mnojestvo operatorov, v kotoryh dannuyu peremennuyu mojno ispol'zovat'.

 

V27 Yazyk Delphi: Klassy i ob"ekty (ekzemplyary klassov). Bazovyy klass TObject. Opisanie klassa i ob"yavlenie ob"ekta, primery. Razdely opisaniya klassa (specifikatory vidimosti): privet, protected, public, published.

Klassy ob"ektov. Kajdyy ob"ekt vsegda prinadlejit nekotoromu klassu ob"ektov. Klass ob"ek-tov - eto obobschennoe opisanie mnojestva odnotipnyh ob"ektov. Ob"ekty yavlyayutsya konkretnymi predstavitelyami svoego klassa, ih prinyato nazyvat' ekzemplyarami klassa.

V yazyke Delphi suschestvuet predopredelennyy klass TObject, kotoryy slujit neyavnym predkom teh klassov, dlya kotoryh predok ne ukazan.

Klass TObject vystupaet kornem lyuboy ierarhii klassov. On soderjit ryad metodov, kotorye po nasledstvu peredayutsya vsem ostal'nym klassam. Sredi nih:

Create — standartnyy konstruktor.

Free — unichtojaet ob"ekt: vyzyvaet standartnyy destruktor Destroy, esli znachenie psev-doperemennoy Self ne ravno nil.

ClassType: TClass — vozvraschaet opisatel' klassa (metaklass).

ClassName: ShortString — vozvraschaet imya klassa.

Dispatch(var Message) — slujit dlya vyzova metodov, ob"yavlennyh s klyuchevym slovom message.

Destroy — standartnyy destruktor.

Opisanie Klassov. Dlya podderjki OOP v yazyk Delphi vvedeny ob"ektnye tipy dannyh, s po-mosch'yu kotoryh odnovremenno opisyvayutsya dannye i operacii nad nimi. Ob"ektnye tipy dannyh nazyvayut klassami, a ih ekzemplyary — ob"ektami.

Klassy ob"ektov opredelyayutsya v sekcii type global'nogo bloka. Opisanie klassa nachinaetsya s klyuchevogo slova class i zakanchivaetsya klyuchevym slovom end. Po forme ob"yavleniya klassy pohoji na obychnye zapisi, no pomimo poley dannyh mogut soderjat' ob"yavleniya pol'zovatel'skih proce-dur i funkciy. Takie procedury i funkcii obobschenno nazyvayut metodami, oni prednaznacheny dlya vypolneniya nad ob"ektami razlichnyh operaciy. Primer ob"yavleniya klassa, kotoryy predna-znachen dlya chteniya tekstovogo fayla v formate "delimited text":

type

  TDelimitedReader = class  // Polya

    FileVar: TextFile;

    Items: array of string;

    Delimiter: Char; // Metody

    procedure PutItem(Index: Integer; const Item: string);

    procedure SetActive(const AActive: Boolean);

    function ParseLine(const Line: string): Integer;

    function NextLine: Boolean;

    function GetEndOfFile: Boolean;

  end;

 

Klass soderjit polya (FileVar, Items, Delimiter) i metody (PutItem, SetActive, ParseLine, NextLine, GetEndOfFile). Zagolovki metodov, (vsegda) sleduyuschie za spiskom poley, igrayut rol' uprejdayuschih (forward) opisaniy. Programmnyy kod metodov pishetsya otdel'no ot opredeleniya klassa i budet priveden pozje.

Klass obychno opisyvaet suschnost', modeliruemuyu v programme.

Klass soderjit neskol'ko poley:

FileVar — faylovaya peremennaya, neobhodimaya dlya dostupa k faylu;

Delimiter — simvol, kotoryy slujit razdelitelem elementov;

Items — massiv elementov, poluchennyh razborom posledney schitannoy stroki;

Klass takje soderjit ryad metodov (procedur i funkciy):

PutItem — pomeschaet element v massiv Items po indeksu Index; esli indeks prevyshaet verh-nyuyu granicu massiva, to razmer massiva avtomaticheski uvelichivaetsya;

SetActive — otkryvaet ili zakryvaet fayl, iz kotorogo proizvoditsya chtenie strok;

ParseLine — osuschestvlyaet razbor stroki: vydelyaet elementy iz stroki i pomeschaet ih v mas-siv Items; vozvraschaet kolichestvo vydelennyh elementov;

NextLine — schityvaet ocherednuyu stroku iz fayla i s pomosch'yu metoda ParseLine osuschestv-lyaet ee razbor; v sluchae uspeshnogo chteniya ocherednoy stroki funkciya vozvraschaet znachenie True, a inache — znachenie False (dostignut konec fayla);

V opisanii klassov prisutstvuyut novye klyuchevye slova private, protected i public.

Programmist mojet razgranichit' dostup k atributam svoih ob"ektov dlya drugih programmistov  s pomosch'yu special'nyh klyuchevyh slov: private, protected, public, published (poslednee ne ispol'zuetsya v module ReadersUnit).

Private. Sekciya private pozvolyaet skryt' te polya i metody, kotorye otnosyatsya k tak nazyvae-mym osobennostyam realizacii..

Public. Polya, metody i svoystva, ob"yavlennye v sekcii public, ne imeyut nikakih ograniche-niy na ispol'zovanie(vsegda vidny za predelami modulya). Vse, chto pomeschaetsya v sekciyu public, slujit dlya manipulyaciy s ob"ektami i sostavlyaet programmnyy interfeys klassa.

Protected. Polya, metody i svoystva, ob"yavlennye v sekcii protected, vidny za predelami mo-dulya tol'ko potomkam dannogo klassa. Tak je kak i private, direktiva protected pozvolyaet skryt' osobennosti realizacii klassa, no v otlichie ot nee razreshaet drugim programmistam porojdat' novye klassy i obraschat'sya k polyam, metodam i svoystvam, kotorye sostavlyayut tak nazyvaemyy in-terfeys razrabotchika.

Published. Ustanavlivaet pravila vidimosti te je, chto i direktiva public. Osobennost' so-stoit v tom, chto dlya elementov, pomeschennyh v sekciyu published, kompilyator generiruet informa-ciyu o tipah etih elementov. Eta informaciya dostupna vo vremya vypolneniya programmy, chto pozvolyaet prevraschat' ob"ekty v komponenty vizual'noy sredy razrabotki.

Perechislennye sekcii mogut cheredovat'sya v ob"yavlenii klassa v proizvol'nom poryadke, odnako v predelah sekcii snachala sleduet opisanie poley, a potom metodov i svoystv.

 

V 28. Yazyk Delphi: Polya klassa. Opisanie i izmenenie poley klassa. Svoystva: opisanie i metody dostupa k sootvetstvuyuschemu polyu. Inkapsulyaciya. Nasledovanie poley i metodov klassa.

Polya klassa predstavlyayut soboy dannye, soderjaschiesya v klasse, t.e. polya slujat dlya hraneniya informacii ob ob"ekte. Pole opisyvaetsya kak obychnaya peremennaya i mojet prinadlejat' lyubomu tipu. Izmenenie znacheniy poley obychno vypolnyaetsya s pomosch'yu metodov i svoystv ob"ekta.

Ob"edinenie dannyh i operaciy v odnu suschnost' - ob"ekt - tesno svyazano s ponyatiem inkapsulya-cii, kotoroe oznachaet sokrytie vnutrennego ustroystva. Inkapsulyaciya delaet ob"ekty pohojimi na malen'kie programmnye moduli, v kotoryh skryty vnutrennie dannye i u kotoryh imeetsya in-terfeys ispol'zovaniya v vide podprogramm.

Nasledovanie-etot prostoy princip oznachaet, chto esli vy hotite sozdat' novyy klass ob"ektov, kotoryy rasshiryaet vozmojnosti uje suschestvuyuschego klassa, to net neobhodimosti v perepisyva-nii zanovo vseh poley, metodov i svoystv. Ob"yavlyaetsya, chto novyy klass yavlyaetsya potomkom (ili dochernim klassom) imeyuschegosya klassa ob"ektov, nazyvaemogo predkom (ili roditel'skim klassom), i k nemu dobavlyayutsya novye polya, metody i svoystva. Process porojdeniya novyh klassov na osnove drugih klassov nazyvaetsya nasledovaniem.

Klass, kotoryy nasleduet atributy drugogo klassa, nazyvaetsya porojdennym klassom ili potom-kom. Sootvetstvenno klass, ot kotorogo proishodit nasledovanie, vystupaet v roli bazovogo, ili predka. Ochen' vajno, chto v otnosheniyah nasledovaniya lyuboy klass mojet imet' tol'ko odnogo neposredstvennogo predka i skol' ugodno mnogo potomkov. Poetomu vse svyazannye otnosheniem nasledovaniya klassy obrazuyut ierarhiyu.

Perekrytie atributov v naslednikah. V mehanizme nasledovaniya mojno uslovno vydelit' tri osnovnyh momenta:

nasledovanie poley;

nasledovanie svoystv;

nasledovanie metodov.

Lyuboy porojdennyy klass nasleduet ot roditel'skogo vse polya dannyh. Dostup k polyam predka osuschestvlyaetsya po imeni, kak esli by oni byli opredeleny v potomke. V potomkah mojno oprede-lyat' novye polya, no ih imena doljny otlichat'sya ot imen poley predka.

Nasledovanie svoystv i metodov imeet svoi osobennosti.

Svoystvo bazovogo klassa mojno perekryt' (override) v proizvodnom klasse, naprimer chtoby do-bavit' emu novyy atribut dostupa ili svyazat' s drugim polem ili metodom.

Metod bazovogo klassa toje mojno perekryt' v proizvodnom klasse, naprimer chtoby izmenit' logiku ego raboty.

Svoystva. Pomimo poley i metodov v ob"ektah suschestvuyut svoystva. Oni prinimayut znacheniya i uchastvuyut v vyrajeniyah. Svoystva ne zanimayut mesta v pamyati, a operacii ih chteniya i zapisi as-sociiruyutsya s obychnymi polyami ili metodami.

Ob"yavlenie svoystva vypolnyaetsya s pomosch'yu zarezervirovannogo slova property, naprimer:

type

  TDelimitedReader = class

    FActive: Boolean;

    ...

    procedure SetActive(const AActive: Boolean);

    property Active: Boolean read FActive write SetActive; // Svoystvo

  end;

 

Klyuchevye slova read i write nazyvayutsya specifikatorami dostupa. Posle slova read ukazyvaetsya pole ili metod, k kotoromu proishodit obraschenie pri chtenii znacheniya svoystva, a posle slova write - pole ili metod, k kotoromu proishodit obraschenie pri zapisi znacheniya svoystva. Chtoby imena svoystv ne sovpadali s imenami poley, poslednie prinyato pisat' s bukvy F (field).

Obraschenie k svoystvam vyglyadit v programme kak obraschenie k polyam:

var

  Reader: TDelimitedReader;

  IsOpen: Boolean;

...

  Reader.Active := True;   // Ekvivalentno Reader.SetActive(True);

  IsOpen := Reader.Active; // Ekvivalentno IsOpen := Reader.FActive

 

V otlichie ot poley svoystva ne imeyut adresa v pamyati. Kak sledstvie, ih nel'zya peredavat' v var- i out-parametrah procedur i funkciy.

Metody polucheniya i ustanovki znacheniy svoystv. Metody polucheniya i ustanovki znacheniy svoystv podchinyayutsya opredelennym pravilam. Metod chteniya svoystva - eto vsegda funkciya, voz-vraschayuschaya znachenie togo je tipa, chto i tip svoystva. Metod zapisi svoystva - eto obyazatel'no procedura, prinimayuschaya parametr togo je tipa, chto i tip svoystva. V ostal'nyh otnosheniyah eto obychnye metody ob"ekta.

Ispol'zovanie metodov dlya polucheniya i ustanovki svoystv pozvolyaet proverit' korrektnost' znacheniya svoystva, sdelat' dopolnitel'nye vychisleniya, ustanovit' znacheniya zavisimyh poley. Naprimer osuschestvit' proverku sostoyaniya fayla (otkryt ili zakryt), chtoby izbejat' ego povtor-nogo otkrytiya ili zakrytiya.

Znachenie svoystva mojet ne hranit'sya, a vychislyat'sya pri kajdom obraschenii k svoystvu.

Metody, obslujivayuschie neskol'ko svoystv. Odin i tot je metod mojet ispol'zovat'sya dlya polucheniya znacheniy neskol'kih svoystv odnogo tipa. V etom sluchae kajdomu svoystvu naznachaetsya celochislennyy indeks, kotoryy peredaetsya v metod chteniya (zapisi) pervym parametrom. Primer:

type

  TDelimitedReader = class ...

    property FirstName: string index 0 read GetItem;

    property LastName: string index 1 read GetItem;

     end;

 

 

 

V29. Yazyk Delphi: Metody klassa. Konstruktory i destruktory. Polimorfizm. Staticheskie i virtual'nye metody. Perekrytie i pereopredelenie metodov. Abstraktnye metody i klas-sy.

Metody. Procedury i funkcii, prednaznachennye dlya vypolneniya nad ob"ektami deystviy, nazyvayutsya metodami. Predvaritel'noe ob"yavlenie metodov vypolnyaetsya pri opisanii klassa v sekcii interface modulya, a ih programmnyy kod zapisyvaetsya v sekcii implementation. Odnako v otlichie ot obychnyh procedur i funkciy zagolovki metodov doljny imet' utochnennye imena, t.e. soderjat' naimenovanie klassa. Primer realizacii odnogo iz metodov v klasse TDelimitedReader:

procedure TDelimitedReader.SetActive(const AActive: Boolean);

begin

  if AActive then

    Reset(FileVar)        // Otkrytie fayla

  else

    CloseFile(FileVar);   // Zakrytie fayla

end;

 

Konstruktory i destruktory. Osoboy raznovidnost'yu metodov yavlyayutsya konstruktory i de-struktory. (konstruktory sozdayut, a destruktory razrushayut ob"ekty) Sozdanie ob"ekta vklyuchaet vydelenie pamyati pod ekzemplyar i inicializaciyu ego poley, a razrushenie - ochistku poley i osvo-bojdenie pamyati. Deystviya po inicializacii i ochistke poley specifichny dlya kajdogo konkretnogo klassa ob"ektov. Po etoy prichine yazyk Delphi pozvolyaet pereopredelit' standartnyy konstruktor Create i standartnyy destruktor Destroy dlya vypolneniya lyubyh poleznyh deystviy. Mojno daje opredelit' neskol'ko konstruktorov i destruktorov.

Ob"yavlenie konstruktorov i destruktorov ispol'zuyutsya slova constructor i destructor.

    ...

    constructor Create(const FileName: string; const ADelimiter: Char = ';');

    destructor Destroy; override;

    ...

  end;

 

Esli ob"ekt soderjit vstroennye ob"ekty ili drugie dinamicheskie dannye, to konstruktor - eto kak raz to mesto, gde ih nujno sozdavat'.

Konstruktor primenyaetsya k klassu ili k ob"ektu. Esli on primenyaetsya k klassu,

to vypolnyaetsya sleduyuschaya posledovatel'nost' deystviy:

v dinamicheskoy pamyati vydelyaetsya mesto dlya novogo ob"ekta;

vydelennaya pamyat' zapolnyaetsya nulyami. V rezul'tate vse chislovye polya i polya poryadkovogo tipa priobretayut nulevye znacheniya;

zatem vypolnyayutsya zadannye programmistom deystviya konstruktora;

ssylka na sozdannyy ob"ekt vozvraschaetsya v kachestve znacheniya konstruktora. Tip vozvraschae-mogo znacheniya sovpadaet s tipom klassa, ispol'zovannogo pri vyzove

Esli konstruktor primenyaetsya k ob"ektu, (Reader.Create('MyData.del', ';')); to konstruktor vypolnyaetsya kak obychnyy metod. Nvyy ob"ekt ne sozdaetsya, a proishodit povtornaya inicializaciya poley suschestvuyuschego ob"ekta. Konstruktor ne vozvraschaet nikakogo znacheniya.

Destruktor unichtojaet ob"ekt, k kotoromu primenyaetsya:

V rezul'tate:

vypolnyaetsya zadannyy programmistom kod zaversheniya;

osvobojdaetsya zanimaemaya ob"ektom dinamicheskaya pamyat'.

V tele destruktora obychno doljny unichtojat'sya vstroennye ob"ekty i dinamicheskie dannye, kak pravilo, sozdannye konstruktorom.

Polimorfizm- oznachaet, chto v proizvodnyh klassah vy mojete izmenyat' rabotu uje suschestvuyu-schih v bazovom klasse metodov. Pri etom ves' programmnyy kod, upravlyayuschiy ob"ektami roditel'-skogo klassa, prigoden dlya upravleniya ob"ektami dochernego klassa bez vsyakoy modifikacii.

Virtual'nye metody. Ponyatie virtual'nogo metoda. Po umolchaniyu vse metody yavlyayutsya staticheskie. Pri obraschenii k staticheskomu metodu kompilyator tochno znaet klass, kotoromu dan-nyy metod prinadlejit.

S pomosch'yu statisticheskogo metoda nam ne udaetsya realizovat' princip polimorfizma. Dlya etogo ispol'zuyutsya virtual'nye metody.

Ob"yavlenie virtual'nogo metoda v bazovom klasse vypolnyaetsya s pomosch'yu klyuchevogo slova virtual, a ego perekrytie v proizvodnyh klassah - s pomosch'yu klyuchevogo slova override. Perekry-tyy metod doljen imet' tochno takoy je format (spisok parametrov, a dlya funkciy esche i tip voz-vraschaemogo znacheniya), chto i perekryvaemyy:

type

  TDelimitedReader = class(TTextReader)  ...

    function ParseLine(const Line: string): Integer; override;   ...

  end;

  TFixedReader = class(TTextReader) ...

    function ParseLine(const Line: string): Integer; override; ...

  end;

 

Rabota virtual'nyh metodov osnovana na mehanizme pozdnego svyazyvaniya. V otlichie ot rannego svyazyvaniya, harakternogo dlya staticheskih metodov, pozdnee svyazyvanie osnovano na vychislenii ad-resa vyzyvaemogo metoda pri vypolnenii programmy. Adres metoda vychislyaetsya po hranyaschemusya v kajdom ob"ekte opisatelyu klassa.

Mehanizm vyzova virtual'nyh metodov. Rabota virtual'nyh metodov osnovana na kosvennom vyzove podprogramm. Pri kosvennom vyzove komanda vyzova podprogrammy operiruet ne adresom podprogrammy, a adresom mesta v pamyati, gde hranitsya adres podprogrammy. Dlya kajdogo virtual'-nogo metoda sozdaetsya procedurnaya peremennaya, no ee nalichie i ispol'zovanie skryto ot program-mista.

Vse procedurnye peremennye s adresami virtual'nyh metodov pronumerovany i hranyatsya v tab-lice, nazyvaemoy tablicey virtual'nyh metodov(VMT). Takaya tablica sozdaetsya odna dlya kajdogo klassa ob"ektov, i vse ob"ekty etogo klassa hranyat na nee ssylku.

Strukturu ob"ekta v operativnoy pamyati poyasnyaet risunok:

 

Vyzov virtual'nogo metoda osuschestvlyaetsya sleduyuschim obrazom:

1. Cherez ob"ektnuyu peremennuyu vypolnyaetsya obraschenie k zanyatomu ob"ektom bloku pamyati;

2. Dalee iz etogo bloka izvlekaetsya adres tablicy virtual'nyh metodov (on zapisan v chetyreh pervyh baytah);

3. Izvlekaetsya adres sootvetstvuyuschey podprogrammy;

4. Vyzyvaetsya kod, nahodyaschiysya po etomu adresu.

Abstraktnye virtual'nye metody. Pri postroenii ierarhii klassov chasto voznikaet situaciya, kogda rabota virtual'nogo metoda v bazovom klasse ne izvestna i napolnyaetsya soderjaniem tol'ko v naslednikah, V etom sluchae ispol'zuyut direktivu abstract:

type

  TTextReader = class  ...

    function ParseLine(const Line: string): Integer; virtual; abstract;   ...

  end;

 

Direktiva abstract zapisyvaetsya posle slova virtual i isklyuchaet neobhodimost' napisaniya koda virtual'nogo metoda dlya dannogo klassa. Takoy metod nazyvaetsya abstraktnym, t.e. podrazumevaet logicheskoe deystvie, a ne konkretnyy sposob ego realizacii. Abstraktnye virtual'nye metody chasto ispol'zuyutsya pri sozdanii klassov-polufabrikatov.

Dinamicheskie metody. Raznovidnost'yu virtual'nyh metodov yavlyayutsya tak nazyvaemye dinami-cheskie metody. Pri ih ob"yavlenii vmesto klyuchevogo slova virtual zapisyvaetsya klyuchevoe slovo dynamic, naprimer:

type

  TTextReader = class  ...

    function ParseLine(const Line: string): Integer; dynamic; abstract;    ...

  end;

 

V naslednikah dinamicheskie metody perekryvayutsya tak je, kak i virtual'nye - s pomosch'yu zare-zervirovannogo slova override.

Po smyslu dinamicheskie i virtual'nye metody identichny. Razlichie sostoit tol'ko v mehanizme ih vyzova. Metody, ob"yavlennye s direktivoy virtual, vyzyvayutsya maksimal'no bystro, no platoy za eto yavlyaetsya bol'shoy razmer sistemnyh tablic, s pomosch'yu kotoryh opredelyayutsya ih adresa. Metody, ob"yavlennye s direktivoy dynamic vyzyvayutsya neskol'ko dol'she, no pri etom tablicy s adresami metodov imeyut bolee kompaktnyy vid, chto sposobstvuet ekonomii pamyati. Takim obrazom, programmistu predostavlyayutsya dva sposoba optimizacii ob"ektov: po skorosti raboty (virtual) ili po ob"emu pamyati (dynamic).

 

30. RAZLIChNYE PODHODY K PROEKTIROVANIYu I RAZRABOTKE PROGRAMM. MO-DUL'NOE PROGRAMMIROVANIE. SOBYTIYNOE PROGRAMMIROVANIE. DINAMI-ChESKI SVYaZYVAEMYE BIBLIOTEKI (DLL). INTERFEYS PROGRAMMIROVANIYa PRILOJENIY (API).

Sobytiyno-orientirovannoe programmirovanie

sposob postroeniya komp'yuternoy programmy, pri kotorom v kode (kak pravilo, v golovnoy funkcii programmy) yavnym obrazom vydelyaetsya glavnyy cikl prilojeniya, telo kotorogo sostoit iz dvuh chastey: vyborki sobytiya i obrabotki sobytiya.  Vypolnenie programmy opredelyaetsya sobytiyami — deystviyami pol'zovatelya (klaviatura, mysh'), soobscheniyami drugih programm i potokov, sobytiyami operacionnoy sistemy (naprimer, postupleniem setevogo paketa). Naibolee polnuyu podderjku sobytiy obladayut sleduyuschie yazyki (nepolnyy spisok): Perl (sobytiya i demony DAEMON, i ih prioritety PRIO),  Java, Delphi, C# (sobytiya event).

Ostal'nye yazyki, v bol'shey ih chasti, podderjivayut sobytiya kak obrabotku isklyuchitel'nyh si-tuaciy.

Modul'noe programmirovanie Modul' - eto podklyuchaemaya k programme biblioteka resursov. On mojet soderjat' opisaniya tipov, konstant, peremennyh i podprogramm. V modul' obychno ob"edi-nyayut svyazannye mejdu soboy resursy: naprimer, v sostave obolochki est' modul' Graph dlya raboty s ekranom v graficheskom rejime. Moduli primenyayutsya libo kak biblioteki, kotorye mogut ispol'-zovat'sya razlichnymi programmami, libo dlya razbieniya slojnoy programmy na sostavnye chasti.

Standartnyy Paskal' ne predusmatrivaet mehanizmov razdel'noy kompilyacii chastey programmy s posleduyuschey ih sborkoy pered vypolneniem. Vpolne ponyatno stremlenie razrabotchikov kommer-cheskih kompilyatorov Paskalya vklyuchat' v yazyk sredstva, povyshayuschie ego modul'nost'.

Информация о работе Formuly Hartli i Shennona