SE491: Software Construction A 1
An Object-Oriented Approach to Programming Logic and Design
Fourth Edition
Chapter 1
An Overview of Computer Programming
Objectives
In this chapter, you will learn about:
- Computer components and operations
- Simple program logic
- The evolution of programming models
- The steps in the programming process
- Pseudocode and flowcharts
- Program comments
- Programming and user environments
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
*
Understanding Computer Components and Operations
- Computer system
- Combination of all components required to process and store data using a computer
- Two major computer system components
- Hardware
- Physical devices associated with the computer
- Software
- Computer instructions that tell the hardware what to do
- Programs (sets of instructions) written by programmers
- Application software: programs applied to a task
- System software: programs that manage computer resources
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Computer Components and Operations (cont’d)
- Three major hardware and software operations
- Input
- Processing
- Output
- Input operation
- A means for data to enter a computer through an input device such as a mouse or keyboard
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Computer Components and Operations (cont’d)
- Processing data operation
- Organizing or sorting data
- Checking for accuracy
- Performing mathematical operations
- Tasks occur in central processing unit (CPU)
- Output operation
- Means to view, print, or store data using output devices
- Printer or monitor
- Storage devices (e.g., disks, flash media)
- Information: data that has been processed
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Computer Components and Operations (cont’d)
- Programming language
- Instructions controlling data manipulation
- Examples include Visual Basic, C#, C++, or Java
- Syntax
- Rules governing word usage and punctuation for a programming language
- Syntax errors: mistakes in a language’s usage
- Program code
- Instructions written in a programming language
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Computer Components and Operations (cont’d)
- Computer memory (RAM)
- Temporary, internal storage
- Executable statements
- Statements that carry out a program’s actions
- Compiler or interpreter
- Translate high level programming language statements into low-level machine or binary language
- Point out syntax errors
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Computer Components and Operations (cont’d)
- Compiler
- Translates entire program before execution
- Interpreter
- Translates an instruction just prior to execution
- Source code
- Program statements written in a programming language
- Object code
- Code translated into machine language statements
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Simple Program Logic
- Logic errors
- Program may execute but produces incorrect results
- Can be avoided by
- Writing program instructions in specific sequence
- Removing extraneous instructions
- Including all required instructions
- Example of logic errors in cake-making instructions
Stir
Add two eggs
Add a gallon of gasoline
Bake at 350 degrees for 45 minutes
Add three cups of flour
*
An Object-Oriented Approach to Programming Logic and Design
Danger:
Do not follow these cake-baking instructions!
An Object-Oriented Approach to Programming Logic and Design
Understanding Simple Program Logic (cont’d)
- Computer programs include steps that perform input, processing, and output
- Sample instructions written in English-like language
- Program doubles any given number
- Requires three operations: input, processing, and output
input myNumber input
myAnswer = myNumber * 2 processing
output myAnswer output
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding the Evolution
of Programming Models
- Modern computer programs
- Around since 1940s
- Oldest programming languages
- Programmers worked with memory addresses
- Memorized awkward codes associated with machine languages
- Written as one piece
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding the Evolution
of Programming Models (cont’d)
- Newer programming languages
- Look like natural language
- Use meaningful names for memory locations
- Allow creation of self-contained modules or program segments
- Can be pieced together
- Can be reused
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding the Evolution
of Programming Models (cont’d)
- Major program development techniques
- Procedural programming
- Focuses on actions that are carried out
- Breaks down processes into manageable subtasks
- Object-oriented programming – focuses on objects
- Objects: entities that have attributes, behaviors, and states
- Attributes: object features
- Behaviors: what object does
- States: set of all values of attributes
- Primary difference is focused on early planning stages
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding the Evolution
of Programming Models (cont’d)
- Object-oriented approach
- Defining the objects needed to accomplish a task
- Each object maintains its own data and carries out tasks
- “Natural” way of thinking about the world
- Types of object-oriented approach applications
- Computer simulations
- Mimic real-world activities
- Users apply programs to tasks after the programs are written
- Graphical user interfaces (GUIs)
- Users interact with program in graphical environment
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding the Steps
in the Programming Process
- System program
- A group of many programs
- Object-oriented approach involves
- Analyzing the system
- Designing the system
- Writing the programs
- Programmer may do all tasks or use systems analysts and/or software testers
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding the Steps
in the Programming Process (cont’d)
- Types of software testing
- Black box
- Tester provides input and checks for valid output
- White box
- Tester looks at code, tests all logical paths
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Analyzing the Program or System
- Programmers provide a service to users
- Object-oriented analysis (OOA)
- Understand the users’ needs
- Needs are often not well defined
- Can be difficult and time consuming
- Frequently, several program revisions are necessary to satisfy the user
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Designing the System
- Designers using object-oriented design (OOD)
- Envision the objects needed
- Determine objects’ attributes and behaviors
- Decide the relationship between objects
- Describe how objects communicate with and react to each other
- Expressed as verb phrases
- Examples of relationships: “Has a,” “is a,” “creates a”
- Class
- A general category that describes entities
- May be reused from other programs or modified
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs
- Writing a program involves several subtasks
- Developing the program logic
- Coding the program
- Translating the program into machine language
- Testing the program
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs (cont’d)
- Planning the logic
- Heart of the programming process
- Also referred to as developing an algorithm
- Decide steps to include and their order
- Planning tools
- Flowcharts and pseudocode
- Both use English-like code
- Language syntax not a concern
- Desk-checking
- Reviewing program logic on paper
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs (cont’d)
- Coding the program
- Writing program statements in a programming language
- Object-oriented languages
- C++, C#, Java, Visual Basic, SmallTalk, OO COBOL, and Simula
- Create objects and establish communication between them
- Language chosen determines syntax
- Coding usually less difficult than planning step
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs (cont’d)
- Use software to translate program into machine language
- Many programming languages
- Computer knows only machine language (1s and 0s)
- Compilers or interpreters
- Translate English-like, high-level programming language into low-level machine language
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs (cont’d)
- Syntax error
- Occurs when translator cannot translate the code
- Causes: misspellings, illegal grammar, non-existent words
- Programmer must correct code and recompile the program before it can execute
*
An Object-Oriented Approach to Programming Logic and Design
Creating an executable program
Figure 1-1
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs (cont’d)
- Testing the program
- Program that is free of syntax errors is not necessarily free of logical errors
- Must test for logical errors
- May require entering of sample data
- Select test data carefully
- Error discovery may require changes to program logic
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs (cont’d)
- After the program is written and tested
- Ready to be used
- Additional tasks associated with programs written for organizations
- Preparing manuals
- Training users
- Converting existing data to new system’s format
- Conversion
- Actions an organization take to switch to a new program
- Can take months or years to accomplish
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Writing and Testing Programs (cont’d)
- Maintenance
- Process of making required changes after program is put into production
- Reasons why maintenance may be necessary
- Fixing previously undiscovered errors
- Updating values such as a tax rate
- Changing format of input data
- Input data may no longer be available
- User wants additional functionality
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Using Pseudocode and Flowcharts
- Pseudocode
- English-like representation of logical program steps
- Looks like programming language but is not
- Flexible planning tool
- Example
- Starting and ending statements often used
- Punctuation and syntax are not important
*
An Object-Oriented Approach to Programming Logic and Design
start
input myNumber
myAnswer = myNumber * 2
output myAnswer
stop
An Object-Oriented Approach to Programming Logic and Design
Drawing Flowcharts
- Flowchart
- Pictorial representation of logical program steps
- Helps programmer visualize how statements connect
- Uses geometric shapes connected with arrows (flowlines)
- Common flowchart symbols
- Input symbols (parallelograms)
- Processing symbols (rectangles)
- Output symbols (parallelograms)
- Terminal symbols (lozenges – flattened ovals)
- Decision symbols (diamonds)
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Drawing Flowcharts (cont’d)
*
An Object-Oriented Approach to Programming Logic and Design
Flowchart and pseudocode of a program that doubles a number if it is less than 10
Figure 1-3
An Object-Oriented Approach to Programming Logic and Design
*
Drawing Flowcharts (cont’d)
- Software applications with flowcharting tools
- Microsoft Word
- Microsoft PowerPoint
- Visio
- Visual Logic
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Program Comments
- Program comments
- Non-executing statements in a program added for documentation
- Programmers write comments for themselves and others who read program
- Minimally, comments should include author, date, and purpose of the program
- C++, Java, and C# use two forward slashes
// This is a comment
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Annotation symbol used for comments on a flowchart
*
An Object-Oriented Approach to Programming Logic and Design
Three-sided box with dashed line connects to the step it explains
Figure 1-4
An Object-Oriented Approach to Programming Logic and Design
Understanding Programming
and User Environments
- Flowcharts created by hand or with software
- Pseudocode written by hand or with a word processor
- Plain text editor
- Text editor in an integrated development environment (IDE)
- Text editor
- Program used to create simple text files
- Similar to a word processor, but less robust
- Example: Notepad in Microsoft Windows
- Complete program does not require much disk space
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Understanding Programming and User Environments (cont’d)
- Integrated development environment (IDE)
- Software package that includes an editor, compiler, and other programming tools
- Advantages of using IDE
- Uses colors to display various language components
- Highlights syntax errors visually
- Employs automatic statement completion
- Provides tools to step through a program to find errors
- Disadvantages of using IDE
- Requires much more storage space than plain text editor
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
- A user might execute program in different environments: command line, GUI
- The logical process is the same regardless of the environment
Understanding User Environments
*
An Object-Oriented Approach to Programming Logic and Design
Executing a number-doubling program in a command-line environment
Executing a number-doubling program in a GUI environment
Figure 1-7
Figure 1-8
An Object-Oriented Approach to Programming Logic and Design
Summary
- Hardware and software accomplish three major operations: input, processing, and output
- For a program to work properly, you must develop correct logic
- Logical errors are more difficult to locate than syntax errors
- Developing a system involves analyzing the system, designing it, and writing the programs
- Writing programs involves logic planning, coding the program, translating into machine language, and testing
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design
Summary (cont’d)
- Flowcharts and pseudocode are tools for planning a program’s logic
- Pseudocode is an English-like representation of a program’s logical steps
- Flowchart is a pictorial representation of a program
- Program comments document a program
- Plain text editor or an integrated development environment (IDE) can be used to type a program
- A program’s data input can be at a command line or a graphical user interface (GUI)
*
An Object-Oriented Approach to Programming Logic and Design
An Object-Oriented Approach to Programming Logic and Design