OOP is generally better when you get accustomed to it. Much easier to organise a project. As well as having inheritence like Supremacy said, you can also have functions inside a class. Here is an example of how to use classes with inheritence and procedures (basically functions that don't return values) in delphi...
program PClasses;
{$APPTYPE CONSOLE}
uses
SysUtils;
//Declare the TMan, and TSuperman types. TSuperman is a decendent of TMan
type
TMan = class(TObject)
name : shortString;
constructor create(name_ : shortString);
procedure printInfo;
end;
TSuperman = class(TMan)
superPowers : shortString;
constructor create(name_ : shortString; superPowers_ : shortString);
procedure printInfo;
end;
//Declare the TMan and TSuperman objects
var
lewisLane : TMan;
clarkKent : TSuperman;
//Procedures for the TMan type
constructor TMan.create(name_ : shortString);
begin
name := name_;
end;
procedure TMan.printInfo;
begin
writeLn('Name > ',name);
writeLn;
end;
//Procedures for the TSuperman type
constructor TSuperman.create(name_ : shortString; superPowers_ : shortString);
begin
name := name_;
superPowers := superPowers_;
end;
procedure TSuperman.printInfo;
begin
writeLn('Name > ',name);
writeLn('Super-Powers > ',superPowers);
writeLn;
end;
//Begin main program
begin
//Create TMan and TSuperman objects
lewisLane := TMan.create('Lewis Lane');
clarkKent := TSuperman.create('Clark Kent','Flying, Super Strength, Laser Eyes');
//Print the info for the objects
lewisLane.printInfo;
clarkKent.printInfo;
readLn;
end.
Another big advantage of classes is that you can have linked lists (if DBPro had a proper pointer system then you might be able to simulate this by combining it with UDTs). This is when you can create lots of objects (members of a class) using the constructor of the class (function which is called when you create a new object), and the objects will use pointers to link to each other. Then you can have one big function that starts off at the beginning of the list (pointed to by an outside pointer), and then uses the pointers within the object to go through all the objects created, and say, paste them to the screen (if you wanted). You may think you could just create an array of objects and then loop through the array, but the problem with that is the array is of a fixed size, and it also can only have one identifier with a load of numbers (not very handy when you want to find the object you want). Eg. with an array you may do this (psuedo code)...
dim person(3) as personClass
person(1) = personClass.create
person(2) = personClass.create
person(3) = personClass.create
repeat
drawPeopleToScreen
until exit
But with linked lists you could do this...
bob, sue, fred as personClass
bob = personClass.create
sue = personClass.create
fred = personClass.create
repeat
drawPeopleToScreen
until exit
Rather a crap example, but you cant have everything

.
PS. this should be on the new board really I think.
Isn't it? Wasn't it? Marvellous!
