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;