Download presentation
Presentation is loading. Please wait.
Published byHilary Porter Modified over 9 years ago
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/
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.