CSSE 220—Object-Oriented Software Development
Software Development2代写 Allowed Resources for Part 2. Open book, open notes, and open computer. Limited network access. You may use the network
Final Exam – Part 2, February 19, 2018 Software Development2代写
Allowed Resources for Part 2. Open book, open notes, and open computer. Limited network access. You may use the network only to access your own files, the course Moodle and Piazza sites (but obviously don’t post on Piazza) and web pages, the textbook’s site, Oracle’s Java web- site, and Logan Library’s online books.
Instructions. You must disable Microsoft Lync, IM, email, and other such communication pro- grams before beginning part 2 of the exam. Any communication with anyone other than the in- structor or a TA during the exam may result in a failing grade for the course.
You must actually get these problems working on your computer.
Almost all of the credit for the problems will be for code that actually works. There are several different small methods to write, so you can get a lot of partial credit by getting some of them to work. If you get every part working, comments are not required. If you do not get a method to work, comments may help me to understand enough so I can give you (a small amount of ) partial credit. NOTE: CODE THAT DOES NOT COMPILE WILL NOT BE ELIGIBLE FOR PARTIAL CREDIT!
Begin part 2 by checking out the project named Final-201820 from your course SVN reposi- tory. (Ask for help immediately if you are unable to do this.)Software Development2代写
When you have finished a problem, and more frequently if you wish, submit your code by com- mitting it to your SVN repository. We will check commit logs, so you must be careful not commit anything after the end of the exam. For grading, we will ensure that the included JUnit tests have not been changed.
Part 2 is included in this document. Do not use non–approved websites like search engines (Google) or any website other than those listed above. Be sure to turn in these instructions, with your name written above, to your exam proctor. You should not exit the examination room with these instructions.
Problem Descriptions Software Development2代写
Part A: 3 Linked List (18 points) Implement the code for the 3 unimplemented methods in SinglyLinkedList.java – each problem is worth 6 points. Instructions are included in the com- ments of each method. Unit tests are included in SinglyLinkedListTest.java.
Part B: Recursion (6 points) Implement the code for the unimplemented method in Recursion- Problems.java. Instructions are included in the comments of the file and corresponding unit tests are included in RecursionProblemsTest.java.
Part C: HashMap (6 points) Implement the code for the unimplemented method in HashMap- Problem.java. Instructions are included in the comments of the file and corresponding unit tests are included in HashMapProblemTest.java.
A student’s initial approach to Part D.
Part D: Refactoring (15 points) Software Development2代写
In a game similar to the one you worked on for the term project, levels are divided into tiles:
- Dirt does nothinginteresting
- Diamondtiles yield diamonds when broken, which can be collected for
- Rocksfall when the dirt underneath them
During gameplay, the game randomly mutates tiles in interesting ways. Each tile knows how to mutate itself:
- Whena diamond tile is mutated, its diamond yield doubles when it is
- Dirtchanges colors when
- Rocksreverse their gravity, so when they “fall”, they rise up through any open space in- stead.Software Development2代写
You are given an excerpt from the student’s code. The student’s code is functional, but the stu-dent’s code is poorly designed. Your job is use inheritance and/or interfaces to remove as much code duplication as you can.
(Left) Starting code with a single dynamic box which changes color and position. (Right) Multiple dynamic boxes added which also change color and position.
Part E: Dynamic Boxes (20 points) Software Development2代写
In this problem we have given you code, including a DynamicBox class (position and color change over time), that draws a single DynamicBox in a random location on the screen. Add or modify code to do the following:
Stage 1 (5 Points)
At the moment there is a single button you press which will advance the state of the simu- lation. You should replace this button press mechanism with a Timer (javax.swing.Timer ) which updates based on the constant DELAY specified in DynamicBoxMain.java. (3 points)
Before or after making the Timer refactor above, you may notice that the box (DynamicBox)on the screen does not appear to be updating properly. As the code starts, the state of thebox is getting updated, but you will not see the updated position unless you drag the win- dow to re-size it. Think about what needs to happen to display the updated Component and modify or add to the code at an appropriate location so that it will display properly without requiring the window to be re-sized. (2 points)
Stage 2 (5 Points) Add buttons to adding boxes
Create the “Add box” button. Make it so that each time you click the “Add Box” button a new box will be created and added in a random location on the screen, while leaving all previously created boxes present. (This will require making changes in DynamicBox- Component.) (Adding buttons 1 point. “Add box” adds box when clicked 2 points. Boxes added and update and move/change color correctly 2 points.)Software Development2代写
Note: You can receive partial credit (3/5) for Stage 3 and 4 even if you do not get stage 2 working, however, it will be faster to do the entire problem if you complete stage 2 ftrst.
Stage 3 (5 Points) Toggle Box Movement Button
Create the “Toggle Box Movement” button. Make it so that each time you click the “ToggleBox Movement” button ALL of the boxes currently on the screen switch from moving tostopped, or from stopped to moving. While the movement may stop, the color should stillchange as normal. You should NOT change the boxes’ velocity to do this! You will need toadd to and modify some of the provided classes to do this. (Adding buttons 1 point. Togglefunctionality as specified 4 points. If stage 2 is incomplete but this stage works correctly 3/5 points)
Note: If this is done properly, after adding a few boxes and pressing “Toggle Box Movement” if you add more boxes the new boxes will be moving and the old boxes will still bestopped. If you press the “Toggle Box Movement” button again, the new boxes should stop and the old boxes should starting moving again.Software Development2代写
Stage 4 (5 Points) Pause ALL Button (Movement and Color)
Create the “Pause ALL” button. Make it so that the first time you click the “Pause ALL” but- ton the simulation freezes entirely (movement and color!), while preserving the state ofall boxes. Upon a second press, the simulation should continue EXACTLY as it was beforethe first press. The same alternating effects should occur as the button is pressed repeat-edly. You should not have to change the properties of any boxes to accomplish this! To dothis, you should make the Timer itself stop so that ticks will not advance at all. (Adding buttons 1 point. Pause/UnPause functionality as specified 4 points. If stage 2 is incom- plete but this stage works correctly 3/5 points)
Hint: The Timer class has a stop() and restart() method which can be used after it has been started.