Sometimes such classes would be named as Base- or Core- to indicate that they are to be extended in other implementations, so you’d have CoreBoard
and CorePiece
.
Depending on the language you’re using, you could also use namespaces to distinguish between the two sets of classes. You could have a namespace for the Engine, and other namespaces for specific implementations. For example: jaylawl.games.engine.Board
for the Engine’s Board, and jaylawl.games.chess.Board
for your Chess board.
Personally, I prefer the second option, but that may be language-specific.