16 Object-Orientation
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.