Object Pascal

 
Object Pascal chỉ đến một nhánh của phát sinh hướng đối tượng của Pascal, được biết đến chủ yếu với vai trò ngôn ngữ lập trình chính của Delphi.
Lịch sử ban đầu tại Apple.
Object Pascal là một phần mở rộng của ngôn ngữ Pascal vốn được phát triển tại Apple Computer bởi một nhóm do Larry Tesler đứng đầu với sự tham vấn của Niklaus Wirth, là người tạo nên ngôn ngữ Pascal. Nó xuất phát từ một phiên bản hướng đối tượng của Pascal có tên gọi Clascal, được cài sẵn trên máy tính Lisa.
Object Pascal cần thiết để hỗ trợ cho MacApp, một phần mở rộng của khung ứng dụng Macintosh mà bây giờ được gọi là thư viện lớp. Phần mở rộng Object Pascal, và chính MacApp, được phát triển bởi Barry Haynes, Ken Doyle, và Larry Rosenstein, và được thử nghiệm bởi Dan Allen. Larry Tesler giám sát dự án từ rất sớm vào năm 1985 và trở thành sản phẩm vào năm 1986.
Một phần mở rộng Object Pascal cũng được triển khai trong Think Pascal IDE. IDE bao gồm trình biên dịch và trình soạn thảo với tô sáng cú pháp và kiểm tra, một trình gỡ lỗi mạnh mẽ và thư viện lớp. Nhiều lập trình viên thích Think Pascal hơn là cách triển khai Object Pascal của Apple bởi vì Think Pascal cung cấp sự tích hợp chặt chữ với công cụ của nó. Quá trình phát triển dừng lại sau phiên bản 4.01 bởi vì công ty bị mua lại bởi Symantec. Sau đó các lập trình viên rời khỏi dự án.
Apple bỏ hỗ trợ cho Object Pascal khi họ chuyển từ chip Motorola 68K sang kiến trúc PowerPC của IBM vào năm 1994. MacApp 3.0, cho nền tảng này, được viết lại bằng ngôn ngữ C++.
Thời đại của Borland và CodeGear.
Vào năm 1986, Borland giới thiệu các phần mở rộng tương tự, cũng được gọi là Object Pascal, cho sản phẩm Turbo Pascal dành cho Macintosh, và vào năm 1989 cho Turbo Pascal 5.5 cho DOS. Khi Borland tái tập trung từ DOS sang Windows vào năm 1994, họ tạo nên người kế nhiệm cho Turbo Pascal, gọi là Delphi và giới thiệu một tập các phần mở rộng mới để tạo nên cái mà bây giờ gọi là ngôn ngữ Delphi.
Quá trình phát triển của Delphi được bắt đầu vào năm 1993 và phiên bản Delphi 1.0 được chính thức ra mắt ở Hoa Kỳ vào ngày 14 tháng 2 năm 1995. Trong khi mã nguồn sử dụng mô hình đối tượng của Turbo Pascal vẫn có thể được biên dịch, Delphi giới thiệu một cú pháp mới với từ khóa codice_1 để thay thế cho codice_2, hàm tạo Create và một hàm hủy ảo Destroy (và ngược lại phải gọi các thủ tục codice_3 và codice_4 procedures), thuộc tính, con trỏ hàm, và các thứ khác. Những điều này lấy cảm hứng từ bản thảo đang được soạn thảo của Tổ chức tiêu chuẩn hóa quốc tế (ISO) cho phần mở rộng lập trình hướng đối tượng, nhưng có nhiều khác biệt với phương ngữ của Turbo Pascal (ví dụ như yêu cầu trong bản thảo rằng tất cả các phương thức phải ảo) đều bị bỏ qua.
Ngôn ngữ Delphi tiếp tục phát triển qua nhiều năm để hỗ trợ cho các cấu trúc như mảng động, tổng quát và phương thức ảo.
Trình biên dịch.
Các [[trình biên dịch]] Object Pascal có sẵn cho một loạt [[hệ điều hành]] và kiến trúc.
Trình thông dịch.
Pascal Script (trước đây là InnerFuse) và DWScript (Delphi Web Script) là những [[trình thông dịch]]/scripting engine Object Pascal mã nguồn mở được viết bằng Delphi. Chúng hỗ trợ các tập con của Object Pascal. DWScript cũng có thể biên dịch mã Object Pascal sang mã JavaScript (Smart Pascal), và hỗ trợ biên dịch just-in-time.
Object Pascal của Apple.
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.
Object Pascal của Turbo Pascal.
Vẫn được hỗ trợ trong Delphi và Free Pascal. FPC cũng đóng gói các thư viện/đơn vị của riêng nói. Nhưng Delphi thì không. Free Pascal 2.0 được viết lại theo phương ngữ giống Delphi hơn.
Cấp phát dựa trên ngăn xếp.
program ObjectPascalExample;
 type
 THelloWorld = object
 procedure Put;
 end;
 procedure THelloWorld.Put;
 begin
 WriteLn('Hello, World!');
 end;
var
begin
 HelloWorld.Put;
end.
Cấp phát dựa trên heap.
program ObjectPascalExample;
 type
 PHelloWorld = ^THelloWorld;
 THelloWorld = object
 procedure Put;
 end;
 procedure THelloWorld.Put;
 begin
 WriteLn('Hello, World!');
 end;
var
begin
 New(HelloWorld);
 HelloWorld^.Put;
 Dispose(HelloWorld);
end.
Ví dụ khác:
program ObjectPascalExample;
 type
 PHelloWorld = ^THelloWorld;
 THelloWorld = object
 procedure Put;
 end;
 procedure THelloWorld.Put;
 begin
 WriteLn('Hello, World!');
 end;
var
 HelloWorld2: ^THelloWorld; { this is a direct variable to a pointer of the THelloWorld type. 
 This variable is type incompatible with PHelloWorld. } 
 HelloWorld3: ^THelloWorld; { the compiler sees this as being type incompatible with HelloWorld2 *and* 
 PHelloWorld. Using the pointer syntax is the only way to declare a type that is 
begin
 { This works in a similar way as the code above... but it demonstrates the disadvantage of not 
 using a specific type. The type definition between two variables using the raw pointer 
 New(HelloWorld4);
 New(HelloWorld3);
end.
Đây là một khác biệt quan trọng để tạo ra, và có thể được nhìn nhận là một trong những khác biệt chính dẫn đến phong cách của Delphi để "ẩn" cấp phát heap và kí hiệu con trỏ từ lập trình viên. Delphi đã loại bỏ sự cần thiết của kiểu con trỏ và cú pháp con trỏ bổ sung, nhưng vẫn giữa lại cơ chế xây dựng rõ ràng.
Object Pascal của Delphi và Free Pascal.
program ObjectPascalExample;
type
 THelloWorld = class
 procedure Put;
 end;
procedure THelloWorld.Put;
begin
 Writeln('Hello, World!');
end;
var
begin
 HelloWorld.Put;
end.
Lưu ý rằng xây dựng đối tượng vẫn có sẵn trong Delphi và Free Pascal.
Object Pascal của Oxygene.
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.
Object Pascal của DWScript (còn gọi là Smart Pascal).
type
 THelloWorld = class
 procedure Put;
 begin
 PrintLn('Hello, World!');
 end
 end;
var HelloWorld:= THelloWorld.Create;
HelloWorld.Put;
Lưu ý rằng hiện thực phương thức có thể được thực hiện ở vị trí riêng biệt như trong các phương ngữ Object Pascal khác.
Sự phát triển.
Nhiều tính năng đã được giới thiệu liên tục trong Object Pascal với phần mở rộng tới Delphi và FreePascal. Trong phản ứng trước những chỉ trích, Free Pascal đã chấp nhận tổng quát hóa (generics) với cú pháp tương tự như Delphi, cung cấp chế độ tương thích với Delphi, và cả Delphi (một phần) và Free Pascal (rộng rãi hơn) đều hỗ trợ quá tải toán tử (operator overloading). Delphi cũng giới thiệu nhiều tính năng khác kể từ phiên bản 7 bao gồm tổng quát hóa. Trong khi FreePascal cố gắng để tương thích với Delphi ở chế độ tương thích Delphi, nó cũng thường giới thiệu nhiều tính năng mới cho ngôn ngữ mà không phải lúc nào cũng có sẵn trên Delphi.
Liên kết ngoài.
[[Thể loại:Borland]]
[[Thể loại:Phần mềm CodeGear]]
[[Thể loại:Delphi (ngôn ngữ lập trình)]]
[[Thể loại:Ngôn ngữ lập trình hướng đối tượng]]
[[Thể loại:Họ ngôn ngữ lập trình Pascal]]