Here's a "standard format" that I use for an OO Ada type definition, which you can vary to meet your needs (capitalized italics are what you supply):
with PACKAGE_NAME_OF_PARENT; use PACKAGE_NAME_OF_PARENT; package PACKAGE_NAME is type MY_TYPE is tagged private; -- or, new Parent_Type with private type MY_TYPE_Access is access all MY_TYPE'Access; -- We'll talk about this in a later lesson; by adding this declaration -- here you'll make certain operations easier to do later. -- Dispatching operations go here. private -- Define the details of MY_TYPE here. end PACKAGE_NAME;
For the package name, I generally use the plural of the type name. Here's an example:
with Creatures; use Creatures; package Players is type Player is new Creature with private; -- Player is a type of Creature type Player_Access is access all Player'Access; -- Dispatching operations go here. procedure Look(P : in Player); private type Player is new Creature with record Logged_In : Boolean; end record; end Players;
Ada permits multiple OO types to be defined in a package, but that doesn't mean you must do so. As a general rule, put different type definitions in different packages unless the two types are strongly interrelated.
Given the example above, what is the name of the new tagged type defined above?
![]() |
![]() |
![]() |
---|
David A. Wheeler (dwheeler@ida.org)
The master copy of this file is at "http://www.adahome.com/Tutorials/Lovelace/s7s5.htm".