Ну запугали парня...
То, что слово Class надо заменить на Object выяснено.
Нет тут ваша
 БОЛЬШАЯ ошибка. Просто есть путаница мол объект это нечто общее, скажем комплексное число (Реальная часть и мнимая). И чтоб этим всем, тобишь Re и Im манипулировать как одним целым, мы для себя как программисты создаем объект. Вы скажите зачем можно писать в лоб и все такое.. можно, но я вам сейчас покажу что так легче. Во-первых нужно понимать, что когда программой будут пользоваться другие люди и извините за выражение Им наср...ть как вы там что сделали главное чтоб она работала, но вот для Вас как программиста, это имеет значение. Далее я это покажу на примере.
Так вот Объект - нечто что можна рассматривать как одно цело (объект).
Но тип определенный вами может быть Object или Class или Record. и т.п. Ну вот в C++ путанице нет у них Object или Record = Структура.. а тут просто нужно понимать в каком случае слово 
Объект - это сущность (Комлпексное число, Точка, прямоугольник) а в каком случае 
Объект = Object -
 Тип данных, определяемый вами. Надеюсь хоть что то встало у вас на место в голове... Ну типа тоже самое про классы:
Класс комплексных чисел, и Вчера наша команда показала 
Класс (Слово одно а смысл ой ой ой...). 
Тоже самое и между Object и Объект.. 
 
    
    
   Как мы можем его реализовать(В смысле это комплексное число то есть нечто, которое в нашем мире является априори одной сущностью, которым мы и хотим манипулировать и на языке как одним целостным объектом...)? Так мы можем это дело записать(реализовать) Минимум тремя способами:
1 - Создать Запись Record:- Код: Выделить всё
-  TComplexRecord = Record
 Re:Real;
 Im:Real;
 end;
 
2- Cоздать Класс: Class:- Код: Выделить всё
- TComplexClass = class
 private
 
 public
 Re:Real;
 Im:Real;
 
 constructor Create;
 destructor Destroy; override;
 end;
 
3 - Создать Object:- Код: Выделить всё
-   TComplexObject = Object
 Re:Real;
 Im:Real;
 end;
 
Далее мы сможем это дело использовать так (пример грубый но в самый раз для понимания):
- Код: Выделить всё
- procedure TForm1.Button1Click(Sender: TObject);
 var
 CR:TComplexRecord;
 CO:TComplexObject;
 CC:TComplexClass;
 S:String;
 begin
 CR.Re:=1;
 S:='CR.Re='+ FloatToStr(CR.Re);
 
 CO.Re:=2;
 [b][/b]S:=S+' CO.Re='+FloatToStr(CO.Re);
 
 CC:=TComplexClass.Create;
 CC.Re:=3;
 S:=S+ ' CC.Re='+FloatToStr(CC.Re);
 Caption:=S;
 end;
Теперь по порядку:Запись – самая простая реализация и самая быстрая!!! Именно по этому работу с комплексными числами я писал через запись 
 
 Почему быстрая потому что это кусок памяти с которым мы обращаемся как с одним целым (как с одной сущностью, что мы как раз и хотели) Теперь нас будет компилятор ругать если что то не так…
Класс- самый большой и не поворотливый, для его инициализации мы обязательно должны вызвать конструктор (всегда) потому что именно он выделит память в куче (ОЗУ) для его экземпляра. Для нашего примера, применение класса просто не оправданно, мы не используем наследование (явно) и тем более  знаем что не будем порождать от комплексного числа что то еще… По этому вся мощь классов в данном примере просто лишняя, но можно делать и так.
Объект – это запись, 
НО с возможностью наследования и инкапсулирования (запихивания внутрь других методов) И так же возможность создавать различные области видимости полей. (По идее это то что в Делфи называется расширенная запись, в Free Pascal есть простая запись и Объект и самое главное классы 

)
Конструктор для Объектов нужен только тогда, когда будут использоваться виртуальные методы и всякая крутость… После чего он будет почти одним и тем же, что и класс, 
НО с той оговоркой что он будет как и запись полностью располагаться на стеке. То есть Вы передаете экземпляр комплексного числа имеющего тип Объекта (не путать просто со словом Объект обозначающий сущность чего либо) в функцию, она функция (ну компилятор если быть точным) создаст локальную копию всего числа на стеке представьте что у вас полей не два (
Re and 
Im) а скажем сотня.. вы все поля будите копировать ( ну не вы а функция не явно при каждом вызове).. Тогда когда Вы передадите такой же функции уже переменную которая явл-ся классом, то копий создано не будет, буедт лишь передан указатель на область памяти в котором лежит ваш экземпляр (конкретное число). В этом все плюсы и минусу каждого из возможных подходов к реализации через Классы или Объекты.
В данном примере который привел я, у меня для Объектов нет конструктора! Он нам не нужен, потому что мы не используем, виртуальных методов и всяких рюшек.. И в руководстве сказано, что если ничего такого нет (виртуальных методов бла бла) мы вправе не реализовывать конструктор. Что касается классов вообще, как написано в руководстве языка Free Pascal да и других скажем Delphi, конструктор должен вызываться всегда… вы захотите опровергнуть, что мол если не задать его, а сделать что то подобное:
- Код: Выделить всё
- procedure TForm1.Button1Click(Sender: TObject);
 var
 CC:TComplexClass;
 S:String;
 Begin
 S:=’’;
 CC.Re:=3;
 S:=S+ ' CC.Re='+FloatToStr(CC.Re);
 Caption:=S;
 
 end;
То все вроде работает, Да но ходить по лезвию и пользоваться этим нельзя… 
Для классов всегда нужен Конструктор и для каждого Экземпляра его нужно вызвать. Именно так и написано в руководстве по FPC.
Не могу найти описании ООП для среды FreePascal. Везде или Delphi или Lazarus.
Среды FreePascal нет! Это язык программирования такой.. он так и называется Free Pascal.
описании ООП – Это один из подходов программирования, который заключается в том что мы начинаем манипулировать не битами или цифрами, а именно объектами (отдельными сущностями) скажем кнопка… Если этого бы не было, вы бы сидели и обращаясь к видеобуферу через видеокарту и т.п рисовали эту кнопку вручную (ну я грубо, так что прошу прощения у более опытных). 
По этому сущность ООП можно вообще прочитать в книгах хоть по С++. 
Вот Lazarus – это среда быстрой разработки, которая работает с компилятором языка Free Pascal. По этому любая книга по Лазарусу, в ней будет описан язык ФриПаскаль, и собственно ООП для этого языка. Так же подойдет любая книга по Делфи. 
Просто поймите ООП – это подход, (скажем копать яму руками или лопатой и все).Другой вопрос реализации этого подхода в языке, так вот в делфи и фрипаскале если не брать деталей все один в один, даже более того скажу в языке С++ такая же песня, там просто будут отличия в уничтожении классов при выходе из видимости переменной, автовызов конструктора и всяких рюшек….
Вам дали книгу по Паскалю, все же порекомендую 
вот эту, лично ее читал, так же можно прочитать это дело в 
DRKB.Теперь вообще лирика: А нафига это все нужно. Элементарный пример: берем теже самые комплексные числа, мы определим их через запись (Record), после чего мы создали наш пользовательский тип, язык фрипаскаль позволяет для типа данных переопределить стандартные функции и операторы скажем + - \ * и тп. Вплоть до exp.. – этой фигней вы будете страдать один раз при их реализации… вот мой модуль содержит почти все фунции вплоть до cosh и т.п… После чего вы можете писать что то в этом роде:
- Код: Выделить всё
- Var A,b,c,d,;
 Begin
 A:= sqrt(exp(b+c) / d * sin(b+1312));
 End;
А вот теперь напишите тоже самое, через решения в лоб  

 , у вас будет для каждого числа Re и Im части. Откройте любой справочник по матану, и посмотрите как реализуется скажем деление… Вы скажите но ведь когда Мы будем переопределять все это дело при перегрузке операторов и функций будем делать тоже самое. Да НО мы это делать будем один раз ОДИН.. после этого мы будем писать как нормальные люди, как в Маткаде... 
Ну думаю понятно объяснил   
 
   
 ... про классы более подробно можно прочитать в любой нормальной книге, поверте если в книге написано не понятно или сложно про классы, поверте Автор ... и просто не берите эту книгу... 
 
 PS. Так же подобные вещи обсуждались 
ТУТ(более внимательно читаем Ответы Сергея Горелкина  

 )