1. Create a class diagram (I suggest using creately or draw.io) that describes the following set of objects and their interactions:
2. Create an implementation based on the class diagram below. Methods do not need to be complete, only skeletons.
3. Write a test harness (PhoneNumberTestHarness.java) and black box cases for the following method description:
/** * isValidPhoneNumber accepts a String value representing a phone number as input. * The input string must follow the following rules: * 1. Be composed of an Area Code (Optional), Prefix (Required) and Suffix (required) * 2. The Area Code must be 3 digits and be in the range [200, 999] * 3. The Prefix must be 3 digits and be in the range (200, 999] * 4. The Suffix must be 4 digits. * 5. The Area code may optionally be surrounded by parenthesis * 6. The Area Code, Prefix and Suffix must be spaced apart by either a single space or a dash (-) * 7. If the Area Code is surrounded by parenthesis, it must be followed by a space. NOT a dash. * @param String phoneNumber The phone number string to be tested * @return boolean Return value is true if and only if the input String passes all 7 rules. * In all other cases, the value returned should be false. */4. When you finish, write a method in PhoneNumber.java that passes all of your tests simultaneously.