Title: Lecture%206%20Methods%20and%20Classes
1IAT 800
- Lecture 6 Methods and Classes
2Today
- A few good programming practices
- Methods
- Classes
- Rockets, asteroids
- Subclasses
- Methods that return values
- BImage
3Good Practices
- Comments are your friend!
- Put a block of commenting at the top of each
program that explains what it does - Comment in code what a section will do
- Comment when you appropriate code!!
- Auto-format is also your friend!!
- Your programs will have at least three sections
- Variable declaration
- setup()
- draw()
4Methods
- Methods, also known as
- Functions (methods which return something)
- Procedures (methods which dont return stuff)
- Method declaration
-
- Method call
void vendingMachine( int coinCents )
println("You inserted "coinCents" cents.")
int quarter 25vendingMachine(quarter)
5Methods
- Method declaration
-
- The method declaration is like a blueprint
- Doesn't matter if declaration is before or after
call! - Parameter name (e.g. coinCents) is just the name
given to data passed into the method
parameter
void vendingMachine( int coinCents )
println("You inserted "coinCents" cents.")
6Methods
- Method call
- vendingMachine(quarter) vendingMachine(25)
- Method call must occur in either setup(), draw(),
or another method - You can call it as many times as you like!
- vendingMachine()s for everyone!!
argument
int quarter 25vendingMachine(quarter)
7Classes
- Types
- Primitives int, float, char, boolean
- Objects array, string, class
8Objects
- Weve worked with some objects before, like
Arrays. - We can make our own objects, to keep related data
together, with methods to control that data.
9Classes
- Classes are the blueprints for our new objects.
- To declare a new Class (a new type of object)
class MyToy // fields (class variables)
// methods (class functions)
10Fields and Methods
class MySquare int xPos, yPos
MySquare(x, y) xPos x yPos y
void drawMe() rect(xPos, yPos, 50, 50)
fields
x
y
constructor
drawMe()
(one kind of method)
methods
11Fields and Methods
class MySquare int xPos, yPos
MySquare(x, y) xPos x yPos y
void drawMe() rect(xPos, yPos, 50, 50)
10
10
20
90
drawMe()
drawMe()
square1
square2
MySquare square1 new MySquare(10, 10) MySquare
square2 new MySquare(20, 90)
12Fields and Methods
class MySquare int xPos, yPos
MySquare(int x, int y) xPos x yPos y
void drawMe() rect(xPos, yPos, 50, 50)
MySquare square1 new MySquare(10, 10) MySquare
square2 new MySquare(20, 90)
square1.drawMe() square2.drawMe()
13Arrays of Objects?
- Lets make a bunch of squares!
MySquare squares new MySquare 10 //
initialize all of our squares. for (int i 0 i
lt 10 i ) squaresi new MySquare(i10,
i10) squares4.drawMe() // draw the 4th
square.
14Asteroids
- Lets adapt this to make an array of Asteroids
for our rocket from lecture 4
class Asteroid //fields float rotation
0 float xPos, yPos float velocityX,
velocityY long lastDrawMillis 0
15Asteroids
- When we create an asteroid, lets have it start
in a random position, and move in a random
direction.
class Asteroid // constructor
Asteroid() xPos random(0, 400) yPos
random(0, 400) rotation random(0,
TWO_PI) velocityX sin(rotation)10 velocityY
-cos(rotation)10
16Asteroids
class Asteroid // draw method void
drawMe()
17Revisit our example
- So far we have a rocket that flies around in a
field of asteroids - What if we want our rocket to be able to fire
- But we dont want to get rid of our non-firing
rocket - Create a subclass!
18Inheritance
- Subclasses inherit fields and methods from parent
- class ArmedRocket extends Rocket
-
19Our subclass needs a constructor
- Our empty ArmedRocket example creates an error
- Processing doesnt know how to construct an
ArmedRocket - We want the ArmedRocket constructor to do the
same work as the Rocket constructor - ArmedRocket(int initialX, int initialY, float
initialRot) - super(initialX, initialY, initialRot)
-
- The keyword super means to refer to the parent
class. - In this case, to call the Parent Class Constructor
20Now we have ArmedRocket
- We can use an ArmedRocket now in our example
- But, its basically just a copy of Rocket
- The only reason to define an ArmedRocket is to
add new capabilities or to override old ones
21Add a fire() method
- We want our fire method to draw a missile that
shoots out of the rocket - We could have the fire method draw the missile
- Is there a problem with this?
22Missiles should also be objects
- The object oriented solution is to make the
missile an object as well - All the different types of things in our domain
should have a corresponding class - Like asteroids and rockets, the missile class
should know how to draw itself - A Missile is similar to a rocket (position,
rotation, draw method, etc.) - Now our ArmedRocket.fire() method can just create
and return a missile
23The fire() method
- Missile fire()
-
- Missile m new Missile(xPos, yPos,
rotation) - return m
-
- Now add code in loop to draw missiles
24Using the keyPressed() method
- keyPressed() is a built in Processing method that
is called when a key is pressed