Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Classes, Objects, Fields,

Slides:



Advertisements
Similar presentations
1 Arrays An array is a special kind of object that is used to store a collection of data. The data stored in an array must all be of the same type, whether.
Advertisements

MiniDraw Testing COMP 102 # T1
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Creating and using Objects.
Lecture 9: More on objects, classes, strings discuss hw3 assign hw4 default values for variables scope of variables and shadowing null reference and NullPointerException.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Arrays COMP 102.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Designing with Methods COMP.
Defining Classes and Methods Chapter 4.1. Key Features of Objects An object has identity (it acts as a single whole). An object has state (it has various.
Java Unit 9: Arrays Declaring and Processing Arrays.
David Streader Computer Science Victoria University of Wellington Copyright: David Streader, Victoria University of Wellington Objects Real and Java COMP.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Java Programs COMP 102 #3.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Review COMP 102 #
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Arrays COMP 102 # T1.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Conditionals.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Summary and Exam COMP 102.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Create Objects,
©Xiaoying Gao, Peter Andreae First Java Program COMP 102 #2 2014T2 Xiaoying Sharon Gao Computer Science Victoria University of Wellington.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Methods with Parameters COMP.
By Nicholas Policelli An Introduction to Java. Basic Program Structure public class ClassName { public static void main(String[] args) { program statements.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 2.
David Streader Computer Science Victoria University of Wellington Copyright: David Streader, Victoria University of Wellington Java Programing Basics COMP.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Call a Method,
David Streader Computer Science Victoria University of Wellington Copyright: David Streader, Victoria University of Wellington Java Programing Basics COMP.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Patterns with.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Methods with.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington 2D arrays COMP 102 # T1.
Using Data Within a Program Chapter 2.  Classes  Methods  Statements  Modifiers  Identifiers.
Methods in Java. Program Modules in Java  Java programs are written by combining new methods and classes with predefined methods in the Java Application.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Methods with Parameters COMP.
CSC1401 Classes - 1. Learning Goals Computing concepts Identifying objects and classes Declaring a class Declaring fields Default field values.
David Streader & Peter Andreae Computer Science Victoria University of Wellington Copyright: David Streader, Victoria University of Wellington Objects.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Event-driven Input COMP 102.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Conditionals.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington “For each” & Patterns with.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Designing with Methods COMP.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Exercise, printf,
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington More Event-driven Input TextFields,
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Recursion COMP 102 # T1.
CMSC 150 CLASSES CS 150: Mon 6 Feb 2012 Images: Library of Congress.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Types and Interfaces COMP.
Objects and Classes Mostafa Abdallah
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Loops and Input COMP 102 #
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Designing with Classes and.
Using Objects. 6/28/2004 Copyright 2004, by the authors of these slides, and Ateneo de Manila University. All rights reserved L7: Objects Slide 2 Java.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Fields, Constructors.
Xiaoying Gao Computer Science Victoria University of Wellington Copyright: Xiaoying Gao, Peter Andreae, Victoria University of Wellington Methods with.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Types and Interfaces COMP.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Methods Calling Methods Return.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington 2D arrays COMP 102 # T1.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Designing with Classes and.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Java Programs COMP 102 #3.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington ArrayLists: varying size arrays.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Methods with Parameters COMP.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Event-driven Input COMP 102.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Summary and Exam COMP 102.
Objects and Classes Start on Slide 30 for day 2 Java Methods A & AB Object-Oriented Programming and Data Structures Maria Litvin ● Gary Litvin Much of.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington ArrayLists: varying size arrays.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Programs with Choice Booleans,
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Creating and using Objects.
© Peter Andreae Java Programs COMP 102 # T1 Peter Andreae Computer Science Victoria University of Wellington.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Arrays COMP 102 # T1.
David Streader Computer Science Victoria University of Wellington Copyright: David Streader, Victoria University of Wellington Java Programing Basics COMP.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington More Event-driven Input COMP.
Fields, Constructors COMP 102 # T2
Program with two classes COMP 102 # T2
Where have we been? Statements, (to specify instructions):
Lecture 11 C Parameters Richard Gesick.
Java Programming Language
LCC 6310 Computation as an Expressive Medium
References Revisted (Ch 5)
Presentation transcript:

Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Classes, Objects, Fields, Constructors COMP 102 #16 & #

© Peter Andreae COMP :2 Menu Classes and Objects:Chapters 3.1, defining objects fields: constructors Admin: Tests are marked; marks currently being entered Pick up Tests after lecture tomorrow, OR from school office (CO358) times: Tue-Thu 9 - 4, Fri 1 - 4

© Peter Andreae COMP :3 Why objects? A program has a collection of classes Each class has a collection of methods HouseDrawer class had several methods: public void drawStreet(double n) public void drawHouse(double x, double y, double size) public void drawWindow(double x, double y, double wd) Why do you have to create a HouseDrawer object before you can call these methods on it? Why do you have to call the method on an object? What is the object for? ?

© Peter Andreae COMP :4 Classes and Objects A class is a description of a type of object. includes descriptions of methods you can call on this kind of object Some kinds of objects we have used: UIScanner println… ask… next… next, nextInt, hasNext,… draw… fill… clear… StringFile length( ), substring… exists… CartoonFigureFlower walk, lookLeft, smile … grow, bloom, pick … What else did the objects need? Information/Data, specifying the state of the object. Stored in fields of the object

© Peter Andreae COMP :5 CartoonStrip program Java Program with 2D cartoon objects Uses CartoonFigure objects: Methods: public void lookLeft( ) public void lookRight( ) public void smile( ) public void frown( ) public void walk(double distance) public void speak(String msg) public void think(String msg) Information a Cartoonfigure object must store: its images its size its state (position, direction, emotion)

© Peter Andreae COMP :6 CartoonStory Program public class CartoonStrip{ public void animate( ){ CartoonFigure cf1 = new CartoonFigure(150, 100, “green”); cf1.lookRight; cf1.lookLeft( ); cf1.frown( ) cf1.speak("Is anyone here?"); CartoonFigure cf2 = new CartoonFigure(300, 100, “blue”); cf2.smile( ); cf2.lookLeft( ) ; cf2.speak("Hello"); cf1.lookRight( ); cf1.smile( ); cf1.speak("Hi there, I'm Jim"); cf2.speak("I'm Jan"); } Two different objects of the same type

© Peter Andreae COMP :7 Defining a class of objects CartoonFigure is not part of the Java libraries ⇒ have to define the class Need to define: methods: specify the actions the objects can do fields: for storing the information about the state of each object constructor: specifies how to make a new CartoonFigure object

© Peter Andreae COMP :8 CartoonFigure: methods public class CartoonFigure { public void lookLeft( ) {public void lookRight( ) {// erase figure // change direction // redraw figure} public void frown( ) {public void smile( ) { // erase figure // change emotion // redraw figure } public void walk(double dist) {public void speak(String msg) { // erase figure // draw msg in bubble // change position // wait // redraw figure // erase msg }

© Peter Andreae COMP :9 CartoonFigure: wishful methods public class CartoonFigure { public void lookLeft( ) {public void lookRight( ) { this.erase( );this.erase( ); // change direction this.draw( );this.draw( );} public void frown( ) {public void smile( ) { this.erase( ); // change emotion this.draw( ); } public void walk(double dist) {public void speak(String msg) { this.erase( ); // draw msg in bubble // change position// wait this.draw( );// erase msg } public void erase( ) {public void draw( ) {???

© Peter Andreae COMP :10 CartoonFigure: draw public void draw( ) { // work out which image to use (eg, “green/right-smile.png”) // draw the image on the graphics pane // wait a bit } public void draw( ) { String filename = baseImgNm+"/"+direction+"-"+emotion+".png" ; UI.drawImage(filename, figX, figY, wd, ht); UI.sleep(500); // wait 500 mS } But where are those variables defined? Where do they get their values?

© Peter Andreae COMP :11 Remembering state Each CartoonFigure must remember: its state: position emotion direction the set of image files that it is using. its size Can’t be stored in local variables in a method local variables are “lost” when the method finishes. Have to be stored in the Object itself ⇒ fields values that may change over time

© Peter Andreae COMP :12 CartoonFigure Objects Objects need Fields to store values – places inside the object Objects are like filing cards CartoonFigure-24 figX:. figY:. wd:. ht:. emotion: “ ” direction: “ ” baseImgNm: “ ” CartoonFigure-27 figX:. figY:. wd:. ht:. emotion: “ ” direction: “ ” baseImgNm: “ ”

© Peter Andreae COMP :13 Using fields: A method can refer to a field of the object it was called on: this. fieldname eg: public void lookLeft( ) { this.erase( ) ; this.direction = “left”; this.draw( ) ; } public void draw( ) { String filename = this.baseImgNm + ”/” + this.direction + “-” + this.emotion + “.png” ; UI.drawImage(filename, this.figX, this.figY, this.wd, this.ht); UIsleep(500); // wait 500 mS } Object the method was called on note: fields have no ( … ) !!

© Peter Andreae COMP :14 “ left ” Using fields: : cf1. lookLeft( ); cf1. walk(20); : public void lookLeft( ) { this.erase( ) ; this.direction = “left”; this.draw( ) ; } this: CartoonFigure- CartoonFigure-24 figX: wd: figY: ht: emotion:baseImgNm: direction: “ smile ” “ right ” “ green ” cf1: CartoonFigure-24 Method Object ID of Object

© Peter Andreae COMP :15 Using fields: public void draw( ) { String filename = this. baseImgNm + ”/” + this.direction + “-” + this.emotion + “.png” ; UI.drawImage(filename, this.figX, this.figY, this.wd, this.ht); UI.sleep(500); } this: CartoonFigure- “ ” CartoonFigure-24 figX: wd: figY: ht: emotion:baseImgNm: direction: “ smile ” “ left ” “ green ” Method Object

© Peter Andreae COMP :16 “ left ” Using fields: : cfg1. lookLeft( ); cfg1. walk(20); : public void lookLeft( ) { this.erase( ) ; this.direction = “left”; this.draw( ) ; } this: CartoonFigure- CartoonFigure-24 figX: wd: figY: ht: emotion:baseImgNm: direction: “ smile ” “ green ” cfg1: CartoonFigure-24 Object ID of Object

© Peter Andreae COMP :17 Using fields: cfg1.lookLeft( ); cfg1.walk(20); : public void walk (double dist) { this.erase( ) ; if ( this.direction.equals(“right”) { this.figX = this.figX + dist ; } else { this.figX = this.figX – dist ; } this.draw( ) ; } this: CartoonFigure- CartoonFigure-24 figX: wd: figY: ht: emotion:baseImgNm: direction: “ smile ” “ left ” “ green ” cfg1: CartoonFigure-24

© Peter Andreae COMP :18 Objects and Classes Classes define objects: Fields: places in an object that store the information associated with the object methods can refer to fields of the object they were called on: this.fieldname How do you set up the fields? Methods: can be called on any object of the class Constructors:specify how to set up an object when it is first created. How do you define a constructor?

© Peter Andreae COMP :19 Setting up an object How do we declare the Fields of an object? Declared in the class (not inside a method) Must specify the type and the name (just like local variables in methods) Can specify an initial value (but you don’t have to!) if not, automatically initialised with 0 or null (unlike local variables) Have a visibility specifier (“private”) Fields remain indefinitely (unlike local variables) The set of field declarations is a template for the object (just like a method is a template for a worksheet).

© Peter Andreae COMP :20 Syntax of Field declarations: public class CartoonFigure { // fields private double figX;// current position of figure private double figY; private String direction = "right";// current direction it is facing private String emotion = "smiling";// current emotion private String baseImgNm;// base name of images private double wd = 40;// dimensions of figure private double ht=80; // methods ……. field name expression = ;private type Like variables, BUT (a) NOT inside a method (b) have private in front

© Peter Andreae COMP :21 Setting up an object How do you initialise the values in the fields? Can specify an initial value in the field declaration but only if every object should start with the same value!!! Must have a way of setting up different objects when you create them: Constructor: specifies what happens when you make a new object (eg, evaluate the expression new CartoonFigure(150, 100, “green”) Like a method but some differences Has parameters that can be used to set up the new object.

© Peter Andreae COMP :22 CartoonFigure class public class CartoonFigure { // fields private double figX, figY; // current position of figure private String direction = "right";// current direction it is facing private String emotion = "smile";// current emotion private String baseImgNm;// folder where images stored private double wd = 40, ht=80;// dimensions // constructor public CartoonFigure(double x, double y, String base){ this.baseImgNm = base; this.figX = x; this.figY = y; this.draw(); } // methods ……. public void lookLeft() { this.erase(); ….. Shorthand for declaring two fields (or variables) of the same type Name of the class, instead of return type and method name

© Peter Andreae COMP :23 public class nametype (){ statement } parameter name, public CartoonFigure(String base, double x, double y){ this.baseImgNm = base; this.figX = x; this.figY = y; this.draw(); } Syntax of Constructors

© Peter Andreae COMP :24 Defining a Constructor Part of the class Like a method, but called with new Does not have a return type (new always returns an object of the given type) this will hold the new object that is being constructed Constructor typically fills in initial values of fields may set up the user interface, if there is one. may call other methods on the object, can do anything an ordinary method can do. Constructors

© Peter Andreae COMP :25 What happens with new ? When an object is created eg new CartoonFigure(100, 200, "yellow"); New chunk of memory is allocated (new filing card). Reference (ID) to object is constructed CartoonFigure-24 Any initial values specified in the field declarations are assigned to the fields. If no initial value, default values: 0 for fields of a number type (int, double, etc) false for for boolean fields null for fields of an object type (String, Scanner, Car, …) The arguments are passed to the constructor The actions specified in the constructor are performed on the object. The reference is returned as the value of the constructor. CartoonFigure-24 figX: figY: emotion: direction: baseImgNm : wd: ht: “ smile ” “ right ” “ yellow ” null 0 0

© Peter Andreae COMP :26 The whole Program public class CartoonStrip{ public void playStory(){ CartoonFigure cf1 = new CartoonFigure(150, 100, “green”); cf1.lookLeft(); cf1.lookRight(); cf1.frown() cf1.speak("Is anyone here?"); CartoonFigure cf2 = new CartoonFigure(300, 100, “blue”); cf2.speak("Hello"); cf2.lookLeft() ; cf1.smile(); cf1.speak("Hi there, I'm Jim"); cf2.speak("I'm Jan"); } public static void main(String[ ] args){ CartoonStrip cs = new CartoonStrip(); cs.playStory(); } Note the main method ⇒ don't need BlueJ Simple class: - no fields - no constructor - just methods

© Peter Andreae COMP :27 CartoonFigure: fields & constructor public class CartoonFigure { // fields private double figX; // current position of figure private double figY; private String direction = "right";// current direction it is facing private String emotion = "smile";// current emotion private String baseImgNm;// base name of image set private double wd = 40;// dimensions private double ht=80; // constructor public CartoonFigure(double x, double y, String base){ this.baseImgNm = base; this.figX = x; this.figY = y; this.draw(); }

© Peter Andreae COMP :28 CartoonFigure: methods public void lookLeft() {public void lookRight() { this.erase();this.erase(); this.direction = "left"; this.direction = "right"; this.draw();this.draw();} public void frown() {public void smile() { this.erase(); this.emotion = "frown"; this.emotion = "smile"; this.draw(); } public void walk(double dist) { this.erase(); if ( this.direction.equals(“right”) { this.figX = this.figX + dist ; } else { this.figX = this.figX – dist ; }

© Peter Andreae COMP :29 CartoonFigure: methods public void speak(String msg) { double bubX =… UI.drawOval(bubX, bubY, bubWd, bubHt); UI.drawString(msg, bubX+9, bubY+bubHt/2+3); UI.sleep(500); UI.eraseRect(bubX, bubY, bubWd, bubHt); } public void erase() { UI.eraseRect(this.figX, this.figY, this.wd, this.ht); } public void draw() { String filename = this. baseImgNm +"/"+this.direction+"-"+ this.emotion+“.png” ; UI.drawImage(filename, this.figX, this.figY, this.wd, this.ht); UI.sleep(500); }

© Peter Andreae COMP :30 Running the program: main > java CartoonStory or call main on the class from BlueJ public static void main(String[ ] args){ CartoonStory cs = new CartoonStory(); cs.playStory(); cs: CartoonStory-3 CartoonStory-3 Very simple object! - no fields - no constructor

© Peter Andreae COMP :31 CartoonStory Program: playStory public void playStory(){ CartoonFigure cf1 = new CartoonFigure(150, 100, “green”); cf1.lookLeft(); cf1.lookRight(); cf1.frown() cf1.speak("Is anyone here?"); CartoonFigure cf2 = new CartoonFigure(300, 100, “blue”); cf2.speak("Hello"); cf2.lookLeft() ; cf1.smile(); cf1.speak("Hi there, I'm Jim"); cf2.speak("I'm Jan"); cf1: CartoonFigure-24 cf2: CartoonFigure- this: CartoonStory-3 CartoonFigure-24 figX:wd: figY:ht: emotion: direction: baseImgNm : “ smile ” “ right ” “ green ” Is anyone here?

© Peter Andreae COMP :32 CartoonStory Program: playStory public void playStory(){ CartoonFigure cf1 = new CartoonFigure(150, 100, “green”); cf1.lookLeft(); cf1.lookRight(); cf1.frown() cf1.speak("Is anyone here?"); CartoonFigure cf2 = new CartoonFigure(300, 100, “blue”); cf2.speak("Hello"); cf2.lookLeft() ; cf1.smile(); cf1.speak("Hi there, I'm Jim"); cf2.speak("I'm Jan"); cf1: CartoonFigure-24 cf2: CartoonFigure-27 this: CartoonStory-3 CartoonFigure-27 figX: wd: figY: ht: emotion: direction: baseImgNm : “ smile ” “ right ” “ blue ” Hello

© Peter Andreae COMP :33 Keeping track of Multiple objects : cf2.lookLeft() ; cf1.smile(); : public void lookLeft() { this.erase() ; this.direction = “left”; this.draw() ; } this: CartoonFigure- CartoonFigure-24 figX: wd: figY: ht: emotion: direction: baseImgNm : “ frown ” “ right ” “ blue ” CartoonFigure-27 figX: wd: figY: ht: emotion: direction: baseImgNm : “ smile ” “ right ” “ blue ” cf1: CartoonFigure-24 cf2: CartoonFigure-27

© Peter Andreae COMP :34 Keeping track of Multiple objects : cf2.lookLeft() ; cf1.smile(); : public void smile() { this.erase() ; this.emotion = “smile”; this.draw() ; } this: CartoonFigure- CartoonFigure-24 figX: wd: figY: ht: emotion: direction: baseImgNm : “ frown ” “ right ” “ blue ” CartoonFigure-27 figX: wd: figY: ht: emotion: direction: baseImgNm : “ smile ” “ left ” “ blue ” cf1: CartoonFigure-24 cf2: CartoonFigure-27