<<<<<<< HEAD # PhoneBook Lab: ======= * # PhoneBook Lab >>>>>>> d733dda8f1c8fa4008665b34e3b9ea662b261d6d Write the classes needed to implement a very simple PhoneBook. * Fork and clone this repository to complete your lab. Submit with a Pull Request. ## Unit Tests * You are expected to write unit tests for your code. * You must have a Test class for every class you write. * Be sure to write the tests before implementing the functionality being tested. * Tests must be thorough and address all possible paths through each method. ## Submission * Your completed lab must be submitted via git pull request from your own fork. * Labs are not complete unless they include UML diagrams of all implemented classes, as well as unit tests for all features. ## Instructions: ### Building a basic `PhoneBook` class <<<<<<< HEAD ### Building a basic `PhoneBook` class ======= >>>>>>> d733dda8f1c8fa4008665b34e3b9ea662b261d6d ![PhoneBookDesign](./PhoneBookUML.png) In this diagram, C stands for Class, f stands for field, and m stands for method. So, it can give you a specification for the class and the things it needs to do. * Create a `PhoneBook` class that holds names and phone numbers. * You can use an [associative data type](https://en.wikipedia.org/wiki/Associative_array) (one which stores items as keys paired with values). * **Hint:** You should use a sorted map from the java standard library. * Your PhoneBook class should have the following method * hasEntry(String name) * given a name, return true if there is an entry with that name, false otherwise * `add(String name, String phoneNumber)` * adds an entry to the composite associate data type * `lookup(String name)` * returns a phone number for the respective input `name` * `remove(String name)` * removes an entry to the composite associate data type * `reverseLookup(String phoneNumber)` * returns a name for the respective input `phoneNumber` <<<<<<< HEAD * `listNamesAndNumbers()` * return a human-readable list of all entries (names and phone numbers) in alphabetical order. * Format should be `[name] [phone number]` ======= * `toString()` * return a human-readable list of all entries (names and phone numbers) in alphabetical order. >>>>>>> d733dda8f1c8fa4008665b34e3b9ea662b261d6d * Sample Script ```java PhoneBook phoneBook = new PhoneBook(); phoneBook.add("Zebra", "111-222-333"); phoneBook.add("Dog", "222-444-4444"); <<<<<<< HEAD phoneBook.listNamesAndNumbers(); ======= String entries = phoneBook.toString(); System.out.println(entries); >>>>>>> d733dda8f1c8fa4008665b34e3b9ea662b261d6d ``` * Sample Output ``` Dog 222-444-4444 Zebra 111-222-333 ``` ### Implementing Many-PhoneNumbers-To-One-Person Relationship * [Some people have more than one](https://en.wikipedia.org/wiki/One-to-many_(data_model)) phone number. * Refactor your `PhoneBook` class to map names to lists of phone numbers. * You should modify your `add()` and `remove()` methods to handle adding or removing individual numbers * Create a `removeRecord` method for removing an entire entry from your PhoneBook.