Хотелось бы ещё узнать:

Вот такой, трах тибидох, будет работать?

В одном модуле создаем каркас.

TYPE Человек = POINTER TO ABSTRACT RECORD; END;
Мужчина = POINTER TO ABSTRACT RECORD(Человек); END;
Женщина = POINTER TO ABSTRACT RECORD(Человек); END;

PROCEDURE (h: Человек) Оболванить* (ch: Человек), NEW, ABSTRACT;

Ну соответственно человека, мужчину и женщину реализовываем в другом модуле. А потом в нем же:

VAR Чел: Человек;
Муж: Мужчина;
Жен: Женщина;

BEGIN
(* Куралесим с Муж и Жен. А потом *)
Чел.Оболванить(Муж);
Чел.Оболванить(Жен);
END;

Извиняйте, если ерунду спрашиваю.