Order For Similar Custom Papers & Assignment Help Services

Fill the order form details - writing instructions guides, and get your paper done.

Posted:

CPT121 / COSC2135 Programming 1 (OUA)
Assessment

Page 1 of 12
School of Science

CPT121 / COSC2135 Programming 1 (OUA)
Assessment 3: Assignment 3
Assessment type: Individual assignment; no group work. Word limit: N/A
Due date: Sunday ending Week 12 (i.e. 23rd August 2020)
23:59 (AEST)
As this is a major assignment in which you demonstrate
your understanding, a university standard late penalty of
10% per each working day applies for up to 5 working days
late, unless special consideration has been granted.
Weighting: 25%
Overview
This assessment requires you to apply various concepts and techniques covered in weeks 1–12 of the course, to
assemble a programmatic solution for a problem based on a simulated real-world scenario.
An important part of your development as a programmer is the ability to identify and apply appropriate techniques
or programming structures when implementing the various aspects of a programmatic solution to a given problem,
so in addition to the basic functional requirements of this task, you will also be assessed on your ability to select
and utilise appropriate techniques and structures in your solution.
This assessment requires you to design and create a Java program to solve analysed stakeholder (user and
supervisor) requirements.
Page 2 of 12
Assessment ~ Hire our professional writers now and experience the best assignment help online with our custom paper writing service. We ensure your essays and assignments are expertly researched, written and delivered on time. ~ Grading criteria
This assessment will measure your ability to:
x Apply the specified coding and documentation style guide
x Apply basic features of Java and Object-Oriented techniques (covered in weeks 1-12 of the course material)
to solve the user and supervisor requirements, demonstrated by producing correct and well-formatted
output on provided test data
Course learning outcomes
This assessment is relevant to the following course learning outcomes:
x CLO 1: Solve simple algorithmic computing problems using basic control structures and Object-Oriented
Techniques
x CLO 2: Design and implement computer programs based on analysing and modelling requirements
x CLO 3: Identify and apply basic features of an Object-Oriented programming language through the use of
standard Java (Java SE) language constructs and APIs
x CLO 4: Identify and apply good programming style based on established standards, practices and coding
guidelines
x CLO 5: Devise and apply strategies to test the developed software
Page 3 of 12
Assessment details
‘Geraldton Transport’ (GT) is a (fictional) Western Australian company that transports packaged and
unpackaged cargo to regional towns from Geraldton to Albany. GT wishes to computerise their shipment
record keeping. The first phase is to develop a system for storing details of all cargo currently booked with
GT.
Notes from interviews with GT staff and instructions from your supervisor are given below. You should
analyse the interviews and instructions to determine the functional requirements for your program. There
are four stages in this assignment (A, B, C and D). Since each stage elaborates on the previous one, you only
need to submit one program – the one implementing the highest stage you were able to complete.
For each of the stages A, B, C and D, complete the steps below based on the Double Diamond process:
Discover
‘Go wide’ in the form of reading and thinking about the supplied stakeholder requirements. Find out what
the current situation is and understand user behaviours and business drivers.
Fill in the supplied ‘Discover and Define’ Word template with a list of different problems that could be
solved.
Define
From your understanding of the overall issues/requirements, narrow down to a single problem and turn that
into a problem statement. The problem statement defines what you will develop, and you may start some
initial coding to start working out if you can create a solution to the problem you defined.
Fill in the supplied ‘Discover and Define’ Word template with a statement of the single problem you will
solve.
Develop
Start coding to create an initial prototype and program logic to address the problem. You may create a few
different iterations to get to the best prototype. This is a phase for trying ideas out to see if they work.
Deliver
Pick the best prototype from the ‘Develop’ phase and create the final version of the code, refining and
making it work. The aim is to create a minimum viable product (MVP) to address the problem you have
identified and defined. The final result of this process at stage C will become your final submission for
assessment 3.
How to use the Double Diamond is explained in the course webinar, please ask your instructor if you have
any questions.
The assessment is marked out of a total of 25 marks as given in the rubric criteria table at the end of this
document.
Coding style/documentation
Your program must follow the coding and documentation style guide given in the file StyleGuide.pdf,
available on the course Canvas under the Assignment 3 link.
Page 4 of 12
Stage A – Modelling and implementing a Cargo Management System
An edited summary of client interviews and additional requirements from your supervisor is given below:
Gwen – GT Record Keeper
“There are several types of cargo that we handle at GT. For all cargo items I record the customer’s
name, the pickup address and the delivery address. I also give each cargo item a unique ID number,
with the first item id being 100, and incrementing for each subsequent item.”
Rowan – GT Operations Manager
“At this stage I’d like my record keeper to be able to add up to four cargo items to the system. I’d
want the system to be easily configurable to change that later to a larger number of cargo items.I’d
also like her to be able to choose to display all information stored about them – with the option to
display a particular one whose identifier she specifies, or to display all of them, and the ability to
remove a specified cargo item. All displays should be neatly formatted.”
Your supervisor advises that your program should be able to use object-oriented techniques to model a
cargo item in the class Cargo. The Cargo class shouldn’t collect data from the user. Another class, StageA,
should be a console-driven application that houses the main method, obtains relevant cargo details from the
user as required, creates and manages objects of class Cargo in order to implement the functionality from
the above interviews. The Cargo class should contain a static variable indicating the value of the next id and
use this when determining the id for a new cargo item object. The Cargo class constructor should accept user
data from StageA and set the cargo attributes accordingly.
Your program MUST utilise a single array (called cargo) for storing information about all the cargo, in class
StageA. Collections such as ArrayLists must not be used. Not meeting this requirement will result in a mark of
0.
Your StageA class must include a method called addNewCargo() which returns a Boolean value. The method
attempts to create and add a cargo item to the StageA cargo array, returning true if successful and false
otherwise.
The StageA class should provide a user-friendly menu to allow the user to perform tasks relevant to the
needs expressed in interviews, above, calling methods in cargo objects as relevant. Your program should be
able to handle conditions such as searching for cargo that doesn’t exist and attempting to add more than
four items of cargo.
You are expected to adhere to all relevant object-oriented programming guidelines, including:
x Visibility of instance variables and methods set appropriately
x Instance variable initialisations carried out in a constructor only
x No unnecessary accessors (setters) or mutators (getters) – only provide methods which will be
needed when implementing the application class in this stage
x Methods should work with instance variables when performing their required task
x Parameter lists in methods should be appropriate to the task the method is performing – only accept
parameters where a method requires one or more values from the caller to perform its assigned task
that it does not already have access to
x Methods which need to communicate a value or result back to the caller should do by returning the
value in question, not by storing it in an instance variable or printing it to the screen
Page 5 of 12
x Data classes should not prompt for input from the user
Stage B – Extending the Cargo class
In this stage you rename class StageA as StageB, modify and extend the Cargo class and modify the StageB
class to meet the requirements presented in the interviews and supervisor requirements below.
Gwen – GT Record Keeper
“I always have to record more information about cargo than what I told you before, because we
have several types of cargo.
Some cargo, such as woodchips, is ‘bulk cargo’. For this type, I need to record how many cubic
meters there is (a double) and the number of kilometers it is going to be transported. The cost of a
load of bulk cargo is the number of km * the number of cubic meters * the ‘bulk rate’ which is $0.30.
For ‘packaged cargo’ I need to record the height, width and depth in cm of the package, and the
weight (in grams). Calculating the transport cost of this cargo is a little tricky. We have a package
cargo rate of $0.15. I calculate the ‘cubic weight’, which is the package height * width * depth
converted to meters * 250, and the weight as kilograms. If the cubic weight is greater than the
weight in kilograms, then the cost is the cubic weight * the package rate. Otherwise the cost is the
weight (in kg) * the package rate.
A specialised type of packaged cargo is ‘refrigerated packaged cargo’. For this type of cargo I need
to record if it is frozen or not (if not, then it is just chilled). The other data recorded is the same as
for packaged cargo. The cost calculation for this type of cargo is also similar as for packaged cargo,
except instead of using the package cargo rate, I use the refrigerated package cargo rate, which is
$0.25.”
Rowan – GT Operations Manager
“At this stage, when adding cargo I’d like the system to ask which type of cargo is being added
(bulk, packaged or refrigerated-packaged) and collect relevant details from the user. It shouldn’t be
possible to add ‘plain’ cargo as in stage A. The display of cargo should produce neatly formatted
output of each type of cargo’s data. I’d also like the cost of the cargo to be displayed to the screen
once it has been added.”
Important: Your supervisor advises that Cargo should be extended to implement classes BulkCargo,
PackagedCargo and RefrigeratedPackagedCargo to implement ‘bulk cargo’, ‘packaged cargo’ and
‘refrigerated packaged cargo’ items respectively as described in the above interviews.
Your Stage B program must utilise the same single array (cargo) used in Stage A for storing information about
all the cargo items, in the class StageB. Your supervisor also specifies that the Cargo class should be modified
so only subclasses of Cargo can be instantiated. In addition, the Cargo class must be modified so as to force
all subclasses to implement a method calculateCost() which returns a double (the cost) relevant for the
subclass, calculated as per Gwen’s interview above. This method should be used to determine the cost
displayed to the screen once a cargo item has been added. You are expected to adhere to all relevant objectoriented programming guidelines as described in stage A.
Page 6 of 12
Stage C – Adding Exception Handling
In this stage you rename class StageB as StageC, modify and extend the Cargo class and modify the StageC
class to meet the requirements presented in the interview and supervisor requirements below.
Rowan – GT Operations Manager
“Sometimes GT can’t accept cargo. Because our bulk cargo trucks are quite small, we can’t accept
bulk cargo of more than 6 cubic meters. None of the dimensions of a cargo package are allowed to
exceed 180 cm, and they can’t exceed 60 kg. Refrigerated packaged cargo have the same
restrictions as package cargo. The system should reject attempts to add cargo which violates these
restrictions, and for each type of error, produce a suitable error message.”
Your supervisor specifies that code for checking the above restrictions should be included in cargo item class
constructors, and the constructor should return an IllegalArgumentException with a suitable message if a
restriction is violated. This exception should not be caught in the StageC addNewCargo() method, but instead
be allowed to propagate back up to a calling method.
Your supervisor has also asked you extend class Exception in order to define your own exception type, to be
called CargoException. This CargoException class should be in its own separate source code (.java) file. The
StageC addNewCargo() method should be rewritten to be ‘void’ and to generate and throw a CargoException
containing a suitable error message if an attempt is made to add a new cargo item to an already full cargo
array. Note that any CargoException that is thrown should be allowed to propagate back up to the calling
method, i.e. exceptions should not be caught locally within the addNewCargo() method.
Stage D – Adding Object Persistence
In this stage you rename class StageC as StageD, modify and modify the Cargo and StageD classes to meet
the requirements presented in the interview and supervisor requirements below.
Rowan – GT Operations Manager
“I’d like the system to save all information before exiting, and then restore that information again
when it is next run.”
Your supervisor instructs you to design an approach to writing out to file information for all cargo currently
stored in the StageD cargo array in such a way that they can be reconstructed in full and then implement
functionality to:
x extract details for all cargo currently in the system and write the information out to a text file (in a
format which will allow the same set of objects to be restored in full later) when the user chooses to
exit the program, and
x read the information back in from the text file and use it to restore the existing set of objects in full
and store them back in the cargo array when the program starts up.
Page 7 of 12
The design should take advantage of inheritance. Your text file location should be relative to your project
workspace – it should not be necessary to specify a full path and your solution will lose marks if it opens a file
with a path that exists on your local machine, rather than one relative to the project workspace. If there is no
data file then the program should proceed to run in an “empty” state (i.e. display program menu and allow
the user to start using the program).
You are not permitted to use automatic object serialization in your implementation.
Referencing guidelines
What: This is an individual assignment, and all submitted code must be your own. If you have used
examples of code from sources other than the contents directly under the course Canvas Modules link, or
the recommended textbook (e.g. an example from the web or other resource) as the basis for your own
code then you should acknowledge the source(s) and give references using the IEEE referencing style.
Where: Add a block code comment near the work to be referenced and include the reference in the IEEE style.
How: To generate a valid IEEE style reference, please use the citethisforme tool if unfamiliar with this style.
Submission format
Submit your Java course code file (or Eclipse project) on the course Canvas under the
Assignments/Assignment3 link as a file upload.
Marks are awarded for meeting requirements as closely as possible. Clarifications/updates may be made via
announcements/relevant discussion forums on the course Canvas.
Academic integrity and plagiarism
Academic integrity is about honest presentation of your academic work. It means acknowledging the work of
others while developing your own insights, knowledge and ideas.
You should take extreme care that you have:
x Acknowledged words, data, diagrams, models, frameworks and/or ideas of others you have quoted
(i.e. directly copied), summarised, paraphrased, discussed or mentioned in your assessment through
the appropriate referencing methods
x Provided a reference list of the publication details so your reader can locate the source if necessary.
This includes material taken from Internet sites
If you do not acknowledge the sources of your material, you may be accused of plagiarism because you have
passed off the work and ideas of another person without appropriate referencing, as if they were your own.
RMIT University treats plagiarism as a very serious offence constituting misconduct.
Plagiarism covers a variety of inappropriate behaviours, including:
x Failure to properly document a source
x Copyright material from the internet or databases
Page 8 of 12
x Collusion between students
For further information on our policies and procedures, please refer to the University website.
Assessment declaration
When you submit work electronically, you agree to the assessment declaration.
Page 9 of 12
Criteria Ratings Pts
Code style/documentation All three Style Guide
identified
of improvement were
implemented, no areas
guidelines were
All three Style
Guide guidelines
guideline
noted with one
minor issues
implemented,
were
All three Style
Guide guidelines
guidelines
noted with two
minor issues
implemented,
were
All three Style
Guide guidelines
guideline
noted with one
significant issues
implemented,
were
guideline
more than one
were noted with
major issues
implemented, or
guidelines were
Style Guide
Fewer than three The Style Guide
not followed
guidelines were
Cargo class modelling
2.0 pts 1.5 pts 1.0 pts 0.5 pts 0.1 pts 0.0 pts 2.0
A Cargo class was
class.
requirements of this
met stage D
and constructor that
attributes, methods
implemented with
A Cargo class was
this class.
requirements of
met stage C
constructor that
methods and
attributes,
implemented with
A Cargo class was
this class.
requirements of
met stage B
constructor that
methods and
attributes,
implemented with
A Cargo class was
this class.
requirements of
met all stage A
constructor that
methods and
attributes,
implemented with
A Cargo class was
A requirements.
implement stage
inadequate to
constructor were
methods or
attributes or
attempted but
Cargo class was
not implemented
2.0 pts 1.5 pts 1.0 pts 0.5 pts 0.1 pts 0.0 pts 2.0
functionality
StageA/B/C/D class StageD met all
D.
requirements for stage
StageC/D met all
stage C.
requirements for
StageB/C/D met
for stage B.
all requirements
stage A.
requirements for
met all
StageA/B/C/D
for stage A.
all requirements
met some, but not
StageA/B/C/D
implemented
Functionality not
Cargo subclasses
7.0 pts 5.5 pts 4.5 pts 3.0 pts 2.0 pts 0.0 pts 7.0
Cargo subclasses
BulkCargo,
PackagedCargo and
Cargo subclasses
BulkCargo,
PackagedCargo
Cargo subclasses
BulkCargo,
PackagedCargo
Cargo subclasses
BulkCargo,
PackagedCargo
Cargo
At least two of the
subclasses
BulkCargo,
implemented
Functionality not
Page 10 of 12
argo
RefrigeratedPackagedC
implemented to
requirements.
meet stage D
requirements.
meet stage C
implemented to
gedCargo
RefrigeratedPacka
and
requirements.
meet stage B
implemented to
gedCargo
RefrigeratedPacka
and
requirements.
meet stage A
implemented to
gedCargo
RefrigeratedPacka
and PackagedCargo or
observed.
omissions
errors or
significant class
subclass or
either a missing
attempted, with
agedCargo
RefrigeratedPack
Handling
IllegalArgumentException
CargoException and
5.0 pts 4.0 pts 3.0 pts 2.0 pts 1.0 pts 0.0 pts 5.0
CargoException
defined as per Stage C
addNewCargo
requirements. Method
reStageC/D requirements, factored as per Stage C class catches
CargoException
processes
and correctly
as per
ion
IllegalArgumentExcept
generate and throw
subclasses correctly
Constructors of Cargo
stage C requirements.
and StageC/D
stage C requirements.
processes it as per
correctly catches and
CargoException
Stage
defined as per
C
factored as
return type readdNewCargo
Method
requirements.
void,
CargoException
throw
generate and
refactored to
method
addNewCargo
as
CargoException
processing
catching and/or
issues noted with
required. Minor
or
ception
IllegalArgumentEx
throwing
generating and
correctly
subclasses
of Cargo
with constructors
as per
CargoException
Stage
defined as per
C
of
with constructors
Minor issue noted
requirements.
Cargo
ception
IllegalArgumentEx
throwing
generating and
correctly
subclasses
or method
void
re-factored as
return type not
addNewCargo
, or minor
CargoException
throwing
generating or
method
addNewCargo
issues noted with
as
CargoException
propagation of
issues with
required, or minor
or
IllegalArgumentEx
CargoException
Stage
defined as per
C
Cargo
constructors of
noted with
Significant issue
requirements.
subclasses
ception
IllegalArgumentEx
throwing
generating and
correctly
or method
void
re-factored as
return type not
addNewCargo
, or significant
CargoException
throwing
generating or
method
addNewCargo
issues noted with
as
of
with propagation
significant issues
required, or
CargoException
or
functional.
code is not
issues noted or
type. Significant
CargoException
define
an attempt to
Some evidence of
implemented
Functionality not
Page 11 of 12
requirements.
stage C ception back up to
the caller. ception
IllegalArgumentEx
back up to
the caller.
Object Persistence
4.0 pts 3.5 pts 3.0 pts 2.0 pts 1.0 pts 0.0 pts 4.0
issues noted.
implemented, no
correctly
Stage D functionality
workspace.
to the project
location relative
specifying a file
doesn’t exist, not
if the data file
in an ‘empty’ state
initially running
persistence, not
design for object
inheritance in the
advantage of
noted: not taking
following issues
one of the
implemented but
correctly
functionality
Stage D
workspace.
to the project
location relative
specifying a file
doesn’t exist, not
if the data file
in an ‘empty’ state
initially running
persistence, not
design for object
inheritance in the
advantage of
noted: not taking
following issues
two of the
implemented but
correctly
functionality
Stage D
workspace.
to the project
location relative
specifying a file
exist, not
data file doesn’t
‘empty’ state if the
running in an
not initially
object persistence,
the design for
of inheritance in
taking advantage
issues noted: not
all of the following
implemented but
correctly
functionality
Stage D
functionality.
stage D
file to implement
writing/reading
correctly
workspace, not
project
relative to the
file location
not specifying a
file doesn’t exist,
state if the data
in an ‘empty’
initially running
persistence, not
object
the design for
of inheritance in
taking advantage
issues noted: not
the following
persistence. All of
add object
Some attempt to
implemented
Functionality not
Object-oriented technique
3.0 pts 2.5 pts 2.0 pts 1.5 pts 0.5 pts 0.0 pts 3.0
stage
guidelines specified in
All object-oriented
A were adhered
to. A
specified in stage
guidelines,
Object-oriented
, were generally
noted.
single minor issue
adhered to with a
A
specified in stage
guidelines,
Object-oriented
, were generally
noted.
two minor issues
adhered to with
A
specified in stage
guidelines,
Object-oriented
, were generally
issue noted.
one significant
adhered to with
A
specified in stage
guidelines,
Object-oriented
, were
noted.
significant issues
multiple
attempted, with
implemented.
not
techniques were
Object-oriented
Page 12 of 12
2.0 pts 1.5 pts 1.0 pts 0.5 pts 0.1 pts 0.0 pts 2.0
Total: 25
pts

Order | Check Discount

Paper Writing Help For You!

Special Offer! Get 20-25% Off On your Order!

Why choose us

You Want Quality and That’s What We Deliver

Professional Writers

We assemble our team by selectively choosing highly skilled writers, each boasting specialized knowledge in specific subject areas and a robust background in academic writing

Discounted Prices

Our service is committed to delivering the finest writers at the most competitive rates, ensuring that affordability is balanced with uncompromising quality. Our pricing strategy is designed to be both fair and reasonable, standing out favorably against other writing services in the market.

AI & Plagiarism-Free

Rest assured, you'll never receive a product tainted by plagiarism or AI-generated content. Each paper is research-written by human writers, followed by a rigorous scanning process of the final draft before it's delivered to you, ensuring the content is entirely original and maintaining our unwavering commitment to providing plagiarism-free work.

How it works

When you decide to place an order with Nurscola, here is what happens:

Complete the Order Form

You will complete our order form, filling in all of the fields and giving us as much detail as possible.

Assignment of Writer

We analyze your order and match it with a writer who has the unique qualifications to complete it, and he begins from scratch.

Order in Production and Delivered

You and your writer communicate directly during the process, and, once you receive the final draft, you either approve it or ask for revisions.

Giving us Feedback (and other options)

We want to know how your experience went. You can read other clients’ testimonials too. And among many options, you can choose a favorite writer.