"Конкретный вопрос: Собака должна знать что её может гладить дресеровщик , или она должна спрашивать у человека может ли он её гладить? "
Это вопрос к вам, а не к коду.
В класс собаки добавьте массив "хозяева", "дрессировщики" и добавляйте туда хозяев и дрессировщиков.
Сделайте у собаки метод "погладить", потому что именно собака может быть поглаженно, и проверяйте кто пытается вызвать этот метод - входит ли он в списки "хозяев".
В метод можно добавить исключение, что если гладит "бабушка", она не обязана находится в списке.