Вы смешиваете разные понятия ООП.lanket писал(а): Сделать Так
Rooms->LivingRoom->PirSensor
Таким образом не надо каждый сенсор одинакого типа копировать методы и св-ва такого же датчика. Создавать копии одного и того же кода да еще и во множественном числе противоречет ООП.
В моем понимании цепочка Rooms->LivingRoom->PirSensor символизирует дерево классов. Т.е. LivingRoom наследует все свойства и методы Rooms, и, возможно, расширяет их своими. Это вполне логичное наследование.
Но затем PirSensor наследует свойства и методы LivingRoom, т.е. датчик является разновидностью комнаты - но это ведь не так.
Что Вы на самом деле предлагаете - это ввести типизацию свойств. Сейчас все свойства имеют тип Строка. В них можно хранить что угодно. Для реализации же Вашей задумки, нужно ввести как минимум:
1. Тип, умеющий хранить ссылки на экземпляры объектов определенного класса
2. Тип, умеющий хранить списки значений определенного типа (массив)
3. Механизмы контроля целосности этих структур
4. Редакторы всего этого добра.
У меня, например, до сих пор ни разу не возникло ситуации, которую я не смог бы уложить в парадигму ООП при текущем функционале.
Единственное, чего мне не хватает "из коробки", чтобы избежать дублирования кода при написании методов наследованных объектов - это возможности вызова методов родительских классов из любого места моего метода.