I am not sure about pages you just check the assignment and let me know the prices.
ITECH 2100 Programming 2 School of Science, Information Technology and Engineering CRICOS Provider No. 00103D Page 1 of 13 Major Assignment Semester 1, 2018 Learning Objectives: 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 Purpose 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. ITECH 2100 Programming 2 School of Science, Information Technology and Engineering CRICOS Provider No. 00103D Page 2 of 13 Assignment Overview: This assignment requires you to complete various tasks involving classes you write with your partner. You may also use classes that you find in the Java SDK. The system that you will create is a Farmer’s Market Management System (FMMS). The FMMS is a tool used by Dogwood Council to manage multiple Farmer’s Markets in their area. A Farmer’s Market may be located at different sites, for different purposes (e.g. open-air market or indoor market, charity market, community fundraising market, food swap market etc.) and different opening times. Each Market has a name and is associated with a particular address and session time. Each Market is also made up of stalls selling items. This IT system, FMMS, will enable the Council-manager to manage information about the farmers market as well as the stalls. It will be possible to inspect details for each stall separately. The details will include specifics of the stall as well as specific details regarding discounts that may apply to certain items (e.g. All green apples might be half price). Stalls will be saved separately as specific individual stalls (e.g. apple stall, potato stall, berry stall, onion stall). It will also be possible to categorise particular items at each stall. The item classification will determine the way the prices are calculated for display on the stall. Each item will have a basic price associated with it. When the price for display in the stall in calculated, this calculation may involve increasing the price with surcharges (e.g. some items might have a surcharge due to the difficulty in sourcing the item locally); or decreasing the price due to a special discount. You will create a GUI using the java.swing library package. You will need to zip your project up when you are finished each stage and submit it as a single zip file to Moodle by the due date. You will also need to submit a report. The report will require some written and diagrammatic information describing your system. Please write clearly and IN YOUR OWN WORDS (plagiarism is NOT acceptable – refer to Course Description). It is expected that each student pair will creatively design and author a unique system based on individual design choices that fit with the requirements listed in each task. Before you begin, read over the entire assignment and understand all the tasks. Acknowledge authors for all code that you submit using in code comments. All code must conform to stylistic standards including proper commenting, appropriate choice of identifier names (including case), proper indenting and other readability issues. Otherwise, marks will be deducted. Consult http://www.oracle.com/technetwork/java/codeconventions-150003.pdf Stage One is due in week 7. Stage Two is due in week 9. Stage Three is due in week 11. In weeks 10 and 12, you will be interviewed by your tutor in your lab class. You will be asked questions about your code. http://www.oracle.com/technetwork/java/codeconventions-150003.pdf ITECH 2100 Programming 2 School of Science, Information Technology and Engineering CRICOS Provider No. 00103D Page 3 of 13 Stage 1a Designing and Documenting your system Due date: Week 7 Create a document named: surnameStudentIDAssign1.doc . In your document, you must include the following section headings: • Authors, • System Overview, • Class Diagram, • Testing. System Overview In the System Overview section, you are to write 100-200 words describing your system and how it could be used in an imaginary scenario. You will need to review this after completing all tasks and ensure that your overview explains your entire system. State any assumptions you are making in your system. It is expected that you will create a system that can accommodate managing some stalls. For each stall, there should be an associated stall name and some items each associated with a unique item number in the stall on which it appears. You may add further attributes such as description if you wish. The final price for an item may be different from the price entered into the system. The final price should be based on the type of item. There should be some possible types of items incorporated into your system. Example item types are as follows: 1. A standard item will have the price calculated based exactly on the price entered into the system 2. A premium item can be created with a mechanism to indicate that it is to have a surcharge added to the price. 3. It is possible to create a discounted item where a discount has been applied to a given price The FMMS system will have at least four different item types (e.g. standard, premium or discounted). You may choose a name for each type and what the distinguishing features of each type are. It is suggested (at a minimum) that each item type will have a different process for calculating the published price. Each stall created is expected to have at least ten associated items. The total number of stalls is limited to a maximum of 30, and your system should allow for multiple pages of stalls. Your system will be able to add items to the stall after it has been created. The stall details will include a name as well as details naming a data file that will be used to preload the items. A StallItem is a generalised class representing a generic item. Each actual item created will be instantiated as one of the specialised types of item that inherits from StallItem Class Diagram In this section, you are to provide a class diagram for every user-authored class you anticipate in your first version of the system. The first version will include a text-based driven system with classes that will be used to create objects to represent three different stalls, as well as different items that belong to each stall. You are expected to use inheritance so that you have an abstract item class and specialisation classes for different types of items. ITECH 2100 Programming 2 School of Science, Information Technology and Engineering CRICOS Provider No. 00103D Page 4 of 13 Testing As you develop your classes and methods, you will write testing code to verify that your code is working correctly. In this section, you will describe your initial chosen test data and explain how that data will help you test your code. Make sure that you choose a variety of test cases to ensure you can be satisfied that your code is working. Describe your test cases and include screenshots of your testing results (so far) in this section. Stage 1b - 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 FarmersMarketManagementSystem. 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.