Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Even even more on being classy Aaron Bloomfield CS 101-E Chapter 4+

Similar presentations


Presentation on theme: "1 Even even more on being classy Aaron Bloomfield CS 101-E Chapter 4+"— Presentation transcript:

1 1 Even even more on being classy Aaron Bloomfield CS 101-E Chapter 4+

2 2 Consider this sequence of events…

3 3 What happened? Java didn’t “repaint” the rectangles when necessary Java didn’t “repaint” the rectangles when necessary Java only painted the rectangle once Java only painted the rectangle once You can tell Java to repaint it whenever necessary You can tell Java to repaint it whenever necessary This is beyond the scope of this class, though! This is beyond the scope of this class, though!

4 4 Seeing double import java.awt.*; public class SeeingDouble { public static void main(String[] args) { ColoredRectangle r = new ColoredRectangle(); System.out.println("Enter when ready"); Scanner stdin = new Scanner (System.in); stdin.nextLine();r.paint();r.setY(50);r.setColor(Color.RED);r.paint();}}

5 5 Seeing double When paint() was called, the previous rectangle was not erased When paint() was called, the previous rectangle was not erased This is a simpler way of implementing this This is a simpler way of implementing this Perhaps clear and repaint everything when a rectangle paint() is called Perhaps clear and repaint everything when a rectangle paint() is called

6 6 // Purpose: Create two windows containing colored rectangles. import java.util.*; public class BoxFun { //main(): application entry point public static void main (String[] args) { ColoredRectangle r1 = new ColoredRectangle(); ColoredRectangle r2 = new ColoredRectangle(); System.out.println("Enter when ready"); Scanner stdin = new Scanner (System.in); stdin.nextLine(); r1.paint(); // draw the window associated with r1 r2.paint(); // draw the window associated with r2 }} Code from last class

7 7 public class ColoredRectangle { // instance variables for holding object attributes private int width; private int x; private int height; private int y; private JFrame window; private Color color; // ColoredRectangle(): default constructor public ColoredRectangle() { color = Color.BLUE; width = 40; x = 80; height = 20;y = 90; window = new JFrame("Box Fun"); window.setSize(200, 200); window.setVisible(true);} // paint(): display the rectangle in its window public void paint() { Graphics g = window.getGraphics(); g.setColor(color); g.fillRect(x, y, width, height); }}

8 8 String - text = “Box Fun” -... + length() : int +... + setVisible (boolean status) : void + getGraphics () : Graphics + setSize (int w, int h) : void + … JFrame - width = 200 - height = 200 - title = - grafix = -... Graphics - … + setColor(Color) : void +... + fillRect() : void r + paint() : void ColorRectangle - width = 0 - height = 0 - x = 0 - y = 0 - color = - window = Color - color = -... + brighter() : Color +... ColoredRectangle r = new ColoredRectangle(); + paint() : void ColorRectangle - width = 40 - height = 20 - x = 80 - y = 90 - color = - window = public class ColoredRectangle { private int width; private int x, y; private int height; private int y; private JFrame window; private Color color; public ColoredRectangle() { color = Color.BLUE; color = Color.BLUE; width = 40; width = 40; height = 20; height = 20; y = 90; y = 90; x = 80; x = 80; window = new window = newJFrame ("Box Fun"); window.setSize window.setSize (200, 200); window.setVisible window.setVisible(true);} public void paint() { Graphics g = Graphics g = window.getGraphics(); window.getGraphics(); g.setColor(color); g.setColor(color); g.fillRect (x, y, g.fillRect (x, y, width, height); width, height);} g

9 9 The Vector class In java.util In java.util Must put “import java.util.*;” in the java file Must put “import java.util.*;” in the java file Probably the most useful class in the library (in my opinion) Probably the most useful class in the library (in my opinion) A Vector is a collection of “things” (objects) A Vector is a collection of “things” (objects) It has nothing to do with the geometric vector It has nothing to do with the geometric vector

10 10 Vector methods Constructor: Vector() Constructor: Vector() Adding objects: add (Object o); Adding objects: add (Object o); Removing objects: remove (int which) Removing objects: remove (int which) Number of elements: size() Number of elements: size() Element access: elementAt() Element access: elementAt() Removing all elements: clear() Removing all elements: clear()

11 11 Vector code example Vector v = new Vector(); System.out.println (v.size() + " " + v); v.add ("first"); System.out.println (v.size() + " " + v); v.add ("second"); v.add ("third"); System.out.println (v.size() + " " + v); String s = (String) v.elementAt (2); System.out.println (s); String t = (String) v.elementAt (3); System.out.println (t); v.remove (1); System.out.println (v.size() + " " + v); v.clear(); 0 [] 1 [first] 3 [first, second, third] third(Exception) 2 [first, third] 0 []

12 12 What we wish computers could do

13 13 The usefulness of Vectors You can any object to a Vector You can any object to a Vector Strings, ColoredRectanges, JFrames, etc. Strings, ColoredRectanges, JFrames, etc. They are not the most efficient for some tasks They are not the most efficient for some tasks Searching, in particular Searching, in particular

14 14 About that exception… The exact exception was: The exact exception was: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 >= 3 at java.util.Vector.elementAt(Vector.java:431) at java.util.Vector.elementAt(Vector.java:431) at VectorTest.main(VectorTest.java:15) at VectorTest.main(VectorTest.java:15) Where the problem occured

15 15 A Vector of ints Consider the following code: Consider the following code: Vector v = new Vector(); v.add (1); Causes a compile-time error Causes a compile-time error Most of the time - see disclaimer later Most of the time - see disclaimer later C:\Documents and Settings\Aaron\My Documents\JCreator\VectorTest\VectorTest.java:7: cannot resolve symbol symbol : method add (int) location: class java.util.Vector v.add (1);

16 16 What happened? The Vector add() method: The Vector add() method: boolean add(Object o) boolean add(Object o) Primitive types are not objects! Primitive types are not objects! Solution: use wrapper classes! Solution: use wrapper classes!

17 17 More on wrapper classes A wrapper class allows a primitive type to act as an object A wrapper class allows a primitive type to act as an object Each primitive type has a wrapper class: Each primitive type has a wrapper class: Boolean Boolean Character Character Byte Byte Short Short Note that char and int don’t have the exact same name as their wrapper classes Note that char and int don’t have the exact same name as their wrapper classes Integer Integer Long Long Float Float Double Double

18 18 Vector code example Vector v = new Vector(); System.out.println (v.size() + " " + v); v.add (new Integer(1)); System.out.println (v.size() + " " + v); v.add (new Integer(2)); v.add (new Integer(3)); System.out.println (v.size() + " " + v); Integer s = (Integer) v.elementAt (2); System.out.println (s); Integer t = (Integer) v.elementAt (3); System.out.println (t); v.remove (1); System.out.println (v.size() + " " + v); v.clear(); 0 [] 1 [1] 3 [1, 2, 3] 3(Exception) 2 [1, 3] 0 []

19 19 Even more on wrapper classes They have useful class (i.e. static) variables: They have useful class (i.e. static) variables: Integer.MAX_VALUE Integer.MAX_VALUE Double.MIN_VALUE Double.MIN_VALUE They have useful methods: They have useful methods: String s = “3.14159”; String s = “3.14159”; double d = Double.parseDouble (s); double d = Double.parseDouble (s);

20 20 A disclaimer Java 1.5 (which we are not using) has a new feature called “autoboxing/unboxing” Java 1.5 (which we are not using) has a new feature called “autoboxing/unboxing” This will automatically convert primitive types to their wrapper classes (and back) This will automatically convert primitive types to their wrapper classes (and back)

21 21 An optical illusion

22 22 Design an air conditioner representation Context Context Repair person Repair person Sales person Sales person Consumer Consumer Behaviors Behaviors Attributes Attributes - Consumer

23 23 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on Turn on Turn off Turn off Get temperature and fan setting Get temperature and fan setting Set temperature and fan setting Set temperature and fan setting Build – construction Build – construction Debug Debug Attributes Attributes

24 24 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on Turn on Turn off Turn off Get temperature and fan setting Get temperature and fan setting Set temperature and fan setting Set temperature and fan setting Build – construction Build – construction Debug – to stringing Debug – to stringing Attributes Attributes

25 25 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on Turn on Turn off Turn off Get temperature and fan setting Get temperature and fan setting Set temperature and fan setting – mutation Set temperature and fan setting – mutation Build – construction Build – construction Debug – to stringing Debug – to stringing Attributes Attributes

26 26 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on Turn on Turn off Turn off Get temperature and fan setting – accessing Get temperature and fan setting – accessing Set temperature and fan setting – mutation Set temperature and fan setting – mutation Build – construction Build – construction Debug – to stringing Debug – to stringing Attributes Attributes

27 27 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on – mutation Turn on – mutation Turn off – mutation Turn off – mutation Get temperature and fan setting – accessing Get temperature and fan setting – accessing Set temperature and fan setting – mutation Set temperature and fan setting – mutation Build – construction Build – construction Debug – to stringing Debug – to stringing Attributes Attributes

28 28 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on – mutation Turn on – mutation Turn off – mutation Turn off – mutation Get temperature and fan setting – accessing Get temperature and fan setting – accessing Set temperature and fan setting – mutation Set temperature and fan setting – mutation Build – construction Build – construction Debug – to stringing Debug – to stringing Attributes Attributes

29 29 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on Turn on Turn off Turn off Get temperature and fan setting Get temperature and fan setting Set temperature and fan setting Set temperature and fan setting Build -- construction Build -- construction Debug Debug Attributes Attributes Power setting Power setting Fan setting Fan setting Temperature setting Temperature setting

30 30 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on Turn on Turn off Turn off Get temperature and fan setting Get temperature and fan setting Set temperature and fan setting Set temperature and fan setting Build -- construction Build -- construction Debug Debug Attributes Attributes Power setting Power setting Fan setting Fan setting Temperature setting – integer Temperature setting – integer

31 31 Design an air conditioner representation Context - Consumer Context - Consumer Behaviors Behaviors Turn on Turn on Turn off Turn off Get temperature and fan setting Get temperature and fan setting Set temperature and fan setting Set temperature and fan setting Build -- construction Build -- construction Debug Debug Attributes Attributes Power setting – binary Power setting – binary Fan setting – binary Fan setting – binary Temperature setting – integer Temperature setting – integer

32 32 Ugh…

33 33 Design an air conditioner representation // Represent an air conditioner – from consumer view point public class AirConditioner { // instance variables // constructors // methods } Source AirConditioner.java Source AirConditioner.javaAirConditioner.java

34 34 Static variables and constants // shared resource for all AirConditioner objects static public final int OFF = 0; Static public final int ON = 1; static public final int LOW = 0; Static public final int HIGH = 1; static public final int DEFAULT_TEMP = 72; Every object in the class has access to the same static variables and constants Every object in the class has access to the same static variables and constants A change to a static variable is visible to all of the objects in the class A change to a static variable is visible to all of the objects in the class Examples StaticDemo.java and DemoStatic.java Examples StaticDemo.java and DemoStatic.javaStaticDemo.javaDemoStatic.javaStaticDemo.javaDemoStatic.java

35 35 Instance variables // individual object attributes int powerSetting; int fanSetting; int temperatureSetting; Instance variables are always initialized as soon the object comes into existence Instance variables are always initialized as soon the object comes into existence If no value is specified If no value is specified 0 used for numeric variables 0 used for numeric variables false used for logical variables false used for logical variables null used for object variables null used for object variables Examples InitializeDemo.java Examples InitializeDemo.javaInitializeDemo.java

36 36 Constructors // AirConditioner(): default constructor public AirConditioner() { this.powerSetting = AirConditioner.OFF; this.fanSetting = AirConditioner.LOW; this.temperatureSetting = AirConditioner.DEFAULT_TEMP; } // AirConditioner(): specific constructor public AirConditioner(int myPower, int myFan, int myTemp) { this.powerSetting = myPower; this.fanSetting = myFan; this.temperatureSetting = myTemp; } Example AirConditionerConstruction.java Example AirConditionerConstruction.javaAirConditionerConstruction.java

37 37 Simple mutators // turnOn(): set the power setting to on public void turnOn() { this.powerSetting = AirConditioner.ON; } // turnOff(): set the power setting to off public void turnOff() { this.powerSetting = AirConditioner.OFF; } Example TurnDemo.java Example TurnDemo.javaTurnDemo.java

38 38 Simple accessors // getPowerStatus(): report the power setting public int getPowerStatus() { return this.powerSetting; } // getFanStatus(): report the fan setting public int getFanStatus() { return this.fanSetting; } // getTemperatureStatus(): report the temperature setting public int getTemperatureStatus () { return this.temperatureSetting; } Example AirConditionerAccessors.java Example AirConditionerAccessors.javaAirConditionerAccessors.java

39 39 Parametric mutators // setPower(): set the power setting as indicated public void setPower(int desiredSetting) { this.powerSetting = desiredSetting; } // setFan(): set the fan setting as indicated public void setFan(int desiredSetting) { this.fanSetting = desiredSetting; } // setTemperature(): set the temperature setting as indicated public void setTemperature(int desiredSetting) { this.temperatureSetting = desiredSetting; } Example AirConditionerSetMutation.java Example AirConditionerSetMutation.javaAirConditionerSetMutation.java

40 40 Facilitator toString() // toString(): produce a String representation of the object public String toString() { String result = "[ power: " + this.powerSetting + ", fan: " + this.fanSetting + ", fan: " + this.fanSetting + ", temperature: " + this.temperatureSetting + ", temperature: " + this.temperatureSetting + " ] "; + " ] "; return result; }

41 41 Sneak peek facilitator toString() public String toString() { String result = "[ power: " ; if ( this.powerSetting == AirConditioner.OFF ) { result = result + "OFF"; } else { result = result + "ON " ; } result = result + ", fan: "; if ( this.fanSetting == AirConditioner.LOW ) { result = result + "LOW "; } else { result = result + "HIGH"; } result = result + ", temperature: " + this.temperatureSetting + " ]"; return result; }

42 42 What computers were made for NASA’s WorldWind NASA’s WorldWind NASA’s WorldWind NASA’s WorldWind See http://learn.arc.nasa.gov/worldwind/ See http://learn.arc.nasa.gov/worldwind/


Download ppt "1 Even even more on being classy Aaron Bloomfield CS 101-E Chapter 4+"

Similar presentations


Ads by Google