The expectation is that one of the list implementations MUST use an underlying array and the other MUST use linked nodes. You can choose which you use for each list, but there MUST be one of each. Not...

The expectation is that one of the list implementations MUST use an underlying array and the other MUST use linked nodes. You can choose which you use for each list, but there MUST be one of each. Not utilizing an array-based list for one list implementation and linked nodes for the other will result in a 50 point deduction on Project 2 Part 2!


The SortedList class implements the ISortedList interface. The generic type should extend the Comparable interface. The SortedList class uses the Comparable.compareTo() method to determine the ordering of elements. You MUST maintain sorted order in the list at all times. You may NOT use any sorting methods that are part of the Java API. Using classes from the Java Collections Framework will result in a deduction on the project.


Please read the requirement very carefully before start working on the project. This project focus on the custom ArrayList and LinkedList.


Please write the code with Eclipse JDK 11 and writing the test case with the JUnit 4 test. The coverage test has to be greater than 80%.


4/2/2021 CSC 216 SE Materials https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part2 1/17 Home >  Projects >  CSC 216 Projects - Spring 2021 >  Project 2, Part 2: Wolf Tasks CSC216: Project 2CSC216: Project 2 Project 2, Part 2: Wolf TasksProject 2, Part 2: Wolf Tasks Project 2, Part 2: Wolf Tasks Part 1 of this assignment laid out the requirements for the WolfTasks application that you must create. Part 2 details the design that you must implement and test. For this part, you must create a complete Java program consisting at multiple source code files and JUnit test cases. You must electronically submit your files to NCSU GitHub by the due date. Process Points 1 Deadline: Thursday, April 8, 2021 at 11:45PM Process Points 2 Deadline: **Wednesday**, April 14, 2021 at 11:45PM Part 2 Due Date: Thursday, April 22, 2021 at 11:45PM Late Deadline: Saturday, April 24, 2021 at 11:45PM Project 2 Part 2 MUST be completed individually or with your assigned partner. Set Up Your Work Environment Before you think about any code, prepare your work environment to be compatible with the teaching staff grading criteria. The teaching staff relies on NCSU GitHub and Jenkins for grading your work. Follow these steps: 1. Create an Eclipse project named Project2: Right click in the package explorer, select New > Java Project. Name the project Project2. (The project naming is case sensitive. Be sure that the project name begins with a capital P and ends with a 2. There are no spaces in the project name.) 2. If you have not already done so, clone your remote NCSU GitHub repository corresponding to this project. Note that each major project will have its own repository. Project 2, Part 1: Wolf Tasks Note You are expected to complete the project individually OR with your assigned partner. All work must be strictly your own or for partners, you and your partner’s Top COVID-19 RESOURCES https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/ https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/ https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/ https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part2.html https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1.html https://www.ncsu.edu/ https://ncsu.edu/coronavirus/ 4/2/2021 CSC 216 SE Materials https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part2 2/17 Working with a Partner If you are working with a partner do the following to make sure that you both are working on the same project and to avoid collisions. 1. Identify who will be partner A and who will be partner B. 2. Partner A should create the Eclipse project as described above. Then Partner A will clone the team repo and share Project 2 to the local copy of the cloned repo. Then Partner A should commit/push the shared project to NCSU’s GitHub. Verify that the project is there by navigating to the repo on the GitHub website. The project should be listed as Project2 and should contain the src/ folder, a .classpath, and .project files (at a minimum). 3. Partner B should clone the repo AFTER Partner A has pushed the project. Then Partner B will import the existing project into their Eclipse workspace through the GitHub repositories view. 4. Communicate frequently to avoid merge conflicts. If you have a merge conflict see the CSC Git Guide for help. Table of Contents Requirements Design UML Class Diagram Testing Deployment Requirements The requirements for this project are described in Project 2 Part 1. The Problem Overview describes the WolfTasksSystem. The system is further described in 14 different use cases: own work. Note: Assigned Partner If you were assigned a partner for Project 2 Part 2, you may work only with your assigned partner. Otherwise, you are expected to complete the project individually. All work must be strictly (a) your own work or (b) the work of you and your partner. Contribution When working on a team, we are expecting that both team members will contribute to both implementation and testing activities. Unbalanced contributions may result in deductions from the final Project 2 Part 2 grade! Top https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/git-tutorial/ https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#problem-overview 4/2/2021 CSC 216 SE Materials https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part2 3/17 Startup Use Case 0: Start WolfTasks Managing Notebooks Use Case 1: Create a New Notebook Use Case 2: Load Notebook Use Case 3: Save Notebook Task Lists Use Case 4: Select Current Task List Use Case 5: Add a Task List Use Case 6: Edit a Task List Use Case 7: Remove Current Task List Tasks Use Case 8: List Tasks in Current Task List Use Case 9: Add a Task to Current Task List Use Case 10: Edit a Task in Current Task List Use Case 11: Remove a Task from Current Task List Use Case 12: Mark a Task Complete in the Current Task List Use Case 13: Prioritize Tasks in the Current Task List Shutdown Use Case 14: Quit WolfTasks Design Your program must implement the teaching staff design, which is described below. The design consists of 11 different classes (1 as an inner class) and 2 interfaces. You are provided the following class and interfaces: WolfTasksGUI.java ISwapList.java ISortedList.java edu.ncsu.csc216.wolf_tasks.model Classes in the edu.ncsu.csc216.wolf_tasks.model package form the model portion of the WolfTasks system. Important The project you push to NCSU GitHub must contain unmodified versions of the files that we provide for you unless stated otherwise by the instructor. Top https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc0 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc1 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc2 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc3 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc4 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc5 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc6 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc7 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc8 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc9 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc10 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc11 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc12 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc13 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part1#uc14 https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/assets/code/WolfTasksGUI.java https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/assets/code/ISwapList.java https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/assets/code/ISortedList.java 4/2/2021 CSC 216 SE Materials https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part2 4/17 edu.ncsu.csc216.wolf_tasks.model.util. Sub-package of edu.ncsu.csc216.wolf_tasks.model containing the list utility classes. The two provided interfaces are the foundation of the util package. ISwapList.java. Interface for creating a list that will swap elements and move elements to the front and back of the list. ISortedList.java. Interface for a list that maintains elements in sorted order. The other classes are concrete implementations of the interfaces. SwapList. Implements the ISwapList interface. SortedList. Implements the ISortedList interface. The UML class diagram suggests that you should implement SwapList using an array-based list and SortedList using a linked list. However, you may choose to implement SwapList using a linked list and SortedList using an array-based list. If you choose to implement SwapList as a linked list, you should consider making the list doubly linked (both a prev and next reference in the ListNode) to simplify the implementation of moveUp() and moveDown(). edu.ncsu.csc216.wolf_tasks.model.tasks. Sub-package of edu.ncsu.csc216.wolf_tasks.model containing the classes for tasks and task lists. Task. Represents a task in the WolfTasks system. AbstractTaskList. Represents a task list in the WolfTasks system. There are two main types of task lists, normal task lists with names where tasks can be added to the end of the list and the active task list that holds tasks from across all lists that are marked as active. TaskList. Extends AbstractTaskList to hold tasks in an ISwapList. ActiveTaskList. Extends AbstractTaskList to hold active tasks in an ISwapList. edu.ncsu.csc216.wolf_tasks.model.notebook. Sub-package of edu.ncsu.csc216.wolf_tasks.model for the notebook of task lists and tasks. Notebook. Contains an ISortedList of TaskList, the ActiveTaskList, and operations to manipulate these lists. edu.ncsu.csc216.wolf_tasks.model.io. Sub-package of edu.ncsu.csc216.wolf_tasks.model containing file processing classes. NotebookReader. Processes a file containing a notebook, zero to many task lists, and zero to many tasks in each task list. List Implementation Expectations The expectation is that one of the list implementations MUST use an underlying array and the other MUST use linked nodes. You can choose which you use for each list, but there MUST be one of each. Not utilizing an array-based list for one list implementation and linked nodes for the other will result in a 50 point deduction on Project 2 Part 2! Top https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/assets/code/ISwapList.java https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/assets/code/ISortedList.java 4/2/2021 CSC 216 SE Materials https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part2 5/17 NotebookWriter. Writes the notebook’s TaskLists to the given file. edu.ncsu.csc216.wolf_tasks.view Classes in the edu.ncsu.csc216.wolf_tasks.view package implement the view-controller of the WolfTasks program. edu.ncsu.csc216.wolf_tasks.view.ui. Sub-package of edu.ncsu.csc216.wolf_tasks.view containing the view-controller elements of the WolfTasks Model-View-Controller pattern. WolfTasksGUI. The graphical user interface for the project. This is the class that starts execution of the program. You cannot change this code in any way. The WolfTasksGUI interacts with the rest of the system the current notebook in the system. UML Class Diagram The UML class diagram for the design is shown in the figure below. The fields and methods represented by green circles (public) or yellow diamonds (protected) represent the minimum set of visible state and behavior required to implement the project. Fields that are private represent the state of the classes and should be used in almost all cases. Methods that are private were helpful in the teaching staff solution and are provided as a suggestion; you do not have to have the private methods in your solution. Note that parameter names are fully listed in the Implementation section. Access Modifiers Note: You can modify the names of private variables, parameters, and methods. However, you MUST have the non-private data and methods (names, return types, parameter types and order) exactly as shown for the teaching staff tests to run. YOU MAY NOT ADD ANY ADDITIONAL PUBLIC OR PROTECTED CLASSES, METHODS, OR STATES. Top https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/assets/code/WolfTasksGUI.java 4/2/2021 CSC 216 SE Materials https://pages.github.ncsu.edu/engr-csc216-staff/CSC216-SE-Materials/projects/project2/project2-part2 6/17 Figure 1: WolfTasks UML class diagram UML Class Diagram Notations UML uses standard conventions for display of data, methods, and relationships. Many are illustrated in the UML class diagram above. Here are some things you should note: - or a red square in front of a class member means private. + or a green circle in front of a class member means public. # or a yellow diamond in front of a class member means protected. Static members (data or methods) are underlined. Methods that are declared but not defined (abstract methods or those declared in interfaces) are in italics, unless they are in an interface. The names of abstract classes are in italics. Dotted arrows with triangular heads point to interfaces from the classes that implement them. Solid arrows with triangular heads go from concrete classes to their parents. Solid arrows with simple heads indicate has-a relationships (composition). The containing class is at the tail of the arrow and the class that is contained is at the head. The arrow is decorated with the name and access of the member in the containing class. The arrow is also
Apr 02, 2021
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here