Objects and Systems: Principled Design with Implementations in C++ and Java (Undergraduate Texts in Computer Science)