16.1 Basics of Object-Orientation 16.1.1 Methods and Members 16.1.1.1 Parameters as Members 16.1.1.2 Visibility 16.1.2 this Keyword 16.1.3 Encapsulation/Separating Interface from Implementation 16.1.4 Special Methods 16.1.4.1 Operator Methods 16.1.4.2 Unary Operators 16.1.4.3 Property Assignment Methods 16.1.4.4 The apply Method 16.1.4.5 The update Method 16.1.4.6 Overloading Methods 16.1.4.7 Vector Example 16.1.5 object Declarations 16.1.5.1 Applications 16.1.5.2 Introduction to Companion Objects 16.1.6 Object Decomposition 16.2 Revisiting the API 16.3 Meaning of case classes 16.4 import Options Exercises W.1. Write an application with a GUI that has a menu and a large TextArea. The menu should have options for Open, Save, and Exit. When the user selects File > Open, it should bring up a FileChooser for them to select a file. The file they select should be read in and the text in the TextArea should be set to that text. When the user selects File > Save, a FileChooser should come up letting them select the file to save to and the text in the TextArea should be written to that file. W.2. Write a class that represents a polynomial. The data for this can be stored in a Seq[Double] where each value if the coefficient on a term. So the polynomial 2x^2+3x-4 could be stored as Array(-4,3,2). Not that the 0 index holds the coefficient for x^0 and in general the value at index i is the coefficent for x^i. Add methods into your polynomial that will add and subtract two polynomials. Also add methods to evaluate a polynomial at a particular value of x as well as a method for taking the derivative of that polynomial. You can write this class in both a mutable and immutable form. For practice, you should also include a companion object with a proper implementation of apply so that you can make polynomials without using new. W.3. Write a class to represent a Matrix. Your matrix should have methods for doing addition, subtraction, and multiplication. For further practice you could add methods to find the determinant and the inverse. Projects W.1. If you did exercise W.2 you can build on top of this by putting a full GUI around it so that you can plot instances of your polynomial class. Write this as an application, not a script. |