Ah, but who do you think created the chaos?
The function of good software is to make the complex appear to be simple.
All of life is iterative. It goes back to the point I made earlier, which is you can't a priori know enough to even ask the right questions.
C++ also supports the notion of friends: cooperative classes that are permitted to see each other's private parts.
The task of the software development team is to engineer the illusion of simplicity.
Hierarchy is a kind of order of abstractions.