Programming in the Large CSSE2002

Overview
This assignment delivers experience working with an existing software project. You are given a minor extension to the SheeP spreadsheet program. The extension has added bugs and is quite poorly written. Fortunately, the extension includes a suite of JUnit tests.
iuww520iuww520iuww520iuww520iuww520iuww520iuww520iuww520
You will be evaluated on your ability to:
❼ find and fix errors in supplied code,
❼ extend the functionality of supplied code, and
❼ and meaningfully refactor supplied software to improve its code quality.
Task
Your prior program, SheeP , was a huge success. However, a few users felt it was a bit boring. You decide to make the product more interesting by introducing new mini- games into the spreadsheet software. The course staff have tried to add one mini-game, but have made a mess of it. Your task is to fix their bugs and finish the implementation according to the specification. You
must also refactor the code to improve its quality.
Plagiarism
As per assignment one.
Generative Artificial Intelligence
As per assignment one.
Interviews
As per assignment one.
Software Design
In contrast to assignment 1, you are not given specification at the method
level. Instead, you are given a high-level specification for each component and how the component must be integrated with the spreadsheet program. The rest of the implementation design is up to you. You should use the software design principles (such as coupling, cohesion, information hiding,
SOLID, etc.) that are taught in class to help your design.
The design of your software is apart of the assessment. Please be aware that:

  1. Discussing the design of your software in detail with your peers may constitute collusion.
    Please discuss general design principles (cohesion, coupling, etc) but do not discuss your specific approach to this assignment.
  2. Course staff will provide minimal assistance with design questions to avoid influencing your approach. You are encouraged to ask general software design questions.
    Bug Fixing
    Most tests fail initially and this may be overwhelming. Find the smallest failing
    test case --- do not begin with a complex test as there are multiple bugs that intersect. Develop theories about what may be wrong with the implementation, play testing the software may be helpful. You may find it helpful to construct some smaller test scenarios. There are 5 bugs, each
    can be fixed by modifying a single line in Tetros.java . You will need to have a clear understanding about what the bug is before attempting to fix it. You may find manually writing the test cases out (i.e. drawing the tetros board) helpful.
    Components
    This assignment has 4 components. Each component should be well styled such that it is readable and understandable and should be well designed such that it is extensible and maintainable.
    ❼ The first three components are implementation components, that is, you are provided a specification and required to develop an appropriate component that satisfies the specification.
    ❼ The last component is a refactoring component, you are provided a quite poorly designed implementation and must refactor the implementation to improve the design whilst preserving its functionality.
    Component #1: File Load & Saving
    You must implement two new features, one for saving a spreadsheet into a file and one feature for loading a spreadsheet from a file. The format of the file is not specified. You must design an appropriate file format that is capable of storing the state of a sheet.
  3. The loading and saving features must be compatible, i.e. saving a sheet to a file then loading that file should restore the sheet to its original state (even after closing the spreadsheet application or moving the file).
  4. You must not utilize Java Serialization.
  5. You must modify the current Sheet instance , rather than constructing a new instance (Hint: see Sheet.updateDimensions(int, int) ).
  6. You must first clear the sheet (See Sheet.clear() ), then each cell must be updated starting from the top and populating each row from left to right (row by row).
    The features.files.FileLoading and features.files.FileSaving classes must both implement the supplied Feature interface. Both classes must have a constructor that accepts a Sheet instance.
  7. Within the FileLoading.register(UI) method, a feature to load a spreadsheet from a file must be bound to the identifier "load-file" .
    See UI.addFeature .
  8. Within the FileSaving.register(UI) method, a feature to save a spreadsheet to a file must be bound to the identifier "save-file" .
    See UI.addFeature .
相关推荐
激流丶1 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue4 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
让学习成为一种生活方式21 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
晨曦_子画27 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
Heavydrink1 小时前
HTTP动词与状态码
java
ktkiko111 小时前
Java中的远程方法调用——RPC详解
java·开发语言·rpc
计算机-秋大田1 小时前
基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解
java·论文阅读·spring boot·后端·vue
神里大人1 小时前
idea、pycharm等软件的文件名红色怎么变绿色
java·pycharm·intellij-idea
小冉在学习2 小时前
day53 图论章节刷题Part05(并查集理论基础、寻找存在的路径)
java·算法·图论