with class diagram