Classes - PowerPoint PPT Presentation

About This Presentation
Title:

Classes

Description:

Represent a colored rectangle in a window ... Support the display of square window containing a blue filled-in rectangle. Window has side length of 200 pixels ... – PowerPoint PPT presentation

Number of Views:24
Avg rating:3.0/5.0
Slides: 54
Provided by: jimco60
Category:
Tags: classes | window

less

Transcript and Presenter's Notes

Title: Classes


1
Classes
  • CS 101-E
  • Chapter 4
  • Aaron Bloomfield

2
Announcements
  • HWs are being renumbered
  • J1, J2, etc., for Java programming assignments
  • C1, C2, etc., for CodeLab assignments
  • HW1 J1, HW2 C1, HW3 C2, etc.
  • HWs J2 and J3 assigned this Wednesday (6 Oct)
  • J2 due next Thursday (14 Oct)
  • J3 due following Thursday (21 Oct)
  • HW J4 will be assigned 18 Oct, and due 29 Oct
  • Some CodeLab HWs in there as well
  • Second midterm on 27 Oct
  • No labs this Sunday
  • Can go to another lab with permission
  • Lab quiz grades will be entered by the end of
    this week

3
Preparation
  • Scene so far has been background material and
    experience
  • Computing systems and problem solving
  • Variables
  • Types
  • Input and output
  • Expressions
  • Assignments
  • Objects
  • Standard classes and methods
  • Now Experience what Java is really about
  • Design and implement objects representing
    information and physical world objects

4
Object-oriented programming
  • Basis
  • Create and manipulate objects with attributes and
    behaviors that the programmer can specify
  • Mechanism
  • Classes
  • Benefits
  • An information type is design and implemented
    once
  • Reused as needed
  • No need reanalysis and re-justification of the
    representation

5
First class ColoredRectangle
  • Purpose
  • Represent a colored rectangle in a window
  • Introduce the basics of object design and
    implementation

6
Background
  • JFrame
  • Principal Java class for representing a titled,
    bordered graphical window.
  • Standard class
  • Part of the swing library
  • import javax.swing.

7
Some Java Swing components
8
Example
  • Consider
  • JFrame w1 new JFrame("Bigger")
  • JFrame w2 new JFrame("Smaller")
  • w1.setSize(200, 125)
  • w2.setSize(150, 100)
  • w1.setVisible(true)
  • w2.setVisible(true)
  • Consider
  • JFrame w1 new JFrame("Bigger")
  • JFrame w2 new JFrame("Smaller")
  • w1.setSize(200, 125)
  • w2.setSize(150, 100)
  • w1.setVisible(true)
  • w2.setVisible(true)
  • Consider
  • JFrame w1 new JFrame("Bigger")
  • JFrame w2 new JFrame("Smaller")
  • w1.setSize(200, 125)
  • w2.setSize(150, 100)
  • w1.setVisible(true)
  • w2.setVisible(true)

9
  • // Purpose Displays two different windows.
  • import javax.swing.
  • public class TwoWindows
  • // main() application entry point
  • public static void main (String args)
  • JFrame w1 new JFrame("Bigger")
  • JFrame w2 new JFrame("Smaller")
  • w1.setSize(200, 125)
  • w2.setSize(150, 100)
  • w1.setVisible(true)
  • w2.setVisible(true)

10
Class ColoredRectangle initial version
  • Purpose
  • Support the display of square window containing a
    blue filled-in rectangle
  • Window has side length of 200 pixels
  • Rectangle is 40 pixels wide and 20 pixels high
  • Upper left hand corner of rectangle is at (80,
    90)
  • Limitations are temporary
  • Remember BMI.java preceded BMICalculator.java
  • Lots of concepts to introduce

11
ColoredRectangle in action
  • Consider
  • 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
  • Consider
  • 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
  • Consider
  • 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
  • Consider
  • 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

12
  • // 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

13
ColoredRectangle.java outline
  • import javax.swing.
  • import java.awt.
  • public class ColoredRectangle
  • // instance variables for holding object
    attributes
  • private int width
  • private int height
  • private int x
  • private int y
  • private JFrame window
  • private Color color
  • // ColoredRectangle() default constructor
  • public ColoredRectangle() // ...
  • // paint() display the rectangle in its window
  • public void paint() // ...

14
Instance variables and attributes
  • Data field
  • Java term for an object attribute
  • Instance variable
  • Symbolic name for a data field
  • Usually has private access
  • Assists in information hiding by encapsulating
    the objects attributes
  • Default initialization
  • Numeric instance variables initialized to 0
  • Logical instance variables initialized to false
  • Object instance variables initialized to null

15
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() window new JFrame("Box
Fun") window.setSize(200, 200) width 40
x 80 height 20 y 90 color
Color.BLUE window.setVisible(true) //
paint() display the rectangle in its
window public void paint() Graphics g
window.getGraphics() g.setColor(color) g.fil
lRect(x, y, width, height)
16
ColoredRectangle default constructor
17
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() window new JFrame("Box
Fun") window.setSize(200, 200) width 40
x 80 height 20 y 90 color
Color.BLUE window.setVisible(true) //
paint() display the rectangle in its
window public void paint() Graphics g
window.getGraphics() g.setColor(color) g.fil
lRect(x, y, width, height)
18
Color constants
  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DARK_GRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LIGHT_GRAY
  • Color.MAGENTA
  • Color.ORANGE
  • Color.PINK
  • Color.RED
  • Color.WHITE
  • Color.YELLOW

19
r
ColoredRectangle r new ColoredRectangle()
20
Another possible Constructor
public class ColoredRectangle // instance
variables for holding object attributes private
int width 40 private int x 80 private
int height 80 private int y 90 private
JFrame window private Color color
Color.BLUE // ColoredRectangle() default
constructor public ColoredRectangle() window
new JFrame("Box Fun") window.setSize(200,
200) window.setVisible(true)
21
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() window new JFrame("Box
Fun") window.setSize(200, 200) width 40
x 80 height 20 y 90 color
Color.BLUE window.setVisible(true) //
paint() display the rectangle in its
window public void paint() Graphics g
window.getGraphics() g.setColor(color) g.fil
lRect(x, y, width, height)
22
Graphical context
  • Graphics
  • Defined in java.awt.Graphics
  • Represents the information for a rendering
    request
  • Color
  • Component
  • Font
  • Provides methods
  • Text drawing
  • Line drawing
  • Shape drawing
  • Rectangles
  • Ovals
  • Polygons

23
Java coordinate system
24
Method invocation
  • Consider
  • r1.paint() // display window associated with
    r1
  • r2.paint() // display window associated with r2
  • Observe
  • When an instance method is being executed, the
    attributes of the object associated with the
    invocation are accessed and manipulated
  • Important that you understand what object is
    being manipulated

25
Method invocation
public class
ColoredRectangle

// instance variables to describe object
attributes
...
// paint() display the rectangle in its window
public
void
paint()
window.setVisible(
true
)
Graphics g window.getGraphics()
g.setColor(color)
g.fillRect(x, y, width, height)

...

Typo in book p. 149 claims paint() is static
its not
26
The Ig Nobel Prizes
  • Medicine
  • Physics
  • Public Health
  • Chemistry
  • Engineering
  • Literature
  • Psychology
  • Economics
  • Peace
  • Biology

"The Effect of Country Music on Suicide. For
explaining the dynamics of hula-hooping Investigat
ing the scientific validity of the Five-Second
Rule The Coca-Cola Company of Great Britain For
the patent of the combover The American Nudist
Research Library Its easy to overlook things
even a man in a gorilla suit. The Vatican, for
outsourcing prayers to India The invention of
karaoke, thereby providing an entirely new way
for people to learn to tolerate each other For
showing that herrings apparently communicate by
farting
27
Wednesday, 6 October, 2004
  • Computing grades so far
  • HW J2 assigned today, due next Wednesday
  • Lab this week! Must be done by Sunday at 830
  • Sunday labs are cancelled due to fall break
  • If you want, send me an e-mail and you can show
    up to another lab session
  • No office hours Friday
  • Grades so far use formula
  • HISTORICALLY, the grade range has been
  • A 90, B 80-89, C 60-79, D/F lt60

28
Improving ColoredRectangle
  • Analysis
  • A ColoredRectangle object should
  • Be able to have any color
  • Be positionable anywhere within its window
  • Have no restrictions on its width and height
  • Accessible attributes
  • Updateable attributes

29
Improving ColoredRectangle
  • Additional constructions and behaviors
  • Specific construction
  • Construct a rectangle representation using
    supplied values for its attributes
  • Accessors
  • Supply the values of the attributes
  • Individual methods for providing the width,
    height, x-coordinate position, y-coordinate
    position, color, or window of the associated
    rectangle
  • Mutators
  • Manage requests for changing attributes
  • Ensure objects always have sensible values
  • Individual methods for setting the width, height,
    x-coordinate position, y-coordinate position,
    color, or window of the associated rectangle to a
    given value

30
A mutator method
  • Definition
  • // setWidth() width mutator
  • public void setWidth(int w)
  • width w
  • Usage

ColoredRectangle s new ColoredRectangle()
s.setWidth(80)
31
Mutator setWidth() evaluation
new
ColoredRectangle()
ColoredRectangle s
s
.setWidth(80)
32
A bit of humor
33
Java parameter passing
  • The value is copied to the method
  • Any changes to the parameter are forgotten when
    the method returns

34
Java parameter passing
  • Consider the following code
  • static void foobar (int y)
  • y 7
  • public static void main (String args)
  • int x 5
  • foobar (x)
  • System.out.println(x)
  • What gets printed?

formal parameter
actual parameter
35
Java parameter passing
  • Consider the following code
  • static void foobar (String y)
  • y 7
  • public static void main (String args)
  • String x 5
  • foobar (x)
  • System.out.println(x)
  • What gets printed?

formal parameter
actual parameter
36
Java parameter passing
  • Consider the following code
  • static void foobar (ColoredRectangle y)
  • y.setWidth (10)
  • public static void main (String args)
  • ColoredRectangle x new ColoredRectangle()
  • foobar (x)
  • System.out.println(y.getWidth())
  • What gets printed?

formal parameter
actual parameter
37
Java parameter passing
  • Consider the following code
  • static void foobar (ColoredRectangle y)
  • y new ColoredRectangle()
  • y.setWidth (10)
  • public static void main (String args)
  • ColoredRectangle x new ColoredRectangle()
  • foobar (x)
  • System.out.println(y.getWidth())
  • What gets printed?

formal parameter
actual parameter
38
Java parameter passing
  • The value of the actual parameter gets copied to
    the formal parameter
  • This is called pass-by-value
  • C/C is also pass-by-value
  • Other languages have other parameter passing
    types
  • Any changes to the formal parameter are forgotten
    when the method returns
  • However, if the parameter is a reference to an
    object, that object can be modified
  • Similar to how the object a final reference
    points to can be modified

39
Subtleties
  • Consider
  • ColoredRectangle r new ColoredRectangle()
  • r.paint()
  • r.setWidth(80)
  • r.paint()
  • What is the width is the rectangle on the screen
    after the mutator executes?

40
Other mutators
  • public void setHeight(int h)
  • height h
  • public void setX(int ulx)
  • x ulx
  • public void setY(int uly)
  • y uly
  • public void setWindow(JFrame f)
  • window f
  • public void setColor(Color c)
  • color c

41
(No Transcript)
42
Mutator usage
ColoredRectangle u
new
ColoredRectangle()
ColoredRectangle v
new
ColoredRectangle()
u.setHeight(100)
u.setColor(Color.PINK)
v.setX(25)
v.setY(50)
new JFrame("Fun")
JFrame display
v.setWindow(display)
43
Accessors
  • Properties
  • Do not require parameters
  • Each accessor execution produces a return value
  • Return value is the value of the invocation

public int
getWidth()
return
width

44
Accessor usage
new
ColoredRectangle t
ColoredRectangle()
int
w t
.getWidth()
public
class
ColoredRectangle
...
/
/
getWidth() accessor
public int
getWidth
(
)
return
width


...

45
Specific construction
  • public ColoredRectangle(int w, int h, int ulx,
    int uly, JFrame f, Color c)
  • setWidth(w)
  • setHeight(h)
  • setX(ulx)
  • setY(uly)
  • setWindow(f)
  • setColor(c)
  • Requires values for each of the attributes
  • JFrame display new JFrame("Even more fun")
  • display.setSize(400, 400)
  • ColoredRectangle w new ColoredRectangle(60, 80,
  • 20, 20, display, Color.YELLOW)

46
Specific construction
  • public ColoredRectangle(int w, int h, int ulx,
    int uly, JFrame f, Color c)
  • setWidth(w)
  • setHeight(h)
  • setX(ulx)
  • setY(uly)
  • setWindow(f)
  • setColor(c)
  • Advantages to using mutators
  • Readability
  • Less error prone
  • Facilitates enhancements through localization

47
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()

48
Seeing double
49
An optical illusion
50
Casting
  • Weve seen casting before
  • double d (double) 3
  • int x (int) d
  • Aside duplicating an object
  • String s foo
  • String t s.clone()
  • Causes an error inconvertible types
  • (Causes another error, but we will ignore that
    one)
  • What caused this?

51
Casting, take 2
  • .clone() returns an object of class Object (sic)
  • More confusion You can also have an object of
    class Class
  • Thus, you can have an Object class and a Class
    object
  • Got it?
  • We know its a String (as it cloned a String)
  • Thus, we need to tell Java its a String via
    casting
  • Revised code
  • String s foo
  • String t (String) s.clone()
  • Still causes that other error, but we are still
    willfully ignoring it

52
Casting, take 3
  • That other error is because String does not
    have a .clone() method
  • Not all classes do!
  • We just havent seen any classes that do have
    .clone() yet
  • Check in the documentation if the object you want
    to copy has a .clone() method
  • A class that does java.util.Vector
  • Vector s new Vector()
  • Vector t s.clone()
  • Vector u (Vector) s.clone()

Causes the inconvertible types error
53
Casting, take 4
  • What happens with the following code?
  • Vector v new Vector()
  • String s (String) v
  • Java will encounter a compile-time error
  • inconvertible types
  • What happens with the following code?
  • Vector v new Vector()
  • String s (String) v.clone()
  • Java will encounter a RUN-time error
  • ClassCastException
Write a Comment
User Comments (0)
About PowerShow.com