Абстрактные классы особенно важны для ОО-анализа и высокоуровневого проектирования, по-
скольку они делают возможным задать основные аспекты системы, оставляя детали до более поздней
стадии.
Управление памятью (memory management) и сборка мусора (garbage collection)
Может показаться, что этот критерий метода и языка должен принадлежать к следующей категории
- реализации и среде. На самом деле он принадлежит к обеим категориям. Важнейшие требования
предъявляются к языку, остальное - это вопрос хорошей инженерии.
ОО-системы даже в большей степени, чем традиционные системы, за исключением, быть может,
Lisp, имеют тенденцию создания большого числа объектов, иногда со сложными взаимозависимо-
стями. Политика, возлагающая на разработчиков ответственность за управление памятью, вредит
и эффективности процесса разработки, и безопасности полученной системы. Трудно утилизировать
память, занятую более не нужными объектами, усложняются программы, все это требует времени
разработчиков, увеличивается риск некорректной обработки областей памяти. В хорошей ОО-среде
управление памятью будет автоматическим, под контролем сборщика мусора (garbage collector) -
компонента системы периода выполнения (runtime system).
Автоматическая сборка мусора - это проблема языка, так же как и реализации. Если язык явно
не спроектирован для автоматического управления памятью, то зачастую реализация становится
невозможной. Это справедливо для языков, где, например, указатель на объект определенного типа
может быть преобразован (используя кастинг - cast) в указатель другого типа или даже в целое
число, - такие средства делают невозможным создание надежного сборщика мусора.
Язык должен давать возможность надежного автоматического управления памятью, а реализа-
ция должна обеспечить наличие автоматического менеджера, управляющего памятью, в функцию
которого входит сборка мусора.