Components and Classes
Create a Class Library project that will count the number of characters, words, sentences, and paragraphs contained in a text file or a multi-line text box. You will also create a Windows Application to test the Class Library project you create. The Class Library project will have one class module. The class will have one method that will open a text file for input. The same method should also count the number of characters, words, sentences, and paragraphs in the file. Another method will perform the same task but use a multi-line text box. The developer should be able to read these values using read-only properties. The form will have an OpenFileDialog control instance to open a file as specified by the user. The Figure shows the completed form.
? Save and execute the file named Ch12Ex1.exe, (You will also need the file: Ch12Ex1ClassLibarary.dll) setting the drive designator as necessary. Click the Analyze File button. When the Open dialog box appears, select the name of a text file on your computer. Click Open. The number of characters, words, sentences, and paragraphs contained in the text file will appear on the form. Exit the solution.
? Start VB .NET, and then create a new Windows Application project.
? Add a Class Library project to the solution. Note that VB .NET will create an empty class mod- tile. Name the Class Library project Unit5ClassLibrary.
? Set the name of the class automatically created by VB .NET to StringProcessor.
? Set the root namespace to Course.
? In the Windows Application project add a reference to the Class Library project.
? In the class module, declare hidden variables to store the number of characters, words, sentences, and paragraphs.
? Create four read-only properties named Characters, Words, Sentences, and Paragraphs. These properties should return the number of characters, words, sentences, and paragraphs, respectively, stored in the corresponding hidden variables. Create Property Procedures rather than Public variables.
? Create a read-write property named StringContents, and a hidden variable to store the string. If the developer sets the property, calculate the number of characters, words, sentences, and paragraphs contained in the string, and then store the results in the hidden variables that you declared. Note: A word is a sequence of characters separated by a space. A sentence is terminated with a period, and a paragraph ends with a LineFeed character (Microsoft.VisualBasic.ControlChars.Lf). Your solution does not need to account for malformed sentences. For example, a paragraph that ends in something other than a sentence with a period.
? In the class module, create a method named OpenFile. This method should accept one argument – the full path name of the file to be opened. In the OpenFile method, write the necessary statements to open the text file, then count the number of characters, words, sentences, and paragraphs. As you will he reading a disk file, you will need to rise the StreamReader class to open and read the file.
? The process of determining what constitutes a word can be expanded. For example, in addition to having a space character separate a word, tab characters should also separate words. Add this feature to the OpenFile method and the StringContents property procedure.
? Create the control instances on the form as shown in the Figure.
? Write the code for the Analyze Text button. The code in this event handler should create an instance of the StringProcessor class. Set the StringContents property to the contents of the multiline text box. Assigning a value to the property causes the code you wrote in the Property Procedure to process the string, and set the values of the read-only properties. Store the value of the Characters, Words, Sentences, and Paragraphs properties in the output labels appearing on the form.
? Write the code for the Analyze File button. Use the OpenFileDialog control instance to get a file name from the user. Create an instance of the StringProcessor class. Call the OpenFile method to process the file. Finally, display the results from the read-only properties in the labels on the form.