78
1 © 1992-2007 Pearson Education, Inc. All rights reserved. 4 Control Statements: Part 1

Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

1

© 1992-2007 Pearson Education, Inc. All rights reserved.

4Control Statements:

Part 1

Page 2: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

2

© 1992-2007 Pearson Education, Inc. All rights reserved.

OBJECTIVES In this chapter you will learn: To use basic problem-solving techniques. To develop algorithms through the process of top-

down, stepwise refinement. To use the if and if…else selection statements to

choose among alternative actions. To use the while repetition statement to execute

statements in a program repeatedly. To use counter-controlled repetition and sentinel-

controlled repetition. To use the assignment, increment and decrement

operators. The primitive data types.

Page 3: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

3

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.1 Introduction4.2 Algorithms4.3 Pseudocode4.4 Control Structures4.5 if Single-Selection Statement4.6 if…else Double-Selection Statement4.7 while Repetition Statement4.8 Formulating Algorithms: Counter-Controlled Repetition4.9 Formulating Algorithms: Sentinel-Controlled Repetition4.10 Formulating Algorithms: Nested Control Statements4.11 Compound Assignment Operators4.12 Increment and Decrement Operators4.13 Primitive Types4.14 (Optional) GUI and Graphics Case Study: Creating

Simple Drawings4.15 (Optional) Software Engineering Case Study: Identifying

Class Attributes4.16 Wrap-Up

Page 4: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

4

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.2 Algorithms

• Algorithms– The actions to execute– The order in which these actions execute

• Program control– Specifies the order in which actions execute in a

program

Page 5: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

5

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.3 Pseudocode

• Pseudocode– An informal language similar to English– Helps programmers develop algorithms– Does not run on computers– Should contain input, output and calculation actions– Should not contain variable declarations

Page 6: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

6

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.4 Control Structures

• Sequential execution– Statements are normally executed one after the other in the

order in which they are written

• Transfer of control– Specifying the next statement to execute that is not

necessarily the next one in order– Can be performed by the goto statement

• Structured programming eliminated goto statements

Page 7: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

7

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.4 Control Structures (Cont.)

• Bohm and Jacopini’s research– Demonstrated that goto statements were unnecessary– Demonstrated that all programs could be written with

three control structures• The sequence structure,• The selection structure and• The repetition structure

Page 8: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

8

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.4 Control Structures (Cont.)

• Selection Statements– if statement

• Single-selection statement– if…else statement

• Double-selection statement– switch statement

• Multiple-selection statement

Page 9: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

9

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.4 Control Structures (Cont.)

• Repetition statements– Also known as looping statements– Repeatedly performs an action while its loop-continuation

condition remains true– while statement

• Performs the actions in its body zero or more times– do…while statement

• Performs the actions in its body one or more times– for statement

• Performs the actions in its body zero or more times

Page 10: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

10

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.4 Control Structures (Cont.)

• Java has three kinds of control structures– Sequence statement,– Selection statements (three types) and– Repetition statements (three types)– All programs are composed of these control statements

• Control-statement stacking– All control statements are single-entry/single-exit

• Control-statement nesting

Page 11: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

11

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.5 if Single-Selection Statement

•if statements– Execute an action if the specified condition is true

Page 12: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

12

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.6 if…else Double-Selection Statement

•if…else statement– Executes one action if the specified condition is true or a

different action if the specified condition is false

• Conditional Operator ( ? : )– Java’s only ternary operator (takes three operands)– ? : and its three operands form a conditional expression

• Entire conditional expression evaluates to the secondoperand if the first operand is true

• Entire conditional expression evaluates to the third operandif the first operand is false

Page 13: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

13

© 1992-2007 Pearson Education, Inc. All rights reserved.

Good Programming Practice 4.1

Indent both body statements of anif…else statement.

Page 14: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

14

© 1992-2007 Pearson Education, Inc. All rights reserved.

Good Programming Practice 4.2

If there are several levels of indentation,each level should be indented the sameadditional amount of space.

Page 15: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

15

© 1992-2007 Pearson Education, Inc. All rights reserved.

Good Programming Practice 4.3

Conditional expressions are more difficultto read than if…else statements and shouldbe used to replace only simple if…elsestatements that choose between two values.

Page 16: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

16

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.6 if…else Double-Selection Statement(Cont.)

• Nested if…else statements– if…else statements can be put inside other if…else

statements

• Dangling-else problem– elses are always associated with the immediately

preceding if unless otherwise specified by braces { }

• Blocks– Braces { } associate statements into blocks– Blocks can replace individual statements as an if body

Page 17: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

17

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.6 if…else Double-Selection Statement(Cont.)

• Logic errors– Fatal logic errors cause a program to fail and terminate

prematurely– Nonfatal logic errors cause a program to produce incorrect

results

• Empty statements– Represented by placing a semicolon ( ; ) where a statement

would normally be– Can be used as an if body

Page 18: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

18

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.1

Forgetting one or both of the braces thatdelimit a block can lead to syntax errorsor logic errors in a program.

Page 19: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

19

© 1992-2007 Pearson Education, Inc. All rights reserved.

Good Programming Practice 4.4

Always using braces in an if...else (orother) statement helps prevent theiraccidental omission, especially whenadding statements to the if-part or the else-part at a later time. To avoid omitting oneor both of the braces, some programmerstype the beginning and ending braces ofblocks before typing the individualstatements within the braces.

Page 20: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

20

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.2

Placing a semicolon after the condition inan if or if...else statement leads to a logicerror in single-selection if statements and asyntax error in double-selection if...elsestatements (when the if-part contains anactual body statement).

Page 21: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

21

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.7 while Repetition Statement

• while statement– Repeats an action while its loop-continuation condition

remains true

Page 22: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

22

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.3

Not providing, in the body of a whilestatement, an action that eventually causesthe condition in the while to become falsenormally results in a logic error called aninfinite loop, in which the loop neverterminates.

Page 23: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

23

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.8 Formulating Algorithms: Counter-Controlled Repetition

• Counter-controlled repetition– Use a counter variable to count the number of times a loop

is iterated

• Integer division– The fractional part of an integer division calculation is

truncated (thrown away)

Page 24: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

24

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.5 | Pseudocode algorithm that uses counter-controlled repetition to solve theclass-average problem.

1 Set total to zero2 Set grade counter to one34 While grade counter is less than or equal to ten5 Prompt the user to enter the next grade6 Input the next grade7 Add the grade into the total8 Add one to the grade counter910 Set the class average to the total divided by ten11 Print the class average

Page 25: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

25

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline 1 // Fig. 4.6: GradeBook.java

2 // GradeBook class that solves class - average problem using

3 // counter - controlled repetition.

4 import java.util.Scanner; // program uses class Scanner

5

6 public c l ass GradeBook

7 {

8 pr ivate String co urseName; // name of course this GradeBook represents

9

10 // constructor initializes courseName

11 public GradeBook( String name )

12 {

13 courseName = name; // initializes courseName

14 } // end constructor

15

16 / / method to set the course name

17 public vo id setCourseName( String name )

18 {

19 courseName = name; // store the course name

20 } // end method setCourseName

21

22 // method to retrieve the course name

23 public String getCourseName()

24 {

25 return courseName;

26 } // end method getCourseName

27

•GradeBook.java(1 of 3)

Assign a value to instance variable courseName

Declare method setCourseName

Declare method getCourseName

Page 26: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

26

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline28 // display a welcome message to the GradeBook user

29 public vo id displayMessage()

30 {

31 // getCourseName gets the name of the course

32 System.out.printf( "Welcome to the grade book for\n%s!\n\n",

33 getCours eName() );

34 } // end method displayMessage

35

36 // determine class average based on 10 grades entered by user

37 public vo id determineClassAverage()

38 {

39 // create Scanner to obtain input from command window

40 Scanner input = new Scanner( System.in );

41

42 int total; // sum of grades entered by user

43 int gradeCounter; // number of the grade to be entered next

44 int grade; // grade value entered by user

45 int average; // average of grades

46

47 // initialization phase

48 total = 0; // initialize total

49 gradeCounter = 1; // initialize loop counter

50

•GradeBook.java(2 of 3)

Declare method displayMessage

Declare method determineClassAverage

Declare and initialize Scannervariable input

Declare local int variables total,gradeCounter, grade and average

Page 27: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

27

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline51 // processing phase

52 while ( gradeCounter <= 10 ) // loop 10 times

53 {

54 System.out.print( "Enter grade: " ); // prompt

55 grade = input.nextInt(); // input next grade

56 total = total + grade ; // add grade to total

57 gradeCounter = gradeCounter + 1; // increment counter by 1

58 } // end while

59

60 // termination phase

61 average = total / 10; // integer division yields integer result

62

63 // display total and average of grades

64 System.out.printf( "\nTotal of all 10 grades is %d \n", total );

65 System.out.printf( "Class average is %d \n", average );

66 } // end method determineClassAverage

67

68 } // end class Grad eBook

•GradeBook.java(3 of 3)

while loop iterates as long asgradeCounter <= 10

Increment the counter variable gradeCounter

Calculate average grade

Display results

Page 28: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

28

© 1992-2007 Pearson Education, Inc. All rights reserved.

Good Programming Practice 4.5

Separate declarations from otherstatements in methods with a blank linefor readability.

Page 29: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

29

© 1992-2007 Pearson Education, Inc. All rights reserved.

Software Engineering Observation 4.1

Experience has shown that the mostdifficult part of solving a problem on acomputer is developing the algorithm forthe solution. Once a correct algorithm hasbeen specified, the process of producing aworking Java program from the algorithmis normally straightforward.

Page 30: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

30

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.4

Using the value of a local variable beforeit is initialized results in a compilationerror. All local variables must beinitialized before their values are used inexpressions.

Page 31: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

31

© 1992-2007 Pearson Education, Inc. All rights reserved.

Error-Prevention Tip 4.1

Initialize each counter and total, either inits declaration or in an assignmentstatement. Totals are normally initializedto 0. Counters are normally initialized to 0or 1, depending on how they are used (wewill show examples of when to use 0 andwhen to use 1).

Page 32: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

32

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•GradeBookTest.java

1 // Fig. 4.7: GradeBookTest.java

2 // Create GradeBook object and invoke its determineClassAverage method.

3

4 public c l ass GradeBookTest

5 {

6 public stat ic vo id main( String args[] )

7 {

8 // create GradeBook object myGradeBook and

9 // pass course name to constructor

10 GradeBook myGradeBook = new GradeBook(

11 "CS101 Introduction to Java Programming" );

12

13 myGradeBook.displayMessage(); // display welcome message

14 myGradeBook.determineClassAverage(); // find average of 10 grades

15 } // end main

16

17 } // end class GradeBookTest

Welcome to the grade book for CS101 Introduction to Java Programming!

Enter grade: 67 Enter grade: 78 Enter grade: 89 Enter grade: 67 Enter grade: 87 Enter grade: 98 Enter grade: 93 Enter grade: 85 Enter grade: 82 Enter grade: 100

Total of all 10 grades is 846 Class average is 84

Create a new GradeBook object

Pass the course’s name to the GradeBookconstructor as a string

Call GradeBook’sdetermineClassAverage method

Page 33: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

33

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.5

Assuming that integer division rounds(rather than truncates) can lead toincorrect results. For example, 7 ÷ 4,which yields 1.75 in conventionalarithmetic, truncates to 1 in integerarithmetic, rather than rounding to 2.

Page 34: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

34

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.9 Formulating Algorithms: Sentinel-Controlled Repetition

• Sentinel-controlled repetition– Also known as indefinite repetition– Use a sentinel value (also known as a signal, dummy or flag

value)• A sentinel value cannot also be a valid input value

Page 35: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

35

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.9 Formulating Algorithms: Sentinel-Controlled Repetition (Cont.)

• Top-down, stepwise refinement– Top: a single statement that conveys the overall function of

the program– First refinement: multiple statements using only the

sequence structure– Second refinement: commit to specific variables, use

specific control structures

Page 36: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

36

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.6

Choosing a sentinel value that is also alegitimate data value is a logic error.

Page 37: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

37

© 1992-2007 Pearson Education, Inc. All rights reserved.

Software Engineering Observation 4.2

Each refinement, as well as the top itself,is a complete specification of thealgorithm—only the level of detailvaries.

Page 38: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

38

© 1992-2007 Pearson Education, Inc. All rights reserved.

Software Engineering Observation 4.3

Many programs can be divided logicallyinto three phases: an initialization phasethat initializes the variables; a processingphase that inputs data values and adjustsprogram variables (e.g., counters andtotals) accordingly; and a terminationphase that calculates and outputs the finalresults.

Page 39: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

39

© 1992-2007 Pearson Education, Inc. All rights reserved.

Error-Prevention Tip 4.2

When performing division by anexpression whose value could be zero,explicitly test for this possibility andhandle it appropriately in your program(e.g., by printing an error message)rather than allow the error to occur

Page 40: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

40

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.8 | Class-average problem pseudocode algorithm with sentinel-controlled repetition.

1 Initialize total to zero2 Initialize counter to zero34 Prompt the user to enter the first grade5 Input the first grade (possibly the sentinel)67 While the user has not yet entered the sentinel8 Add this grade into the running total9 Add one to the grade counter10 Prompt the user to enter the next grade11 Input the next grade (possibly the sentinel)1213 If the counter is not equal to zero14 Set the average to the total divided by the counter15 Print the average16 else17 Print “No grades were entered”

Page 41: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

41

© 1992-2007 Pearson Education, Inc. All rights reserved.

Software Engineering Observation 4.4

Terminate the top-down, stepwiserefinement process when you havespecified the pseudocode algorithm insufficient detail for you to convert thepseudocode to Java. Normally,implementing the Java program is thenstraightforward.

Page 42: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

42

© 1992-2007 Pearson Education, Inc. All rights reserved.

Software Engineering Observation 4.5Some experienced programmers writeprograms without ever using program-development tools like pseudocode. Theyfeel that their ultimate goal is to solve theproblem on a computer and that writingpseudocode merely delays the productionof final outputs. Although this method maywork for simple and familiar problems, itcan lead to serious errors and delays inlarge, complex projects.

Page 43: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

43

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•GradeBook.java(1 of 3)

1 // Fig. 4.9: GradeBook.java

2 // GradeBook class that solves class - average program using

3 // sentinel - controlled repetition.

4 import java.util.Scanner; // program uses class Scanner

5

6 public c l ass GradeBook

7 {

8 pr ivate String c ourseName; // name of course this GradeBook represents

9

10 // constructor initializes courseName

11 public GradeBook( String name )

12 {

13 courseName = name; // initializes courseName

14 } // end constructor

15

16 / / method to set the course name

17 public vo id setCourseName( String name )

18 {

19 courseName = name; // store the course name

20 } // end method setCourseName

21

22 // method to retrieve the course name

23 public Strin g getCourseName()

24 {

25 return courseName;

26 } // end method getCourseName

27

Assign a value to instance variable courseName

Declare method setCourseName

Declare method getCourseName

Page 44: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

44

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•GradeBook.java(2 of 3)

28 // display a welcome message to the GradeBook user

29 public vo id displayMessage()

30 {

31 // getCourseName gets the name of the course

32 System.out.printf( "Welcome to the grade book for\n%s!\n\n",

33 getCours eName() );

34 } // end method displayMessage

35

36 // determine the average of an arbitrary number of grades

37 public vo id determineClassAverage()

38 {

39 // create Scanner to obtain input from command window

40 Scan ner input = new Scanner( System.in );

41

42 int total; // sum of grades

43 int gradeCounter; // number of grades entered

44 int grade; // grade value

45 double average; // number with decimal point for average

46

47 // initialization phase

48 total = 0; // initialize total

49 gradeCounter = 0; // initialize loop counter

50

51 // processing phase

52 // prompt for input and read grade from user

53 System.out.print( "Enter grade or - 1 to quit: " );

54 grade = input.nextInt();

55

Declare method displayMessage

Declare method determineClassAverage

Declare and initialize Scannervariable input

Declare local int variables total,gradeCounter and grade anddouble variable average

Page 45: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

45

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•GradeBook.java(3 of 3)

56 // loop until sentinel value read from user

57 while ( grade != - 1 )

58 {

59 total = total + grade; // add grade to total

60 gradeCounter = gradeCounter + 1; // increment counter

61

62 // prompt for input and read next grade from user

63 System.out.print( "Enter grade or - 1 to quit: " );

64 grade = input.nextInt();

65 } // end while

66

67 // termination phase

68 // if us er entered at least one grade...

69 i f ( gradeCounter != 0 )

70 {

71 // calculate average of all grades entered

72 average = (double) total / gradeCounter;

73

74 // display total and average (with two digits of precision)

75 System.out.printf( "\nTotal of the %d grades entered is %d \n",

76 gradeCounter, total );

77 System.out.printf( "Class average is %.2f \n", average );

78 } // end if

79 else // no grades were entered, so output appropriate message

80 System.out.println( "No grades were entered" );

81 } // end method determineClassAverage

82

83 } // end class GradeBook

while loop iterates as long asgrade != the sentinelvalue, -1

Calculate average gradeusing (double) toperform explicitconversion

Display average grade

Display “No grades were entered” message

Page 46: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

46

© 1992-2007 Pearson Education, Inc. All rights reserved.

Good Programming Practice 4.6

In a sentinel-controlled loop, the promptsrequesting data entry should explicitlyremind the user of the sentinel value.

Page 47: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

47

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.7

Omitting the braces that delimit a blockcan lead to logic errors, such as infiniteloops. To prevent this problem, someprogrammers enclose the body of everycontrol statement in braces even if thebody contains only a single statement.

Page 48: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

48

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.9 Formulating Algorithms: Sentinel-Controlled Repetition (Cont.)

• Unary cast operator– Creates a temporary copy of its operand with a different

data type• example: (double) will create a temporary floating-point

copy of its operand– Explicit conversion

• Promotion– Converting a value (e.g. int) to another data type (e.g.double) to perform a calculation

– Implicit conversion

Page 49: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

49

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.8

The cast operator can be used to convertbetween primitive numeric types, such asint and double, and between relatedreference types (as we discuss in Chapter10, Object-Oriented Programming:Polymorphism). Casting to the wrong typemay cause compilation errors or runtimeerrors.

Page 50: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

50

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•GradeBookTest.java

1 // Fig. 4.10: GradeBookTest.java

2 // Create GradeBook object and invoke its determineClassAverage method.

3

4 public c l ass GradeBookTest

5 {

6 public stat ic vo id main( String args[] )

7 {

8 // create GradeBook object myGradeBook and

9 // pass course name to constructor

10 GradeBook myGradeBook = new GradeBook(

11 "CS101 Introduction to Java Programming" );

12

13 myGradeBook.displayMessage(); // display welcome message

14 myGradeBo ok.determineClassAverage(); // find average of grades

15 } // end main

16

17 } // end class GradeBookTest

Welcome to the grade book for CS101 Introduction to Java Programming!

Enter grade or - 1 to quit: 97 Enter grade or - 1 to quit: 88 Enter g rade or - 1 to quit: 72 Enter grade or - 1 to quit: - 1

Total of the 3 grades entered is 257 Class average is 85.67

Create a new GradeBook object

Pass the course’s name to the GradeBookconstructor as a string

Call GradeBook’sdetermineClassAverage method

Page 51: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

51

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.10 Formulating Algorithms: NestedControl Statements

• Control statements can be nested within oneanother

– Place one control statement inside the body of the other

Page 52: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

52

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.11 | Pseudocode for examination-results problem.

1 Initialize passes to zero

2 Initialize failures to zero

3 Initialize student counter to one

4

5 While student counter is less than or equal to 10

6 Prompt the user to enter the next exam result

7 Input the next exam result

8

9 If th e student passed

10 Add one to passes

11 Else

12 Add one to failures

13

14 Add one to student counter

15

16 Print the number of passes

17 Print the number of failures

18

19 If more than eight students passed

20 Print “Raise tuition”

Page 53: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

53

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•Analysis.java(1 of 2)

1 // Fig. 4.12: Analysis.java

2 // Analysis of examination results.

3 import java.util.Scanner; // class uses class Scanner

4

5 public class Analysis

6 {

7 public void processExamResults

8 {

9 // create Scanner to obtain inp ut from command window

10 Scanner input = new Scanner( System.in );

11

12 // initializing variables in declarations

13 int passes = 0; // number of passes

14 int failures = 0; // number of failures

15 i n t studentCounter = 1; // student counter

16 int result; // one exam result (obtains value from user)

17

18 // process 10 students using counter - controlled loop

19 while ( studentCounter <= 10 )

20 {

21 // pro mpt user for input and obtain value from user

22 System.out.print( "Enter result (1 = pass, 2 = fail): " );

23 result = input.nextInt();

24

Declare processExamResults’local variables

while loop iterates as long asstudentCounter <= 10

Page 54: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

54

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•Analysis.java(2 of 2)

25 // if...else nested in while

26 i f ( result == 1 ) // if result 1,

27 passes = passes + 1; // increment passes;

28 else // el se result is not 1, so

29 failures = failures + 1; // increment failures

30

31 // increment studentCounter so loop eventually terminates

32 studentCounter = studentCounter + 1;

33 } // end while

34

35 // termination phase; prepare and display results

36 System.out.printf( "Passed: %d\nFailed: %d \n", passes, failures );

37

38 // determine whether more than 8 students passed

39 i f ( passes > 8 )

40 System.o ut.println( "Raise Tuition" );

41 } // end method processExamResults

42

43 } // end class Analysis

Determine whether this student passedor failed and increment theappropriate variable

Determine whether more than eightstudents passed the exam

Page 55: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

55

© 1992-2007 Pearson Education, Inc. All rights reserved.

Error-Prevention Tip 4.3

Initializing local variables when they aredeclared helps the programmer avoid anycompilation errors that might arise fromattempts to use uninitialized data. WhileJava does not require that local variableinitializations be incorporated intodeclarations, it does require that localvariables be initialized before their valuesare used in an expression.

Page 56: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

56

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•AnalysisTest.java

1 // Fig. 4.13: AnalysisTest.java 2 // Test program for class Analysis. 3

4 public c l ass AnalysisTest 5 { 6 public stat ic vo id main( String args[] ) 7 { 8 Analysis application = new Analysis(); // create Analysis object 9 appl ication.processExamResults(); // call method to process results 10 } // end main 11

12 } // end class AnalysisTest

Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 2 Enter result (1 = pass, 2 = fail): 1 Enter resu lt (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Passed : 9 Failed: 1 Raise Tuition

Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 2 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 2 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 2 Enter result (1 = pass, 2 = fail): 2 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Enter result (1 = pass, 2 = fail): 1 Passed: 6 Failed: 4

Create an Analysis object

More than 8 students passed the exam

Page 57: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

57

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.11 Compound Assignment Operators

• Compound assignment operators– An assignment statement of the form:

variable = variable operator expression;where operator is +, -, *, / or % can be written as:variable operator= expression;

– example: c = c + 3; can be written as c += 3;• This statement adds 3 to the value in variable c and stores

the result in variable c

Page 58: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

58

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.14 | Arithmetic compound assignment operators.

Assignment

operator

Sample

expression Explanation Assigns

Assume: int c = 3, d = 5, e = 4, f = 6, g = 12;

+= c += 7 C = c + 7 10 to c

- = d - = 4 d = d - 4 1 to d

*= e *= 5 e = e * 5 20 to e

/= f /= 3 f = f / 3 2 to f

%= g %= 9 g = g % 9 3 to g

Page 59: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

59

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.12 Increment and DecrementOperators

• Unary increment and decrement operators– Unary increment operator (++) adds one to its operand– Unary decrement operator (--) subtracts one from its

operand– Prefix increment (and decrement) operator

• Changes the value of its operand, then uses the new value ofthe operand in the expression in which the operation appears

– Postfix increment (and decrement) operator• Uses the current value of its operand in the expression in

which the operation appears, then changes the value of theoperand

Page 60: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

60

© 1992-2007 Pearson Education, Inc. All rights reserved.

Good Programming Practice 4.7

Unlike binary operators, the unaryincrement and decrement operatorsshould be placed next to their operands,with no intervening spaces.

Page 61: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

61

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.15 | Increment and decrement operators.

Operator Called Sample

expression Explanation

+ + prefix increment

++a Increment a by 1, then use the new value of a in the expression in which a resides.

+ + postfix increment

a + + Use the current value of a in the expression in which a resides, then incr ement a by 1.

- - prefix decrement

- - b Decrement b by 1, then use the new value of b in the expression in which b resides.

- - postfix decrement

b- - Use the current value of b in the expression in which b resides, then decrement b by 1.

Page 62: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

62

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•Increment.java

1 // Fig. 4.16: Increment.java

2 // Prefix increment and postfix increment operators.

3

4 public class Increment

5 {

6 public static void main( String args[] )

7 {

8 int c;

9

10 // demonstrate postfix increment op e r a to r

11 c = 5; // assign 5 to c

12 System.out.println( c ); // print 5

13 System.out.println( c++ ); // print 5 then postincrement

14 System.out.println( c ); // print 6

15

16 System.out.p rintln(); // skip a line

17

18 // demonstrate prefix increment operator

19 c = 5; // assign 5 to c

20 System.out.println( c ); // print 5

21 System.out.println( ++c ); // preincrement then print 6

22 System.out.println( c ); // print 6

23

24 } // end main

25

26 } // end class Increment

5 5 6

5 6 6

Postincrementing the c variable

Preincrementing the c variable

Page 63: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

63

© 1992-2007 Pearson Education, Inc. All rights reserved.

Common Programming Error 4.9

Attempting to use the increment ordecrement operator on an expressionother than one to which a value can beassigned is a syntax error. For example,writing ++(x + 1) is a syntax error because(x + 1) is not a variable.

Page 64: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

64

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.17 | Precedence and associativity of the operators discussed so far.

Operators Associativity Type

++ - - right to left unary postfix

++ - - + - ( type ) right to left unary prefix

* / % left to right Multiplicative

+ - left to right Additive

< <= > >= left to right Relational

== != left to right Equality

? : right to left Conditional

= += - = *= /= %= right to left assignment

Page 65: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

65

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.13 Primitive Types

• Java is a strongly typed language– All variables have a type

• Primitive types in Java are portable across allplatforms that support Java

Page 66: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

66

© 1992-2007 Pearson Education, Inc. All rights reserved.

Portability Tip 4.1Unlike C and C++, the primitive types inJava are portable across all computerplatforms that support Java. Thanks to thisand Java's many other portability features,a programmer can write a program onceand be certain that it will execute on anycomputer platform that supports Java. Thiscapability is sometimes referred to asWORA (Write Once, Run Anywhere).

Page 67: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

67

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.14 (Optional) GUI and Graphics CaseStudy: Creating Simple Drawings

• Java’s coordinate system– Defined by x-coordinates and y-coordinates

• Also known as horizontal and vertical coordinates• Are measured along the x-axis and y-axis

– Coordinate units are measured in pixels

•Graphics class from the java.awt package– Provides methods for drawing text and shapes

•JPanel class from the javax.swing package– Provides an area on which to draw

Page 68: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

68

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.18 | Java coordinate system. Units are measured in pixels.

Page 69: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

69

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.14 (Optional) GUI and Graphics CaseStudy: Creating Simple Drawings (Cont.)

• Inheriting– extends keyword– The subclass inherits from the superclass

• The subclass has the data and methods that the superclasshas as well as any it defines for itself

Page 70: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

70

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•DrawPanel.java

1 // Fig. 4.19: DrawPanel. j ava

2 // Draws two crossing lines on a panel.

3 import java.awt.Graphics;

4 import javax.swing.JPanel;

5

6 public c l ass DrawPanel extends JPanel

7 {

8 // draws an X from the corners of the panel

9 public vo id paintComponent( Graphics g )

10 {

11 // call paintComponent to ensure the panel displays correctly

12 super.paintComponent( g );

13

14 int width = getWidth(); // total width

15 int height = getHeight(); // total height

16

17 // draw a line from the upper - left to the lower - r ight

18 g.drawLine( 0, 0, width, height );

19

20 // draw a line from the lower - left to the upper - r ight

21 g.drawLine( 0, height, width, 0 );

22 } // end method paintComponent

23 } // end class DrawPanel

Import the java.awt.Graphics andthe javax.swing.JPanel classes

The DrawPanel class extendsthe JPanel class

Declare the paintComponent method

Draw the two lines

Retrieve the JPanel’swidth and height

Page 71: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

71

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.14 (Optional) GUI and Graphics CaseStudy: Creating Simple Drawings (Cont.)

• The JPanel class– Every JPanel has a paintComponent method

• paintComponent is called whenever the system needs todisplay the JPanel

– getWidth and getHeight methods• Return the width and height of the JPanel, respectively

– drawLine method• Draws a line from the coordinates defined by its first two

arguments to the coordinates defined by its second twoarguments

Page 72: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

72

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.14 (Optional) GUI and Graphics CaseStudy: Creating Simple Drawings (Cont.)

•JFrame class from the javax.swing package– Allows the programmer to create a window– setDefaultCloseOperation method

• Pass JFrame.EXIT_ON_CLOSE as its argument to set theapplication to terminate when the user closes the window

– add method• Attaches a JPanel to the JFrame

– setSize method• Sets the width (first argument) and height (second argument)

of the JFrame

Page 73: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

73

© 1992-2007 Pearson Education, Inc. All rights reserved.

Outline

•DrawPanelTest.java

1 // Fig. 4.20: DrawPanelTest.java 2 // Application to display a DrawPanel. 3 import javax.swing.JFrame; 4 5 public c l ass DrawPanelTest 6 { 7 public stat ic vo id main( String args[] ) 8 { 9 // create a panel that contains our d raw ing 10 DrawPanel panel = new DrawPanel(); 11 12 // create a new frame to hold the panel 13 JFrame application = new JFrame(); 14 15 // set the frame to exit when it is closed 16 appl ication.setDe faultCloseOperation( JFrame.EXIT_ON_CLOSE ); 17 18 application.add( panel ); // add the panel to the frame 19 application.setSize( 250, 250 ); // set the size of the frame 20 application.setVisible( t rue ); // make the frame visible 21 } // end main 22 } // end class DrawPanelTest

Import the JFrame class fromthe javax.swing package

Create DrawPanel andJFrame objects

Set the application toterminate when the usercloses the window

Add the DrawPanel to the JFrame

Set the size of and display the JFrame

Page 74: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

74

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.21 | Lines fanning from a corner.

Page 75: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

75

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.22 | Line art with loops and drawLine.

Page 76: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

76

© 1992-2007 Pearson Education, Inc. All rights reserved.

Fig. 4.23 | Descriptive words and phrases from the ATM requirements.

Class Descriptive words and phrases

ATM user is authenticated

BalanceInquiry account number

Withdrawal account number amount

Deposit account number amount

BankDatabase [no descriptive words or phrases]

Account account number PIN Balance

Screen [no d escriptive words or phrases]

Keypad [no descriptive words or phrases]

CashDispenser begins each day loaded with 500 $20 bills

DepositSlot [no descriptive words or phrases]

Page 77: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

77

© 1992-2007 Pearson Education, Inc. All rights reserved.

Software Engineering Observation 4.6

At early stages in the design process,classes often lack attributes (andoperations). Such classes should not beeliminated, however, because attributes(and operations) may become evident inthe later phases of design andimplementation.

Page 78: Control Statements: Part 1sara.unisalento.it/~mirto/beniculturali/page3/files/lez8...4.7 while Repetition Statement 4.8 Formulating Algorithms: Counter-Controlled Repetition 4.9 Formulating

78

© 1992-2007 Pearson Education, Inc. All rights reserved.

4.15Identifying Class Attributes

• Identifying attributes– Look for descriptive words and phrases in the

requirements document– Create attributes and assign them to classes– Each attribute is given an attribute type– Some attributes may have an initial value– Some classes may end up without any attributes

• Additional attributes may be added later on as the designand implementation process continues

– Reference-type attributes are modeled more clearly asassociations