Reference no: EM134007227
Professional Software Development
Design and implement Sea++ using the design patterns discussed. This project may benefit from concepts related to Software Engineering and Object Oriented Programming.
You will design, using UML diagrams, and implement, in C++, the described solution. The assessment requires combining several design patterns to create Sea++, a fishing and seafood management application. The application is command-line based and does not require a graphical user interface.
Background:
Fisheries are community-owned resources and regulations exist to protect fish stocks and aquatic habitats.
Develop Sea++, an application that helps anglers determine whether they can keep their catch or if it must be returned.
Sea++ interacts with the user to gather catch information and determine what action should be taken.
Reference materials:
NSW FishSmart app resources
NSW fishing rules and size limits
Regulations data may be hardcoded, stored in a text/csv/json file, or implemented using a small database. Concepts from Database Management DBMS may assist in handling regulation storage and retrieval.
Sea++ Functionality:
An Angler opens the app and enters data about a catch.
The App acts as a Facade that manages interaction between the Angler and the system.
The App collects data including:
type of SeaCreature
size
whether it is carrying eggs or not
etc.
After validation, the App passes the data to the SeaPlusPlusEngine, acting as a Mediator between the App and the Checkers.
Data is checked by the appropriate Checker.
The Checker communicates with the SeaPlusPlusEngine.
The SeaPlusPlusEngine informs the Angler whether the creature can be kept or should be thrown back.
Required Classes (minimum):
App (implements the Facade pattern)
SeaPlusPlusEngine (implements the Mediator pattern)
SeaCreature (implements an appropriate creational pattern)
VertebrateCreature
InvertebrateCreature
SeaChecker
VertebrateChecker
InvertebrateChecker
Part I: Create a UML diagram
Create a UML diagram describing the required classes and their interactions.
Any tool may be used, including hand-drawn and scanned diagrams, but they must be readable.
Part II: Implement in C++ code the design created in Part I
Write C++ code to implement the design.
Use good C++ practices.
Separate interfaces and implementations.
Each class should be in a separate file. You may also refer to C Programming and general Programming Assignment Project Solutions concepts while structuring the application.
Part III: Extend the design with at least TWO meaningful additions
Possible additions include:
Add a Bag that can contain multiple SeaCreatures of various types, and a BagChecker that validates it.
Add FreshwaterCreatures in addition to SeaCreatures.
Add a SeaPlusPlusInfoSupplier class and supporting subclasses to read information from text/csv/json files.
Add the ability to load/save Anglers and their associated Bags.
Other additions may be proposed with instructor approval.
Modify:
UML diagram (15 marks)
C++ code (15 marks)
according to the chosen extensions.
Part IV: Reflect upon and document your experience
Write a short document covering:
Experience with initial design and implementation
Experience extending the design
Whether design choices in Parts I and II made extension easier or harder
Difficult aspects of the project
Rewarding aspects of the project
Lessons learned from undertaking the project
Submission Requirements:
Submit a zip file containing:
Two UML diagrams (Part I and Part III)
Two zip files containing C++ files for:
complete version of Part II
complete version of Part III
One reflection document (Part IV)