This assignment is designed to give you experience with object reuse by employing inheritance to extend and modify the behavior of Java classes. You will use the SimpleURLReader class from the cs1 package. Create your lab02 JCreator project from the CS101 console template, as usual, then download this cs1 package (right click and save it) to a convenient location on your local machine (e.g. the folder you are using for this lab assignment.) You now need to add this to your project's classpath so Java can find and use it. To do this, in JCreator select Project|Project_Properties from the main menu. The Project_Properties dialog will open. Select the “Required Libraries” tab. Click the “New” button and, in the Set_Library dialog that appears, enter the Name: as “cs1” and select Add|Add_Archive. A file dialog will open; locate the cs1.jar file you just downloaded & click OK to close the dialog. Finally, click the checkbox next to the “cs1” line in the Project_Properties dialog and click OK there too. Note that, to complete the assignment, you do not need to know how the SimpleURLReader class works, just treat it like you have been doing with other Java classes. One of the key points of this lab is to demonstrate that you can add to and modify the behavior of an existing class, even without having its source code. Now that is neat!
SimpleURLReader class (see above!) Its constructor takes the desired url as a String, for example ”http://www.cs.bilkent.edu.tr/~david/housman.txt”. The class has only two methods: getPageContents() that returns the contents of the url (the webpage) as a String, and getLineCount() that returns an int corresponding to the number of lines read from the url.MySimpleURLReader, that extends the SimpleURLReader class, adding two methods to it: getURL() that returns the url String used to create the SimpleURLReader object, and getName() that returns the filename part of the url, that is, the part of the url following the last '/' character (“housman.txt” in the previous example). Once this is working, fix the bug in SimpleURLReader's getPageContents() method whereby the String “null” is added to the beginning of the String it returns. Do this by overriding the corresponding method in your new sub-class.MySimpleURLReader class does most of what you want and so decide to use it. Design, implement & test a new class, HTMLFilteredReader, that extends MySimpleURLReader. Its getPageContents() method should return only the text, without the html. A new method, getUnfilteredPageContents() can be called to return the original page complete with html codes. Assume that anything between < and > is html code and should be omitted from the filtered output. Solve the problem using charAt(i) first, then check the Java documentation to see how you might adopt the same approach using an instance of the StringTokenizer class to perform the filtering operation.String class methods to extract all of the link_url's and put them into an ArrayList. Return this as the result of a getLinks() method. Add these methods by sub-classing HTMLFilteredReader in a class called SuperHTMLFilteredReader. Modify your test program to exercise these new facilities. Experiment with Java's extended type checking mechanism by calling the methods using variables of both HTMLFilteredReader and SuperHTMLFilteredReader types. Note: the previous url's do not have any html links in them, so try using this url for testing this class.MySimpleURLReader objects. The main menu should have three options: (1) Enter the url of poem to add to collection, (2) List all poems in the collection, and (3) Quit. Option 2 should display only the index number & (file) name for each of the poems. The user should then be able to enter the index number of a poem to view it (and then return to the same list.) If the user enters the last index number + 1 they should be returned to the main menu, anything else should be ignored. In option 1, if the user enters the url of a text file you should create a MySimpleURLReader object and add it to the collection, whereas if they enter the url of an html file you should create an HTMLFilteredReader object and add it to the collection. You should always call the getPageContents() method of the corresponding object to view it from option 2. If you have done everything properly, you should always see the non-html version of the poem… that's neat, that's polymorphism!