chapter 4 - classes in java

Post on 17-Jul-2015

235 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Classes

• class: reserved word; collection of a fixed number of components

• Components: members of a class• Members accessed by name• Class categories/modifiers

– private– protected– public

2

Classes (continued)

• private: members of class are not accessible outside class

• public: members of class are accessible outside class

• Class members: can be methods or variables

• Variable members declared like any other variables

3

Syntax

The general syntax for defining a class is:

4

Syntax (continued)

• If a member of a class is a named constant, you declare it just like any other named constant

• If a member of a class is a variable, you declare it just like any other variable

• If a member of a class is a method, you define it just like any other method

5

Syntax (continued)

• If a member of a class is a method, it can (directly) access any member of the class—data members and methods

- Therefore, when you write the definition of a method (of the class), you can directly access any data member of the class (without passing it as a parameter)

66

Syntax: Value-Returning Method

77

User-Defined Methods

• Value-returning methods– Used in expressions– Calculate and return a value– Can save value for later calculation or print value

• modifiers: public, private, protected, static, abstract, final

• returnType: type of the value that the method calculates and returns (using return statement)

• methodName: Java identifier; name of method

88

Syntax

• Syntax: Formal Parameter List-The syntax of the formal parameter list is:

• Method Call-The syntax to call a value-returning method is:

99

Syntax (continued)

• Syntax: return Statement -The return statement has the following syntax:

return expr;

• Syntax: Actual Parameter List-The syntax of the actual parameter list is:

1010

Equivalent Method Definitions

public static double larger(double x, double y){ double max;

if (x >= y) max = x; else max = y;

return max;}

1111

Equivalent Method Definitions (continued)

public static double larger(double x, double y){ if (x >= y) return x; else return y;}

1212

Equivalent Method Definitions (continued)

public static double larger(double x, double y){ if (x >= y) return x; return y;}

1313

Programming Example: Palindrome Number

• Palindrome: integer or string that reads the same forwards and backwards

• Input: integer or string

• Output: Boolean message indicating whether integer string is a palindrome

1414

Solution: isPalindrome Method

public static boolean isPalindrome(String str){ int len = str.length(); int i, j; j = len - 1;

for (i = 0; i <= (len - 1) / 2; i++) { if (str.charAt(i) != str.charAt(j)) return false; j--; } return true; }

1515

Sample Runs: Palindrome Number

1616

Sample Runs: Palindrome Number (continued)

1717

Flow of Execution• Execution always begins with the first statement

in the method main• User-defined methods execute only when called

• Call to method transfers control from caller to called method

• In method call statement, specify only actual parameters, not data type or method type

• Control goes back to caller when method exits

1818

Programming Example: Largest Number

• Input: set of 10 numbers

• Output: largest of 10 numbers

• Solution– Get numbers one at a time– Method largest number: returns the larger of 2

numbers– For loop: calls method largest number on each number

received and compares to current largest number

1919

Solution: Largest Numberstatic Scanner console = new Scanner(System.in);

public static void main(String[] args){ double num; double max; int count; System.out.println("Enter 10 numbers."); num = console.nextDouble(); max = num; for (count = 1; count < 10; count++) { num = console.nextDouble(); max = larger(max, num); } System.out.println("The largest number is " + max); }

2020

Sample Run: Largest Number

• Sample Run:

Enter 10 numbers:10.5 56.34 73.3 42 22 67 88.55 26 62 11The largest number is 88.55

2121

Void Methods

• Similar in structure to value-returning methods

• Call to method is always stand-alone statement

• Can use return statement to exit method early

2222

Void Methods: Syntax

• Method Definition-The general form (syntax) of a void method without parameters is as follows:

modifier(s) void methodName(){ statements}• Method Call (Within the Class)

-The method call has the following syntax:methodName();

2323

Void Methods with Parameters: Syntax

2424

Void Methods with Parameters: Syntax (continued)

2525

Primitive Data Type Variables as Parameters

• A formal parameter receives a copy of its corresponding actual parameter

• If a formal parameter is a variable of a primitive data type:– Value of actual parameter is directly stored– Cannot pass information outside the method– Provides only a one-way link between actual

parameters and formal parameters

2626

Reference Variables as Parameters

• If a formal parameter is a reference variable:– Copies value of corresponding actual parameter– Value of actual parameter is address of the object

where actual data is stored– Both formal and actual parameter refer to same

object

2727

Uses of Reference Variables as Parameters

• Can return more than one value from a method

• Can change the value of the actual object

• When passing address, would save memory space and time, relative to copying large amount of data

2828

Reference Variables as Parameters: type String

2929

Example 7-11public class Example7_11{ public static void main(String[] args) { int num1; //Line 1 IntClass num2 = new IntClass(); //Line 2 char ch; //Line 3 StringBuffer str; //Line 4 num1 = 10; //Line 5 num2.setNum(15); //Line 6 ch = 'A'; //Line 7 str = new StringBuffer("Sunny"); //Line 8 System.out.println("Line 9: Inside main: " + "num1 = " + num1 + ", num2 = "

+ num2.getNum() + ", ch = " + ch + ", and str = " + str); //Line 9

Reference Variables as Parameters: type String (continued)

3030

funcOne(num1, num2, ch, str); //Line 10 System.out.println("Line 11: After funcOne: " + "num1 = " + num1 + ", num2 = "

+ num2.getNum() + ", ch = " + ch + ", and str = " + str); //Line 11 }

Reference Variables as Parameters: type String (continued)

3131

public static void funcOne(int a, IntClass b, char v,

StringBuffer pStr) { int num; //Line 12 int len; //Line 13 num = b.getNum(); //Line 14 a++; //Line 15 b.addToNum(12); //Line 16 v = 'B'; //Line 17 len = pStr.length(); //Line 18 pStr.delete(0, len); //Line 19 pStr.append("Warm"); //Line 20 System.out.println("Line 21: Inside funcOne: \n" + " a = " + a + ", b = " + b.getNum() + ", v = " + v + ", pStr = " + pStr + ", len = " + len + ", and num = " + num); //Line 21 }}

Reference Variables as Parameters: type String (continued)

3232

Reference Variables as Parameters: type String (continued)

3333

num1 = 10; //Line 5 num2.setNum(15); //Line 6 ch = 'A';

//Line 7str = new StringBuffer("Sunny"); //Line 8

Reference Variables as Parameters: type String (continued)

3434

System.out.println("Line 9: Inside main: " + "num1 = " + num1 + ", num2 = " + num2.getNum() + ", ch = " + ch + ", and str = " + str); //Line 9

Reference Variables as Parameters: type String (continued)

3535

int num; //Line 12 int len; //Line 13 num = b.getNum();

//Line 14

Reference Variables as Parameters: type String (continued)

3636

num = b.getNum(); //Line 14

Reference Variables as Parameters: type String (continued)

3737

a++; //Line 15

Reference Variables as Parameters: type String (continued)

3838

b.addToNum(12); //Line 16

Reference Variables as Parameters: type String (continued)

3939

v = 'B'; //Line 17

Reference Variables as Parameters: type String (continued)

4040

len = pStr.length(); //Line 18

Reference Variables as Parameters: type String (continued)

4141

pStr.delete(0, len); //Line 19

Reference Variables as Parameters: type String (continued)

4242

pStr.append("Warm"); //Line 20

Reference Variables as Parameters: type String (continued)

4343Java Programming: From Problem Analysis to Program Design, 3e

System.out.println("Line 21: Inside funcOne: \n" + " a = " + a + ", b = " + b.getNum() + ", v = " + v + ", pStr = " + pStr + ", len = " + len + ", and num = " + num); //Line 21

Reference Variables as Parameters: type String (continued)

4444Java Programming: From Problem Analysis to Program Design, 3e

Reference Variables as Parameters: type String (continued)

4545

System.out.println("Line 11: After funcOne: " + "num1 = " + num1 + ", num2 = " + num2.getNum() + ", ch = " + ch + ", and str = " + str); //Line 11

Reference Variables as Parameters: type String (continued)

46

Accessing Objects

• Referencing the object’s data:

objectRefVar.data

e.g., myCircle.radius

• Invoking the object’s method:

objectRefVar.methodName(arguments)

e.g., myCircle.getArea()

top related