thinking in java UML