objects
DESCRIPTION
Objects. Pepper many references from http://journals.ecs.soton.ac.uk/java/tutorial/java/objects/object.html. Objects. Look around you and see objects – desk, people, blackboard, pen, eraser State – hair color, eye color, name, arm length, mouth expression Behavior – move arm; speak; see. - PowerPoint PPT PresentationTRANSCRIPT
Objects
Peppermany references from
http://journals.ecs.soton.ac.uk/java/tutorial/java/objects/object.html
Objects
• Look around you and see objects – desk, people, blackboard, pen, eraser
• State – hair color, eye color, name, arm length, mouth expression
• Behavior – move arm; speak; see
variables and methods
Bicycle object
Objects you use
• Scanner
• Random
ABC System.in
nextInt
nextDouble
next
Class blueprint Instance
• Scanner x = new Scanner(System.in)
• int y = x.nextInt;
nextInt
nextDouble
next
Scanner Class
System.in 1223
nextInt
nextDouble
next
x
Input &Type
People class
say
moveArm
blink
People Class
mary
hair coloreye colorarm length
say
moveArm
blinkbrowngreen11
carrie
say
moveArm
blinkblondblue5
Creating a blueprint
• Add instance variables inside class and outside methods
public class Student{
private String hairColor;private String eyeColor;private int armLength;
/**}
Creating a blueprint
• remove static from methods
public void printPerson (){
System.out.println ("The eye color is "+ eyeColor + " and the hair color is " + hairColor);
}
Use the blueprint
Student mary = new Student();
Student carrie = new Student();
mary.setEyeColor("green");
mary.setHairColor("brown");
carrie.setEyeColor("blue");
carrie.setHairColor("blonde");
Look at the class again - thispublic void setEyeColor(String colorin) { this.eyeColor = colorin; }
mary
say
moveArm
blinkbrowngreen11
carrie
say
moveArm
blinkblondblue5
Exercise – make a point class
• setxy – take in 2 int to set x and y
• getx – return x• gety – return y• getDistance – take in
1 point and return distance to it
Point
gety
getx
setxyxy
getDistance 2122
12 yyxx
Step 1: Class with Variables
Create a class called point
Create 2 class instance variables
int x
int ypublic class Point{ int x; int y;}(Note, you can create int x = 1; if you want 1 to be the default value when the Point is created.
2: Create a method to set x, y
Method name: setxyInput: int for x, int for yOutput: noneRequires class instance: Yes
public void setxy (int xIn, int yIn) { this.x = xIn; this.y = yIn;}
3: Create a method to get the x
Method name: getxInput: noneOutput: int (the x value of the point)Requires class instance: Yes
public int getx() { return this.x;}
public int gety() { return this.y;}
4: Create a method to get Distance
Method name: getDistanceInput: another pointOutput: double representing distanceRequires class instance: YesProcess:
2122
12 yyxx
4: Create a method to get Distance
public double getDistance(Point another) { int x1 = another.getx(); int y1 = another.gety();
return Math.sqrt((this.x-x1) * (this.x-x1) + (this.y-y1) * (this.y-y1)); }
2122
12 yyxx
Make a point public class Point{ int x; int y; public void setxy (int xIn, int yIn) { this.x = xIn; this.y = yIn;} public int getx() { return this.x;} public int gety() { return this.y;} public double getDistance(Point another) { return Math.sqrt((this.x-another.getx()) * (this.x-another.getx()) + (this.y-another.gety()) * (this.y-another.gety())); }}
Use your point class
• create 2 points
• print the distance between them
PointUse
public class PointUse{ public static void main() { Point one = new Point(); Point two = new Point(); one.setxy(1,2); two.setxy(4,6); System.out.println(one.getDistance(two)); }}
Player class
setName
moveMan
getLoc
Player Class
locationnamescore
setLoc reportWin
setName
moveMan
getLoc
mary
30mary100
setLoc reportWin
setName
moveMan
getLoc
carrie
40carrie30
setLoc reportWin
exercise – make a player
• Make a player that knows its own – location - int– name - String– score - int
setName
moveMan
getLoc
Player Class
locationnamescore
setLoc reportWin
Teach that player how to do things
• setName – take a string to change name• setLoc – take an int to change location• getLoc – return its loc• reportWin – print win if > 30• moveMan – take in int - amount to move; int - current loc ; return new loc
setName
moveMan
getLoc
Player Class
locationnamescore
setLoc reportWin
Player classpublic class Player{
int location; String name; int score;
public void setName(String namein){ this.name = namein;}public void setLoc(int locin){ this.location = locin;}public int setLoc(){ return this.location; }public boolean reportWin(){if (this.location > 30) { System.out.println(name + " won."); return true;} else {return false;}} public int moveMan(int move){ this.location = this.location+move; return this.location;}}
Exercise continued - Make a game class
• Main method
• Create 2 players
• Tell players their names
• Tell players to start on 0
• Tell players to move some amounts
• Ask each player if it won
Game classpublic class Game1{ public static void main() { Player player1 = new Player(); Player player2 = new Player(); player1.setLoc(0); player2.setLoc(0); player1.setName("mary"); player2.setName("carrie"); player1.moveMan(15); player2.moveMan(13); player1.moveMan(12); player2.moveMan(20); player1.reportWin(); player2.reportWin(); }}
Summary So Far• Classes as Blueprints vs Instances
– Variable of a class type – hold instance– Create instances with new Class ()
• Behavior – methods– placement: same as other methods, not static– access: instance.method
• State – instance variables – placement: in class; outside method; – access: this.– scope: throughout class
Constructors
• Creates a new instance (a new object)
• Can take in parameters so the new object has information set inside it right away
• Special method– No return– Same name as the class
• Call it with "new" keyword
Point class constructorpublic class Point
{
int x;
int y;
//============ Constructor
public Point(int x, int y)
{ this.x = x;
this.y = y;
}
Use the Point Constructor
Point myPoint = new Point(1,3);
Point yourPoint = new Point(4,5);
myPoint
gety
getx
setxy13
getDistance
yourPoint
gety
getx
setxy45
getDistance
Constructors vs Methods• Differences between methods and constructors.
– There is no return type given in a constructor signature (header). The value is this object itself so there is no need to indicate a return value.
– There is no return statement in the body of the constructor.
http://www.leepoint.net/notes-java/oop/constructors/constructor.html
coming soon
• Class variables - shared variables among instances
• Class constants - variables that do not change for the class
http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html