As for your last question, are WhitePiece and BlackPiece really fundamentally different from eachother? Or is it just some of the behaviour that needs to change?
Also, dont worry about object count, as long as you're not making any mistakes resulting in constant copy-ing of objects, you can use many thousands of objects.
Well, I thought about that, and I think the reason I came up with to make them two seperate classes, is that it might make it easier in the long run to program which moves a piece like say, the bishop is allowed to move. So Maybe I could say in psuedocode, if bishop is on black space, he can only move along other black pieces. But it seems like an enum would be better than making an entire class and object based on color. I was just thinking of the "is a" relationship, and a "has a" relationship. So the board HAS spaces, which ARE colors. So Board class is by himself. Space class is by itself with it's color that it IS rather than has. But I may be stretching that too far..
But holy crap rongshuxiacy I actually have that book right here and I've never looked into it!! I bought this book like.. 6 years ago and never thought to open it now because I was sure that all of the info and methods would be outdated and depricated. But I guess the main reason I didn't look is because I wanted to try and solve these issues without actually seeing a coded solution. I mean what use am I as a programmer if I can't even do something like this... I guess I would feel like I was cheating.
And as for the UML, I will have a look at that. I remember doing a UML back in my freshman classes. It certainly might make it easier for me to convey my code logic. And thanks for saying I'm at least on the right path