Homework 08 (Due 10:00am Friday, March 19, 2010)
Submit via Owl-Space
Preliminaries
This homework on manipulating Java lists must be done using the Intermediate language level of DrJava. We are providing skeleton classes for each problem with unimplemented methods for you to write. Each such class includes a method with a name like listString() that converts lists to more readable String notation similar to that used in Scheme.
Composite Design Pattern for List
- Write the
arrangements(permutations) function from HTDP problem 12.4.2 in HW2 as a Java method for aWordclass provided in the fileWord.dj1. This file includes definitions of the composite pattern classesWordandWordList. Decompose the problem in exactly the same form as this solution to problem 12.4.2. We are providing skeletons for the classesWordandWordListin the file WordList.dj1; use them. - Write the
mergesortfunction from the last problem in HW4 (using exactly the same top-down approach described in HW4) as a Java method in the composite pattern classComparableListprovided in the file ComparableList.dj1. - Do Exercise 21.2.3 from HTDP using the Java composite pattern class
ObjectListprovided in the file ObjectList.dj1. This file includes the interfacePredicate, which is the type of Java function arguments passed to thefiltermethod, and abstract method stubs forfilter,eliminateExp,recall, andselection. Exercise 21.2.3 provides Scheme code for thefilterfunction which you should directly translate to the corresponding Java method code inObjectList. Note that yourfiltermethod should work for arbitraryObjectLists. In coding the methodseliminateExp,recall, andselection, use the Java typeNumber(compared using methoddoubleValuein place of the Schemenumbertype and the Java typeObjectin place of the Schemesymboltype. The methoddoubleValue()inNumberreturns the value of this converted to adouble. You will need to cast theObjectinput of thetestmethod to typeNumberwhen filtering lists of numbers. - Do Problem 2 from Homework 5 in Java using the composite hierarchy of classes provided in the file ArithExpr.dj1.