New! Hire Essay Assignment Writer Online and Get Flat 20% Discount!!Order Now
ITECH 2100
Australia
Federation University
The learning objectives for this major assignment are:
K1. Explain the principles of inheritance, composition and their consequences
K2. Discuss basic object-oriented concepts
K3. Explain the principles of event-driven programming
S1. develop object-oriented programs involving several interacting classes
S2. incorporate pre-written classes, including those from the SDK, into software solutions
S3. develop object-oriented programs which involve both object-oriented and event-driven aspects
A1. design, develop, test and debug programs from supplied program specifications
By completing this assignment, you will develop your understanding of and apply object-oriented programming techniques, in particular, those relating to inheritance and polymorphism. You will develop skills and experience in the use of the Java Collections API classes and I/O classes. You will demonstrate your ability to successfully design and develop a working event-driven system.
You will develop a multi-class program to meet functional specifications applying design principles and making use of the ArrayList and Map abstract data types. You are encouraged to partner with another student and engage in paired programming to complete this assignment.
This major assignment will be submitted in 3 stages. Each stage will build on the previous stage. You will also be asked to demonstrate or describe your code to highlight particular concepts you have implemented. This demonstration/reflection will be individually assessed.
Task 2 Creating classes for stalls and items using associations and inheritance. Due date: Week 7
Create a new project in Eclipse called Assignment 1.
Within this project create a package called Farmers Market Management System.
1. Author six classes within your newly created package: General classes to create first are Stall, StallItem and your FarmersMarketDriver class. In addition to these, you are to create at least FOUR classes representing possible types of items that are specialisations on the general abstract class:
StallItem. All StallItems have (at least) the following attributes: itemName (String) and
itemPrice(double). When designing your specialisation classes, you have to choose additional attributes particular to each specific item type. Each item type will have a different getPrice() method that will override the getPrice() method in the abstract class StallItem and calculate the price to display based on the rules for each type.
2. You must provide at least two constructors for each particular specialised item type class:
a. A default constructor which assigns each instance variable a default value.
b. A constructor with parameters which assign values to each instance variable.
3. Create a seventh class, StallItemDatabase that you will use to manage a group of stall items. This class will be associated with the Stall class. The stall will have an attribute that is referencing an object based on this class. The StallItemDatabase class will contain an ArrayList of StallItem as well as an appropriate method named insert that could be used to add a particular StallItem into to the list of StallItems. The insert method should take two parameters: an integer value representing the stall item number (corresponding to the number on the stall) and a stall item object. Also, author a method named retrieve that will get the stall item in a given index position from the ArrayList. You can assume initially that the index position corresponds to the item number on the stall.
4. Author get and set methods for your classes for instance variables where appropriate.
5. Write a toString() method in each class that will return a String containing all the relevant data for each of your objects.
6. In each of your specialised stall item classes, create the getPrice method to perform an appropriate price calculation based on the data in the object.
7. Create a FarmersMarketDriver test class. In this class, provide a main method containing code to implement your test plan to test all constructors and methods including your toString () method, for each class you have written. Run your tests and make sure your class is behaving correctly.
8. Write further code in your test class so that you can create a stall for a farmer’s market and add items to that stall. This should be stall driven so that you can manually input some data. You may also like to hardcode some test cases.
9. In your documentation, outline your test plan (For example, outline what objects you created to demonstrate that your classes written so far are working correctly).
10. Explain how you have tested your code and the results of your testing. Include screenshots in your documentation demonstrating the output when you tested your code.
Stage 2 - Convert your Item class to become an abstract class, populating your stall items from an input file, producing output to a report text file, creating an enclosure occupant list, using abstract data types (Map). Due Week 9
1. Create an input file AppleStall.txt containing at least ten different stall items (ensure you have at least one of each different item – standard/discount/premium). The data will include the name of the stall and then some items. The type of each item should be identified.
Your file may look something like this: (it doesn’t have to look exactly like this – the format is up to you). In this example, for the venue: “Apple Stall”, there are four stall item types: Premium, Standard, Discount and Special.
2. In your submission report describe the actual format of data in your data.txt file. Name the fields of data that will be in the file and the order in which they will be found. (e.g. Market or Stall name will be first and will be a string on one line, then some stall items will follow ….etc.)
3. Modify your StallItem class so that it is an abstract class. Change your getPrice and setPrice methods to be abstract methods in StallItem so that they must be overridden and provided in each inherited special stall item class.
4. Write a method on your stall class to read the stall and stall items information from the file, and create a new farmers market stall. This includes populating the stall with stall items based on data from the file. You will need to create the correct stall item type based on information in the file.
5. Write a toString() method that will generate an output string detailing the stall. Use polymorphism where possible.
6. Extend your system so that it will allow a customer to view what a stall is selling and then allow the customer to purchase items. The order can contain 1 or more stall items that have been
Stage 3 creating a patron GUI Interface Due Week 11
In this stage, you will create a GUI interface for your system. This will replace your text-based FarmersMarketDriver created in stage 2. The GUI interface may be used on a touchscreen for visiting customers. There is example code on Moodle that demonstrates how to create a GUI. You are strongly encouraged to refer to those examples.
Draw a schematic sketch of your GUI design. On your diagram, highlight where you intend each panel to be and the contents of each panel (e.g. buttons, lists, radio buttons, labels). Where you have content to be displayed based on an object in your code, note this on your diagram. Also, indicate the events you expect your GUI to respond to and what happens following each event. For example, “when the button < X> is pressed, this event will trigger a call to method <Y> which will perform a calculation using the values in the selected list and display the result in the text field in the centre panel. “
Design and coding of the GUI using the swing library Create a new class that will manage your GUI System. This class will take one parameter when constructed, a reference to a Stall object. So, if you invoke your GUISystem class twice (with two different stalls), you will create two separate windows – one for each stall.
You will have the initial startup GUI window where you provide a list of stalls available to view. You must be able to select a stall to display and then when you click on the button to open that stall(s), each stall will appear in a new separate window. It is expected that no submissions will be identical, so ensure that your GUI has some unique elements to it. Be creative! It is expected that each student pair will creatively design and author a unique system based on individual choices that fit the requirements.
You must satisfy the following requirements for full marks on this task:
• Display in a startup GUI window the list of Stalls available to visit, select one or more (using a checklist) to then view or edit. For each stall selected, create a new GUI window for that stall.
• Create and use at least two buttons on the startup GUI, to open a stall and to exit the system
• Include a button that ‘does’ something based on the stall (e.g. calculate and display the total price for a customer)
• Use checkboxes to allow a user to select the stall items to create a customer purchase. These should be populated by a vector list and should be consistent with the stall items that are stored in that stall.
• Display in a scrollable output text box the purchase details based on user selection. The purchase details do not need to be saved as this system will not keep records of each customer purchases.
• Also, your code must be well designed into methods applying the principles of coupling and cohesion. You must deal with exceptions appropriately. selected. If the order is a home delivery, you need to add a further delivery charge to the order.
7. Add further code to your driver class and write a test method which tests your system using a textbased system. Test using a scenario involving displaying the contents of a stall and asking the customer purchase items. In your report document, describe the testing scenario and the expected behaviour of your system. Provide screenshots of your system testing in your final report. Write a method to appropriately populate your stall with details read from a file. Ensure you have comments to describe each of your new classes in your code.
8. Add a method to output a stall saved to a file. This output report must save details of a particular stall, including the stall items and their base price (which may be different from the displayed price).
9. Test your classes to check they are working correctly. Document your testing process – describe your test data and the outcome of your testing. Include screenshots in your report document illustrating your testing process and the outcome of your testing.
10. Change your stall item class that manages a collection of stall items. In this class, you will replace the ArrayList with a Map data type. You can assume each Stall Item number is unique. The map data type enables you to look up and easily retrieve details for a stall item given its item number.
Use the item number as the key.
11. Further test your system to ensure it is working, document your testing process.
12. Update your UML class diagram so that it is consistent with your code. You may use Enterprise
Architect to import your code and generate the class diagram.
15,000+ happy customers and counting!