When we describe computer systems, especially software, we are always abstracting away various details in order to understand what our systems do. This is not a mere pedagogical trick, it is how we design and understand systems. In reality computers consist of wires and semiconductors, etc. Unless we abstract these details away we will never get to compilers, let alone computer games. Indeed we abstract over and over again; abstractions are nested. It is just a little like relativity which describes the same physical situation from different reference frames. It can be complex to understand that these two descriptions are of the same situation. Abstraction arises in other sciences but seldom with such intensity as in computers.
We say that we switch abstraction levels when we reveal details previously hidden. This may result in seemingly contradictory sentences on the same page. I try to keep them from being in the same paragraph but I often fail.
Another metaphor is when we look at something thru a microscope. As we adjust the focus we see different useful things which only with insight be unified into one whole thing depicted by the microscope.
Object based systems, especially capability systems, are especially deep into abstraction. Experts talk among themselves leaving the abstraction level implicit in their discourse. Newcomers are lost, with good reason. Making levels explicit can be even more distracting.
Here are some situations where we contradict ourselves on different pages:
“Facet” refers to both:
There are other flexibilities in describing these systems. I should make a list.