ITP4905 Object Oriented Programming

175 阅读7分钟

Page 1 of 8
DEPARTMENT OF INFORMATION AND COMMUNICATIONS TECHNOLOGY (TSING YI)
HD in Data Science and Analytic
HD in Telecommunication and Networking
ITP4905 Object Oriented Programming
Assignment
Assignment Due Date and Time: 11 April 2024 (Thursday) 23:55 (through Moodle)
Fitness Centre System
A fitness centre in the local area has decided to modernise its management system for classes and
equipment. To simplify the process, the centre has opted to implement a new system using Java
with an object-oriented approach. The system will efficiently manage various types of fitness
classes and gym equipment, allowing the centre’s manager to easily manage on the system as
needed.
You are required to take the Java Object Oriented Approach to develop a prototype for a fitness
centre. This prototype provides a comprehensive system for managing a fitness centre. It will allow
operations such as adding, removing, and displaying various fitness classes and equipment.
Please note that the following classes are necessary for the proper functioning of this prototype:

  1. FitnessItem.java
  2. FitnessClass.java
  3. Equipment.java
  4. Manageable.java
  5. MaxNumberException.java
  6. FitnessCenterSystem.java
    When developing your 代 写ITP4905 Object Oriented Programming system prototype, you are required to handle all possible exceptions that
    could occur. To do this, you should use try-catch blocks and provide error messages that are easy
    for the user to understand.
    Page 2 of 8
    The class descriptions and sample program will be shown below.
    Class Descriptions
  7. FitnessItem
    FitnessItem is an abstract class that serves as a base for different types of fitness items in the
    system. It implements Serializable. This class has the following structure:
    Attributes
    itemName A string representing the name of the fitness item.
    usageTime A decimal number representing the average usage time in hours per day.
    Constructor Initializes a fitness item with its name and usage time.
    Abstract
    Method
    printDetails An abstract method to be implemented by subclasses in order to print the
    details of the fitness item.
    Other Methods
    Setter/Getter Standard getters and setters for the attributes.
    toString An overridden method that returns a string representation of the fitness item.
  8. FitnessClass
    The FitnessClass class is a subclass of FitnessItem. It represents a fitness class at the fitness center.
    Its structure is as follows:
    Attributes
    maxParticipants An integer variable hold the maximum number of participants in the fitness
    class
    Constructor Initializes the FitnessItem item with its name, usage time and max number
    of Participants.
    Methods
    getMaxParticipants Getter method for the maximum number of participants
    setMaxParticipants Setter method for the maximum number of participants
    printDetails Overridden method from FitnessItem that prints out the details of the
    FitnessClass in a formatted manner.
    Other Methods
    toString An overridden method that returns a string representation of the
    FitnessClass
  9. Equipment Class
    Page 3 of 8
    The Equipment class is a subclass of FitnessItem. It represents a type of gym equipment found in a
    fitness center. Its structure is as follows:
    Attributes
    equipmentType A string representing the type of equipment (e.g., "Cardio", "Strength" and
    etc).
    spaceRequired A double representing the amount of space required for the equipment in
    square meters.
    Constructor Initializes the equipment item with its name, usage time, equipment type,
    and space required.
    Methods
    getEquipmentType Getter for the equipment type.
    setEquipmentType Setter for the equipment type.
    getSpaceRequired Getter for the space required.
    setSpaceRequired Setter for the space required.
    printDetails Overridden method from FitnessItem that prints out the details of the
    equipment in a formatted manner.
    toString An overridden method that returns a string representation of the Equipment
  10. Manageable Interface
    The Manageable interface comprises a set of methods that allow the system to manage fitness
    items.
    Methods
    addNewItem Adds a new FitnessItem to the system.
    It accepts a FitnessItem object as an argument
    Throws MaxNumberException if the max number limited is exceeded
    removeItem It removes a fitness item from the management system
    It accepts the name of the item as a string argument
    findItem Finds and returns a FitnessItem by name.
    It Accepts the name of the item as a string argument
    It Returns the found FitnessItem object, or null if not found
  11. MaxNumberException
    The MaxNumberException is a subclass of Exception. It is a custom exception that is thrown when
    a maximum number limit is exceeded.
    Methods
    Constructor It accepts String errorMessage as the specified detail message.
  12. FitnessCenterSystem
    The FitnessCenterSystem class, which implements the Manageable interface, manages the
    operations of a fitness center. It handles user interactions and manages fitness items such as classes
    and equipment. The major components include:
    Page 4 of 8
    Attributes
    equipmentItems An array of FitnessItem objects to store different equipment.
    fitnessClasses An array of FitnessItem objects to store different fitness classes.
    MAX_EQUIPMENT A constant integer representing the maximum number of equipment
    items (set to 5).
    MAX_CLASSES A constant integer representing the maximum number of fitness classes
    (set to 5).
    equipmentCount An integer counter for the current number of equipment items.
    classCount An integer counter for the current number of fitness classes.
    scanner A Scanner object for reading user input.
    Constructors
    Default constructor initializes the fitnessItems list
    Constructor with a filename parameter to load fitness data from a file.
    (Only required in advanced stage )
    Methods
    startSystem Starts the fitness center system and displays the menu to the user.
    addFitnessItem Adds a new fitness item (class or equipment) based on user input.
    findFitnessItem finds a fitness item based on user input.
    displayFitnessItems, Display methods for FitnessItems
    displayEquipmentItems Display methods for EquipmentItems
    displayFitnessClass Display methods for FitnessClass
    loadFitnessData Loads fitness items data from a given file.
    findItem an override method from the Manageable interface
    to find an item.
    addNewItem an override method from the Manageable interface
    to add an item.
    removeItem an override method from the Manageable interface
    but no implementation is required
    Prototype of the System
    The system can store up to 5 equipment items and 5 fitness classes. The program should present an
    option menu for the user to select their desired action after execution.
    Welcome to the Fitness Center Management System
  13. Add a new fitness item
  14. Find a fitness item
  15. Display all items
  16. Display all Equipment items
  17. Display all fitness class
  18. Exit
  19. Adding New Fitness Class
    Choose to add a fitness class, enter name "Yoga Class", usage time 2 hours, and max participants

Page 5 of 8
Welcome to the Fitness Center Management System

  1. Add a new fitness item

  2. Find a fitness item

  3. Display all items

  4. Display all Equipment items

  5. Display all fitness class

  6. Exit
    Choose an option: 1
    Add Fitness Item:

  7. Fitness Class

  8. Equipment
    Choose type: 1
    Enter item name: Yoga Class
    Enter usage time (in hours): 2
    Enter max Participants: 20
    Item added: Yoga Class, 2.0 hours/day, max participants=20
    Show the menu again...

  9. Test Adding New Equipment
    Choose to add equipment, enter name "Treadmill", usage time 1 hour, equipment type "Cardio",
    and space required 10 sq.m.
    Welcome to the Fitness Center Management System

  10. Add a new fitness item

  11. Find a fitness item

  12. Display all items

  13. Display all Equipment items

  14. Display all fitness class

  15. Exit
    Choose an option: 1
    Add Fitness Item:

  16. Fitness Class

  17. Equipment
    Choose type: 2
    Enter item name: Treadmill
    Enter usage time (in hours): 1
    Enter equipment type: Cardio
    Enter space Required: 10
    Item added: Treadmill, 1.0 hours/day , equipmentType=Cardio, spaceRequired=10.0
    Show the menu again...

  18. Find a Fitness Item
    Choose to find a fitness item, enter the name "yoga".
    Welcome to the Fitness Center Management System

  19. Add a new fitness item

  20. Find a fitness item

  21. Display all items

  22. Display all Equipment items

  23. Display all fitness class

  24. Exit
    Choose an option: 2
    Enter the name of the item to find: Yoga
    Item found:
    FitnessClass Yoga 2.0 Max Participants: 30
    Page 6 of 8
    Show the menu again...

  25. Find an Equipment
    Choose to find a fitness item, enter the name "Treadmill".
    Welcome to the Fitness Center Management System

  26. Add a new fitness item

  27. Find a fitness item

  28. Display all items

  29. Display all Equipment items

  30. Display all fitness class

  31. Exit
    Choose an option: 2
    Enter the name of the item to find: Treadmill
    Item found:
    Equipment Treadmill 4.0 Type: Cardio, Space Required: 10.0 sq.m
    Show the menu again...

  32. Find a non-existent item
    Choose to find a fitness item, and enter the name "hello".
    Welcome to the Fitness Center Management System

  33. Add a new fitness item

  34. Find a fitness item

  35. Display all items

  36. Display all Equipment items

  37. Display all fitness class

  38. Exit
    Choose an option: 2
    Enter the name of the item to find: Hello
    Hello is not available.
    Show the menu again...

  39. Test Display All Fitness Items
    Precondition: Assume FIVE fitness class and FIVE equipment items are added.
    Input: Choose to display all fitness items.
    Welcome to the Fitness Center Management System

  40. Add a new fitness item

  41. Find a fitness item

  42. Display all items

  43. Display all Equipment items

  44. Display all fitness class

  45. Exit
    Choose an option: 3
    Fitness Center Items:
    Type Description Hour Additional Info
    Equipment Treadmill 4.0 Type: Cardio, Space Required: 10.0 sq.m
    Equipment Dumbbells 5.0 Type: Strength, Space Required: 2.0 sq.m
    Equipment Rowing Machine 3.0 Type: Cardio, Space Required: 8.0 sq.m
    Equipment Exercise Bike 3.5 Type: Cardio, Space Required: 6.0 sq.m
    Equipment Kettlebells 4.0 Type: Strength, Space Required: 3.0 sq.m
    FitnessClass Yoga 2.0 Max Participants: 30
    Page 7 of 8
    FitnessClass Spinning 1.5 Max Participants: 25
    FitnessClass Aerobics 2.0 Max Participants: 20
    FitnessClass Zumba 1.5 Max Participants: 25
    FitnessClass Pilates 2.0 Max Participants: 15
    Show the menu again...

  46. Test Maximum Capacity for Fitness Classes
    Input: Repeatedly add Fitness Classes items until the count reaches 5(the maximum).
    Welcome to the Fitness Center Management System

  47. Add a new fitness item

  48. Find a fitness item

  49. Display all items

  50. Display all Equipment items

  51. Display all fitness class

  52. Exit
    Choose an option: 1
    Add Fitness Item:

  53. Fitness Class

  54. Equipment
    Choose type: 1
    Enter item name: new class
    Enter usage time (in hours): 2
    Enter max Participants: 20
    Max number of Fitness Classes have been created
    Show the menu again...

  55. Test Maximum Capacity for Equipment
    Welcome to the Fitness Center Management System

  56. Add a new fitness item

  57. Find a fitness item

  58. Display all items

  59. Display all Equipment items

  60. Display all fitness class

  61. Exit
    Choose an option: 1
    Add Fitness Item:

  62. Fitness Class

  63. Equipment
    Choose type: 2
    Enter item name: new equipment
    Enter usage time (in hours): 2
    Enter equipment type: Cardio
    Enter space Required: 2
    Max number of Equipment have been created
    Show the menu again...

  64. Test Invalid Input
    Input: Choose to add any new item but enter non-numeric values for usage time or max
    participants.
    Expected Output: An error message indicating invalid input and prompting for correct data.
    Page 8 of 8
    Advanced Stage (Optional)
    As part of this bonus stage, you are optionally defining the loadFitnessData method. This method is
    designed to load fitness item data from a specific file. This method allows users to be accurately
    and efficiently loaded into your application.
    Instructions to Students

  65. This is an End of Module Assessment, and the weighting of this assignment is 20% of the Module
    Mark.

  66. This assignment should be done by each individual student. Plagiarism will be treated seriously.
    All assignments that have been found involved wholly or partly in plagiarism (no matter these
    assignments are from the original authors or from the plagiarists) will score Zero mark.

  67. You must use Java JDK8 or above to develop the programs.

  68. Your programs must follow the coding standard stated in Java coding standard published by
    Oracle and Sun Microsystems. Marks may be deducted if the coding standard is not followed.

  69. You are required to hand in
    • A 1 to 2 pages word document briefly explains how your program shows the concept of
    Object Oriented Programming (Abstraction, Encapsulation, Inheritance and Polymorphism).
    • Source code of all classes which should be well-commented.
    • The evidence of testing. Prepare a word document with a number of test cases showing
    different inputs for different situations that your program may encounter and how your
    program responses to show the capability of your program. For each test case, states the
    objective of the test case, input data and expected result. You should also include screen
    dumps for each test run as evidence.

  70. Submit all your works (in a zip file under the name of your student ID – e.g. 23xxxxxxx.zip ) to
    the Moodle website (moodle.vtc.edu.hk) by 23:55, 11 April 2024 (Thurday). Late
    submission may score ZERO mark.

  71. Mark Distribution
    l Documentation and Evidence of Testing (10%).
    l Exception Handling (10%)
    l Basic Stage (80%):
    n FitnessItem.java, FitnessClass.java Equipment.java,FitnessCenterSystem.java
    Manageable.java, MaxNumberException.java. These classes are to be
    implemented exactly as the listed requirements in this document.
    n The system prototype contains the main method. You may add methods other
    than main in your main class; and/or add other classes of your own to make
    WX:codinghelp