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