COIT11134 Object Oriented Programming (T1 2020) Assignment 1
Objectives
This assignment is designed to test your ability in applying object-oriented programming techniques. By completing this assignment, you demonstrate that you can:
- Implement object-oriented programs using a modern programming language
- Build interactive software applications using Graphical User Interface components.
Introduction
This is an individual assignment.
Assignment Task
CQ Solar Power System Installers (CQS) undertake installations of Solar Power systems in their customers’ buildings. Each of these installations has the pre-approved design showing the following details:
- Watt per Hour (WH) of Solar Power unit (the range is from 3500 Wh to 10,000 Wh)
- Installation (On Grid, Off Grid)
- Battery (only off Grid will require battery) (the range is from 50 Ah to 200 Ah)
- Solar Tracker (Single axis, Dual axis, Stationary)
Each of these installations is carried out by a technician and it takes generally more than a day to complete an installation. CQS has approached you to design a JAVA Application (hereafter called as system) to maintain the records of Solar Power installations.
The system should have necessary GUI forms to enable data entry of the following details:
- Technician’s details
- This should include the technician name and contact phone number. You can add additional details if necessary
- Building address along with pre-approved design details (WH, Installation, battery, and Tracker)
- Installation details such as start, and end date and the technician who performed that installation
Note: It follows from the above description that a Building can be related to/have a Solar Power system installation; and an Installation is done by a technician.
The system should be able to perform the following:
- receive the input data and store them appropriately in arrays or ArrayLists or any other suitable structures
- display the details of installations including the building address and the technician’s details
In the initial stage, in assignment 1, you don’t have to store the data in files or in database. So, every time when the application runs the user must input the data.
Suggestions: For data entry, you can use appropriate controls such as TextFields, ComboBoxes, etc., You can use Labels to display error messages and TextArea/Tables to display the list of entries. You can use any other controls that are appropriate to data entry and for displaying outputs and error messages.
The application should have at least the following command buttons to enable user interaction.
- Enter/Add [Technician/Installation] to store entered data in the data structures
- Clear button to clear necessary fields
- Exit button to exit from the application
The application’s GUI layout is left to your choice. The application should also be user-friendly and is expected to validate the data entered and display appropriate error/exit messages. For the application development, you need to create appropriate Java classes. Each of the classes should have appropriate constructors, suitable accessors and mutators and toString method. Wherever necessary, you need to use the inheritance and/or aggregation concept of OOD. You might have to create your own super class and sub classes that are relevant to the above requirements. Please note that extending the available built-in Java classes such as JFrame will not be considered, as inheritance usage, for assignment marking purpose. The application should also show your Student ID and Full name.
The data type for each of the inputs has not been mentioned purposely. You need to use the appropriate data type accordingly.
FAQ and Answers (important to read)
- How many Java classes should I create? There is no limit for the number of classes in your application.
- I have not used inheritance and/or aggregation in my application. Can I submit my application? You can submit the application, but you will be given only partial marks.
- Can I use platforms other than TextPad and NetBeans? Not recommended.
- Do I have to check that the same technician is not working in more than one installation at the same time? Even though that is preferred, you need not perform that checking.
- Do I have to use constants? You might have to use the constants depending on your design. e.g., The minimum WH that is allowed.
- Do I have to provide comments? You need to provide in-line and header comments appropriately.
- Why am I not storing the data in text or data files? You need to do that in your Assignment 2.
- What types of error checks are necessary especially for numerical inputs? You need to check for range of acceptable data (i.e. WH to be between 3500 and 10,000)
- Can I write codes that create an installation that contains only part/incomplete details? No.
- Can I create technician’s data before entering the installation data? Recommended to create and store the technicians’ data as first step.
You are also encouraged to discuss any other related questions with your lecturer/tutor and design your application accordingly.
Note:
If you submit an interactive Java application without any GUI controls, you will be given only partial marks.
In order to avoid plagiarism, complete list of classes, fields, methods and GUI layout have not been provided specifically in this assignment so that you are encouraged to develop your own classes appropriately.
You should submit the following files:
- A zip file containing all Java source code files including the test driver file (and additional library or jar files used by your application, if any).
- docx (a word file containing screen shots showing various inputs, error messages and outputs from your application program run).
Asignment 1- Marking criteria
Item |
Description |
Maximum marks |
1 |
Program compiles (0.5) and runs (0.5) |
1 |
2 |
Used Inheritance and/or aggregation |
1 |
3 |
Displays student id and student name |
1 |
4 |
Displays necessary controls for data entry |
2 |
5 |
Creates and stores relevant details of technicians (1.5) and installations (1.5) |
3 |
5 |
Implemented Clear (0.5) and Exit/Stop (0.5) aspects |
1 |
6 |
Validated inputs (1.0) and displayed error messages (1.0) |
2 |
7 |
Classes’ implementation complete and adequate: Suitable fields and appropriate data types (1.0) Appropriate constructors (1.0) Appropriate methods (2.0) |
4 |
8 |
Quality: Code quality (meaningful names, indentation, comments, etc.,) (1.0) GUI (appropriate controls, good layout, user friendly, etc.,) (2.0) |
3 |
9 |
Word file contains actual output screen shots (1) including error messages (1) from the application |
2 |
Less late penalty (5% per day) |
||
Less Plagiarism |
||
Total |
20 |
Appendix
This section presents information on setting standards and assessing teamwork, setting assessment specific academic integrity guidelines for programming assignments.
1.1 Academic Integrity – getting assistance and source code
This assignment is your chance to obtain the learning outcomes as given under objectives. It is important that you develop skills and deeper understanding of the concepts. You are permitted to use certain resources for completing this assignment as given in the table below. Use of resources outside of what is listed below will be a hurdle in your learning and required development of skills.
The scale of assistance students can get is clearly marked based on the students’ level of mastery and expected learning at various levels.
Note: You can use these as appropriate to the unit you are writing assessments.
The objective is to understand several concepts and apply those concepts to design and build a software solution. At this level you can use the provided materials, online resources for further reading and take assistance from your classmates or teammates to develop deeper understanding of the concepts. You can also sort help to debug the implemented program. But you should implement and test your program on your own.
Unit Textbook, Unit notes and examples |
Understanding concepts, design |
|
Instructors |
Understanding concepts, design, debugging |
|
Teammates (in case of teamwork) |
Understanding concepts, debugging |
|
Classmates, Online resources |
Understanding concepts, |
|
Everyone else |
Understanding concepts |
|
No help acceptable |
Implementing code |