1/43 Andries van Dam  2015 09/15/15 Lecture 2 Calling and Defining Methods in Java.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

Lecture 2 Calling and Defining Methods in Java. Introduction ●Calling and defining methods ●Declaring and defining a class ●Instances of a class ●The.
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
Week 9: Methods 1.  We have written lots of code so far  It has all been inside of the main() method  What about a big program?  The main() method.
Intro to Robots Robots are Everywhere. Intro to Robots Various robots in use today lawnmower pet baby seal for convalescents gutter cleaner home security.
CS 201 Functions Debzani Deb.
© 2006 Pearson Education Making Objects 1 of 19 MAKING OBJECTS Views of a Class Defining Your Own Class Declaring Instance Variables Declaring Methods.
A tour around Java General introduction to aspects of the language (these will be covered in more detail later) After this tour you should have a general.
COMP 14: Primitive Data and Objects May 24, 2000 Nick Vallidis.
Introduction to Methods
Chapter 3: Introduction to C Programming Language C development environment A simple program example Characters and tokens Structure of a C program –comment.
Unit 2: Java Introduction to Programming 2.1 Initial Example.
Extending the Robot Programming Language In the Robot world 1 mile = 8 blocks Suppose we want a robot to run a marathon (26+ miles)? Does our program have.
What is RobotC?!?! Team 2425 Hydra. Overview What is RobotC What is RobotC used for What you need to program a robot How a robot program works Framework.
Object Oriented Software Development
Lecture 7 Polymorphism. Review: Constructors ●Parenthesis after constructor, not in class declaration ●The constructor makes the SamBot – do not “ new.
by Chris Brown under Prof. Susan Rodger Duke University June 2012
Karel J Robot An introduction to BlueJ and Object- Oriented Programming.
Instructor: Craig Duckett Assignment 1 Due Lecture 5 by MIDNIGHT – NEXT – NEXT Tuesday, October 13 th I will double dog try to.
Classes and Objects. Topics The Class Definition Declaring Instance Member Variables Writing Instance Member Methods Creating Objects Sending Messages.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
4.1 Instance Variables, Constructors, and Methods.
The Java Programming Language
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2008 Pearson Education, Inc., Upper.
Andries van Dam  /01/15 1/38 Initial Questionnaire – The Results Are In! 56% of all students in CS15 have no prior coding experience! 81% of all.
1/62 Andries van Dam  /17/15 ●Lecture slides are posted online and are available before class ●Use these during class and outside of class! ●If.
BIT 115: Introduction To Programming LECTURE 3 Instructor: Craig Duckett
Fundamental Programming: Fundamental Programming Introduction to C++
CPSC 230 Computers and Programming I Spring 2003 Dr. Lynn Lambert.
ADTs and C++ Classes Classes and Members Constructors The header file and the implementation file Classes and Parameters Operator Overloading.
C++ Basics C++ is a high-level, general purpose, object-oriented programming language.
Procedural programming in Java Methods, parameters and return values.
1 FUNCTIONS - I Chapter 5 Functions help us write more complex programs.
Introducing Python CS 4320, SPRING Lexical Structure Two aspects of Python syntax may be challenging to Java programmers Indenting ◦Indenting is.
Chapter 4 Introduction to Classes, Objects, Methods and strings
CSE 1301 Lecture 6 Writing Classes Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Structures and Classes Version 1.0. Topics Structures Classes Writing Structures & Classes Member Functions Class Diagrams.
Visual Basic for Application - Microsoft Access 2003 Programming applications using Objects.
Introduction to OOP in VB.NET using Robots ACSE Conference, Nov 2004 Michael Devoy Monsignor Doyle C.S.S., Cambridge
© 2006 Pearson EducationMaking Objects 1 of 36 MAKING OBJECTS Views of a Class Defining Your Own Class Declaring Instance Variables Declaring Methods Sending.
CSD 340 (Blum)1 Starting JavaScript Homage to the Homage to the Square.
Chapter 3: Developing Class Methods Object-Oriented Program Development Using Java: A Class-Centered Approach.
COIT29222 Structured Programming 1 COIT29222-Structured Programming Lecture Week 02  Reading: Textbook(4 th Ed.), Chapter 2 Textbook (6 th Ed.), Chapters.
Lecture 08. Since all Java program activity occurs within a class, we have been using classes since the start of this lecture series. A class is a template.
Extending Karel’s Vocabulary This PPT originated with Dr. Judy Hankins Modifications have been done by Dr. Untch & Dr. Cripps.
1 Class 1 Lecture Topic Concepts, Definitions and Examples.
GROUPING OBJECTS CITS1001. Lecture outline The ArrayList collection Process all items: the for-each loop 2.
Programming in Karel Eric Roberts CS 106A January 6, 2016.
Programming Fundamentals. Topics to be covered Today Recursion Inline Functions Scope and Storage Class A simple class Constructor Destructor.
Methods Awesomeness!!!. Methods Methods give a name to a section of code Methods give a name to a section of code Methods have a number of important uses.
Written by: Dr. JJ Shepherd
Mile-long hurdle race Suppose that we want to program Karel to run a one-mile long hurdle race, where vertical wall sections represent hurdles. The hurdles.
Searching CSE 103 Lecture 20 Wednesday, October 16, 2002 prepared by Doug Hogan.
M1G Introduction to Programming 2 2. Creating Classes: Game and Player.
CSIS 113A Lecture 5 Functions. Introduction to Functions  Building Blocks of Programs  Other terminology in other languages:  Procedures, subprograms,
Programming Fundamentals Enumerations and Functions.
Alice and Java Unit 7 1. Day 1  Objective: Gain an introduction to Java and Eclipse  Essential skill: DM-1: Use technology to advance critical thinking.
Coding – Week 2 Functions, Arrays, and Objects. Functions  Functions are not a new concept – you’ve been using them already.  void setup() {} and void.
Mr H Kandjimi 2016/01/03Mr Kandjimi1 Week 3 –Modularity in C++
Java Programming Fifth Edition Chapter 1 Creating Your First Java Classes.
Georgia Institute of Technology More on Creating Classes Barb Ericson Georgia Institute of Technology June 2006.
1/47 Andries van Dam  /13/16 Lecture 2 Calling and Defining Methods in Java.
User-Written Functions
Linked Lists in Action Chapter 5 introduces the often-used data public classure of linked lists. This presentation shows how to implement the most common.
Subroutines Idea: useful code can be saved and re-used, with different data values Example: Our function to find the largest element of an array might.
METHODS AND BEHAVIORS AKEEL AHMED.
Java Programming Language
Defining Classes and Methods
IPC144 Introduction to Programming Using C Week 4 – Lesson 2
Classes, Objects and Methods
Presentation transcript:

1/43 Andries van Dam  /15/15 Lecture 2 Calling and Defining Methods in Java

2/43 Andries van Dam  /15/15 Outline Calling methods Declaring and defining a class Instances of a class Defining methods The this keyword

3/43 Andries van Dam  /15/15 samBot is a robot who lives in a 2D grid world She knows how to do two things: o move forward any number of steps o turn right 90 o We will learn how to communicate with samBot using Java Meet samBot (kudos to former headTA Sam Squires) I created SamBot!

4/43 Andries van Dam  /15/15 samBot’s World This is samBot’s world samBot starts in the square at (0,0) She wants to get to the square at (1,1) Thick black lines are walls that samBot can’t pass through

5/43 Andries van Dam  /15/15 Giving Instructions Goal: move samBot from her starting position to her destination by giving her a list of instructions samBot only knows instructions “move forward n steps” and “turn right” What instructions should we give her?

6/43 Andries van Dam  /15/15 Giving Instructions “Move forward 4 steps.” “Turn right.” “Move forward 1 step.” “Turn right.” “Move forward 3 steps.” Note: samBot moves in the direction her outstretched arm is pointing; yes, she can move upside down in this 2D world

7/43 Andries van Dam  /15/15 Giving Instructions Have to give samBot these instructions in a language she understands That’s where Java comes in! In Java, give instructions to an object by sending it messages

8/43 Andries van Dam  /15/15 “Calling Methods”: Sending Messages in Java samBot can only handle messages that she knows how to respond to These responses are called methods! o “method” is short for “method for responding to a message” Objects cooperate by sending each other messages. o object sending message is the caller o object receiving message is the receiver

9/43 Andries van Dam  /15/15 samBot already has one method for “move forward n steps” and another method for “turn right” When we send a message to samBot to “move forward” or “turn right” in Java, we are calling a method on samBot. “Calling Methods”: Sending Messages in Java Hey samBot, turn right! The callerThe receiver (samBot) The method call (message passed from caller to receiver)

10/43 Andries van Dam  /15/15 Turning samBot right samBot ’s “turn right” method is called turnRight To call the turnRight method on samBot : samBot.turnRight(); To call methods on samBot in Java, need to address her by name! Every command to samBot takes the form: samBot. ; What are those parentheses at the end of the method for? You substitute for anything in ! ; ends Java statement

11/43 Andries van Dam  /15/15 Moving samBot forward When telling samBot to move forward, need to tell her how many steps to move samBot’s “move forward” method is named moveForward To call this method in Java: samBot.moveForward( ); This means that if we want her to move forward 2 steps, say: samBot.moveForward(2);

12/43 Andries van Dam  /15/15 Calling Methods: Important Points Method calls in Java have parentheses after the method’s name Extra pieces of information passed to a method are called parameters; the actual values passed in are called arguments o e.g. : in defining f(x), x is the parameter; in using f(2), 2 is the argument o more on this next lecture! If the method needs any information, include it between parentheses (e.g., samBot.moveForward(2); ) If no extra information is needed, just leave the parentheses empty (e.g., samBot.turnRight(); )

13/43 Andries van Dam  /15/15 Guiding samBot in Java Tell samBot to move forward 4 steps→ samBot.moveForward(4); Tell samBot to turn right → samBot.turnRight(); Tell samBot to move forward 1 step → samBot.moveForward(1); Tell samBot to turn right → samBot.turnRight(); Tell samBot to move forward 3 steps → samBot.moveForward(3); “pseudocode” Java code

14/43 Andries van Dam  /15/15 Hand Simulation of This Code samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3);

15/43 Andries van Dam  /15/15 Putting Code Fragment in a Real Program public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3); } Let’s demonstrate this code for real First, need to put it inside real Java program Grayed-out code specifies context in which samBot executes these instructions o it is part of the stencil code written for you by the TAs, which also includes samBot’s capability to respond to moveForward and turnRight − more on this later

16/43 Andries van Dam  /15/15 Before, we’ve talked about objects that handle messages with "methods" Introducing a new concept… classes! public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3); } We’re about to explain this part of the code! Putting Code Fragments in a Real Program

17/43 Andries van Dam  /15/15 What is a class? A class is a blueprint for a certain type of object An object’s class defines its properties and capabilities (methods) So far, we’ve been working within the class RobotMover We need to tell Java about our RobotMover public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3); }

18/43 Andries van Dam  /15/15 Declaring and Defining a Class (1/3) As with dictionary entry, first declare term, then provide definition First line declares RobotMover class Breaking it down: o public indicates that anyone can use this class o class indicates to Java that we are about to define a new class o RobotMover is the name that we have chosen for our class public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3); } Note: public and class are Java “reserved words” aka “keywords” and have pre-defined meanings in Java; we’ll be using Java keywords a lot in the future declaration of the RobotMover class

19/43 Andries van Dam  /15/15 public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3); } Declaring and Defining a Class (2/3) Class definition (aka “body”) defines properties and capabilities of class o it is contained within curly braces that follow the class declaration A class’s capabilities (“what it knows how to do”) are defined by its methods – RobotMover thus far only knows this very specific moveRobot method A class’s properties are defined by its instance variables – more on this next week definition of the RobotMover class

20/43 Andries van Dam  /15/15 General form for a class: Declaring and Defining a Class (3/3) declaration Each class goes in its own file, where name of file matches name of class o RobotMover class is contained in file “RobotMover.java” class { } definition

21/43 Andries van Dam  /15/15 The Robot class (defined by the TAs) public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } /* other code elided-- if you’re curious, check out Robot.java in the stencil code!*/ } public class Robot declares a class called Robot Information about the properties and capabilities of Robot s (the class definition) goes within the curly braces Note: Normally, support code is a “black box” that you can’t examine

22/43 Andries van Dam  /15/15 Methods of the TA's Robot class public void turnRight() and public void moveForward(int numberOfSteps) each declare a method Since moveForward needs to know how many steps to move, we put int numberOfSteps within the parentheses o int is Java’s way of saying this parameter is an “integer” (we say “of type integer”) public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } /* other code elided-- if you’re curious, check out Robot.java in the stencil code!*/ }

23/43 Andries van Dam  /15/15 Classes and Instances (1/3) We’ve been saying samBot is a Robot We’ll now refer to her as an instance of class Robot o This means samBot is a particular Robot built using Robot class as a blueprint All Robot s (all instances of the class Robot ) have the exact same capabilities: the methods defined in the Robot class

24/43 Andries van Dam  /15/15 The Robot class is like a blueprint Classes and Instances (2/3)

25/43 Andries van Dam  /15/15 We can use the Robot class to build actual Robot s - instances of the class Robot, whose properties may vary (next lecture) Classes and Instances (3/3) samBot blueBotpinkBotgreenBot

26/43 Andries van Dam  /15/15 instance Classes and Instances Method calls are done on instances of the class samBot blueBotpinkBotgreenBot

27/43 Andries van Dam  /15/15 Defining Methods Now that we know about calling methods, classes and instances, let’s talk about defining methods To understand this, let’s use a variation of our previous example public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { // Your code goes here! // … }

28/43 Andries van Dam  /15/15 A variation public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.turnRight(); samBot.moveForward(2); samBot.turnRight(); samBot.moveForward(3); samBot.turnRight(); samBot.moveForward(2); samBot.turnRight(); samBot.moveForward(2); } }

29/43 Andries van Dam  /15/15 public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.turnRight(); samBot.moveForward(2); samBot.turnRight(); samBot.moveForward(3); samBot.turnRight(); samBot.moveForward(2); samBot.turnRight(); samBot.moveForward(2); } Lots of code for a simple problem... samBot only knows how to turn right, so have to call turnRight three times to make her turn left If she understood how to “turn left”, would be much simpler! We can ask the TAs to modify samBot to turn left by defining a method called turnLeft A variation

30/43 Andries van Dam  /15/15 Defining a Method (1/2) Almost all methods take on this general form: When calling turnRight or moveForward on an instance of the Robot class, all code between method’s curly braces is executed public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() // our code goes here! } ( ) { }

31/43 Andries van Dam  /15/15 Defining a Method (2/2) Adding a new method: turnLeft To make a Robot turn left, tell her to turn right three times public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { //The TA’s code goes here!! }

32/43 Andries van Dam  /15/15 The this keyword (1/2) When working with RobotMover, we were talking to samBot, an instance of class Robot To tell her to turn right, we said “ samBot.turnRight(); ” Why do the TAs now write “ this.turnRight(); ”? public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { this.turnRight(); }

33/43 Andries van Dam  /15/15 The this keyword is how an instance (like samBot ) can call a method on itself Use this to call a method of Robot class from within another method of Robot class When samBot is told by, say, RobotMover to turnLeft, she responds by telling herself to turnRight three times this.turnRight(); means “hey me, turn right!” this is optional, but CS15 expects it The this keyword (2/2) public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { this.turnRight(); }

34/43 Andries van Dam  /15/15 We’re done! Have now seen our first method definition! Now that Robot has turnLeft, can call turnLeft on any instance of Robot public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { this.turnRight(); }

35/43 Andries van Dam  /15/15 Summary Class declaration Class definition Method declaration public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { this.turnRight(); } Method definition

36/43 Andries van Dam  /15/15 Simplifying our code using turnLeft public class RobotMover { public void moveRobot(Robot samBot) { samBot.turnRight(); samBot.moveForward(2); samBot.turnRight(); samBot.moveForward(3); samBot.turnRight(); samBot.moveForward(2); samBot.turnRight(); samBot.moveForward(2); } public class RobotMover { public void moveRobot(Robot samBot) { samBot.turnRight(); samBot.moveForward(2); samBot.turnLeft(); samBot.moveForward(3); samBot.turnLeft(); samBot.moveForward(2); samBot.turnLeft(); samBot.moveForward(2); } We’ve saved a lot of lines of code by using turnLeft!

37/43 Andries van Dam  /15/15 turnAround The TAs could also define a method that turns the Robot around 180 o. See if you can declare and define the method turnAround public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { this.turnRight(); } // your code goes here! // … }

38/43 Andries van Dam  /15/15 turnAround public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { this.turnRight(); } public void turnAround() { this.turnRight(); } Now that the Robot class has the method turnAround, we can call the method on any Robot There are other ways of implementing this method that are just as correct

39/43 Andries van Dam  /15/15 turnAround Instead of calling turnRight, could call our newly created method, turnLeft Both of these solutions are equally correct, in that they will turn the robot around 180 o How do they differ? When we try each of these implementations with samBot, what will we see in each case? public class Robot { public void turnRight() { // code that turns robot right } public void moveForward(int numberOfSteps) { // code that moves robot forward } public void turnLeft() { this.turnRight(); } public void turnAround() { this.turnRight(); }

40/43 Andries van Dam  /15/15 Summary (1/2) Classes o a class is a blueprint for a certain type of object Instances o an instance of a class is a particular member of that class, on which we can call methods. o example: samBot is an instance of Robot

41/43 Andries van Dam  /15/15 Summary (2/2) Calling methods o an object sends a message to another object o general form: instance. ( ) o example: samBot.turnRight(); Defining methods o how we describe a capability of a class o example: public void turnLeft() { … } The this keyword o how an instance calls a method on itself o example: this.turnRight()

42/43 Andries van Dam  /15/15 IT1340B. The Panorama and 19th-century Visual Culture o uses Touch Art Gallery and Brown YURT - Ultimate Reality Theatre to explore Garibaldi panorama and moreTouch Art GalleryBrown YURT - Ultimate Reality Theatre Meets TTH 1:00-2:20, Digital Scholarly Lab Course Advertisement

43/43 Andries van Dam  /15/15 Hours start today at 4:30 – see website for full schedulewebsite Labs start tonight o You should have a lab section by now – if not, the Head TAs ASAP o If you try to attend a lab section you aren’t signed up for, you will not get checked off For the best response time: the cs015tas o next best: cs015headtas o slow response: an individual TA -- don’t do it!! Announcements