$24
This homework is designed for you
• to review OOP concepts and Java programming,
• to get used to reporting conventions that will be used in the course.
In this homework, you are not allowed to use any data structure other than simple arrays. Later, we may reuse the same scenario and ask you to implement the same system using some data structures introduced during this course.
SCENARIO:
You are asked to design and implement a city planning software that will be used for designing a small one street town. The software should meet the following requirements:
• The length of street can be set by the user.
• The street has two sides and both sides are designed.
• The street may contain three types of buildings (houses, offices, markets) and playgrounds. Please note, it is not necessary that all kinds of buildings are available on the street.
• The position, length (the length on the street, the depth of the buildings is not considered) and height of the buildings are set by the user. A building can be placed at a land on the street only if there is enough land for that building in terms of length.
• Besides the length and height properties of the building, there are some type-specific properties:
o The houses have the number of rooms, color, and owner, o The offices have job-type and owner,
o The markets have owner and opening/closing times properties.
• The software enables focusing on a building. Different types of information are presented to the user on focusing on a building:
o The house presents its owner, o The office presents its job types,
o The playground presents its length, o The market presents its closing time.
• There are two different modes for using the program: Editing mode and viewing mode.
• In editing mode, the user can:
o add/delete a building on a land in the street.
• In viewing mode, the user can:
o display the total remaining length of lands on the street. o display the list of buildings on the street.
o display the number and ratio of lenth of playgrounds in the street.
o calculate the total length of street occupied by the markets, houses or offices. o display the skyline silhouette of the street (Please see the figure below).
The street The skyline silhouette
0510152025303540455055 0510152025303540455055
RESTRICTIONS:
• Use only Arrays, any other data type is prohibited.
• Use only one main class to drive the others from that superclass.
• Don’t use any other third-party library.
GENERAL RULES:
• For any question firstly use the forum on the MS Teams page, and then the contact TA.
• You can submit an assignment one day late and will be evaluated over sixty percent (%60).
TECHNICAL RULES:
• You must write a driver function that demonstrates all possible actions in your homework. For example, if you are asked to implement an array list and perform an iterative search on the list then, you must at least provide the following in the driver function:
o Create an array list and add items to the list. Append items to the head, tail, and kth index of the list.
o Perform at least two different searches by using two items in the list and print the index of the items.
o Perform another search with an item that isn’t in the array list and inform the user that the item doesn’t exist in the array list.
o Delete an existing item from the list and repeat the searches.
o Try to delete an item that is not on the array list and throw an exception for this situation.
The driver function should run when the code file is executed.
• Implement clean code standards in your code;
o Classes, methods, and variables names must be meaningful and related to the
functionality.
o Your functions and classes must be simple, general, reusable, and focus on one topic. o Use standard java code name conventions.
REPORT RULES:
• Add all javadoc documentations for classes, methods, variables …etc. All explanations must be meaningful and understandable.
• You should submit your homework code, Javadoc, and report to MS Teams in a “studentid_hw1.tar.gz” file.
• Use the given homework format including selected parts from the table below:
Detailed system requirements
✔
The Project use case diagrams (extra points)
✔
Class diagrams
✔
Other diagrams
X
Problem solutions approach
✔
Test cases
✔
Running command and results
✔
GRADING :
-
No OOP design:
-100
-
No method overriding:
-95
-
No error handling:
-50
-
No inheritance:
-95
-
No polymorphism:
-95
-
No javadoc documentation:
-50
-
No report:
-90
-
Disobey restrictions:
-100
-
Cheating:
-200
• Your solution is evaluated over 100 as your performance.
CONTACT :
• Teaching Assistant M. Burak Koca, b.koca@gtu.edu.tr