Објектни Паскал
Објектни Паскал се односи на грану објектно-оријентисаних деривата Паскала, већином познатих као примарни програмски језик Ембаркадеро Делфи. Ранија историја код ЕплаОбјектни Паскал је екстензија Паскаловог језика који се развио код Епл рачунара од стране тима вођеног од стране Ларија Теслера у консултацији са Никлаусом Виртом, проналазача Паскала. Спустио се са раније објектно-оријентисане верзије Паскала названим Класкал, који је био доступан на Лиса рачунарима. Објектни Паскал је био потребан како би подржао MacApp, проширива Макинтош апликација оквира која се сада може звати класа библиотеке. Екстензије Објектног Паскала и MacApp су развијени од стране Барија Хајнеса, Кена Дојла и Ларија Розенстајна и тестиране су од стране Дана Алена. Лари Теслер је надгледао пројекат, који је почео веома рано 1985-те и постао продукт 1986. Екстензија Објектног Паскала је такође имплементована у Размишљај Паскал ИДЕ. ИДЕ укључује компилатор и едитор са назначавањем Синтаксе и чекирањем, јак дебагер и класе библиотеке. Многим развојницима је више одговарала Епл имплементација Објектног Паскала зато што је Размишљај Паскал нудио уску интеграцију његових алата. Развојништво је стало после 4.01 верзије зато што је компанија купљена од стране Symantec-а. Развојници су затим напустили пројекат. Епл је испустио подршку за Објектни Паскал када су прешли са Моторолиних 68К чипова на IBM PowerPC архитектуру 1944. MacApp 3.0, за ову платформу, је поново написан у С++. Борланд и КодГир године1986, Борланд је представио сличне екстензије, такође назване Објектни Паскал, Турбо Паскал продукту за Макинтош, и 1989 за Турбо Паскал 5.5 за DOS. Када се Борланд фокусирао са DOS-a на Windows 1994, створили су наследника Турбо Паскала, званим Делфи и представили су нову групу екстензија да би створили оно што је знано као Делфи језик. Развитак Делфија је почео 1993 и Делфи 1.0 је објављен у Америци 14-ог Фебруара 1995. Док код користи Турбо Паскалов овјектни модел може идаље бити састављен, Делфи је представио нову синтаксу користећи кључну реч Делфи језик је наставио да се развија током година подржавања конструкција као што су динамички низови, генеричко програмирање и анонимне методе. Верзије
КомпилаториКомпилатори Објектног Паскала су доступни за широк опсег оперативних система и архитектура.
Старији производи
ИнтерпретаториПаскал Скрипта Архивирано на веб-сајту Wayback Machine (19. октобар 2019) (раније позната као InnerFuse) и DWScript (Делфи веб скрипта) су отвореног-кода Објектног Паскала интерпретатора/скриптинг енџина написаних у Делфију. Они подржавају подгрупе Објектног Паскала. DWScript може такође саставити Објектно Паскални код у Јаваскрип код (Паметни Паскал), и подржава у- правом-тренутку компилацију. Узорак "Hello World" програмаЕпл Објектни Паскалprogram ObjectPascalExample;
type
THelloWorld = object
procedure Put;
end;
var
HelloWorld: THelloWorld;
procedure THelloWorld.Put;
begin
ShowMessage('Hello, World!');
end;
begin
New(HelloWorld);
HelloWorld.Put;
Dispose(HelloWorld);
end.
Турбо Паскалов Објектни ПаскалИдаље подржан у Делфију и Бесплатном Паскалу. БПК такође пакује своје замене за библиотеке/јединица. Делфи не ради. Бепслатни Паскал 1.0 серије и БПК текст мод ИДЕ су највећи отворене базе кодова у овом дијалекту. Бесплатни Паскал 2.0 је написан у сличном Делфи дијалекту, и текст мод ИДЕ и везани оквири (Бесплатна визија) су једини делови у ТП верзији Објектног Паскала. Засновано на алокацији стекаprogram ObjectPascalExample;
type
THelloWorld = object
procedure Put;
end;
procedure THelloWorld.Put;
begin
WriteLn('Hello, World!');
end;
var
HelloWorld: THelloWorld; { издвојен на гомилу и може се користити без изричите расподеле. }
begin
HelloWorld.Put;
end.
Алокација заснована на гомилиprogram ObjectPascalExample;
type
PHelloWorld = ^THelloWorld;
THelloWorld = object
procedure Put;
end;
procedure THelloWorld.Put;
begin
WriteLn('Hello, World!');
end;
var
HelloWorld: PHelloWorld; { ово је укуцан показивач на THelloWorld }
begin
New(HelloWorld);
HelloWorld^.Put;
Dispose(HelloWorld);
end.
Још један пример: program ObjectPascalExample;
type
PHelloWorld = ^THelloWorld;
THelloWorld = object
procedure Put;
end;
procedure THelloWorld.Put;
begin
WriteLn('Hello, World!');
end;
var
HelloWorld: PHelloWorld; { ово је укуцан показивач на THelloWorld }
HelloWorld2: ^THelloWorld; { ово је директна варијабла на показивач THelloWorld типа.
Ова варијабла је неспојивог типа са PHelloWorld. }
HelloWorld3: ^THelloWorld; { Компилатор види ово као неспојив тип са HelloWorld2 *и*
PHelloWorld. Коришћење синтаксе показивача је једини начин да се декларише тип који
је компатибилна додела . }
HelloWorld4: PHelloWorld; { ово је тип копатибилан са HelloWorld, али некомпатибилан са остале две варијабле. }
begin
{ Ово ради на сличан начин као код изнад... али демонстрира недостатак некоришћења
специфичног типа. Дефиниција типа између две варијабле коришћењем сировог показивача
базираним на нотацији би био виђен као "различит" преко компилатора. }
New(HelloWorld4);
HelloWorld := HelloWorld4; { ово је валидно - тип доделе је валидан }
HelloWorld2 = HelloWorld; { ово би била грешка компилатора }
{располаже изостављањем ради краткоће}
New(HelloWorld3);
HelloWorld := HelloWorld3; { ово би била грешка компилатора }
HelloWorld2 = HelloWorld3; { ово би била грешка компилатора }
{располаже изостављањем ради краткоће}
end.
Овде се мора направити битна разлика, и може бити виђен као једна од кључних разлика које су довеле до Делфи стила "скривања" гомиле алокација и показивача појмова од програмера. Делфи је уклонио потребу за додатним типом Показивача и показивача синтаксе, али је задржао механизам експлицитне конструкције. Делфијем и Бесплатни Паскалов Објектни Паскалprogram ObjectPascalExample;
type
THelloWorld = class
procedure Put;
end;
procedure THelloWorld.Put;
begin
Writeln('Hello, World!');
end;
var
HelloWorld: THelloWorld; { ово је имплицитни показивач }
begin
HelloWorld := THelloWorld.Create; { конструктор враћа показиван на објекат типа THelloWorld }
HelloWorld.Put;
HelloWorld.Free; { ова линија одваја THelloWorld објекат показан преко HelloWorld }
end.
Имати на уму да је објектна конструкција идаље доступна у Делфију и Бесплатном Паскалу (Дефли-компатибилни мод). Оксиџен Објектни Паскалnamespace ObjectPascalExample;
interface
type
ConsoleApp = class
class method Main;
end;
THelloWorld = class
method Put;
end;
implementation
method THelloWorld.Put;
begin
Console.WriteLine('Hello, World!');
end;
class method ConsoleApp.Main;
begin
var HelloWorld := new THelloWorld;
HelloWorld.Put;
end;
end.
DWScript-ин Објектни Паскал (илити Паметни Паскал)type
THelloWorld = class
procedure Put;
begin
PrintLn('Hello, World!');
end
end;
var HelloWorld := THelloWorld.Create;
HelloWorld.Put;
Имати на уму да метода имплементације може такође бити направљена у посебној локацији као у осталим дијалектима Објектног Паскала. РазвојМноге карактеристике су биле уведе континуирано у Објектни Паскал са екстензијама у Делфију, сада такође преко Бесплатног Паскала. У реакцији против критицизма, Бесплатни Паскал је усвојио генерике, и оба Делфи и Бесплатни Паскал сада подржавају преоптерећења оператора (са различитом граматиком, иначе). Делфи је такође представио многе остале карактеристике још од верзије 7[4] укључујући генерике. Види још
Референце
Спољашње везе
|
Portal di Ensiklopedia Dunia