Objects, Abstraction, Data Structures and Design Using C++ by Elliot B. Koffman & Paul A.T. Wolfgang