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.