uml diagram java abstract class