Object-oriented Software in Ada 95
Object-oriented Software in Ada 95
Object-oriented Software in Ada 95
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Contents<br />
ix<br />
14 GENERICS ................................................................................................................................................ 191<br />
14.1 GENERIC FUNCTIONS AND PROCEDURES ..................................................................................................191<br />
14.1.1 Advantages and disadvantages of generic units..................................................................................193<br />
14.2 SPECIFICATION OF GENERIC COMPONENT ...............................................................................................194<br />
14.3 GENERIC STACK ................................................................................................................................................1<strong>95</strong><br />
14.3.1 Putt<strong>in</strong>g it all together ...............................................................................................................................197<br />
14.3.2 Implementation techniques for a generic package..............................................................................198<br />
14.4 GENERIC FORMAL SUBPROGRAMS..............................................................................................................198<br />
14.4.1 Example of the use of the generic procedure G_3Order.................................................................200<br />
14.4.2 Summary .....................................................................................................................................................200<br />
14.5 SORTING..............................................................................................................................................................201<br />
14.5.1 Efficiency....................................................................................................................................................201<br />
14.6 A GENERIC PROCEDURE TO SORT DATA ...................................................................................................202<br />
14.6.1 Putt<strong>in</strong>g it all together ...............................................................................................................................203<br />
14.6.2 Sort<strong>in</strong>g records..........................................................................................................................................203<br />
14.7 GENERIC CHILD LIBRARY...............................................................................................................................204<br />
14.7.1 Putt<strong>in</strong>g it all together ...............................................................................................................................206<br />
14.8 INHERITING FROM A GENERIC CLASS ........................................................................................................206<br />
14.8.1 Putt<strong>in</strong>g it all together ...............................................................................................................................207<br />
14.9 SELF-ASSESSMENT ...........................................................................................................................................208<br />
14.10 EXERCISES ......................................................................................................................................................208<br />
15 DYNAMIC MEMORY ALLOCATION............................................................................................ 209<br />
15.1 ACCESS VALUES ...............................................................................................................................................209<br />
15.1.1 Access to an object via its access value................................................................................................210<br />
15.1.2 Lvalues and rvalues..................................................................................................................................210<br />
15.1.3 Read only access .......................................................................................................................................211<br />
15.2 DYNAMIC ALLOCATION OF STORAGE........................................................................................................212<br />
15.2.1 Problems with dynamically allocated storage.....................................................................................215<br />
15.3 RETURNING DYNAMICALLY ALLOCATED STORAGE .............................................................................215<br />
15.3.1 Summary: access all, access constant, access............................................................216<br />
15.4 USE OF DYNAMIC STORAGE ..........................................................................................................................216<br />
15.4.1 Putt<strong>in</strong>g it all together ...............................................................................................................................219<br />
15.5 HIDING THE STRUCTURE OF AN OBJECT (OPAQUE TYPE).....................................................................220<br />
15.5.1 Putt<strong>in</strong>g it all together ...............................................................................................................................222<br />
15.5.2 Hidden vs. visible storage <strong>in</strong> a class......................................................................................................223<br />
15.6 ACCESS VALUE OF A FUNCTION ..................................................................................................................223<br />
15.6.1 Putt<strong>in</strong>g it all together ...............................................................................................................................224<br />
15.7 ATTRIBUTES 'ACCESS AND 'UNCHECKED_ACCESS...................................................................................225<br />
15.8 SELF-ASSESSMENT ...........................................................................................................................................226<br />
15.9 EXERCISES...........................................................................................................................................................226<br />
16 POLYMORPHISM.................................................................................................................................. 227<br />
16.1 ROOMS IN A BUILDING....................................................................................................................................227<br />
16.1.1 Dynamic b<strong>in</strong>d<strong>in</strong>g .......................................................................................................................................228<br />
16.2 A PROGRAM TO MAINTAIN DETAILS ABOUT A BUILDING....................................................................228<br />
16.2.1 Putt<strong>in</strong>g it all together ...............................................................................................................................231<br />
16.3 RUN-TIME DISPATCH.......................................................................................................................................232<br />
16.4 HETEROGENEOUS COLLECTIONS OF OBJECTS.........................................................................................232<br />
16.4.1 An array as a heterogeneous collection................................................................................................233<br />
16.4.2 Additions to the class Office and Room...........................................................................................233<br />
16.5 A BUILDING INFORMATION PROGRAM ......................................................................................................235<br />
16.5.1 Putt<strong>in</strong>g it all together ...............................................................................................................................236<br />
16.6 FULLY QUALIFIED NAMES AND POLYMORPHISM ...................................................................................237<br />
16.7 PROGRAM MAINTENANCE AND POLYMORPHISM ...................................................................................238<br />
16.8 DOWNCASTING..................................................................................................................................................238