Ch01B Introduction
Ch01B Introduction
Chapter 1
Introduction to Java Programming
7
Static methods
• static method: A named group of statements.
• denotes the structure of a program
class
• eliminates redundancy by code reuse
method A
statement
– procedural decomposition:
statement
dividing a problem into methods
statement
method B
statement
statement
• Writing a static method is like
adding a new command to Java. method C
statement
statement
statement
8
Using static methods
1. Design the algorithm.
– Look at the structure, and which commands are repeated.
– Decide what are the important overall tasks.
9
Design of an algorithm
// This program displays a delicious recipe for baking cookies.
public class BakeCookies2 {
public static void main(String[] args) {
// Step 1: Make the cake batter.
Console.println("Mix the dry ingredients.");
Console.println("Cream the butter and sugar.");
Console.println("Beat in the eggs.");
Console.println("Stir in the dry ingredients.");
// Step 2a: Bake cookies (first batch).
Console.println("Set the oven temperature.");
Console.println("Set the timer.");
Console.println("Place a batch of cookies into the oven.");
Console.println("Allow the cookies to bake.");
// Step 2b: Bake cookies (second batch).
Console.println("Set the oven temperature.");
Console.println("Set the timer.");
Console.println("Place a batch of cookies into the oven.");
Console.println("Allow the cookies to bake.");
// Step 3: Decorate the cookies.
Console.println("Mix ingredients for frosting.");
Console.println("Spread frosting and sprinkles.");
}
}
10
Declaring a method
Gives your method a name so it can be executed
• Syntax:
public static void name() {
statement;
statement;
...
statement;
}
• Example:
public static void printWarning() {
Console.println("This product causes cancer");
Console.println("in lab rats and humans.");
}
11
Calling a method
Executes the method's code
• Syntax:
name();
– You can call the same method many times if you like.
• Example:
printWarning();
– Output:
This product causes cancer
in lab rats and humans.
12
Program with static
method
public class FreshPrince {
public static void main(String[] args) {
rap(); // Calling (running) the rap method
Console.println();
rap(); // Calling the rap method again
}
Output:
Now this is the story all about how
My life got flipped turned upside-down
13
Final cookie program
// This program displays a delicious recipe for baking cookies.
public class BakeCookies3 {
public static void main(String[] args) {
makeBatter();
bake(); // 1st batch
bake(); // 2nd batch
decorate();
}
// Step 1: Make the cake batter.
public static void makeBatter() {
Console.println("Mix the dry ingredients.");
Console.println("Cream the butter and sugar.");
Console.println("Beat in the eggs.");
Console.println("Stir in the dry ingredients.");
}
// Step 2: Bake a batch of cookies.
public static void bake() {
Console.println("Set the oven temperature.");
Console.println("Set the timer.");
Console.println("Place a batch of cookies into the oven.");
Console.println("Allow the cookies to bake.");
}
// Step 3: Decorate the cookies.
public static void decorate() {
Console.println("Mix ingredients for frosting.");
Console.println("Spread frosting and sprinkles.");
}
}
14
Methods calling methods
public class MethodsExample {
public static void main(String[] args) {
message1();
message2();
Console.println("Done with main.");
}
public static void message1() {
Console.println("This is message1.");
}
public static void message2() {
Console.println("This is message2.");
message1();
Console.println("Done with message2.");
}
}
• Output:
This is message1.
This is message2.
This is message1.
Done with message2.
Done with main.
15
Control flow
• When a method is called, the program's execution...
– "jumps" into that method, executing its statements, then
– "jumps" back to the point where the method was called.
17
Drawing complex
figures with static
methods
Static methods question
• Write a program to print these figures using methods.
______
/ \
/ \
\ /
\______/
\ /
\______/
+--------+
______
/ \
/ \
| STOP |
\ /
\______/
______
/ \
/ \
+--------+
19
Development strategy
______
/ \ First version (unstructured):
/ \
\ /
\______/ Create an empty program and main method.
\ /
\______/
Copy the expected output into it, surrounding
+--------+ each line with Console.println syntax.
______ Run it to verify the output.
/ \
/ \
| STOP |
\ /
\______/
______
/ \
/ \
+--------+
20
Program version 1
public class Figures1 {
public static void main(String[] args) {
Console.println(" ______");
Console.println(" / \\");
Console.println("/ \\");
Console.println("\\ /");
Console.println(" \\______/");
Console.println();
Console.println("\\ /");
Console.println(" \\______/");
Console.println("+--------+");
Console.println();
Console.println(" ______");
Console.println(" / \\");
Console.println("/ \\");
Console.println("| STOP |");
Console.println("\\ /");
Console.println(" \\______/");
Console.println();
Console.println(" ______");
Console.println(" / \\");
Console.println("/ \\");
Console.println("+--------+");
}
}
21
Development strategy 2
______
/ \ Second version (structured, with redundancy):
/ \
\ /
\______/ Identify the structure of the output.
\ /
\______/ Divide the main method into static methods
+--------+
based on this structure.
______
/ \
/ \
| STOP |
\ /
\______/
______
/ \
/ \
+--------+
22
Output structure
______
/ \ The structure of the output:
/ \
\ / initial "egg" figure
\______/
second "teacup" figure
______
/ \
/ \
This structure can be represented by methods:
| STOP | egg
\ /
teaCup
\______/
stopSign
______
/ \ hat
/ \
+--------+
23
Program version 2
public class Figures2 {
public static void main(String[] args) {
egg();
teaCup();
stopSign();
hat();
}
public static void egg() {
Console.println(" ______");
Console.println(" / \\");
Console.println("/ \\");
Console.println("\\ /");
Console.println(" \\______/");
Console.println();
}
public static void teaCup() {
Console.println("\\ /");
Console.println(" \\______/");
Console.println("+--------+");
Console.println();
}
...
24
Program version 2,
cont'd.
...
public static void stopSign() {
Console.println(" ______");
Console.println(" / \\");
Console.println("/ \\");
Console.println("| STOP |");
Console.println("\\ /");
Console.println(" \\______/");
Console.println();
}
public static void hat() {
Console.println(" ______");
Console.println(" / \\");
Console.println("/ \\");
Console.println("+--------+");
}
}
25
Development strategy 3
______
/ \ Third version (structured, without redundancy):
/ \
\ /
\______/ Identify redundancy in the output, and create
methods to eliminate as much as possible.
\ /
\______/
+--------+ Add comments to the program.
______
/ \
/ \
| STOP |
\ /
\______/
______
/ \
/ \
+--------+
26
Output redundancy
______
/ \
/ \
\ / The redundancy in the output:
\______/
\ /
egg top: reused on stop sign, hat
\______/ egg bottom: reused on teacup, stop sign
+--------+
divider line: used on teacup, hat
______
/ \
/ \ This redundancy can be fixed by methods:
| STOP |
\ / eggTop
\______/ eggBottom
______ line
/ \
/ \
+--------+
27
Program version 3
// Suzy Student, CSE 138, Spring 2094
// Prints several figures, with methods for structure and redundancy.
public class Figures3 {
public static void main(String[] args) {
egg();
teaCup();
stopSign();
hat();
}
// Draws the top half of an an egg figure.
public static void eggTop() {
Console.println(" ______");
Console.println(" / \\");
Console.println("/ \\");
}
// Draws the bottom half of an egg figure.
public static void eggBottom() {
Console.println("\\ /");
Console.println(" \\______/");
}
// Draws a complete egg figure.
public static void egg() {
eggTop();
eggBottom();
Console.println();
}
...
28
Program version 3,
cont'd.
...
// Draws a teacup figure.
public static void teaCup() {
eggBottom();
line();
Console.println();
}
// Draws a stop sign figure.
public static void stopSign() {
eggTop();
Console.println("| STOP |");
eggBottom();
Console.println();
}
// Draws a figure that looks sort of like a hat.
public static void hat() {
eggTop();
line();
}
// Draws a line of dashes.
public static void line() {
Console.println("+--------+");
}
}
29