ࡱ> JI ( b/ 0DTimes New Roman}0Wo 0DCourier Newman}0Wo 01 ` .  @n?" dd@  @@`` zrLK       S ~1?p999f@8g4@d@d0ppp@ g4dddd0 ppp@  uʚ;2Nʚ;<4!d!dЁ 0<4ddddЁ 0? O =)Directions for the Next Generation of Ada *.Randall Brukardt, ARG Editor AXE Consultants //$ /$Problem: Mutually Dependent Packages%%( %Occurs when two types have components that depend on the other type. Common in Object-Oriented designs, especially those ported from Java or C++. An (illegal) Ada 95 example with Employees; package Departments is type Department is record Manager : Employees.Employee_Access; end record; type Department_Access is access all Department; end Departments; with Departments; package Employees is type Employee is record Department : Departments.Department_Access; end record; type Employee_Access is access all Employee; end Employees;   2      ;      @The ARG searches for solutions& .!!( !1With Type Package Abstracts Incomplete type stubs22( 2 Incomplete type stubs =package Employee_Interface is type Employee is separate; type Employee_Access is access all Employee; end Employee_Interface; with Employee_Interface; package Departments is type Department is record Manager : Employee_Interface.Employee_Access; end record; -- as before. end Departments;x>        ;  > !Features of incomplete type stubs""( "Can be completed anywhere. Only one completion per program. Needed for type safety. If the completion is visible, the stub acts as a subtype of the completing type. If the completion is not visible, the stub is restricted as with normal incomplete types.6<<  Advantages of incomplete stubs( Implementation is similar to incomplete types deferred to a body - a feature Ada 95 already has. No new compilation unit needed. Completion is not required (useful for prototyping). Access types can be used (unlike with type).6  !Disadvantages of incomplete stubs""( "None yet -- to be determined.  5Problem: Accidental overloading instead of overriding66( 66Object-oriented programming problem: If a subprogram profile does not conform to the original profile, the subprogram often will overload rather than override a routine. Also a maintenance problem: if the base class is modified, overriding routines may silently change to overloading, breaking the application. 7 'Solution: Pragmas to declare overriding((( (TPragma Overriding declares that a subprogram is intended to be overriding. If it doesn t override something, an error is flagged. Configuration pragma Explicit_Overriding declares that all overriding is marked by pragma Overriding. If a subprogram overrides that is not marked, an error is flagged. + Example of pragma Overriding, lpackage Root is type Root_Window is tagged ... procedure When_Notify ( Window : in out Root_Window; Code : in Natural); end Root; with Root; package App is type Application_Window is new Root_Window ... procedure When_Notify ( Window : in out Application_Window); pragma Overriding (When_Notify); -- Error here. end App;m        * m 6Problem: No way to create or search directories in Ada77( 7Most operating systems have directories, but Ada does not provide a standard to do directory operations. Most Ada compilers provide a package to do this. Commonly supported by the standard for other languages (for example, C).  !Solution: Package Ada.Directories""( "Create and remove directories. Set and retrieve the current directory. Search a directory. Delete by name and renaming of files and directories. Full/simple name conversions. (TBD) File name decomposition functions. /8P  ` f3` f3` f̙` 999___` f3f3f3!>?" dd@0? " }d@    @ `  n?" dd@   @@``PJ     ` p>> " (  dB  <p?p  Z/gֳgֳ ?p` / T Click to edit Master title style! !:  T`/gֳgֳ ? @ / RClick to edit Master text styles Second Level Third Level Fourth Level Fifth Level!     S   `/gֳgֳ ?0P / R*     `@/gֳgֳ ?0P  / T*     `@K/gֳgֳ ?0P / T*  dB  <p?p  ` dB   <p?p <  c $? ? ff3  SigAda%  0 w(   dB  <p?P     Zt/gֳgֳ ?pp@ / T Click to edit Master title style! !  TD/gֳgֳ ?0   / W#Click to edit Master subtitle style$ $   `,/gֳgֳ ?` } R*     `/gֳgֳ ?`  / T*     `/gֳgֳ ?` / T*  dB  <p?PdB  <p?Pp 6  S ? ? ff3~ 0 >6 (    T`f/jJjJ ?P!  / T*     T./jJjJ ? ! / V*   p  01 ?)  /:  T/gֳgֳ ? @ / RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  Z,jJjJ ?{P  / T*     ZrjJjJ ?{   V*   <  c $? ? ̙33 |@ (    T\{jJjJ ?P!  / T*     TsjJjJ ? ! / V*     Z jJjJ ?{P   T*     Z$jJjJ ?{   V*   <  c $? ? ̙33P P(     Tgֳgֳ ? p /    TĞgֳgֳ ? '0 U  / H  0޽h ? ff3P  p(     TRgֳgֳ ?p`      TIgֳgֳ ? @  H  0޽h ? ff3P  $(  $ $  Tgֳgֳ ?p`  /  $  Tbgֳgֳ ? @ / H $ 0޽h ? ff3|  ,$((  ( (  Tgֳgֳ ?p`    (  T0gֳgֳ ? @<$ 0  H ( 0޽h ? ff3P  ,(  , ,  Tgֳgֳ ?p`  /  ,  T,gֳgֳ ? @ / H , 0޽h ? ff3P  0(  0 0  TLK}gֳgֳ ?p`  }  0  TM}gֳgֳ ? @ } H 0 0޽h ? ff3P  4(  4 4  T`gֳgֳ ?p`  }  4  T8N}gֳgֳ ? @ } H 4 0޽h ? ff3P  8(  8 8  Tgֳgֳ ?p`    8  TXgֳgֳ ? @  H 8 0޽h ? ff3P  <(  < <  Th}gֳgֳ ?p`  }  <  Txk}gֳgֳ ? @ } H < 0޽h ? ff3P  @(  @ @  T~}gֳgֳ ?p`  }  @  Tk}gֳgֳ ? @ } H @ 0޽h ? ff3P  D(  D D  T$n}gֳgֳ ?p`  }  D  T}gֳgֳ ? @ } H D 0޽h ? ff3P   H(  H H  T`}gֳgֳ ?p`  }  H  Tě}gֳgֳ ? @ } H H 0޽h ? ff3P  0L(  L L  T}gֳgֳ ?p`  }  L  Tp}gֳgֳ ? @ } H L 0޽h ? ff32 0 `(     H1 ?)   /   T@Kgֳgֳ ? @  /  H  0޽hdS ? ̙33 0  ?(      H1 ?)   w   Txgֳgֳ ? @   The second point should be read to mean that for things which are supported, virtually all capabilities are supported, not that all capabilities are supported that Windows supports. H  0޽hdS ? ̙33rT@[28 .+=?MBD)GIK1NPR9UWYA\{^ratOh+'0 px  , 8 D P\dNo Slide TitleRandy Brukardt7F:\ms-office\Templates\Presentation Designs\SigAda.ppte Clyde Robye20dMicrosoft PowerPoint 7.0ese@Ҋ @aZ~V@-@`&5[^GPg  1& &&#TNPP02OMiS & TNPP &&TNPP    f----&-54$-- $38.8. 3 --&&5\-- $88XX--&&E5L-- $K8F8FK--&--h--qw@  LSwUSw0- @Times New RomanLSwUSw0- .+2 rDirections for the Next . $ $.. .!2 rGeneration of Ada2$  $ .$ .--1\-- @Times New RomanLSwUSw0- .12 Randall Brukardt, ARG Editor   " #  . .2 AXE Consultants"# !  .--"System 0-&TNPP &՜.+,0   <On-screen ShowaU  Times New Roman Courier NewSigAda*Directions for the Next Generation of Ada%Problem: Mutually Dependent PackagesAn (illegal) Ada 95 example!The ARG searches for solutions.Incomplete type stubs"Features of incomplete type stubsAdvantages of incomplete stubs"Disadvantages of incomplete stubs6Problem: Accidental overloading instead of overriding(Solution: Pragmas to declare overridingExample of pragma Overriding7Problem: No way to create or search directories in Ada"Solution: Package Ada.Directories  Fonts UsedDesign Template Slide Titles "_a  Clyde RobyClyde Roby  !"#$%&'()*+,-./02345678:;<=>?@BCDEFGHKRoot EntrydO)Current UserASummaryInformation(1PowerPoint Document(aDocumentSummaryInformation89