Использование объектов
{Цикл опроса клавиатуры} repeat case ReadKey of {Читаем код нажатой клавиши} #27: Stop: = True; {Нажата Esc} #9:begin {Нажата Tab} inc(ActiveObj); if ActiveObj>3 then ActiveObj: = 3 end; #0: case ReadKey of #71:MoveActiveObj(-D,-D); {Влево и вверх} #72:MoveActiveObj(0,-D); {Вверх} #73:MoveActiveObj(D,-D); {Вправо и вверх} #75:MoveActiveObj(-D, 0); {Влево} #77:MoveActiveObj(D, 0); {Вправо} #79:MoveActiveObj(-D, D); {Влево и вниз} #80:MoveActiveObj(0, D); {Вниз} #81:MoveActiveObj(D, D); {Вправо и вниз} end end; ShowAll; Until Stop end; {TGraphApp. Run} {-----------} Destructor TGraphApp. Done; {Закрывает графический режим} begin CloseGraph end; {TGraphApp. Done} Procedure TGraphApp. ShowAll; {Показывает все графические объекты} var k: Integer; begin for k: = 1 to NPoints do Points [k]. Show; Line. Show; Rect. Show; Circ.Show end; {-----------} Procedure TGraphApp.MoveActiveObj; {Перемещает активный графический объект} begin case ActiveObj of 1: Rect.MoveTo(dX,dY); 2: Circ.MoveTo(dX,dY); 3: Line.MoveTo(dX,dY) end end; end.
В реализации объекта TGraphApp используется деструктор Done. Следует иметь в виду, что в отличие от конструктора, осуществляющего настройку ТВМ, деструктор не связан с какими-то специфичными действиями: для компилятора слова destructor и procedure – синонимы. Введение в ООП деструкторов носит, в основном, стилистическую направленность – просто процедуру, разрушающую экземпляр объекта, принято называть деструктором. В реальной практике ООП с деструкторами обычно связывают процедуры, которые не только прекращают работу с объектом, но и освобождают выделенную для него динамическую память. И хотя в нашем примере деструктор Done не освобождает кучу, я решил использовать общепринятую стилистику и заодно обсудить с Вами последнее еще не рассмотренное зарезервированное слово технологии ООП.
В заключении следует сказать, что формалистика ООП в рамках реализации этой технологии в Турбо Паскале предельно проста и лаконична. Согласитесь, что введение лишь шести зарезервированных слов, из которых действительно необходимыми являются три (object, constructor и virtual), весьма небольшая плата за мощный инструмент создания современного программного обеспечения.