330 likes | 574 Views
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.
E N D
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
Objects you use • Scanner • Random nextDouble ABC System.in next nextInt
Class blueprint Instance • Scanner x = new Scanner(System.in) • int y = x.nextInt; Scanner Class x nextDouble nextDouble Input &Type nextInt System.in 1223 next nextInt next
People class People Class mary moveArm moveArm brown green 11 blink say hair color eye color arm length blink say carrie moveArm blond blue 5 blink say
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 - this public void setEyeColor(String colorin) { this.eyeColor = colorin; } mary moveArm carrie brown green 11 moveArm blink say blond blue 5 blink say
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 getx x y setxy gety getDistance
Step 1: Class with Variables Create a class called point Create 2 class instance variables int x int y public 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: setxy Input: int for x, int for y Output: none Requires 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: getx Input: none Output: 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: getDistance Input: another point Output: double representing distance Requires class instance: Yes Process:
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)); }
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 Player Class mary moveMan moveMan setName location name score getLoc setName 30 mary 100 getLoc reportWin setLoc carrie reportWin setLoc moveMan setName 40 carrie 30 getLoc reportWin setLoc
exercise – make a player • Make a player that knows its own • location - int • name - String • score - int Player Class moveMan setName location name score getLoc reportWin setLoc
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 Player Class moveMan setName location name score getLoc reportWin setLoc
Player class public 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 class public 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 constructor public 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); yourPoint myPoint getx getx 4 5 setxy gety 1 3 setxy gety getDistance 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. • The first line of a constructor must either be a call on another constructor in the same class (using this), or a call on the superclass constructor (using super). If the first line is neither of these, the compiler automatically inserts a call to the parameterless super class constructor. • These differences in syntax between a constructor and method are sometimes hard to see when looking at the source. It would have been better to have had a keyword to clearly mark constructors as some languages do. 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