I would like to keep this one short. I build a HouseA that has two rooms, say BedRoom and StudyRoom, both deriving from a base class called Room.
BedRoom and StudyRoom have a same parent called House. Also, any room in a house can access any other rooms only through the parent. If BedRoom has to access any attribute of StudyRoom, it has to go only via House (i.e. parent) and vice-versa.
HouseA ISA House
HouseA HAS BedRoom and StudyRoom.
BedRoom ISA Room
StudyRoom ISA Room
Now the Problem: Let's say, I build another home (say HouseB), which is a exactly the same as the above, but with one change. I don't want two separate rooms (i.e. BedRoom and StudyRoom), but instead a single room (MasterRoom) which has both these facilities. 
For the sake of code reusability, I could think of the following design options:
Option-1:
HouseB ISA House
HouseB HAS MasterRoom
MasterRoom ISA Room
Here I lose the ability to reuse the attributes of BedRoom and StudyRoom that I created for HouseA. Note that most of the attributes of BedRoom and StudyRoom need to be reimplemented in MasterRoom anyway, thereby resulting in code duplication.
Option-2:
HouseB ISA House
HouseB HAS MasterRoom
MasterRoom ISA Room
MasterRoom HAS LogicalBedroom
MasterRoom HAS LogicalStudyRoom
LogicalBedroom ISA BedRoom
LogicalStudyRoom ISA StudyRoom
This way, I use composition so that I could reuse most of my code (I have several thousand lines of code that I could reuse), but the problem is that BedRoom is a concrete class and logicalBedRoom may find certain attributes not suitable and may be forced to override  methods so that they do nothing.  For example, Bedroom->noOfSides() = 4 and logicalBedRoom->noOfSides() = ??. Is this a good use of inheritance?
My actual design is for a complex chip that combines the functionality of two individual chips (I used House (motherboard) and Room (chip) analogy). I code in Object Oriented Perl and I would really appreciate any alternate design suggestions.
Thanks
 
     
    