COVID-19 cases have been increased in the last period. As a result, Ministry of Health has
decided to make a simple application to keep track of all citizens and their vaccination status.
In this TMA, it is required to help the Ministry implement the required application.
After a quick meeting with the employee in charge, you got the following information:
It is required to store the whole data in one collection
Each citizen has a unique civil ID number (national number), name and other attributes (add
at least 2 attributes from your choice). In addition, it is required to store information about
all doses taken by the citizen.
For each dose, the following information should be stored: manufacturer, when and where
has been taken, and information about the health professional who gave it.
Each health professional has a unique civil ID number, name, and it is required to store
his/her experience (in years).
Moreover, you have been informed that the following operations happen frequently:
Adding a new citizen to the list
Adding a new dose to a specified citizen
Retrieving number of fully vaccinated persons (who toke at least 2 doses)
Saving all the data into a text file after sorting them according to Civil ID.
Q1: There are common attributes and methods between citizen and health professional. What
is the best choice for designing and writing the codes of these two classes? Explain your
Q2: Draw a simple class diagram showing only relationships between the classes.
After analysing the given requirements, implement the required application:
with Object Oriented Programming style
following the rules of good programming style (e.g. adding comments, etc.)
using only the material covered in M251 (and its prerequisites)
For each class, it is required to implement constructors, setters, getters, toString() method,
and any other necessary method
If the user tries to do an operation that could violate the state of objects, the operation
should be ignored and the application should display an error message (e.g. adding a citizen
twice to the list, etc.)
Checking equality of any 2 objects should be done via the equals() method
There is a class that will do the main job of the application as follows:
o It has one collection to store the whole data (all citizens)
o It has static methods, one for each operation happens frequently
o When you add a citizen to the list, a message should be displayed to the user to explain
the status of the operation (i.e. if it was successful or not)
After implementing the required classes, design and implement a testing class to test them as
Add at least 7 citizens to the collection that stores the whole data
Add 1, 2 and 3 doses to different citizens and keep some citizens unvaccinated
Try to violate the state of the objects and show that your code prevents all violations.
Show that the other operations that happen frequently are working fine
At the end, the whole data should be saved into a text file and this file should be saved
automatically inside the folder contains your Java project