Я нахожу, что люди часто путают классы / актеров внутри системы с людьми / актерами вне системы: они скажут, что «Мы не можем доверять классу ученика, чтобы он держал денежный баланс студента, посколькудоверяйте (человеческим) студентам этим; они могут лгать!Помните: вы контролируете код, который вы вводите в класс ученика, и что он делает.Фактические студенты не программируют экземпляры, которые представляют их.То же самое для класса «Профессор».
Итак, в общем, вы навязываете безопасность и разрешения на основе процесса, который вы разрабатываете.IE: Как вы определяете и используете методы ваших классов.
Ваша система должна знать, записывается ли ученик в класс напрямую или же его зачисляет профессор класса.Как правило, это подразумевает, что система должна знать, является ли человек, вошедший в систему в данный момент, студентом или профессором.Возможно, имеет смысл предоставлять профессорам разные экраны, которые вызывают разные методы.
В рабочем коде я, вероятно, использовал бы локальное хранилище потоков для отслеживания разрешений текущего пользователя.Но это, вероятно, немного для студенческого задания.
Честно говоря, я не понимаю, как могло бы помочь введение интерфейсов Java.Тщательное размышление об используемых вами интерфейсах (методах) и о том, когда вы их используете, вероятно, поможет.