Lecture 2 Calling and Defining Methods in Java. Introduction ●Calling and defining methods ●Declaring and defining a class ●Instances of a class ●The.

Slides:



Advertisements
Similar presentations
Introduction to Programming
Advertisements

CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall
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.
Defining classes and methods Recitation – 09/(25,26)/2008 CS 180 Department of Computer Science, Purdue University.
Week 4 Recap CSE 115 Spring Formal Parameter Lists Comma-separated list of formal parameters Formal parameters are listed giving the type of the.
CSE 113 Week 3 January 28 – February 1, Monday Announcements  Software Installation Fest: 2/5 and 2/6 4pm – 7pm in Baldy 21 Bring your laptop or.
CS1061 C Programming Lecture 2: A Few Simple Programs A. O’Riordan, 2004.
26-Jun-15 Methods. About methods A method is a named group of declarations and statements If a method is in the same class, you execute those declarations.
CS 201 Functions Debzani Deb.
CSE 115 Week 3 January 28 – February 1, Monday Announcements Software Installation Fest: 2/5 and 2/6 4pm – 7pm in Baldy 21 Software Installation.
CSE 115 Week 4 February 4 - 8, Monday Announcements Software installation fest Tuesday & Wednesday 4-7 in Baldy 21. Software installation fest Tuesday.
© 2006 Pearson Education Making Objects 1 of 19 MAKING OBJECTS Views of a Class Defining Your Own Class Declaring Instance Variables Declaring Methods.
Introduction to Methods
CS190/295 Programming in Python for Life Sciences: Lecture 1 Instructor: Xiaohui Xie University of California, Irvine.
Chapter 4:Functions| SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2005 | Last Updated: September 2005 Slide 1 Functions Lecture 4 by Jumail Bin.
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.
1 karel_part5_loops Iteration (Loops) Loops repeat a set of instructions Two types of loops: –Definite loops ( for ) perform instructions explicit (known)
COMP 110: Introduction to Programming Tyler Johnson January 14, 2009 MWF 11:00AM-12:15PM Sitterson 014.
Introduction to Programming Writing Java Beginning Java Programs.
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.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
The Java Programming Language
CSE 113 Introduction to Computer Programming Lecture slides for Week 2 Wednesday, September 7 th, 2011 Instructor: Scott Settembre.
Methods in Java CSC1401. Overview In this session, we are going to see how to create class-level methods in Java.
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++
CPS120: Introduction to Computer Science Decision Making in Programs.
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.
1/43 Andries van Dam  /15/15 Lecture 2 Calling and Defining Methods in Java.
Introduction to Programming Writing Java Beginning Java Programs.
1 CS1100 Fall Instructor: David Gries CS100M: Matlab No prior programming experience One semester of calculus Math & engineering type problems CS100J:
Chapter 4 Introduction to Classes, Objects, Methods and strings
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.
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.
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.
Objective You will be able to define the basic concepts of object-oriented programming with emphasis on objects and classes by taking notes, seeing examples,
BIT 115: Introduction To Programming Professor: Dr. Baba Kofi Weusijana (say Doc-tor Way-oo-see-jah-nah, Doc-tor, or Bah-bah)
Written by: Dr. JJ Shepherd
M1G Introduction to Programming 2 2. Creating Classes: Game and Player.
BIT 115: Introduction To Programming Professor: Dr. Baba Kofi Weusijana (say Doc-tor Way-oo-see-jah-nah, Doc-tor, or Bah-bah)
CSIS 113A Lecture 5 Functions. Introduction to Functions  Building Blocks of Programs  Other terminology in other languages:  Procedures, subprograms,
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.
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.
BIT 115: Introduction To Programming Professor: Dr. Baba Kofi Weusijana Pronounced Bah-bah Co-fee Way-ou-see-jah-nah Call him “Baba” or “Dr. Weusijana”
1/47 Andries van Dam  /13/16 Lecture 2 Calling and Defining Methods in Java.
User-Written Functions
CS190/295 Programming in Python for Life Sciences: Lecture 1
Direct Proof and Counterexample V: Floor and Ceiling
Lecturer: Mukhtar Mohamed Ali “Hakaale”
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.
Java Programming Language
Defining Classes and Methods
IPC144 Introduction to Programming Using C Week 4 – Lesson 2
More on Creating Classes
IT in the News New face-morphing app called “FaceApp” uses machine learning to artificially age faces Created by a Russia-based company that could.
Presentation transcript:

Lecture 2 Calling and Defining Methods in Java

Introduction ●Calling and defining methods ●Declaring and defining a class ●Instances of a class ●The this keyword 1 of 43

●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 degrees Meet samBot (kudos to Sam Squires) 2 of 43

●The TAs created samBot from a Robot blueprint they wrote as part of her program ●We will learn how to communicate with samBot using Java Meet samBot 3 of 43

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 of 43

Giving Instructions ●Goal: to 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 to give her? of 43

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… 6 of 43

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 of 43

“Calling Methods”: Sending Messages in Java ●The messages that samBot knows how to respond to are called methods o “method” is short for “method for responding to a message” o objects cooperate by sending each other messages ●Object sending message is caller ●Object receiving message is receiver 8 of 43

●samBot 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) 9 of 43

Moving samBot forward ●When tell 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( ); You substitute for anything in ! ; ends Java statement ●This means that if want her to move forward 2 steps, say: samBot.moveForward(2); 10 of 43

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. ; 11 of 43

Calling Methods: Important Points ●Method calls in Java have parentheses after the method’s name ●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(); ) ●Extra pieces of information passed to a method are called parameters. More on them next lecture 12 of 43

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 13 of 43

Hand Simulation of This Code samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3); of 43

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 ●It is part of the stencil code that has been written for you by the TAs o the TAs have also given samBot the capability to respond to moveForward and turnRight − more on this later 15 of 43

Demo in our Interactive Development Environment, Eclipse 16 of 43

A variation: public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { // Your code goes here! // … } of 43

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); } } 18 of 43

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 teach samBot to turn left by defining a method called turnLeft ●But before we start defining methods, we need to learn a bit about classes. A variation: 19 of 43

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 ●This is the code for our original problem public class RobotMover { /* additional code elided */ public void moveRobot(Robot samBot) { samBot.moveForward(4); samBot.turnRight(); samBot.moveForward(1); samBot.turnRight(); samBot.moveForward(3); } 20 of 43

Declaring and then Defining a Class ●As with dictionary entry, first declare term, then provide definition ●First line declares RobotMover class ● public and class are Java “reserved words” ●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); } 21 of 43

●Classes take the form: class { } Declaring and then Defining a 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); } declaration of the RobotMover class declaration ●Each class goes in its own file, where name of file matches name of class ● RobotMover class is contained in file “RobotMover.java” 22 of 43

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 then Defining a Class ●class definition defines properties and capabilities of class ●Class definition (aka “body”) is contained within curly braces that follow class declaration ●A class’s capabilities are defined by its methods ●A class’s properties are defined by its instance variables - more on this next week definition of the RobotMover class 23 of 43

Classes and Instances ●We’ve been saying samBot is a Robot ●We’ll now refer to her as an instance of class Robot ●This means samBot is a particular Robot built using Robot class as a blueprint ●Everything samBot can do is spelled out in Robot class ●All Robot s (all instances of the class Robot ) have the exact same capabilities: the methods defined in the Robot class 24 of 43

The Robot class is like a blueprint Classes and Instances 25 of 43

We can use the Robot class to build actual Robot s - instances of the class Robot Classes and Instances 26 of 43

instance Classes and Instances 27 of 43

The Robot class 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 that we are about to define a class called Robot 28 of 43

●Information about the properties and capabilities of Robot s (the class definition) goes within these curly braces The Robot class 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!*/ } 29 of 43

Methods of the 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 ●This is called a parameter - more on this next lecture; int is Java’s way of saying “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!*/ } 30 of 43

●Almost all methods take on this general form: ( ) { } 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!*/ } Methods of the Robot class 31 of 43

●When we call turnRight or moveForward, 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 } /* other code elided-- if you’re curious, check out Robot.java in the stencil code!*/ } Methods of the Robot class 32 of 43

Defining our own method ●Let’s add 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() { // our code goes here! } 33 of 43

The this keyword ●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 we 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(); } 34 of 43

●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!” 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(); } The this keyword 35 of 43

We’re done! ●We just defined our first method! ●Now that the Robot class has the method turnLeft, we 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(); } 36 of 43

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 of 43

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! // … } ●Let’s define a method that turns the Robot around 180 degrees ●See if you can declare and define the method turnAround 38 of 43

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 of 43

turnAround ●Instead of calling turnRight, we could call our newly created method, turnLeft ●Both of these solutions are equally correct, in that they will turn the robot around 180 degrees ●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.turnLeft(); } 40 of 43

DEMO 41 of 43

That’s it! Important concepts: ●Calling methods o an object sends a message to another object o example: samBot.turnRight(); ●Defining methods o how we describe a capability of a class o example: public void turnLeft() { … } 42 of 43

That’s it! ●Classes and instances o a class is a blueprint for a certain type of object o an instance of a class is a particular member of that class o example: samBot is an instance of Robot ●The this keyword o how an instance calls a method on itself o example: this.turnRight() Important concepts: 43 of 43

Announcements Labs start today at 5PM in the Sunlab. Bring signed collaboration contract and a computer to set up remote access. You must attend the session for which you signed up every week. TA Hours start today at 4:30PM in the Fishbowl (2 nd floor of CIT). HW1 and Andybot assignments go out Thursday. HW1 is due at 1PM on Sunday, and Andybot is due by 11:59PM on Wednesday, September 17 th.