Post on 06-Jan-2018
description
transcript
Review Creating Objects
Peppermany references from
http://journals.ecs.soton.ac.uk/java/tutorial/java/objects/object.html
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 methodspublic 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
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())); }}
PointUsepublic 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
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;}}
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
What is wrong with this code
public class usePoint {public static void main(){Point myPoint1;Point myPoint2;System.out.println(myPoint1.getX());System.out.println(myPoint1.getDistance(myPoint2));}}
Summary So Far2• Classes as Blueprints vs Instances
– Variable of a class type – hold instance– Create instances with new Class () – default– Create instances with new Class (cons parms)
• Behavior – methods– placement: same as other methods, not static– access: instance.method– Special method: constructor
• State – instance variables – placement: in class; outside method; – access: this.– scope: throughout class