abstract java uml