Прежде всего, сделайте ваши переменные Private
, а не Protected
. Для производных классов нет необходимости напрямую обращаться к ним.
Во-вторых, хотя в .NET это делается очень часто, рассмотрите вопрос о том, что у вас не так много сеттеров. Большинство свойств не должны меняться при жизни объекта. Исключение составляют DTO - объекты, которые представляют объекты базы данных.
Также позаботьтесь только о том, чтобы смоделировать те аспекты объекта, который вы фактически используете. В реальном программном обеспечении большинство атрибутов данного объекта не имеет значения (например, цвет волос клиентов в программном обеспечении для управления библиотекой), и только некоторые из них действительно необходимы программному обеспечению. Только модели тех.
В-третьих, если вашему классу Dog
требуется доступ к определенным функциям из класса Boy
, проще всего сделать эту конкретную функцию Public
.
Наконец, не передавайте владельца собаки через ByRef
конструктору. Это работает, но не имеет абсолютно никакого смысла. Используйте ByVal
везде, кроме случаев, когда это действительно необходимо (и я утверждаю, что никогда не требуется, есть лучшие решения).