Transcript Document
Chapter 6
Problem Solving and Algorithm Design
Chapter Goals
• Apply top-down design methodology to develop an algorithm to solve a problem • Define the key terms in object-oriented design • Apply object-oriented design methodology to develop a collection of interacting objects to solve a problem • Discuss the following threads as they relate to problem solving: information hiding, abstraction, naming things, and testing
2
Problem Solving Problem solving
The act of finding a solution to a perplexing, distressing, vexing, or unsettled question
How do you define problem solving?
Beginning of many classes you’ll have,
•
Software Engineering
•Systems Analysis •Database
3
Problem Solving
How do you solve problems?
Understand the problem Devise a plan Carry out the plan Look back
4
Strategies Ask questions!
–
What do I know about the problem?
–
What is the information that I have to process in order the find the solution?
–
What does the solution look like?
–
What sort of special cases exist?
–
How will I recognize that I have found the solution?
5
Strategies Ask questions! Never reinvent the wheel!
Similar problems come up again and again in different guises A good programmer recognizes a task or subtask that has been solved before and plugs in the solution
Can you think of two similar problems?
6
Strategies Divide and Conquer!
Break up a large problem into smaller units and solve each smaller problem – Applies the concept of abstraction – The divide-and-conquer approach can be applied over and over again until each subtask is manageable
7
Algorithms
Algorithm
A set of unambiguous instructions for solving a problem or subproblem in a finite amount of time using a finite amount of
data Why must instructions be unambiguous?
Why must time and data be finite?
8
Computer Problem-Solving
9
Analysis and Specification Phase Analyze Specification Algorithm Development Phase Develop algorithm Test algorithm Implementation Phase Code algorithm Test algorithm Maintenance Phase Use Maintain Software Engineering
10
Phase Interactions
Should we add another arrow?
(What happens if the problem is revised?)
Following an Algorithm
Algorithm for preparing a Hollandaise sauce
If concerned about cholesterol Put butter substitute in a pot Else Put butter in a pot Turn on burner Put pot on the burner While (NOT bubbling) Leave pot on the burner Put other ingredients in the blender Turn on blender While (more in pot) Pour contents into lender in slow steam Turn off blender
11
Developing an Algorithm
Two methodologies used to develop computer solutions to a problem – Top-down design focuses on the
tasks
to be done – Object-oriented design focuses on the
data
involved in the solution
12
Pseudocode for Complete Computer Solution
Write "Enter the new base" Read newBase Write "Enter the number to be converted" Read decimalNumber Set quotient to 1 While (quotient is not zero) Set quotient to decimalNumber DIV newBase Set remainder to decimalNumber REM newBase Make the remainder the next digit to the left in the answer Set decimalNumber to quotient Write "The answer is " Write answer
13
Program Functionality
Variables
Names of places to store values
quotient, decimalNumber, newBase
Assignment
Storing the value of an expression into a variable
Set quotient to 64 quotient <-- 64 quotient <-- 6 * 10 + 4
14
Functionality Output
Printing a value on an output device
Write, Print
Input
Getting values from the outside word and storing them into variables
Get, Read
15
Functionality
Repetition
Repeating a series of statements
Set count to 1 While ( count < 10) Write "Enter an integer number" Read aNumber Write "You entered " + aNumber Set count to count + 1 How many values were read?
16
Pseudocode Functionality
Selection
Making a choice to execute or skip a statement (or group of statements)
Read number If (number < 0) Write number + " is less than zero."
or
Write "Enter a positive number." Read number If (number < 0) Write number + " is less than zero." Write "You didn't follow instructions."
17
Functionality
Selection
Choose to execute one statement (or group of statements) or another statement (or group of statements)
If ( age < 12 ) Write "Pay children's rate" Write "You get a free box of popcorn" else If ( age < 65 ) Write "Pay regular rate" else Write "Pay senior citizens rate"
18
Pseudocode Example
Write "How many pairs of values are to be entered?" Read numberOfPairs Set numberRead to 0 While (numberRead < numberOfPairs) Write "Enter two values separated by a blank; press return" Read number1 Read number2 If (number1 < number2) Print number1 + " " + number2 Else Print number2 + " " + number1 Increment numberRead
19
Walk Through
Data 3 55 70 2 1 33 33
numberOfPairs
Fill in values during each iteration
numberRead number1 number2
20
What is the output?
Top-Down Design
Top-Down Design
Problem-solving technique in which the problem is divided into subproblems; the process is applied to each subproblem
Modules
Self-contained collection of steps, that solve a problem or subproblem
Abstract Step
An algorithmic step containing unspecified details
Concrete Step
An algorithm step in which all details are specified
21
Top-Down Design
Figure 6.5 An example of top-down design
Process continues for as many levels as it takes to make every step concrete Name of (sub)problem at one level becomes a module at next lower level
22
A Computer Example Problem
Create a list that includes each person’s name, telephone number, and e-mail address – This list should then be printed in alphabetical order – The names to be included in the list are on scraps of paper and business cards
24
A Computer Example
Main
Enter names and numbers into list Put list into alphabetical order Print list
Enter names and numbers into list
While ( more names) Enter name Enter telephone number Enter email address Insert information into list
Level 0 Level 1
Which steps are abstract? Which steps are concrete?
What is missing?
25
A Computer Example
Level 1 Enter names and numbers into list (revised)
Set moreNames to true While (moreNames) Prompt for and enter name Prompt for and enter telephone number Prompt for and enter email address Insert information into list Write "Enter a 1 to continue or a 0 to stop." Read response If (response = 0) Set moreNames to false
26
Which steps are concrete? Which steps are abstract?
A Computer Example
Level 2 Prompt for and enter name
Write "Enter last name; press return." Read lastName Write "Enter first name; press return." Read firstName
Prompt for and enter telephone number
Write "Enter area code and 7-digit number; press return." Read telephoneNumber
Prompt for and enter email address
Write "Enter email address; press return." Read emailAddress
Level 2 Level 2
27
28
A Computer Example
Put list into alphabetical order
Concrete or abstract?
Print the list Level 1
Write "The list of names, telephone numbers, and email addresses follows:" Get first item from the list While (more items) Write item's firstName + " " + lastName Write item's telephoneNumber Write item's emailAddress Write a blank line Get next item from the list
A Computer Example
29
Note: Insert information is within the loop
Testing the Algorithm
Important distinction
Mathematics
We tests the
answer
Programs
We test the
process
30
Testing the Algorithm
Desk checking
Working through a design at a desk with a pencil and paper
Walk-through
Manual simulation of the design by team members, taking sample data values and simulating the design using the sample data
Inspection
One person (not the designer) reads the design (handed out in advance) line by line while the others point out errors
31
Object-Oriented Design Object-oriented Design
A problem-solving methodology that produces a solution to a problem in terms of self-contained entities called
objects
Object
A thing or entity that makes sense within the context of the problem For example, a
student
, a
car
,
time
,
date
32
Object-Oriented Design World View of OOD
Problems are solved by – isolating the objects in a problem, – determining their properties (responsibilities) , and and actions – letting the objects collaborate problem to solve a
What? Say again!
33
Object-Oriented Design
An analogy: You and your friend fix dinner Objects : you, friend, dinner Class : you and friend are people People have name, eye color, … People can shop, cook, … Instance of a class : you and friend are instances of class People, you each have your own name and eye color, you each can shop and cook You collaborate to fix dinner
34
Object-Oriented Design
Class
(or object class) A description of a
group
of similar objects
Object
( instance of a class) A concrete example of the class
Classes
contain fields that represent the properties (name, eye color) and behaviors (responsibilities) (shop, cook) of the class
Method
A named algorithm that defines behavior (shop, cook)
35
Object-Oriented Design
Top-Down Design decomposes problems into
tasks
Object-Oriented Design decomposes problems into collaborating
objects
Yes, but how?
36
Object-Oriented Design
Steps
–
isolate
problem the real-world objects in the –
abstract
the objects with like properties into groups (classes) –
determine
the responsibilities of the group in interacting with other groups
37
Object-Oriented Design
Think of design as a mapping from real world objects to classes of objects birth date marriage date Date class dog's birth date Objects
38
Classes of objects
Object-Oriented Design
Program World simulates these groups dogBirthdate class Date birthdate marriageDate
39
Description Instances
40 Date's Actions in real world ?
Object-Oriented Design
We call an object's interactions with other objects its
responsibilities
Create itself Know the state of its fields Compare itself to another date Return a date #days hence
Object-Oriented Design
Responsibilities become
methods
in the Program World dogBirthdate class Date getMonth getDay getYear birthdate marriageDate
41
Object-Oriented Design Methodology
Four stages to the decomposition process – Brainstorming to locate possible classes – Filtering the classes to find duplicates or remove unnecessary ones – Scenarios are tried to be sure we understand collaborations – Responsibility algorithms are designed for all actions that classes must exhibit
42
Brainstorming
A group problem-solving technique that involves the spontaneous contribution of ideas from all members of the group – All ideas are potential good ideas – Think fast and furiously first, and ponder later – Write down all ideas Brainstorming is designed to produce a list of candidate classes
44
Filtering
Determine which are the core classes in the problem solution There may be two classes in the list that have many common attributes and behaviors There may be classes that really don’t belong in the problem solution
45
Scenarios
Assign responsibilities to each class There are two types of responsibilities – What a class must know about itself ( knowledge responsibilities) – What a class must be able to do ( behavior responsibilities)
46
Scenarios Encapsulation
The bundling of data and actions in such a way that the logical properties of the data and actions are separated from the implementation details Each class
encapsulates
its data but shares their values through knowledge responsibilities
47
Responsibility Algorithms
The algorithms must be written for the responsibilities – Knowledge responsibilities usually just return the contents of one of an object’s variables – Action responsibilities are a little more complicated, often involving calculations
48
Computer Example
Let’s repeat the problem-solving process for creating an address list Brainstorming and filtering – Circling the nouns and underlining the verbs is a good way to begin
49
Computer Example
First pass at a list of classes
list name telephone number email address list order names list scraps paper cards
Filtered List
list, name, telephone number email address
50
CRC Cards
51
Can you think of any other useful responsibilities?
CRC Cards
52
Can you think of any other useful responsibilities?
CRC Cards
53
How is this class different from Name and Person?
Responsibility Algorithms
Person Class Initialize
Tells name to initialize itself name.initialize() Write "Enter phone number; press return." Get telephone number Write "Enter email address; press return." Get email address
name.print() Write "Telephone number: " + telephoneNumber Write "Email address: " + emailAddress Tells name to print itself
54
Responsibility Algorithms
Name Class Initialize
"Enter the first name; press return." Read firstName "Enter the last name; press return." Read lastName
Print "First name: " + firstName Print "Last name: " + lastName
55
Important Threads
Information Hiding
The practice of hiding the details of a module with the goal of controlling access to it
Abstraction
A model of a complex system that includes only the details essential to the viewer
Information Hiding
and
Abstraction
are two sides of the same coin
56
Important Threads
Data abstraction
Separation of the logical view of data from their implementation
Procedural abstraction
Separation of the logical view of actions from their implementation
Control abstraction
Separation of the logical view of a control structure from its implementation
57
Important Threads Identifiers
Names given to data and actions, by which – we access the data and
Read firstName, Set count to count + 1
– execute the actions
name.initialize(), name.print()
Giving names to data and actions is a form of abstraction
58
Importhat Threads
Programming language
A set of grammar rules, symbols, and special words used to construct a program
Program
A sequence of instructions written to perform a specified task
Syntax
The formal grammar rules governing the construction of valid instructions
Semantics
The rules that give meaning to the instructions
59
Ethical Issues
Licensing Computer Professionals
Are computer professionals licensed?
What is the ACM and why is it opposed to licensing?
What is the IEEE and what is its position on licensing?
Should computer professionals be licensed?
60
61
Do you know?
What does TNDM stand for and what is it?
How is a computer data base being used to help endangered species?
What is forensic computing?
What techniques does it use?
How is physical evidence protected?