Interfaces and classes in A Practical Guide to Data Structures and Algorithms Using Java by Sally Goldman and Kenneth Goldman.