Что касается ООП, как я обычно это делаю.
Моделирую как конструктор.
Например:
Фундамент дома - фундамент дома это абстрактный класс, в нем создаются абстрактные методы и не, которые я буду использовать в своём доме.
Закладываю коммуникации, водопровод, канализацию и так далее, всеми этими вещами я буду пользоваться в потомках (потомки это будущий дом и комнаты дома).
Дом - как уже говорилось выше, коммуникации мы заложили. Строим дом. Дом будет в три этажа. Дом это один класс, он наследует методы фундамента, теперь в доме есть вода и канализация и прочие фундаментальные коммуникации.
Этаж 1 - наследует класс Дом на первом этаже уже есть вода (мы закладывали её в фундаменте).
Этаж 2 - наследует класс Дом
Этаж 3 - наследует класс Дом
Комната 1 этаж 1 - наследует Этаж 1 у меня в комнате есть вода и канализации я же закладывал ее в фундаментальном классе.
И всё в таком же духе!!!
Не забываем про
https://ru.wikipedia.org/wiki/Инкапсуляция_(програ...