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
Jul 17, 2015
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()