Data and File Structures Lab M.Tech. 1st Year, 1st Semester, 2014 ISI Kolkata Assignment 4: Object oriented programming with Java Deadline: Friday, September 5, 2014 Consider the scenario of a simple social network where the following operations take place. 1) A member can simply join the social network. In other words, a member can be added to the network. At the time of adding, (s)he has no friends. All members have names, but the members are identified by their email addresses, as same names can exist many times. 2) A member can add another member as friend. For simplicity, assume there is no need for the other member to accept any request, one adding another automatically makes them friends. 3) There is a way to get the list of friends of a member. 4) A member can see who are the common friends between him/her and another member. 5) For every member, there would be a list of friend suggestions. The list is simply the friends of friends of the member M who have at least two common friends with M, and is not currently a friend of M. According to your way of thinking, design your classes and methods in Java so that all of the above functionalities are present and an external program (say, if someone else writes a program) can use the functionalities from your classes. Write a test program to exhibit how each of these functionalities can be called using your classes. Use dummy (or real, if you wish) names and email address for members in your test program. However, we will test your classes with data of our choice. For this assignment, it is enough to keep the information in memory as long as a session is alive. Nothing needs to be persisted or stored on the disk. Once the program starts, it starts with a blank social network. The program can add members and perform all of the above operations, but once the program ends, there is no need to remember who were the members added and who were made friends. Marks: Designing the classes: 10 Functionalities: 10 + 10 + 10 + 10 + 20 Test program: 10 Submission procedure (corrected; note that you should copy to ~pdslab/assign4, not ~/pdslab/assign4) As usual, there would be a submission directory ~pdslab/assign4/ in the server. Write your java classes under a package which is same as your roll number (example cs1435) and copy that whole package (directory) in the ~pdslab/assign4/ directory. For example, if your package is cs1435, and you are in the directory where that package is in your account, then: $ ls cs1435 other_dir another_dir $ cp -r cs1435 ~pdslab/assign4/ The above command would copy the whole cs1435 directory to the submission directory.