For this assignment you must implement a program of your own design that demonstrates a significant number of the 9 following concepts that we have covered in this course over the semester:
1. Writing classes to define objects that know things and do things
Private instance variables to store things that object of this class must know
Public getter and setter methods to provide access to the things that objects of this class know and to maintain a valid state
Public methods to encapsulate the things that objects of this class must do
Private methods to support and simplify the public methods
Constructors to conveniently and consistently initialize object of this class to a valid state
2. Composing programs out of objects that collaborate to realize the responsibilities of the program.
Includes Classes/object with "has a" relationships (composition)
Includes Collections of like objects
3. Leveraging abstract and/or concrete base classes and/or interfaces
Includes Classes/objects with "is a" relationships
Using inheritance to extend the functionality of a base class
Using inheritance to implement the functionality of an interface
Defining and using classes with a common methods, but different (polymorphic) behavior
Overriding base class or interface methods
Explicitly calling base class constructors
4. Using UML to concisely describe the essential features of classes
Writing UML class diagrams that detail the classes that make up a program
Including attributes and operations
Including visibility, data types, arguments, return values, etc.
Including relationships between classes
5. Choosing or implementing data structures that best meet the needs of a given problem
Includes Justifying the use or implementation of any list or tree-like data structures in your program
6. Leveraging generics in Java
Includes Explaining any use of Java's standard library generic types
Includes Implementing your own generic classes or methods
7. Using Big-O notation to describe the algorithmic complexity of an algorithm that you are using in your program
8. Writing recursive algorithms
An explanation of why you are implementing a given algorithm recursively rather than iteratively
Explaining, in detail, how any recursive algorithm that you use in your program works
What is/are the base case(s)
What is/are the recursive case(s)
How does the algorithm insure that each recursive call is closer to the base case?
9. Choosing and using sorting algorithms
Includes Explaining why you are using or implementing any algorithms you are using in your program.
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference
and should not be submitted as is. We are not held liable for any misuse of the solutions.
Please see the frequently asked questions page
for further questions and inquiries.
Kindly complete the form.
Please provide a valid email address and we will get back to you within 24 hours.
Payment is through PayPal, Buy me a Coffee
or Cryptocurrency.
We are a nonprofit organization however we need funds to keep this organization operating
and to be able to complete our research and development projects.