Every program has an internal concept of what it’s doing. A good design makes sure the user’s mental model (how they think it works) aligns with the system model (how it actually works).
Affordances are visual or physical cues that suggest how something can be used. A button looks “clickable.” A slider looks “draggable.” Good design makes functionality obvious at first glance.