code in java please:) Part I Various public transporation can be described as follows: A PublicTransportation…

code in java please:)
Part I Various public transporation can be described as follows: A PublicTransportation class with the following: ticket price (double type) and mumber of stops (int type). A CityBus is a PublicTransportation that in addition has the following: an route number (long type), an begin operation year (int type), a line name (String type), and driver(smame (String type) -A Tram is a CityBus that in addition has the following: maximum speed (int type), which indicates the maximum speed that this Citybus could reach. A Metro is a CityBus that in addition it has the following: number of vehicules (int type) and the name of the city (String type), such as Montreal, Toronto, etc. – A Ferry is a PublicTransportation that in addition has the following: build year (int type) and Ship name (String type) -An AirCraft is a PublicTransportation that in addition has the following: class type (enumeration type that can be: Helicopter, Airline, Glider or Balloon), and maintenance type (enumeration type that can be: Weekly, Monthly, or Yearly) Part I 1. Draw a UML representation for the above mentioned classes hierarchy. Your representation must also be accurate in terms of UML representation of the different entities and the relation between them. You must use a software to draw your UML diagrams (no hand-writing/drawing is allowed). 2. Write the implementation of the above mentioned classes using inheritance and according to the specifications and requirements given below: You must have 4 different Java packages for the classes. The first package wi include the PublicTransportation class. The second package will include the CityBus, Tram and Metro classes. The third package will include the Ferry class and the last package will include the AirCraft class For each of the classes, you must have at least three constructors, a default constructor, a parametrized constructor (which will accept enough parameters to initialize ALL the attributes of the created object from this class) and a copy constructor. For instance the parametrized constructor of the Tram class must accept 7 parameters to initialize the price, the number of stops, the route number, the begin operation year, the line name, the driver(s)name, and maximum speed An object creation using the default constructor must trigger the default constructor of its ancestor classes, while creation using parametrized constructors must trigger the parametrized constructors of the ancestors . For each of the classes, you must include at least the following methods: accessors, mutators, toString) and equals0 methods (notice that you are always overriding the last two methods) The toString0 method must display clear description and information of the object (i.e “This Tram has 23 stops, and costs 17S. It’s maximun speed is 70km/h…..”) The equals0 method must first check if the passed object (to compare to) is null and if it is of a different type than the calling object. The method would clearly return false if any of these conditions is true; otherwise the comparison of the attributes are conducted to see if the two objects are actually equal. You need to add a comment indicating how effective these null verifications inside the method will be in relation to protecting your program from crashing! For all classes, with the exception of the CityBus class, you must to use the appropriate access o not use most restrictive rights unless they make sense!). For the CityBus class for example, you are required to rights, which allows most ease of use/access without compromising securit use protected access rights When accessing attributes from a base class, you must take full advantage of the permitted rights For instance, if you can directly access an attribute by name from a base class, then you must do . so instead of using a public method from that base class to access the attribute 3. Write a driver program ( that contains the main0 method) that would utilize all of your classes The driver class can be in a separate package or in any of the already existing four packages. In the main) method you must Create various objects from the 6 classes, and display all their information using the toString) method. * Test the equality of some to the created objects using the equals(0 method Create an array of 15 PublicTransportation objects and fill that array with various objects . from the 6 classes (each class must have at least one entry in that array) Trace(search) that array to find the object that is le xpensive (has lowest price) and the one that is most expensive. Display all information of these two objects along with their location (index) in the arra y. Part II For the requirements of this part, you need to modify your implementation from Part I as follows 1. The classes from Part I, must now have the most restrictive (secure/protective) access rights to their attributes. Adjust your implementation from Part I accordingly, and comment on the decision about using restricted access (i.e. what are the tradeoffs) 2. In the driver program of this part, you need to add to the one from Part I, another static method (added it above the mainOmethod), called copyCityBuss. The method will take as imput an array of PublicTransportation (an array of any size) and returns an array of PublicTransportation. That is to say, the method needs to create an array of the same length as the passed paramter one, copy all CityBuss from the passed array to a new array then return it. Your copy of the objects must use the copy constructors of the different listed classes. (Please read point # 4 below carefuly!) 3. In the driver program, create an array of 12 objects (must have at least one from each of the classes), then call the copyCityBuss) method to create a copy of the that array 4. Display the contents of both arrays, then add some comments indicating whether or not the coping is correct. If not: you need to explain why it has not been sucessful or as vou might expected. Additioanllv, if the copving is not correct, do NOT try to correct it. You rather need to comment explicitlv on the reaons of such misbehavior JavaDoc Documentation: Documentation for your program must be written in JavaDoc In addition, the following information must appear at the top of each file Name (s) and ID (s) (include full names and IDs) COMP249 Assignment # Due Date (include the assignment number) (include the due date for this assignment) General Guidelines When Writing Programs Include the following comments at the top of each class you are writing // Assignment (include number) / Part: (include Part Number) // Written by: (include your name (s) and student ID (s)) Use appropriate comments when needed Display clear prompts for the user whenever you are expecting the user to enter data from the keyboard All outputs should be displayed with clear messages and in an easy to read format End your program with a closing message so that the user knows that the program has terminated. . . * *