Difference between revisions of "Object"

From Lazarus wiki
Jump to navigationJump to search
m (Added back link pages)
Line 1: Line 1:
 
{{Object}}
 
{{Object}}
 
+
Back to: [[Data type|data types]] | [[Reserved words|reserved words]].
 
 
Back to [[Data type|data types]].
 
 
 
Back to [[Reserved words|reserved words]].
 
 
 
  
 
The reserved word '''object''' is used to construct complex data types that contain both functions, procedures and data. Object allows the user to perform Object-Oriented Programming (OOP). It is similar to [[Class|class]] in the types it can create, but by default objects are created on the [[Stack|stack]], while class data is created on the [[Heap|heap]]. However, object created types can be created on the heap by using the [[New|new]] procedure. Object was introduced in [[Turbo Pascal]], while [[Class|class]] was introduced in [[Delphi]]. Object is maintained for backward compatibility with Turbo Pascal and has largely been superseded by [[Class|class]].  
 
The reserved word '''object''' is used to construct complex data types that contain both functions, procedures and data. Object allows the user to perform Object-Oriented Programming (OOP). It is similar to [[Class|class]] in the types it can create, but by default objects are created on the [[Stack|stack]], while class data is created on the [[Heap|heap]]. However, object created types can be created on the heap by using the [[New|new]] procedure. Object was introduced in [[Turbo Pascal]], while [[Class|class]] was introduced in [[Delphi]]. Object is maintained for backward compatibility with Turbo Pascal and has largely been superseded by [[Class|class]].  

Revision as of 10:14, 14 October 2020

Deutsch (de) English (en) français (fr)
Back to: data types | reserved words.

The reserved word object is used to construct complex data types that contain both functions, procedures and data. Object allows the user to perform Object-Oriented Programming (OOP). It is similar to class in the types it can create, but by default objects are created on the stack, while class data is created on the heap. However, object created types can be created on the heap by using the new procedure. Object was introduced in Turbo Pascal, while class was introduced in Delphi. Object is maintained for backward compatibility with Turbo Pascal and has largely been superseded by class.

Example skeleton of the creation of the data type object:

type
  TTest = object
  private
    { private declarations }
  public
    { public declarations }
  end;

Example skeleton of the create of a packed version of the data type object:

type
  TTest = packed object
  private
    { private declarations }
  public
    { public declarations }
  end;

Example with constructor and destructor:

type
   TTest = object
   private 
     {private declarations}
     total_errors : Integer;
   public
     {public declarations}
     constructor Init;
     destructor Done;
     procedure IncrementErrors;
     function GetTotalErrors : Integer;
   end;

procedure TTest.IncrementErrors;
begin
  Inc(total_errors);
end;
    
function TTest.GetTotalErrors : Integer;
begin
   GetTotalErrors := total_errors;
end;

constructor TTest.Init;
begin
  total_errors := 0;
end;

destructor TTest.Done;
begin
   WriteLn('Destructor not needed - nothing allocated on the heap');
end;

var
   error_counter: TTest;

begin
   error_counter.Init; // unlike C++, constructors must be explicitly called
   error_counter.IncrementErrors;
   error_counter.IncrementErrors;
   WriteLn('current errors:', error_counter.GetTotalErrors);
   error_counter.Done
end.

Output:
current errors:2
Destructor not needed - nothing allocated on the heap

See Also



navigation bar: data types
simple data types

boolean byte cardinal char currency double dword extended int8 int16 int32 int64 integer longint real shortint single smallint pointer qword word

complex data types

array class object record set string shortstring