Java For Artists: The Art, Philosophy, And Science Of Object-Oriented Programming