with ada.text_io; use ada.text_io; with ada.float_text_io; use ada.float_text_io; with geometry, geometry.circles, geometry.squares; use geometry, geometry.circles, geometry.squares; procedure ooclient is procedure put(s: shape'class) is begin put(s.x'img & s.y'img); -- where it is put(area(s)); -- dynamic dispatch: parameter is of classwide type end put; c: Circle := (1.0, 2.0, radius => 5.0); q: Square := (3.0, 4.0, edge => 10.0); begin put_line(c.area'img); put_line(q.area'img); put(c); new_line; put(q); new_line; end ooclient;