(defgeneric draw (port shape) (:documentation "Рисует shape в окне port"))
Это лишь объявление, что существует
обобщённая функция draw
с двумя обязательными параметрами.
Реализация же функции обеспечивается наполняющими её
методами.
Методы не принадлежат классам, а привязаны к функции, которая осуществляет
диспетчеризацию, какой метод будет фактически вызываться.
В Си++ требуется указать, является draw методом port или методом shape, и передавать второй объект в качестве первого аргумента. Такая жесткая привязка часто искусственна, приводит к сложностям расширения исходного кода.