Перейти до вмісту

Object Pascal

Матеріал з K2 ERP Wiki

!характеристика

function Add(A, B: Integer): Integer;

begin type

Result := FName + ' <' + FEmail + '>';

!Термін |- |Назва |Object Pascal |- |Походження |еволюція мови Pascal |- |Тип |Обʼєктно-орієнтована, компільована, високорівнева мова програмування |- |Основні реалізації |Delphi, Free Pascal |- |Основні IDE |Delphi IDE, RAD Studio, Lazarus |- |Основні сфери |Desktop, ERP, CRM, бази даних, бізнес-системи, інженерні програми, cross-platform застосунки |- |Головні функціональні можливості |Класи, обʼєкти, властивості, методи, інтерфейси, модулі, компоненти |- |Складність для новачків |Низька або середня |- |Повʼязані статті |Pascal, Delphi, Free Pascal, Lazarus, VCL, FireMonkey |}

!Напрям

FEmail := AEmail;
end;
  • класи;
  • обʼєкти;
  • наслідування;
  • інкапсуляцію;
  • поліморфізм;
  • властивості;
  • методи;
  • інтерфейси;
  • модулі;
  • компоненти;
  • події.; |-

| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Увага |Мова менш популярна серед новачків |Сьогодні частіше починають із Python, JavaScript, Java або C#, але Object Pascal досі важливий у legacy і бізнес-системах.; {| class="wikitable"

Writeln('Bark');

else

  • desktop-застосунки;
  • cross-platform UI;
  • програми для Linux, Windows, macOS;
  • навчальні проєкти;
  • open source Pascal-проєкти.; public

Використання:

{| class="wikitable" │ ├── CustomerService.pas

Numbers: array [1..3] of Integer;

Free Pascal часто застосовується разом із IDE '''Lazarus'''.; begin

Object Pascal у ERP

!Мова

У Delphi Object Pascal тісно повʼязаний із компонентною моделлю.; * кнопка;

  • поле вводу;
  • таблиця;
  • меню;
  • timer;
  • database connection;
  • query;
  • data source.; Приклад SQL-запиту в Delphi:

├── Forms/ try |- |Комерційне середовище від Embarcadero |Open source IDE для Free Pascal |- |Дуже сильний у VCL і RAD Studio-екосистемі |Сильний у cross-platform open source-сценаріях |- |Має VCL і FireMonkey |Має LCL |- |Платна комерційна програмний пакет |Безкоштовна й відкрита програмний пакет |} Writeln(Counter); → виконується метод Button1Click !Рекомендація

У Object Pascal істотно розуміти життєвий цикл обʼєктів: хто створює обʼєкт, той зазвичай має подбати про його звільнення.

function TUserService.GetUserName: string;

Writeln('Дорослий')

|- |VCL |Delphi |Windows desktop-застосунки |- |FireMonkey / FMX |Delphi |Cross-platform застосунки |- |LCL |Lazarus |Cross-platform desktop-застосунки |}

Ці назви часто плутають.; begin constructor TUser.Create(const AName, AEmail: string); Вона сильна там, де потрібні:

Numbers [0] := 10;

!Delphi Конструктор створює обʼєкт, деструктор звільняє ресурси.; Writeln('Hello, world!');

  • візуальний дизайнер;
  • Object Inspector;
  • VCL;
  • FireMonkey;
  • FireDAC;
  • пакети компонентів;
  • debugger;
  • deployment tools;
  • cross-platform target platforms.;

    Якщо класичний Pascal був хорошим для навчання логіці програмування, то Object Pascal став практичною мовою для реальних desktop і бізнес-застосунків.

├── Models/

end;

Приклад структури:


 property Price: Currency read FPrice write FPrice;
== Для чого застосовується Object Pascal ==
 User := TUser.Create('Anna', 'anna@example.com');
begin
Lazarus надає можливість створювати:

Object Pascal підтримує роботу винятки.; end;
== Змінні ==
|-
|Windows desktop-застосунок
| style="background:#d4edda; color:#155724; font-weight:bold;" |Дуже добре
|-
|Бізнес-програма з формами й базою даних
| style="background:#d4edda; color:#155724; font-weight:bold;" |Дуже добре
|-
|ERP desktop
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|CRM desktop
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|супровід Delphi legacy
| style="background:#d4edda; color:#155724; font-weight:bold;" |Дуже добре
|-
|Навчання структурному програмуванню
| style="background:#d4edda; color:#155724; font-weight:bold;" |Добре
|-
|Cross-platform desktop
| style="background:#fff3cd; color:#856404; font-weight:bold;" |Можливо через Lazarus або FMX
|-
|Web frontend
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не ключовий вибір
|-
|AI / Data Science
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Не ключовий вибір
|}

 IUserRepository = interface
== Object Pascal і обладнання ==
!Пояснення
 Writeln(User.GetInfo);
|-
|'''Pascal'''
|Object Pascal додає обʼєктну модель і сучасні функціональні можливості
|-
|'''Delphi'''
|Delphi — це середовище й платформа, Object Pascal — мова
|-
|'''C#'''
|C# сильний у .NET; Object Pascal сильний у Delphi desktop і legacy
|-
|'''Java'''
|Java частіше для enterprise backend; Object Pascal частіше для desktop і бізнес-систем
|-
|'''Python'''
|Python простіший для AI й automation; Object Pascal сильніший у нативних desktop-програмах
|-
|'''JavaScript / TypeScript'''
|JavaScript/TypeScript головні для web; Object Pascal сильний у desktop
|-
|'''C++'''
|C++ більш низькорівневий; Object Pascal зручніший для прикладної розробки
|}

var
 FName := AName;
var
<blockquote>'''У legacy-системах Object Pascal часто цінний не сам по собі, а через бізнес-логіку, яка роками накопичувалась у коді.'''</blockquote>
|-
|1
|Змінні, типи, оператори
|-
|2
|Умови й цикли
|-
|3
|Процедури й функції
|-
|4
|Масиви й records
|-
|5
|Unit, interface, implementation
|-
|6
|Класи й обʼєкти
|-
|7
|Властивості, методи, конструктори
|-
|8
|Наслідування й поліморфізм
|-
|9
|Інтерфейси
|-
|10
|Exceptions і try/finally
|-
|11
|VCL, FMX або LCL
|-
|12
|SQL і бази даних
|-
|13
|технічна архітектура desktop-бізнес-систем
|}

User: TUser;

Object Pascal у порівнянні з іншими мовами

Writeln('Неповнолітній');

|- |IDE |Delphi або Lazarus |- |Компілятор |Delphi compiler або Free Pascal |- |Перший тип проєкту |Console application або проста форма |- |База даних |SQLite, Firebird або PostgreSQL |- |Контроль версій |Git |- |Структура |Forms, Services, Models, DataModules |- |Документація |README і короткий характеристика модулів |}

end;

Поліморфізм

Numbers [2] := 30;

│ ├── CustomerRepository.pas

  • нативні desktop-застосунки;
  • бізнес-системи;
  • ERP і CRM;
  • робота з базами даних;
  • супровід legacy-коду;
  • компоненти;
  • форми;
  • інтеграційні функціональні можливості з обладнанням;
  • стабільні прикладні програми.; |-

| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |Object Pascal найвідоміший через Delphi |Саме Delphi зробив Object Pascal популярним у бізнес-розробці.; Паралельно існує відкрита реалізація Object Pascal — Free Pascal, а додатково IDE Lazarus.; public type

Головна ідея Object Pascal

Object Pascal не є собою найпопулярнішою мовою для новачків у сучасному IT, але він залишається важливим у багатьох компаніях, де працюють Delphi-системи з реальною бізнес-логікою.;

program HelloWorld;
 TLogger = class
function TUserRepository.FindById(Id: Integer): string;

Історичний розвиток

Інтерфейси

uses interface

finally

Причини: end;

end;
function GetInfo: string;
  • форми;
  • бізнес-логіку;
  • доступ до даних;
  • моделі;
  • сервіси;
  • звіти;
  • інтеграції;
  • конфігурацію.; Lazarus — це open source IDE для Free Pascal, схожа за ідеєю на Delphi.; Object Pascal часто використовувався для ERP-систем через Delphi.;Виклик:

'''Object Pascal''' — це важлива мова з великою історією, яка досі застосовується в Delphi, Free Pascal і Lazarus.;== Умови ==

User.Name := 'Anna';
User.Free;
finally
SetLength(Numbers, 3);

== Події == Object Pascal часто зустрічається в legacy-системах.;<pre>

Legacy-система — це стара платформа, яка продовжує виконувати важливі бізнес-функції.; Це одна з причин, чому старі Delphi/Object Pascal-системи досі використовуються в торгівлі, складах і виробництві.; │ └── InvoiceRepository.pas

!Що автоматизує

  • підключення до SQL-бази;
  • виведення таблиці на форму;
  • редагування записів;
  • створення документів;
  • звіти;
  • транзакції;
  • імпорт і експорт;
  • інтеграції з ERP/CRM.; end;
Numbers [1] := 20;
Writeln('Logger destroyed');

type

FName: string;

procedure TForm1.Button1Click(Sender: TObject); Object Pascal має змогу використовуватися з різними UI-бібліотеками.;<pre> {| class="wikitable"

['{A1B2C3D4-E5F6-4700-8000-000000000001}']

end; Object Pascal legacy має змогу містити: !Параметр

Можливі підходи: Змінні оголошуються в секції var.; try !компонент

private

Основи синтаксису

Records

constructor Create(const AName, AEmail: string);

type

Exceptions

finally !Теза

Приклади: !Задача begin

Конструктори і деструктори

Статичний масив:

 Animal.Free;
!Що означає
== Коли Object Pascal — хороший вибір ==
begin

!Порівняння
 Numbers [2] := 20;

 end;

Пізніше еволюція Delphi перейшов до Embarcadero Technologies.;

Динамічний масив:

Типові сценарії: == Object Pascal у Free Pascal == !Пояснення

!Помилка FDQuery1.Open; end.; Object Pascal розвинув цю ідею й додав до неї обʼєктну модель.; public

Приклад реалізації:

== Object Pascal і legacy ==

FPrice: Currency;
FName: string;
  • складну бізнес-логіку;
  • старі форми;
  • SQL-запити;
  • звіти;
  • інтеграції;
  • роботу з обладнанням;
  • нестандартні правила підприємства;
  • багато років накопичених доопрацювань.;<pre>

end;

Writeln(Add(5, 7));

  • private;
  • protected;
  • public;
  • published.;<pre>
Age: Integer;

<blockquote>'''Delphi — це середовище й платформа, а Object Pascal — мова, на якій у ньому пишуть код.'''</blockquote>

{| class="wikitable sortable" == Памʼять і керування обʼєктами == == Висновок ==

Схема:

Найпростіша програма:<pre> користувач системи натискає кнопку

User.Age := 17;

== Unit ==

finally

== Функції == У 1995 році організація Borland випустила Delphi — середовище швидкої розробки застосунків, у якому Object Pascal став основною мовою.; Тобі ', Age, ' років.'); !Значення

Email: string;

└── Project.dpr !Етап until Counter >= 10;

end; SayHello('Anna');

Unit — це компонент коду в Object Pascal.;

!Пояснення

end;

Object Pascal має читабельний синтаксис, де блоки коду часто позначаються словами begin і end.; {| class="wikitable" |- |Читабельний синтаксис |Код досить без зайвих зусиль читати навіть новачкам |- |Нативна компіляція |Програми компілюються в нативний код |- |Добрий для desktop |Особливо разом із Delphi VCL |- |Сильний у бізнес-системах |Підходить для ERP, CRM, обліку, складу |- |Хороша робота з базами даних |Delphi і Lazarus мають сильні інструменти для БД |- |Компонентна модель |комфортно створювати UI й повторно використовувати компоненти |- |Стабільність |Багато систем працюють десятиліттями |}

це обʼєктно-орієнтоване розширення мови Pascal, яке застосовується насамперед у середовищах Delphi, Free Pascal та Lazarus виступає ключовою рисою Object Pascal.;

Object Pascal — це мова, яка поєднує простоту Pascal із практичною силою обʼєктно-орієнтованої бізнес-розробки.

|- |Писати всю логіку у формі |Код стає важким для підтримки |- |Зловживати глобальними змінними |платформа стає непередбачуваною |- |Не звільняти обʼєкти |Можливі витоки памʼяті |- |Не використовувати try/finally |Ресурси можуть не звільнитися при помилці |- |Плутати unit і class |Unit — це компонент файлу, class — тип обʼєкта |- |Ігнорувати архітектуру |Проєкт оперативно перетворюється на набір великих форм |}

end; type Object Pascal часто використовувався для інтеграції з обладнанням.; !Компонент end;

Цикли

│ └── InvoiceService.pas

│ ├── MainForm.pas

Масиви

function TUser.GetInfo: string;

Рекомендований шлях навчання Object Pascal

Недоліки Object Pascal

function FindById(Id: Integer): string;
TUserRepository = class(TInterfacedObject, IUserRepository)
Age: Integer;

end;

Цикл for:
Блок try/finally часто застосовується для звільнення ресурсів:

== Компонентна модель == == Uses ==

!Lazarus {| class="wikitable"

end;

Writeln(User.GetInfo);

├── Reports/ │ ├── Customer.pas

end;
FDQuery1.ParamByName('city').AsString := 'Київ'; Animal.Speak; public begin inherited Create;

Object Pascal і бази даних

begin

Виклик:

{| class="wikitable" Класи — основа обʼєктно-орієнтованого програмування в Object Pascal.;<pre>

'SELECT id, name, city FROM customers WHERE city = :city';
procedure Speak; virtual;
Writeln('Привіт, ', Name, '!; except

end.; Name := 'Anna'; == Властивості == Free Pascal підходить для: unit UserService; function TCalculator.Add(A, B: Integer): Integer; |- |'''Integer''' |Цілі числа |<code>10</code> |- |'''Int64''' |Великі цілі числа |<code>123456789</code> |- |'''Single''' |Дробове число меншої точності |<code>3.14</code> |- |'''Double''' |Дробове число більшої точності |<code>3.14159</code> |- |'''Currency''' |Фінансові значення |<code>1250.50</code> |- |'''Boolean''' |True або False |<code>True</code> |- |'''Char''' |Один символ |<code>'A'</code> |- |'''String''' |Рядок тексту |<code>'Hello'</code> |- |'''TDateTime''' |Дата й час |Дата, час, timestamp |- |'''Variant''' |Значення різних типів |застосовується обережно |}

on E: Exception do

type створення desktop-застосунків забезпечується через Object Pascal став особливо відомим завдяки наявності Delphi, де він застосовується; додатково реалізовано бізнес-систем, ERP/CRM-рішень, програм для роботи з базами даних, інженерних інструментів, сервісів, API та cross-platform застосунків.; !Перевага

Секція interface описує те, що видно іншим модулям.; Наслідування надає можливість створити новий клас на основі існуючого.;
public

destructor TLogger.Destroy;

procedure Speak; override;
destructor Destroy; override;
Writeln('Logger created');

{| class="wikitable" {| class="wikitable" │ └── CustomerForm.pas == Методи ==

== VCL, FMX і LCL == implementation == Типові помилки новачків ==

ShowMessage('Hello from Object Pascal!');

Project/

Він підтримує роботу різні режими сумісності, зокрема режими, близькі до Delphi.; User.Free;

TCalculator = class
Animal := TDog.Create;

|- |'''private''' |Доступ тільки всередині модуля або класу, залежно від діалекту й режиму |- |'''protected''' |Доступ у класі та нащадках |- |'''public''' |Відкритий доступ |- |'''published''' |Доступ для RTTI, Object Inspector і компонентної моделі |}

end;

end;

== Object Pascal у Delphi == end; │ └── Invoice.pas end;

User.Email := 'anna@example.com';

{| class="wikitable" begin == Процедури == end;

Writeln(User.GetInfo);

begin

User: TUser;

var

Цикл while:

== Мінімальний набір для першого проєкту == !Приклади У Delphi Object Pascal застосовується для:

!Для чого ├── Services/

User.Free;

Поліморфізм надає можливість працювати з різними класами через спільний базовий тип.; FDQuery1.SQL.Text := !Підхід procedure SayHello(Name: string); → виникає подія OnClick |- |'''складський облік''' |Залишки, партії, рух товарів |- |'''продажі та реалізація''' |Замовлення, рахунки, накладні |- |'''закупівельна діяльність''' |Постачальники, заявки, надходження |- |'''фінансовий блок''' |Оплати, каса, банк, звіти |- |'''Виробництво''' |Специфікації, плани, операції |- |'''електронний документообіг''' |Договори, акти, внутрішні документи |- |'''CRM''' |Клієнти, контакти, угоди |}

begin

Inc(Counter);

begin

  • касові апарати;
  • фіскальні реєстратори;
  • сканери штрихкодів;
  • принтери етикеток;
  • ваги;
  • POS-термінали;
  • COM-порти;
  • USB-пристрої;
  • DLL-драйвери;
  • промислові контролери.;<pre>

type function Add(A, B: Integer): Integer; |- | style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове |'''Object Pascal — це еволюція Pascal''' |Мова зберігає зрозумілий синтаксис Pascal, але додає ООП.;<pre>

Типові ERP-модулі:

end;
Animal: TAnimal;
Чи підходить Object Pascal?; TAnimal = class
Result := 'Anna';
Result := A + B;
FEmail: string;
Result := A + B;

Властивості дозволяють керувати доступом до полів.; |-

Ключове Object Pascal компілюється в нативний код - істотно Object Pascal має різні діалекти Delphi і Free Pascal дуже близькі, але не завжди в цілому ідентичні.; begin
inherited Destroy;
Тип

Хороша структура Object Pascal-проєкту

begin

TDog = class(TAnimal)
Writeln('Animal sound');

У Object Pascal для цього використовуються секції:

Numbers: array of Integer;
public
public

program VariablesExample;

  • VCL-застосунків;
  • FireMonkey-застосунків;
  • desktop-програм;
  • мобільних застосунків;
  • серверних застосунків;
  • API;
  • компонентів;
  • пакетів;
  • бібліотек;
  • бізнес-систем.;== Інкапсуляція ==

var

Object Pascal зберіг читабельність Pascal, але додав інструменти для великих прикладних систем.

Секція
Result := 'User #' + IntToStr(Id);
Типова структура unit:
|-
|'''Оновити компілятор'''
|Перейти на новішу версію Delphi або Free Pascal
|-
|'''Рефакторинг'''
|Поступово покращити структуру коду
|-
|'''Винести бізнес-логіку з форм'''
|Розділити UI і логіку
|-
|'''Додати тести'''
|Покрити критичну логіку тестами
|-
|'''Оновити доступ до БД'''
|Перейти на сучасні компоненти або драйвери
|-
|'''Створити API'''
|Додати REST/API-шар для інтеграцій
|-
|'''Поступово замінювати модулі'''
|Переписувати не всю систему, а окремі частини
|}

Якщо Pascal дозволяв писати структуровані програми через процедури й функції, то Object Pascal додав:
== Класи ==

procedure TAnimal.Speak; У класичному Delphi обʼєкти часто створюються через Create і звільняються через Free.; end;

Що вивчати Чому це проблема

переважні аспекти Object Pascal

Numbers [3] := 30;
try
DoSomething;

Приклади компонентів:

Модернізація не завжди означає повне переписування.;

 function FindById(Id: Integer): string;

begin
try
try
 User := TUser.Create('Anna', 'anna@example.com');
== Джерела ==

 Numbers [1] := 10;

end.; |-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Ключове
|'''Мова добре підходить для desktop і бізнес-систем'''
|Особливо для Windows-застосунків, ERP, CRM і програм з базами даних.; Події — одна з основ Delphi/Object Pascal.;<blockquote>'''Object Pascal — це Pascal, розширений для реальної прикладної розробки: з класами, компонентами, формами, базами даних і нативними застосунками.'''</blockquote>
 TUser = class
{| class="wikitable"
 User: TUser;

!Як застосовується Object Pascal
Бажано розділяти:

Коротко

TProduct = class
private
for I := 1 to 5 do

if Age >= 18 then

Record — це структура даних із полями.; Мова поєднує читабельність класичного Pascal із сучасними можливостями обʼєктно-орієнтованого програмування: класами, обʼєктами, інтерфейсами, властивостями, методами, модулями, обробкою подій і компонентною моделлю.; Delphi додає до мови: Приклад обробника натискання кнопки:
var
Інтерфейс описує контракт, який має реалізувати клас.; |}

begin
var

while Counter < 10 do
begin
 Writeln(Counter);
 Inc(Counter);
end;
Цикл repeat:
  • компілятор;
  • візуальний дизайнер форм;
  • бібліотеку компонентів;
  • роботу з базами даних;
  • обробку подій;
  • швидку компіляцію;
  • нативні Windows-застосунки.; '''Процедура''' виконує дію, але не обовʼязково повертає значення.; !Приклад
function GetUserName: string;
constructor Create;

|- |'''Менша популярність''' |Сьогодні мова менш популярна серед нових розробників |- |'''Менше вакансій, ніж у масових мов''' |Менше ринку порівняно з JavaScript, Python, Java, C# |- |'''Legacy-репутація''' |Часто асоціюється зі старими desktop-системами |- |'''Не центральний вибір для web frontend''' |Для frontend частіше використовують JavaScript або TypeScript |- |'''Не ключовий вибір для AI''' |Для AI переважно використовують Python |- |'''Різні діалекти''' |Delphi і Free Pascal можуть мати відмінності |}

!Призначення Компонент — це клас, який можна використовувати в дизайнері форм.; Delphi поєднав: <pre> end;

'''Інкапсуляція''' означає приховування внутрішніх деталей класу.; constructor TLogger.Create; !Де застосовується

TUserService = class

begin

Writeln(I);
Age := 17;

{| class="wikitable"

end;

== Важливі акценти ==

public
property Name: string read FName write FName;
Writeln('Помилка: ', E.Message);

end;

end;

{| class="wikitable"

SysUtils, Classes, UserService;

type

Недолік

repeat

Object Pascal — це Pascal, який навчився працювати з обʼєктами, формами, компонентами й великими прикладними програмами.;
!Значення
== Lazarus ==
Метод — це процедура або функція, яка належить класу.; begin

 end;
├── DataModules/

begin

Name: string;
Pascal Класична структурована мова програмування
Object Pascal Обʼєктно-орієнтоване розширення Pascal
Delphi IDE, платформа й сучасна реалізація Object Pascal від Embarcadero
Free Pascal Open source-компілятор Pascal/Object Pascal
Lazarus Open source IDE для Free Pascal, схожа за ідеєю на Delphi

Модернізація Object Pascal-проєктів

end;

Простими словами

Бібліотека

Класичний Pascal створювався як зрозуміла, структурована й навчальна мова програмування.; I: Integer; User := TUser.Create('Anna', 'anna@example.com'); ├── Repositories/

Наслідування

type

end;
Name: string;

var

  • швидка розробка програмного забезпечення форм;
  • хороша робота з базами даних;
  • нативні Windows-застосунки;
  • data-aware компоненти;
  • стабільність;
  • довгий життєвий цикл програм;
  • можливість інтеграції з обладнанням;
  • супровід складної бізнес-логіки.; Ранні форми обʼєктного Pascal використовувалися ще до Delphi, але саме Delphi зробив мову масово популярною серед прикладних розробників.; Секція implementation містить реалізацію.; end;

Функція повертає результат.; |-

Desktop-застосунки Нативні програми з формами, меню, таблицями Windows-програми, облікові системи
ERP Документи, складський облік, фінансовий блок, бізнес-логіка Внутрішні ERP-системи
CRM Клієнти, угоди, задачі, історичний розвиток взаємодії Desktop CRM
Бази даних SQL, форми, datasets, звіти Firebird, InterBase, PostgreSQL, MSSQL
Інженерні програми Розрахунки, моделювання, спеціалізовані інструменти Технічні desktop-застосунки
Legacy-системи супровід старих, але критичних програм обліковий облік, складський облік, виробництво
Cross-platform Застосунки для різних ОС Delphi FMX, Lazarus LCL
Навчання Вивчення структурного й ООП-програмування Pascal/Object Pascal курси

Object Pascal, Pascal і Delphi

Основні типи даних

procedure TDog.Speak; begin

Object Pascal традиційно сильний у роботі з базами даних.;
begin
Статус end; var end; Free Pascal — це open source-компілятор Pascal/Object Pascal.; TUser = record Writeln('Привіт, ', Name); Object Pascal виник як обʼєктно-орієнтоване розширення Pascal.; Секція uses підключає інші модулі.; * open source-розробки; * навчання; * cross-platform програм; * консольних застосунків; * desktop-застосунків через Lazarus; * серверних утиліт; * embedded і спеціалізованих сценаріїв.;

* Embarcadero Object Pascal Handbook: https://www.embarcadero.com/products/delphi/object-pascal-handbook
* Embarcadero Delphi: https://www.embarcadero.com/products/delphi
* Delphi Object Pascal Style Guide: https://docwiki.embarcadero.com/RADStudio/Athens/en/Delphi%E2%80%99s_Object_Pascal_Style_Guide
* Free Pascal: https://www.freepascal.org/
* Free Pascal Documentation: https://www.freepascal.org/docs.html
* Lazarus IDE: https://www.lazarus-ide.org/
* Modern Object Pascal Introduction for Programmers: https://castle-engine.io/modern_pascal