// Directives to use classes {$mode objfpc} {$m+} program exampleClass; // Declaring a person Class type Person = class // fields to hold data about a person private person_name : string; age : integer; public // constructor for intializing a class instance constructor c(n : string; a : integer); // methods to view and update person data procedure setName(n : string); function getName() : string; procedure setAge(a : integer); function getAge() : integer; end; // Defining the class methods constructor Person.c(n : string; a : integer); begin person_name := n; age := a; end; procedure Person.setName(n : string); begin person_name := n; end; function Person.getName() : string; begin getName := person_name; end; procedure Person.setAge(a : integer); begin age := a; end; function Person.getAge() : integer; begin getAge := age; end; var newPerson : Person; begin // creating class instance newPerson := Person.c('Alice', 20); //output fields writeln('The person''s name is ', newPerson.getName()); writeln('The person''s age is ', newPerson.getAge()); //updating fields newPerson.setName('Bob'); newPerson.setAge(30); //output fields writeln('The person''s name is ', newPerson.getName()); writeln('The person''s age is ', newPerson.getAge()); end.