More About Objects and Methods

Similar documents
More About Objects and Methods

More About Objects and Methods. Objectives. Outline. Harald Gall, Prof. Dr. Institut für Informatik Universität Zürich.

More About Objects and Methods. Objectives. Outline. Chapter 6

More About Objects and Methods

More About Objects and Methods

CS180 Recitation. More about Objects and Methods

Chapter 6 Introduction to Defining Classes

Chapter 5. Feb 08, Chapter 5 1

Chapter 4 Defining Classes I

Chapter 5. Defining Classes II. Slides prepared by Rose Williams, Binghamton University

Comp 248 Introduction to Programming Chapter 4 & 5 Defining Classes Part B

AP Computer Science Chapter 10 Implementing and Using Classes Study Guide

Chapter 4. Defining Classes I

Classes and Objects Miscellany: I/O, Statics, Wrappers & Packages. CMSC 202H (Honors Section) John Park

Object Oriented Methods : Deeper Look Lecture Three

Chapter 5. Defining Classes II. Copyright 2016 Pearson Inc. All rights reserved.

More About Objects and Methods

Window Interfaces Using Swing. Chapter 12

DEMYSTIFYING PROGRAMMING: CHAPTER SIX METHODS (TOC DETAILED) CHAPTER SIX: METHODS 1

Chapter 4. Defining Classes I

A variable is a name for a location in memory A variable must be declared

Java Methods. Lecture 8 COP 3252 Summer May 23, 2017

Bitwise Operators Objects and Methods

CS 251 Intermediate Programming Methods and Classes

CS 251 Intermediate Programming Methods and More

Objects and Classes. 1 Creating Classes and Objects. CSCI-UA 101 Objects and Classes

Java Primer 1: Types, Classes and Operators

CSC Java Programming, Fall Java Data Types and Control Constructs

More About Objects and Methods

Introduction to Programming Using Java (98-388)

CST141 Thinking in Objects Page 1

C++ Programming: From Problem Analysis to Program Design, Fifth Edition. Chapter 6: User-Defined Functions I

PIC 20A Number, Autoboxing, and Unboxing

Types and Expressions. Chapter 3

Defining Classes II. 5.3 USING AND MISUSING REFERENCES 267 Example: A Person Class 267 Pitfall: null Can Be an Argument to a Method 275 CHAPTER

Object Oriented Programming in C#

Using Classes and Objects. Chapter

CS162: Introduction to Computer Science II. Primitive Types. Primitive types. Operations on primitive types. Limitations

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Defining Classes and Methods

CS313D: ADVANCED PROGRAMMING LANGUAGE

Java How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.

Ticket Machine Project(s)

8. Polymorphism and Inheritance

Class 9: Static Methods and Data Members

Chapter 5: Enhancing Classes

Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

References. Chapter 5: Enhancing Classes. Enhancing Classes. The null Reference. Java Software Solutions for AP* Computer Science A 2nd Edition

CS162: Introduction to Computer Science II

EECS168 Exam 3 Review

Inheritance. Chapter 7. Chapter 7 1

Lecture #6-7 Methods

CS110D: PROGRAMMING LANGUAGE I

Chapter 4: Writing Classes

DEMYSTIFYING PROGRAMMING: CHAPTER FOUR

Methods: A Deeper Look

Chapter 1 Getting Started

What did we talk about last time? Examples switch statements

Objectives. Introduce static keyword examine syntax describe common uses

Lecture 5: Methods CS2301

Full file at

Methods (Deitel chapter 6)

Methods (Deitel chapter 6)

Programs as Models. Procedural Paradigm. Class Methods. CS256 Computer Science I Kevin Sahr, PhD. Lecture 11: Objects

Comp 248 Introduction to Programming Chapter 4 - Defining Classes Part A

Unit3: Java in the large. Prepared by: Dr. Abdallah Mohamed, AOU-KW

CS 61B Data Structures and Programming Methodology. June David Sun

Fundamental Concepts and Definitions

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java

Chapter 3 Function Overloading

SINGLE EVENT HANDLING

Defining Classes II CHAPTER

DATA TYPES AND EXPRESSIONS

Pace University. Fundamental Concepts of CS121 1

Chapter 7 User-Defined Methods. Chapter Objectives

ECE 122. Engineering Problem Solving with Java

Chapter 2: Using Data

CS112 Lecture: Working with Numbers

Java Classes: Math, Integer A C S L E C T U R E 8

Defining Classes and Methods. Objectives. Objectives 6/27/2014. Chapter 5

Defining Classes and Methods

JAVA WRAPPER CLASSES

Object Oriented Programming. Solved MCQs - Part 2

Glossary. For Introduction to Programming Using Python By Y. Daniel Liang

Chapter 5 Methods. Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved.

CS121/IS223. Object Reference Variables. Dr Olly Gotel

CISC-124. This week we continued to look at some aspects of Java and how they relate to building reliable software.

BASIC ELEMENTS OF A COMPUTER PROGRAM

Learning objectives: Enhancing Classes. CSI1102: Introduction to Software Design. More about References. The null Reference. The this reference

OBJECT ORIENTED SIMULATION LANGUAGE. OOSimL Reference Manual - Part 1

Datatypes, Variables, and Operations


CS112 Lecture: Variables, Expressions, Computation, Constants, Numeric Input-Output

1/16/2013. Program Structure. Language Basics. Selection/Iteration Statements. Useful Java Classes. Text/File Input and Output.

MODULE 02: BASIC COMPUTATION IN JAVA

Chapter 2 Using Data. Instructor s Manual Table of Contents. At a Glance. Overview. Objectives. Teaching Tips. Quick Quizzes. Class Discussion Topics

Chapter 2: Using Data

CSI Introduction to Software Design. Prof. Dr.-Ing. Abdulmotaleb El Saddik University of Ottawa (SITE 5-037) (613) x 6277

Objectives. Defining Classes and Methods. Objectives. Class and Method Definitions: Outline 7/13/09

CSE101-lec#12. Designing Structured Programs Introduction to Functions. Created By: Amanpreet Kaur & Sanjeev Kumar SME (CSE) LPU

Transcription:

More About Objects and Methods Chapter 5 Chapter 5 1

Programming with Methods - Methods Calling Methods A method body may contain an invocation of another method. Methods invoked from method main typically involve a calling object. Invocation of a method in the same class typically does not involve a calling object. Chapter 5 5

Programming with Methods - Methods Calling Methods class Oracle Chapter 5 6

Programming with Methods - Methods Calling Methods class OracleDemo Chapter 5 7

Methods Calling Methods Method main invokes method dialog in the class Oracle using object delphi. Within the same class, the name of the calling object is omitted. Method dialog invokes method answerone in the same class. Method answerone invokes method seekadvice and method update in the same class. Chapter 5 8

Methods Calling Methods, cont. Omission of the calling object and the dot applies only when the calling object can be expressed with the this parameter. Chapter 5 9

The null Constant When the compiler requires an object reference to be initialized, set it to null. String line = null; null is not an object, but is instead a constant that indicates that an object variable references no object. == and!= (rather than method equals) are used to determine if an object variable has the value null. Chapter 5 12

The null Constant, cont. An object reference initialized to null cannot be used to invoke methods in the object s class An attempt to do so results in a null pointer exception. Chapter 5 13

Static Methods and Static Variables Static methods and static variables belong to a class and do not require any object. Chapter 5 15

Static Methods Some methods have no meaningful connection to an object. For example, finding the maximum of two integers computing a square root converting a letter from lowercase to uppercase generating a random number Such methods can be defined as static. Chapter 5 16

Static Methods, cont. A static method is still defined as a member of a class. But, the method is invoked using the class name rather than an object name. syntax return_type Variable_Name = Class_Name.Static_Method_Name (Parameters); Chapter 5 17

Static Methods, cont. class CircleFirstTry Chapter 5 18

Static Methods, cont. class CircleDemo Chapter 5 19

Defining a Static Method A static method is defined in the same way as any other method, but includes the keyword static in the heading. public static double area (double radius); Nothing in the definition can refer to a calling object; no instance variables can be accessed. Chapter 5 20

Static Variables A class can have static variables and constants as well as static methods. public static final double PI = 3.14159; public static int numberofinvocations = 0; The value of a static variable can be changed by any method that can access the variable. Chapter 5 25

Static Variables, cont. Like instance variables, static variables generally are declared private. They should be read only by accessor methods. They should be changed only by mutator methods. Every object of the class has access to the static variable(s) via the (public) accessor and mutator methods. Chapter 5 26

Static Variables, cont. Static variables are also called class variables. The primary purpose of static variables (class variables) is to store information that relates to the class as a whole. Chapter 5 28

The Math Class The predefined class Math provides several standard mathematical methods. All of these methods are static methods. You do not need to create an object to call the methods of the Math class. These methods are called by using the class name (Math) followed by a dot and a method name. Return_Value = Math.Method_Name(Parameters); Chapter 5 29

The Math Class, cont. Chapter 5 30

The Math Class, cont. Method round returns a number as the nearest whole number. If its argument is of type double, it returns a whole number of type long. Method floor (ceil) returns the largest (smallest) whole number that is less (greater) than or equal to its argument. Chapter 5 31

The Math Class, cont. To store a value returned by either floor or ceil in a variable of type int, a cast must be used. double start = 3.56; int lowerbound = (int)math.floor(start); int upperbound = (int)math.ceil(start); Chapter 5 32

The Math Class, cont. The Math class has two predefined constants, E and PI. example area = Math.PI * radius * radius; Chapter 5 33

Integer, Double, and Other Wrapper Classes Sometimes a primitive value needs to be passed in as an argument, but the method definition creates an object as the corresponding formal parameter. Java s wrapper classes convert a value of a primitive type to a corresponding class type. Integer n = new Integer(42); The instance variable of the object n has the value 42. Chapter 5 35

Integer, Double, and Other Wrapper Classes, cont. To retrieve the integer value int i = n.intvalue(); primitive wrapper extraction type class method int Integer intvalue long Long longvalue float Float floatvalue double Double doublevalue char Character charvalue Chapter 5 36

Shorthand in Java 5.0 Wrapping is done automatically in Java 5.0. Integer n = 42; which is equivalent to Integer n = new Integer(42); Similarly int i = n; is equivalent to int i = n.intvalue; Chapter 5 37

Automatic Boxing and Unboxing Converting a value of a primitive type to an object of its corresponding wrapper class is called boxing. Integer n = new Integer(42); Java 5.0 boxes automatically. Integer n = 42; Chapter 5 38

Automatic Boxing and Unboxing, cont. Converting an object of a wrapper class to a value of the corresponding primitive type is called unboxing. int i = n.intvalue; Java 5.0 unboxes automatically. int i = n; Chapter 5 39

Automatic Boxing and Unboxing, cont. Automatic boxing and unboxing also apply to parameters. A primitive argument can be provided for a corresponding formal parameter of the associated wrapper class. A wrapper class argument can be provided for a corresponding formal parameter of the associated primitive type. Chapter 5 40

Type Conversions Static methods in the wrapper classes can be used to convert a String to the corresponding number of type int, long, float, or double. String thestring = 199.98 ; double doublesample = Double.parseDouble(theString); or Double.parseDouble(theString.trim()); if the string has leading or trailing whitespace. Chapter 5 42

Type Conversions, cont. Methods for converting strings to the corresponding numbers Integer.parseInt( 42 ) Long.parseLong( 42 ) Float.parseFloat( 199.98 ) Double.parseDouble( 199.98 ) Chapter 5 43

Type Conversions, cont. Methods for converting numbers to the corresponding strings Integer.toString(42) Long.toString(42) Float.toString(199.98) Double.toString(199.98) Chapter 5 44

Static Methods in Class Character Chapter 5 45

Top-Down Design Pseudocode can be written to decompose a larger task into a collection of smaller tasks. Any of these smaller tasks can be decomposed as needed into even smaller tasks. Several smaller tasks often are easier to code than a single larger task. Chapter 5 58

Top-Down Design, cont. A collection of smaller tasks working together can accomplish the larger task. Typically, subtasks are implemented as private helping methods. This technique is called top-down design or divide and conquer. Chapter 5 59

Testing Methods A driver program is useful for testing one method or class under development. A driver program does not require the usual attention to detail. Its job is to invoke and test one developing method or class. After the method or class is tested adequately, the driver program can be discarded. Chapter 5 60

Bottom-Up Testing If method A uses method B, then method B should be tested fully before testing method A. Testing all the lower level methods invoked by an upper level method before the upper level method is tested is called bottom-up testing. Chapter 5 61

Stubs Sometimes a general approach needs to be tested before all the methods can be written. A stub is a simplified version of a method that is good enough for testing purposes, even though it is not good enough for the final class definition. It might, for example, return an arbitrary value, but this can be sufficient for testing the general approach. Chapter 5 62

Overloading We ve seen that different classes can have methods with the same names. Two or more methods in the same class class can be defined with the same name if the parameter list can be used to determine which method is being invoked. This useful ability is called overloading. Chapter 5 63

Overloading, cont. class Statistician Chapter 5 64

Overloading, cont. The number of arguments and the types of the arguments determines which method average is invoked. If there is no match, Java attempts simple type conversions of the kinds discussed earlier. If there is still no match, an error message is produced. Chapter 5 65

Overloading, cont. We ve been using overloading, perhaps without recognizing it. examples method max (from the Math class) method println the / operator Chapter 5 67

Overloading and Automatic Type Conversion, cont. Sometimes a method invocation can be resolved in two different ways, depending on how overloading and type conversion interact. Since such ambiguities are not allowed, Java will produce a run-time error message (or sometimes a compiler error message). Chapter 5 74

Overloading and Automatic Type Conversion, cont. third example public static void oops (double n1, int n2); public static void oops (int n1, double n2); This will compile, but the invocation sample.oops(5,10) will produce an error message. Chapter 5 75

Overloading and the Return Type You cannot overload a method name by providing two definitions with headings that differ only in the return type. Chapter 5 76

Constructors When you create an object of a class, often you want certain initializing actions performed such as giving values to the instance variables. A constructor is a special method that performs initializations. Chapter 5 84

Defining Constructors New objects are created using Class_Name Object_Name = new Class_Name (Parameter(s)); A constructor is called automatically when a new object is created. Class_Name (Parameter(s)) calls the constructor and returns a reference. It performs any actions written into its definition including initializing the values of (usually all) instance variables. Chapter 5 85

Defining Constructors, cont. Each constructor has the same name as its class. A constructor does not have a return type, not even void. Constructors often are overloaded, each with a different number of parameters or different types of parameters. Typically, at least one constructor, the default constructor, has no parameters. Chapter 5 86

Defining Constructors, cont. When a class definition does not have a constructor definition, Java creates a default constructor automatically. Once you define at least one constructor for the class, no additional constructor is created automatically. Chapter 5 90

Using Constructors A constructor can be called only when you create a new object. newborn.petrecord( Fang. 1, 150.0); // invalid After an object is created, a set method is needed to change the value(s) of one or more instance variables. newborn.set( Fang, 1, 150.0); // valid Chapter 5 91

Using Other Methods in a Constructor Other methods in the same class can be used in the definition of a constructor. Calls to one or more set methods are common. public Class_Name(parameter(s)); { } set( ) Chapter 5 93

Adding Buttons A component in an applet that looks like a push button and can do something when it is clicked is referred to as a button. Buttons are added to applets the same way labels are added. But, unlike labels, actions can be associated with buttons. Chapter 5 113

Creating Buttons example JButton sunnybutton = new JButton( Sunny ); (Until buttons are programmed, they do not perform any action besides depressing and returning to their undepressed state.) Chapter 5 115

Event-Driven Programming Applets use events and listeners. An event is an object that represents some action such as clicking a mouse button. An object fires (or generates) an event. An object that can fire an event can have one or more listener objects, specified by the programmer. Chapter 5 118

Event-Driven Programming, cont. A listener object can have methods called event handlers, defined by the programmer, that specify what happens when events are sent to the listener. sent means that some method is invoked automatically with the event object as an argument. Chapter 5 119

Event-Driven Programming, cont. Chapter 5 120

Event-Driven Programming, cont. Events determine the order in which things happen. The next thing to happen is determined by the next event. Chapter 5 121

Event-Driven Programming, cont. class ButtonDemo Chapter 5 122

Event-Driven Programming, cont. Chapter 5 123

Programming Buttons The applet class definition needs to know two things: for each button, which objects are listeners (called registering the listener) the defined method(s) to be invoked when the event is sent to the listener Chapter 5 124

Programming Buttons, cont. registering the listener sunnybutton.addactionlistener(this); The class ButtonDemo itself is the listener class. Chapter 5 125

Listeners Different kinds of components require different kinds of listener classes. Buttons generate action events which are handled by action listeners. An action listener is an object of type ActionListener. ActionListener is not a class, but is instead an interface which we will discuss in Chapter 7. Chapter 5 127

Listeners, cont. Add the phrase implements ActionListener to the beginning of the class definition Define a method named actionperformed. Often it is convenient to put the method actionperformed in the applet it is intended to change. Because the applet itself is the action listener, the action event goes to the applet s object, where it is passed automatically to the method actionperformed. Chapter 5 128

Listeners, cont. Method actionperformed typically needs to know the source of the action event. e.getactioncommand() returns the string written on the button which can be used to determine the source. An import statement is needed to define an action listener class. import java.awt.event.*; Chapter 5 129

Applets and Constructors Applets normally have no constructors. Method init is used for any needed initialization. Chapter 5 130

Icons An icon typically is a small picture. Pictures can be produced in several formats for display on the screen (e.g. GIF and JPEG). These pictures can be used as the basis for an icon. A label or a button can include a string and/or an icon. Chapter 5 131

Icons, cont. Example ImageIcon dukeicon = new ImageIcon( duke_waving.gif ); nicelabel.seticon(dukeicon); Chapter 5 132

Icons, cont. class IconDemo Chapter 5 133

Icons, cont. Buttons can have icons. ImageIcon smileyfaceicon = new ImageIcon( smiley.gif ); sunnybutton.seticon(smileyfaceicon); Chapter 5 135

Icons, cont. Chapter 5 136

Changing Visibility Labels, buttons, and other components have a method setvisibility to make the component visible or invisible. If the argument is true, the component is visible. If the argument is false, the component is invisible (and no longer present). Chapter 5 137