600.107 Introduction to Programming in Java
DRAFT -- Project #3 -- 60 points
Due 11:30pm on Saturday, December 2

Overview

This is your third and last graded project that will count for 10% of your course grade and must be treated like an individual take-home exam. You absolutely must not discuss it with or get help from anyone other than the course teaching staff (Joanne + TAs). However, due to Thanksgiving Break, you'll need to get started mostly on your own.

The purpose of this project is demonstrate your skills in defining class types and working with arrays and classes, particularly arrays of objects in classes. You will also be using polymorphism, implementing interfaces and inheritance, and illustrating your understanding of class relationships with a UML diagram. You must not use Java ArrayLists or Vectors (or any more advanced Collections) in any form to solve this problem. To start, download the zip file containing the interface and starter class files that you will need.

Reflection: In addition to the code itself, we want some insights as to how you have approached the problem, your design and thought processes in developing your solution, and particular problems you were or were not able to solve. Therefore, you must submit a short (2-5 min) video recording of yourself explaining your approach and code to us. Please refer to your code as you do this (on screen or on paper), but we also need to see your face periodically. If you do not submit a reflection you will receive a 0 on the entire project. The video submission is due the same time as the actual code, but you must only submit a link to the video this time (see below). (A secondary purpose of the reflection is to make sure you are accountable for the code you submit.)

You can ask a friend to help with the recording, as long as that person is not in this course. Please keep this reflection in mind as you develop your code and make some notes as you proceed so that you remember what to say in the video. The file type should be standard enough for us to view with any common video player.

Deliverables: You must submit all the java source code files necessary to run our provided driver program in a zip file called P3-jhedLID.zip, substituting your actual JHED login as the second part of the file name, to P3 on Blackboard. Due to problems overloading the Blackboard database for project 2, do not submit an actual video file in your zip. Instead, you must upload your video to a private cloud service such as google docs and provide a web link in your Blackboard submission for us to access it on-line. Absolutely no publicly accessible videos (on YouTube for example) are allowed - these will be reported as ethics violation and result in a 0 on the entire project.

Submission: Remember that you can submit multiple times on Blackboard; just make sure that your final submission includes all parts (code and reflection link)! Also remember that your Java code must compile (no syntax errors) or you will receive a 0 grade (seriously). You can check your submission by downloading from MyGrades on Blackboard after submitting and making sure all was included in the zip file, and everything still compiles as submitted. Late submissions will not be accepted, so plan to submit by 11pm even though the deadline is 11:30.


The Problem: Veterinary Records

For this final assignment you will create a system of classes to support a Veterinary Facility. We have carefully specified a set of classes that you must write to form this system, using inheritance and interfaces as appropriate. A UML diagram of the system is in the provided zip, and the driver program is already written for you, P3main.java. Your classes are required to compile with this driver program, and support its operation fully, much like in homework 8 with the Time and Player classes. We will grade with a fresh copy of P3main.java, so do not make any changes.

Here are the classes you must write and update. You will also need to write a few methods that are not explicitly mentioned here in order to get things done while maintaining the privacy of data members. You must not have any public data members.

Implementation Details

A test driver program P3main.java, along with the expected output, has been provided so that you can verify for yourselves if the classes you've written are working properly. This file is not fully checkstyle compliant (lots of magic numbers and long lines) and does not have to be. (All other files must be.) You must not change this program or the provided interface in any way, except perhaps to add more testing to main. Similar to homework 8, the classes you write must conform to the test code and interface we have provided. Similar to project 1, the output formats and results must also match exactly.

All data members in all classes must be private if possible or protected only if necessary. Provide accessor methods where needed. Most of the methods should be pretty short. Don't forget to include constructors for all classes (see driver program for details on how they should be called). See the javadoc comments in the skeleton files provided for details of these classes and their members. Each class must also have appropriately overridden versions of the toString method, based on all data members. (The Pet version of the equals method is sufficient for all.) See comments in the starter files for more details, as well as the expected output of the main driver program. The output your classes produce (toString formatting, etc.) must match exactly the expected format and values for the P3main program.

Grading

The total points for this assignment will be broken down into expected functionality (how well the code works), how well the code is written, including style and documentation, and the video reflection. You are not required to submit pseudocode or extra tests for any parts of this project, but you are strongly encouraged to write them as part of the solution process.

Deadline & Time Management: We strongly recommend completing the coding for this project by Thursday 11/30. This will give you an extra day or two to iron out problems and make your reflection video and upload it to the cloud.


General assignment requirements, style and submission details: