Write My Paper Button

A BlueJ project cwk1-students is provided. Amend this BlueJ project so that it implements a version of the FIRE system by completing tasks described below.   Your FIRE project should display the qualities associated with good program design:

7COM1015 Programming and Program Design Cwk1 : Fortunate Islands Resort Experience (FIRE)

7COM1015 Cwk1 : Fortunate Islands Resort Experience (FIRE)

 Background

The FIRE organisation manages a number of luxury resorts. Each resort consists of a group of small islands with a range of leisure facilities. Each island is connected by a ferry to one of more of the other islands of the resort. When customers arrive, they get a Pass (like a credit/debit pass) with a number of credits which they can use for making payments at the resort. We are concerned with using a Pass to pay for ferry journeys. FIRE also want to track people at their resorts and they want to use the Pass to do this. This project will be implemented at the Fortunate Islands Resort (then rolled out to other resorts).

System Requirements

FIRE will locate people (guests and staff) by tracking their Passes

A.The following basic functional requirements have been established for the proposed system:

  • Display details of the whole resort
  • List all passes on all islands of the resort and passes currently on a specified island
  • Find the current location of a pass
  • Authorise a ferry journey, if it meets the required conditions
  • Manage credits on a pass, including convert journey points to credits

B.The following data requirements have been established:

  • Pass – passes used by people at the resort for travelling

Information stored on a Pass includes: a Pass ID number, person’s name, a luxury rating, number of credits and journey points. The Pass constructor uses parameters to set pass id, name, rating and credits. Points are set to zero. The luxury rating (1 to 10) determines which islands the person is allowed to visit e.g. a Pass with a rating of 3 is allowed to visit to all islands rated 3 or below. 

When a pass is used to make a ferry journey a basic 3 credits is deducted as people enter the ferry and one journey point is added. For special types of passes, the charge and points may vary (more later).  People may top up their credits at any time. (Handling the actual payments is outside the scope of this project). 5 journey points can be converted into 1 credit

  • Island – a resort has a network of islands

Each island has an id number, a name, a rating and a capacity (the maximum number of visitors (Passes) that can be on the island at any one time). Each island should maintain a list of all Passes currently on that island. These lists should be updated whenever a Pass enters or leaves an island, It must be possible to say who is currently on an island and to find the island location of a Pass

  • Ferry journey– connects two islands of the resort

Each ferry journey has a journey code and connects a source island to a destination island. It represents a journey in one direction only. and there is a standard 3 credits for all journeys. To make a ferry journey, certain conditions must be met.  If these conditions are met, the system allows the person onto the ferry to travel to the destination island. It updates its records to show that a Pass has left the source island and has travelled to the destination island. It also updates the Pass’s credits and other information, as appropriate. 

A request by someone(Pass) to make a ferry journey will produce one of the following results: 

  • Refusal to enter the ferry, because :
  • the Pass’s luxury rating is lower than the rating of the destination island. 
  • the arrival of the Pass would exceed the maximum capacity of the destination island.
  • the Pass does not have enough credits for the ferry journey
  • the Pass is not listed in the source island for the ferry 
  • Successful entry, because none of the above conditions is true
  • Also, if either the Pass, or the ferry do not exist in the system, the journey will not be allowed 
  • Resort – implements the FIRE interface
    Each resort has a network of islands joined by ferries. A resort must always have a “Base” island. Its name MUST always be “Base” and it MUST have a rating of 0 and a large maximum capacity. All Pass registered at a resort are initially added to this “Base” island. 

Paired Programming  –  this assignment may be done Individually or optionally in Pairs 

  • You may do this assignment either individually, or in a pair. You may select your own partner. 
  • Information about you and your partner should be entered into the Teamwork class.  You must complete information required in the Teamwork class, even if you work on your own
  • For paired programming to be successful, members must be able to discuss and work together, for suitably long periods of time. You must, therefore, identify time slots in which you can both work together. During your session together, you should vary who actually types in the code and who is observing/advising to ensure an even distribution of work. Screen sharing is a useful tool.
  • Paired programming works best if the skill levels of the pair are roughly equivalent. If there is a wide disparity between skill levels, there is a high probability that the weaker of the pair will not learn anything, while the stronger will do all of the work. This will not prepare the weaker partner for future assessments. 
  • Partners do not have to attend the same practicals, as practical sessions should NOT be used to complete this assignment (but you may use them to get help).
  • Partners must EACH submit the same project file to Studynet by the deadline

The Assignment

A BlueJ project cwk1-students is provided. Amend this BlueJ project so that it implements a version of the FIRE system by completing tasks described below.  

  • Your FIRE project should display the qualities associated with good program design:
  • Your system should minimise code duplication and be modularised so that components have low coupling and high cohesion.
  • You should aim to make your code reusable and easy to maintain. 
  • Program code should be well documented, displaying agreed standards of internal documentation.
  • Lower level classes should not contain input/output statements
  • Marks shown for each task include marks for both functionality and design.
  • Your project must compile. Code which does not compile may be included as comments
  • You will only get marks if your submission amends the given project
  • You must attend the timed demo activity session. If you do not attend, you will get ZERO marks. 
  • Note:” In this assessment the student is expressly prohibited from using GenAI tools for the creation of content “.

Assignment Tasks

Marks awarded for tasks below total 120. Your mark will be then converted to a %

Task 1  – Implement and test the Pass class    15 marks

  • class Pass should have, at least:
  • the fields described above
  • a constructor to set all fields values, using either parameter values, or default values (see above)
  • accessors to return the Pass id, name, the luxury rating, number of credits, points 
  • methods to add/ deduct a specified number of credits
  • method to use a ferry (deduct 3 credits and add 1 journey point) 
  • method to convert journey points to credits (5 journey points = 1 credit)
  • a toString() method returning a String with all relevant information about the Pass

You may add further methods, if you consider them useful

  • class PassTester – which can be run to show that the Pass class works properly. It should:
  • create some suitable Pass objects 
  • and call their methods 
  • show that actual results are as expected

Order Custom Answers for 7COM1015 Cwk1 : Fortunate Islands Resort Experience (FIRE)

Request to Buy Answer

Task 2  – Implementing other lower level classes 15 marks

There is NO need to write tester classes for these classes, but do try Bench Testing to check they work.

  • class Island should have:
  • suitable fields as specified above. 
  • a constructor to create an island using suitable parameters
  • accessors to return its number, name, luxury rating and capacity
  • an ArrayList field to store Pass object references. (declared and created)
  • mutator enter() which has a Pass as a parameter and adds it to the ArrayList
  • mutator leave()which has a Pass as a parameter, finds its position in the ArrayList and then removes using this position.
  • an accessor which either says whether the island is full (reached capacity) (..or still has capacity)
  • method to return a String listing all the Pass currently on the island, 
  • methods to find and return details of one Pass in the island given its id
  • an accessor which returns a boolean saying whether a Pass is on the island (in the ArrayList)
  • a toString () method which includes island details and Passes on the island

This is a basic list of methods and you may need to add some more if required. You should NOT have mutators to change basic information such as : number, name, luxury rating 

  • class Ferry should include:
  • suitable fields as specified above.  The “from” island and “to” island should be Island objects
  • A constructor which required the ferry code and the source/destination island objects
  • a small range of accessors/mutators to process data held by the class 
  • method which returns a boolean saying if a Pass, given as a parameter, can travel on the ferry
  • a method to process a Pass travelling to the destination island;
  • if the Pass meets the conditions, remove it from the source island, add it to the destination island and update information on the Pass, and return a suitable message
  • if it does not meet one of the conditions, return an appropriate message and do NOT move it
    Note: do NOT attempt to check at this level whether a pass or ferry is part of the system
  • a method toString()which returns a String representation of an object of that class including , ferry details and list of Pass 
    Without these classes you will find it difficult to develop the remaining classes. You may add further fields/methods to these classes if you require them during further development 

VERY IMPORTANT NOTE: these lower level classes should NOT be using System.out.println()

Task 3  – Implementing the Resort class 20 marks

  • interface FIRE 
    This class specifies methods required to provide system functionality.  A fully documented version of the FIRE is available in cwk1-students and you have NOTHING FURTHER to do in this class.

You must NOT change the signatures of any methods in the FIRE interface – you will be penalised
(except if required during the demonstration activity). 

  • class Resort – a skeleton of this class is included in cwk1-students
  • is set up to implement the interface FIRE,. so do NOT change its header
  • we have prepared this class for you by copying the methods specified in the FIRE interface and providing code “stubs”  where you can write your code. 
  • declare and create three collections to store references to: all islands, all ferries & all passes
  • the collection of all islands should be an Arraylist where the positions of the island in the ArrayList are the same as its number i.e. Island 0 BASE should be in location 0 
  • the collections of passes & ferries should also be Arraylists, but there are no assumptions about the order of objects
  • have a constructor which:
  • takes the location of the resort as a parameter.
  • it should then call two private methods, defined at the end of the class
  • loadIslandsAndFerries – which creates all the islands in Appendix A below, and adds them to the collection of islands. These should be added in the order of their id numbers. Then it also creates all ferries (passing island objects as parameters to their constructors) and adds them to the collection of ferries. 
  • loadPasses – should create all passes and add them to the collection of passes
  • finally, the constructor should add all of the passes to the “Base” island
  • the class should provide implementation for methods specified in the interface  FIRE 
  • any additional methods which you may/should want to add to improve the design (but which are not specified in the interface) should be declared as private
  • travel() and canTravel() carry the majority of marks in this task. They should return an message appropriate for the outcome. This should include a message if either the pass or the ferry are NOT part of the resort.
  • [3 private methods to return objects (ferry, pass, island) may be useful, but not required]

 Task 4 – Implementing an application 10 marks

  • class ResortUI 
    Provides a command line user interface to meet the functional requirements specified above.
    It will compile (but not work well) even if you have not yet written the full implementation for Resort
  • some code has been provided, you must provide the code for the other menu options
  • you should use the  Scanner class to capture input from the user   
  • this class should only call methods specified in  FIRE 

Task 5 – System Testing    15 marks

You can test your code by running the ResortUI but you will eventually find this tedious.  So, we have provided a skeleton MyTester class which:

  • declares a variable of  Resort class created as the Fortunate Islands Resort.
  • already has a main() to make it runnable  (see ResortUI main()) -no need to do anything here
  • has  a doTest() method in which to write code to call methods on the FIRE variable in a way which tests your system and demonstrates it works according to specification. You should include appropriate output to the terminal window. You must also use comments to explain what is being tested.
  • Only MyTester, ResortUI and PassTester should use System.out.println

Marks for this task will be awarded for:

  • the appropriate choice of data, 
  • the sequencing of method calls 
  • appropriate outputs
  • explanations of tests. 

We are looking for evidence of a systematic approach to testing and will expect you to show that you have identified and tested for the main events likely to occur when the system is running. 

Task 6 – System Documentation    5 marks

  • a visually neat and readable UML-style class diagram of your system within the BlueJ project
  • program code should be well documented, displaying both agreed standards of internal documentation and good use of the facilities available in Javadoc. (FIRE & Resort are already well documented)
  • Tester class should be well documented (see above)

Task 7 – Inheritance    15 marks

You will only get marks for this task, if you complete an extra task in the Demonstration Test  (see below) to an acceptable standard
Provide the following subclasses which extend the Pass class. 
All should have a toString() method which overrides toString() in Pass to include subclass data

  • Visitor Pass:
  • is created with a specified luxury rating and a number of credits determined by parameter values
  • deducts 4 credits and 1 journey point whenever a ferry journey is made
  • also includes citizenship (country from which the person comes)
  • Business Pass
  • is created with a specified luxury rating, 30 credits and 5 vouchers 
  • deduct 2 credits and add 3 vouchers whenever a ferry journey is made (include also 1 journey point)
  • vouchers can also be converted into credits (4 vouchers = 1 credit)
  • Employee Pass 
  • is created with the highest luxury rating of 10 (Employees can visit all islands) and no credits
  • include an employee number, a job description 
  • deduct zero credits for a journey, but add 1 to the journey score whenever a ferry journey is made

Now add an object of each class (using your own data) to the Pass in the Resort method loadPass()and check the everything compiles and works for these objects

Task 8 – Demonstration Activity    25 marks

During your practical class after the assignment hand-in, you will be asked to demonstrate that you have a good working knowledge of the code that you submitted. 

You will be asked to 

  • access your original project stored on One Drive
  • In a timed session of 100 minutes, rename the project (as instructed in the Demo specification)
  • make the changes specified on a demo handout to the project 
  • then upload their zipped re-named amended project to the Cwk1 – Demo assignment slot.

The main purpose of the demonstration activity is to authenticate your code by showing that you know it well enough to use it and make these changes. If you do not undertake this demonstration, your assignment will get ZERO marks. 

At the demonstration, you may be asked to:

  • write a demo class to test the functionality of your system 
  • add a new specified class
  • amend Resort to create a resort with small changes to the Fortunate Resort
  • add a method to a class
  • add a specified class which used the Pass class

Marking & Feedback

Marks awarded on the feedback sheet total 120 and will then be converted to a %. 

The submitted assignment will be marked using a combination of automated testing and visual inspection of code which will form the basis for individual marks. So do NOT to change method signatures in FIRE or Resort classes

Marks for the demonstration will be for code which performs the specified tasks, not for producing correct output. To see the type of tasks which could be asked, see the mock demo posted for the original CREAM assignment

Your performance in the demonstration will put a limit on the marks you get for the coursework. In addition, a serious mismatch between your submitted work and your performance in the demonstration may result in proceedings for plagiarism/collusion.   The limits on coursework marks are as follows:

Demonstration Mark Maximum % Coursework Mark
mark < 4 15
4 <= mark <= 10 50
10 < mark <= 18 65
mark >18 100

Generic Grading Criteria

no merit

clear fail

marginal fail

satisfactory

good

very good

excellent

%Marks

0 – 19

20 – 39

40 – 49

50 – 59

60 – 69

70 – 79

80 – 100

MSc Grade

Fail

Pass

Commendation

Distinction

The %mark will be 22% of the marks for the module
Feedback will be provided on a personalised feedback form posted to Studynet.

Submission Requirements

1.  Submit to Studynet by Mon 8th Dec 2025 18.00

  • Ensure you have completed the Teamwork class with your details. Add also those of your partner 
  • Your project must compile even if you have not fully completed all the tasks. You will be penalised if you submit code that does not compile.   You may include code which does not compile, but only as comments enclose in comment markers. 
  • Zip your BlueJ project with Tasks 1 – 7
  • Submit this zipped file to Studynet. If working in a pair, each partner must submit independently
  • Ensure you have saved an unzipped copy of your submission in your One Drive-University of Herts

If you do not submit your code to Studynet, you will be unable to do the demonstration

2.  Attend the demonstration activity – on Tues 9th/Wed 10th Dec during practical sessions

  • At this session you will be asked to access your original submission on One Drive and perform the activities described on a “Demonstration” briefing sheet given to you at the session. 
  • When you have done this, you will also be asked to upload your completed project (with demo code) to a new Studynet Assignment 

// See below for Appendix – 

7COM1015 Programming and Program Design

Current Pass:

No. Name Rating Credits
1000 Lynn 5 10
1001 May 3 30
1002 Nils 10 0
1003 Olek 1 12
1004 Pan 3 3
1005 Quin 1 30
1006 Raj 4 5
1007 Sol 7 20
1008 Tel 6 30

WeCreativez WhatsApp Support
Our customer support team is here to answer your questions. Ask us anything!
👋 Hi, how can I help?