changes in RED
Given the below example of a composite pattern: These classes and interfaces are in package P. Create an almost identical package DP where the domain of instances that can be assigned to interface I are decorated instances of the domain of P. (A decorator DL decorates L instances – so whenever an L object is created a DL-decorated L object is returned. Similarly, a decorator DM decorates M instances – so whenever an M object is created, a DM-decorated M object is returned). The ultimate goal is to write an application where packages DP and P can be easily swapped. Now create a framework F that has P and DP as plug-ins so that effectively packages P and DP are easy to swap.
Here is the shell of your program. (The regression test and the Correct answers have been updated) I've built package P, created
an empty package P for you to fill in. There is also an
originalCompositeApp.java program, so that you can see how it
works. I've also provided a shell of PluginCompositeApp.java,
where I have created the factory classes needed, plus a test file,
which tests the originalCompositeApp.java, and the two plugins, when
you get it finished.
Your task is to finish the plugin DP, its use in
PluginCompositeApp.java, and ensure that the provided regression tests
What to Submit
of the below in a zip file (including your Netbeans or Eclipse Project). The
zip file must unzip into
program needs to run correctly on Linux machines, even though you may
have developed them on Macs and Windoze. The TA will grade your
program running on Linux.
- A short description that
the Grader needs to know to run your program, other than the above.
- Show that your program runs the regression test correctly.
- A short writeup explaining any additional tests that you have added to your program to verify that it works.
- A PDF file
(in the required
format) that the
Grader should read to provide any information that is not obvious.
The contents of the PDF file can be minimal.
A critical part of any
design is clarity and understandability. Hence, you
will be graded on the clarity of your project and its ability to work
correctly. Sloppy code, documentation, or anything that makes
grading or understanding your program difficult will cost you
points. Beware, some of these "beauty" points are
No late assignments/submissions will be accepted.