CORC373 Advanced Object Oriented Programming
Programme Title: Computing Technologies Module Code & Title: CORC373 Advanced Object Oriented Programming University of Plymouth
Module Assessed Learning Outcomes that can be achieved with this assignment
- Critically analyse the use of object oriented principles in the design of software applications
- Use Object Oriented principles to produce Unified Modelling Language specifications.
- Construct, edit and test Object Oriented applications to a given specification.
- Critically appraise the use of pair/mob programming
CORC373 Advanced OO Programming
For this coursework you are required to develop a simulation of a lift system
You are required to demonstrate your knowledge of object-oriented analysis, design and implementation by studying the description provided below. Your report should cover the four items listed after the description.
Lift Simulation System: Program Specification:
A building has four floors serviced by a single lift. There are request buttons at each floor for ‘Up’ and ‘Down’ (except the top floor, which only has a ‘Down’ button and the ground floor, which only has an ‘Up’ button).
The lift also has request buttons inside for each floor. The user will press the button for the destination floor and it will light up and remain lit until the lift stops at that floor.
The lift has a set of doors, which can be opened and closed and has a motor which can make the lift go up, go down or stop at the next floor.
When there are no requests the lift will wait with the doors closed at the last floor it reached.
The lift is sent a signal each time it reaches a floor and another signal when it leaves a floor, so that it can detect where it is and control its motor.
Each floor shows a display of which direction the lift is moving (Up, Down or Waiting) and where the lift is (at a particular floor, or between one floor and the next).
A control system must manage the requests for the lift, the opening and closing of the doors, and the movement of the lift to service requests. For safety, it must ensure that the doors have been closed before the motor is set to go up or down and that the doors cannot be opened until the motor is stopped.
Based on the above description, create a use case diagram(s) for the system including the scenarios for each use case. Break down the use cases into user stories that describe the features you implement in each iteration of your development of the system. The user stories must include conditions of satisfaction so you know when the story is complete.
State any assumptions you made during the analysis stage.
Based on your analysis produce:
- CRC cards (showing the responsibilities and collaborators) for the classes/objects that you use to model the lift system (use the ‘nouns and verbs’ approach).
- a classNamediagram and an object diagram to show the relationships between classes and objects. The object diagram should illustrate the objects used to represent the lift system. Each object in the diagram should include the attributes and methods that the object defines.
- Pseudocode for your main program only.
State any assumptions you made during the design stage.
Implement your chosen classes in either C++, C# or Java using appropriate comments to explain the purpose of each classNameand functionality of each method. The implementation should produce either a textual or graphical output, which simulates the operation of the lift system. You should submit an electronic copy of the source code and the compiled classNamefiles. Make sure you include comments and correct indentations.
Your project should build on and target either Windows or Linux using one of the following build systems:
C++: make, CMake, Visual Studio/MSBuild
Java: Maven, Ant, Gradle
If you want to use a different build tool consult with your tutor.
Devise a test plan to test the operation of the lift system. This should cover the operation of the lift system under various operational situations (e.g. lift called to go down from top floor, lift called to go up/down from an intermediary floor, lift called to go up from ground floor etc.). Include the test plan together with screenshots, in your report along with the output from various test cases. Include any error conditions whether or not if they are detected (by your code) or undetected (genuine design errors).