45
MODULAR DESIGN AND ABSTRACTION

1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

Embed Size (px)

Citation preview

Page 1: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

1

MODULAR DESIGN

AND ABSTRACTION

Page 2: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

2

SPECIFYING THE DETAILS OF A PROBLEM

INTO A RELATED SET OF SMALLER

PROBLEMS.

Page 3: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

3

STATE THE PROBLEM

SUBDIVIDE THE PROBLEM INTO MAJOR SUBPROBLEMS

SUBDIVIDE EACH SUBPROBLEM INTO SMALLER TASKS

REPEAT THE PROCESS UNTIL TASKS ARE EASILY

SOLVED.

TOP- DOWN DESIGN

Page 4: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

4

THE STRUCTURE CHART

A GRAPHICAL REPRESENTATION OF SYSTEM

COMPONENTS. USED TO IDENTIFY AND DEFINE

RELATIONSHIPS AMONG SUBPROBLEMS.

Page 5: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

5

main

module2module1 module3

A STRUCTURE CHART

LEVEL O

LEVEL 1

Page 6: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

6

EACH SUBDIVISION IS REFERRED TO AS A

STEPWISE REFINEMENT.

TASKS AT EACH STAGE OF THE SUBDIVISION ARE

REFERRED TO AS MODULES.

STEPWISE REFINEMENT

Page 7: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

7

PROBLEM SOLVING WITHTOP- DOWN DESIGN

PROBLEM:

GET THREE INTEGER NUMBERS REPRESENTING

TEST MARKS. COMPUTE AND DISPLAY THEIR AVERAGE.

Page 8: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

8

FindAvg

CalculateAverage

GetNumbers

DisplayResults

THE STRUCTURE CHARTFOR PROGRAM FindAvg:

LEVEL 0

LEVEL 1

Page 9: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

9

THE ALGORITHM:

1 GET test1, test2, test32 CALCULATE average3 DISPLAY average

Page 10: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

10

NEW CONCEPTS

MODULES

Page 11: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

11

MODULAR DESIGN ANDFUNCTIONS

MODULES ARE CODED AS SUBPROGRAMS. A C++ FUNCTION

IS A GROUPING OF STATEMENTS INTO A SINGLE UNIT THAT

PERFORMS A TASK.

EACH C++ PROGRAM IS MADE UP OF ONE OR MORE

FUNCTIONS (main() IS A FUNCTION).

Page 12: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

12

FUNCTION PROTOTYPE

A FUNCTION MUST BE DECLARED BEFORE IT MAY BE CALLED.

type function_name ();

// FINDS THE AVERAGE OF THREE NUMBERS

void Find_average ();

Page 13: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

13

FUNCTION CALLS

A FUNCTION IS CALLED THROUGH THE EXECUTION OF A FUNCTION CALL. LOGIC FLOW IS TRANSFERRED TO function_name.

// A CALL TO FUNCTION Find_average

Find_average ();

function_name ();

Page 14: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

14

FUNCTION DEFINITION

A FUNCTION CONSISTS OF 2 PARTS: THE HEADING AND THE BODY.

THE HEADING INCLUDES A TYPE SPECIFICATION, FUNCTION NAME, AND LEFT AND RIGHT PARENTHESES.

THE BODY CONSISTS OF LOCAL DECLARATIONS AND EXECUTABLE STATEMENTS. THE FUNCTION BODY BEGINS WITH A LEFT BRACE AND ENDS WITH A RIGHT BRACE.

Page 15: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

15

type function_name ( )

{

local_declarations

executable_statements

}

heading

body

Page 16: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

16

void Find_average(){ // Calculates the average const int NUMBER_OF_TESTS = 3; average = (test1 + test2 + test3) / NUMBER_OF_TESTS; return;} // end Find_average

EXAMPLE:

Page 17: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

17

FLOW OF CONTROL

FUNCTIONS ARE DEFINED PHYSICALLY AFTER THE MAIN

PROGRAM. EXECUTION STARTS WITH THE

STATEMENTS OF THE MAIN PROGRAM.

THE CALL STATEMENT ACTS AS TRANSFER OF

CONTROL. THE RETURN STATEMENT SENDS THE

CONTROL BACK TO THE CALLING MODULE.

Page 18: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

18

EXAMPLE:

...

void main ()

{

...

Get_data ();

Find_average ();

Display_results ();

return;

}

void Find_average (){ // Calculates the average const int NUMBER_OF_TESTS = 3; average = ( test1 + test2 + test3 ) / NUMBER_OF_TESTS; return;} // end Find_average ()

Page 19: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

19

// FILE: FindAvg2.cpp// Finds the average of three test scores#include <iostream>using std::cout;using std::cin;using std::endl;// global data:float test1, test2, test3, average;

void main (){ // functions used: void Get_data (); void Find_average (); void Display_results (); // function calls: Get_data (); Find_average (); Display_results (); return;}

THE CODE FOR FindAvg:

Page 20: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

20

void Get_data (){ // Gets the grade marks cout << "Enter the three test marks: "; cin >> test1 >> test2 >> test3; return;}

void Find_average(){ // Calculates the average const int NUMBER_OF_TESTS = 3; average = (test1 + test2 + test3) / NUMBER_OF_TESTS; return;}

void Display_results (){ // Displays the average cout << "The average of the 3 test marks is " << average << endl; return;}

Page 21: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

21

LOCAL DECLARATIONS

OBJECTS DECLARED LOCALLY WITHIN A FUNCTION CAN BE REFERENCED ONLY WITHIN THAT FUNCTION.

Page 22: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

22

GLOBAL DECLARATIONS

OBJECTS DECLARED OUTSIDE OF FUNCTIONS CAN BE REFERENCED FROM WITHIN ANY FUNCTION THAT FOLLOWS THAT DECLARATION.

Page 23: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

23

PARAMETERS ARE USED TO COMMUNICATE BETWEEN

MODULES.

THE CALLING MODULE PASSES VALUES TO THE

CALLED MODULE TO USE THEM IN PROCESSING.

THE CALLED MODULE RETURNS THE RESULTS TO THE

CALLING MODULE.

MODULE COMMUNICATION

Page 24: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

24

EXAMPLE:

PROBLEM

GIVEN THE RADIUS OF A CIRCLE, COMPUTE AND DISPLAY THE AREA AND THE CIRCUMFERENCE.

Page 25: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

25

ANALYSIS AND SPECIFICATIONS

IN ORDER TO COMPUTE THE CIRCLE’S AREA AND CIRCUMFERENCE (PROBLEM’S OUTPUT), WE NEED THE RADIUS (PROBLEM’S INPUT). WE ALSO KNOW THAT THE AREA MAY BE CALCULATED AS: x RADIUS2

AND THE CIRCUMFERENCE MAY BE CALCULATED AS:

2 x πx RADIUS.

DATA REQUIREMENTS

CONSTANT π = 3.14159

INPUT RADIUS (FLOAT)

OUTPUT AREA (FLOAT)

CIRCUMFERENCE (FLOAT)

FORMULAE AREA = π * RADIUS * RADIUS

CIRCUMFERENCE = 2 * π * RADIUS

Page 26: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

26

DESIGN

HAVING DEFINED THE PROBLEM’S INPUT AND OUTPUT, WE MAY START IDENTIFYING THE SYSTEM’S COMPONENTS AND STEPS NECESSARY TO SOLVE THE PROBLEM.

Page 27: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

27

AreaCircm

ComputeGet radius Display Result

LEVEL 0

LEVEL 1

STRUCTURE CHART

Page 28: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

28

AreaCircm

ComputeGet radius Display Result

LEVEL 0

LEVEL 1

area circumLEVEL 2

STRUCTURE CHART

Page 29: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

29

1. GET DATA

2. COMPUTE

3. DISPLAY RESULTS

ALGORITHM

Page 30: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

30

1. GET DATA

2. COMPUTE

2.1 COMPUTE AREA

2.2 COMPUTE CIRCUMFERENCE

3. DISPLAY RESULTS

ALGORITHM: A Second Level Refinement

Page 31: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

31

NEW CONCEPTS

MODULES COMMUNICATION

Page 32: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

32

FUNCTION PROTOTYPEUSING PARAMETERS

type function_name (parameter_type_list);

// computes the area of a circle

float Compute_area (float r);

Page 33: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

33

FUNCTION CALLS

function_name (parameter_list);

// A call to function Compute_area() Compute_area (radius);

Page 34: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

34

FUNCTION DEFINITIONUSING PARAMETERS

type function_name ( parameter_list)

{

local_declarations

executable statements

}

heading

body

Page 35: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

35

EXAMPLE:

// computes the area of a circle

float Compute_area (float r)

{

// compute and return the area

return PI * r * r;

} // end Compute_area ()

DEFINITION:

Page 36: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

36

CALL:

area = Compute_area (radius);

Page 37: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

37

SAME RULES AS WITH IDENTIFIERS.

void Module_name (float first, float second,

float third, float result);

OR

void Calculate_average (float test1, float test2,

float test3, float average);

THE SECOND MODULE NAME IS MORE MEANINGFUL.

NAMING RULES

Page 38: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

38

// FILE: AreaCircm.cpp// FINDS AND PRINTS THE AREA AND CIRCUMFERENCE OF A CIRCLE

#include <iostream>#include "CmptArCr.cpp" //Compute_area and Compute_circumusing std::cout;using std::cin;using std::endl;

void main (){ // functions used: // COMPUTES THE AREA OF A CIRCLE float Compute_area (float);

// COMPUTES THE CIRCUMFERENCE OF A CIRCLE float Compute_circum (float);

IMPLEMENTATION FOR AreaCircm

Page 39: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

39

// local data: float radius; // radius of circle float area; // area of circle float circum; // circumference of circle

// get radius; cout << "enter the circle radius: "; cin >> radius;

// compute the area of the circle area = Compute_area (radius);

// compute the circumference of the circle circum = Compute_circum (radius);

cout << "the area of the circle is " << area << endl; cout << "the circumference of the circle is " << circum << endl; return;}

Page 40: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

40

// FILE: CmptArCr.cpp

// Modules to calculate the area and

// circumference of a circle.

// global data:

const float PI = 3.14159;

// COMPUTES THE AREA OF A CIRCLE

float Compute_area (float r)

{

// compute and return the area

return PI * r * r;

} // end Compute_area ()

Page 41: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

41

// COMPUTES THE CIRCUMFERENCE OF A CIRCLE

float Compute_circum (float r)

{

// compute and return the circumference

return 2.0 * PI * r;

} // end Compute_circum ()

Page 42: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

42

THE PARAMETERS IN THE CALL STATEMENT ARE

REFERRED TO AS ACTUAL PARAMETERS. THE VALUE

OF AN ACTUAL PARAMETER IS PASSED AND USED BY

THE FUNCTION.

ACTUAL PARAMETERS

Page 43: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

43

FORMAL PARAMETERS

THE PARAMETERS IN THE FUNCTION HEADING ARE

REFERRED TO AS FORMAL PARAMETERS. A FORMAL

PARAMETER REPRESENTS THE ACTUAL VALUE PASSED

TO THE FUNCTION EACH TIME IT IS CALLED.

Page 44: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

44

LIBRARIES OF FUNCTIONS

PROVIDE ACCESS TO PREVIOUSLY WRITTEN FUNCTIONS THAT PERFORM USEFUL DIAGNOSTICS, MANIPULATIONS, COMPUTATIONS, ETC.

Page 45: 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF SMALLER PROBLEMS

45

EXAMPLES OF SOMEMATHEMATICAL FUNCTIONS

result = sqrt (16) * 10

RETURNS THE VALUE 40.0. THE SQUARE ROOT

OF 16 IS CALCULATED, THEN THE VALUE

IS MULTIPLIED BY 10.

floor (3.8) = 3

RETURNS THE LARGEST INTEGER NOT GREATER THAN THE PARAMETER.

fabs (-3.8) = 3.8

RETURNS THE ABSOLUTE VALUE.