Download Programming and Problem Solving with Java: Chapter 1

Document related concepts

Reactive programming wikipedia , lookup

Compiler wikipedia , lookup

Go (programming language) wikipedia , lookup

Structured programming wikipedia , lookup

Algorithm wikipedia , lookup

Object-relational impedance mismatch wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Interpreter (computing) wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

ILLIAC IV wikipedia , lookup

Assembly language wikipedia , lookup

Object-oriented programming wikipedia , lookup

Transcript
Chapter 1
Introduction to ObjectOriented Programming and
Problem Solving
Knowledge Goals
• Understand what a computer program is
• Know the three phases of the software life
cycle
• Understand what an algorithm is
• Learn what a high-level programming
language is
• Understand the difference between machine
code and Bytecode
2
Knowledge Goals
• Understand the compilation, execution, and
interpretation processes
• Learn what the major components of a
computer are and how they work together
• Understand the concept of an object in the
context of computer problem solving
3
Skills Goals
• List the basic stages involved in writing a
computer application
• Distinguish between hardware and software
• List the ways of structuring code in a Java
application
• Name several problem-solving techniques
• Choose an applicable problem-solving
technique
• Identify the objects in a problem statement
How can you distinguish the knowledge goals from the
skills goals?
4
What is Programming?
Computer
A programmable device that can store, retrieve, and
process data
Computer programming
The process of specifying objects and the ways in
which those objects interact to solve problems
Programming
Writing out instructions for solving a problem or
performing a task
Computer program
Instructions defining a set of objects and orchestrating
their interactions to solve a problem
5
How do we write a Program?
Waterfall
Model
6
How do we write a program …
Problem-Solving Phase
• Understand (define) the problem and
identify what the solution must do
• Specify the objects and their interactions to
solve the problem
• Follow the steps exactly to see if the
solution really does solve the problem
7
How do we write a program …
Implementation Phase
• Translate the object specifications (the
general solution) into a programming
language
• Have the computer carry out the solution
and check the results
What if the solution isn't correct?
8
How do we write a program …
Maintenance Phase
• Use the program
• Modify the program to meet changing
requirements, to enhance its functionality,
or to correct any errors that show up in
using it
9
How do we write a program …
Can't
we
shorten
the
process
?
10
How can a computer work with objects?
Information
Any knowledge that can be communicated
Data
Information in a form that a computer can use
Object
A collection of data values and associated
operations
How does all this fit together?
11
How can a computer work with objects…
Data
with
related
operations
represents
information
as
objects
12
How can a computer work with objects…
Objects contain data and operations
Consider a Name object
What sort of data would this object contain?
What sort of operations might we need to
manipulate the data?
13
How can a computer work with objects…
What
other
operations
might
we
want
?
14
Classes of Objects
What about multiple objects with the same
properties?
Class
A specification of the representation of a
particular kind of object, in terms of data
and behavior (operations)
15
Classes of Objects
Date class
data: month, day, year
operations: set and return month, day, year
Date object (an instance of a class)
June
23
2004
16
What is an algorithm?
How are the operations specified?
Algorithm
Instructions for solving a problem in a
finite amount of time using a finite amount
of data
17
What is an algorithm?
Objects: Key, Transmission, Gas Pedal, Engine,
Phone
1. Insert the key.
2. Make sure the transmission is in Park (or Neutral).
3. Depress the gas pedal.
4. Turn the key to the start position.
5. If the engine starts within six seconds, release the key.
6. If the engine doesn’t start within six seconds, release
the key and gas pedal, wait ten seconds, and repeat
Steps 3 through 6, but not more than five times.
7. If the car doesn’t start, phone your mechanic.
18
What is an algorithm?
Once we have the algorithm, then what?
We translate the algorithm into statements
in a programming language
Say again?
19
What is a programming language?
Programming language
A set of rules, symbols and special words used to
construct a computer program
Statements
Specific combinations of symbols and special words that
are defined by a programming language to be complete
units within a program; analogous to sentences in a
human language
Code
Instructions for a computer that are written
programming language
20
What is a programming language?
There is
no
single
way
to
implement
an
algorithm
21
What kind of instructions …
Computer
A programmable device that can store,
retrieve, and process data
Implies
accept data, send data, perform
arithmetic operations, perform logical
operations
22
What kind of instructions …
Control structures
Statements that organize the instructions
that specify the behaviors of objects
23
sequence
selection
repetition
subprograms
asynchronous
What kind of instructions …
24
What kind of instructions …
25
Software Maintenance
Maintaining software accounts for the
majority of its live cycle (i.e., old programs
never die, they just get modified)
Where were you on January 1, 2000?
26
Software Maintenance
Software maintenance tips
- Check existing code
- Make changes to a copy
- Change related aspects to leave clean,
consistent code for next change
- Keep backup copies
Software maintenance is not glamorous
but it is necessary!
27
How It All Works
Machine language
The language, made up of binary-coded
instructions, that is used directly by the
computer
Assembly language
A low-level programming language in
which a mnemonic represents each
machine language instruction for a
particular computer
28
How It All Works
High-level language:
R1 = R3 + R5
R2 = R6 - R1
29
How It All Works
Levels
of
abstraction
30
Machine Language
•
Is not portable
•
Runs only on specific type of computer
•
Is made up of binary-coded instructions
(strings of 0s and 1s)
•
Is the language that can be directly used
by the computer
Why is portability important?
31
Assembly Languages
•
•
•
Are machine dependent and run on only one
specific type of computer
Are translated into machine code by
assemblers
Are made up of English-like abbreviations
such as LOAD, STORE, or ADD
Better than machine language…
32
High-Level Languages
•
•
•
•
•
33
Are portable
Are translated into machine code by
compilers
Instructions are written in language similar to
natural language
Examples -- FORTRAN, COBOL, Pascal,
C, C++
Many are standardized by ISO/ANSI to
provide an official description of the
language
High-Level Languages
Source code
Instructions written in a high-level
language
Object code
A machine language version derived from
source code
34
Portability
Compiler portability
35
Java's Road to Portability
Bytecode
A standardized machine language into
which Java source code is compiled
36
High-Level Languages
Direct execution
The process by which a computer performs the actions
specified in a machine-language program
Interpretation
The translation, while a program is running, of nonmachine language instructions (such as Bytecode) into
executable operations
Virtual machine
A program that makes one computer act like another
37
High-Level Languages
38
Do you understand the difference
between C++ & Java portability?
What's inside the computer?
Can
you
name
any
external
devices
?
39
What's inside the computer?
Memory unit
Internal data storage inside a computer, made up of
an ordered sequence of addressable cells
40
Addressable?
What's inside the computer?
Executes instructions
The Manager
Does operations
Holds data and instructions
41
What's inside the computer?
Hardware
The physical components of a computer
Software
Computer programs; the set of all programs
available on a computer
Clock
An electrical circuit that sends out a train of pulses
to coordinate the actions of the computer's
hardware components; its speed is measured in
hertz (cycles per second)
42
What is system software?
User/computer interface
A connecting link that translates between the computer's
internal representation of data and representations that
humans are able to work with
Interactive system
A system that supports direct communication between the
user and the computer
System software
The set of programs that simplifies the user/
communication interface
Operating system
Set of programs that manages all the computer's resources
43
What is system software?
See
how
it
all
fits
together
?
44
Problem Solving
Problem solving
The act of finding a solution to a
perplexing, distressing, vexing, or
unsettled question
How do you define problem solving?
45
Problem Solving
How to Solve It: A New Aspect of
Mathematical Method by George Polya
"How to solve it list" written within the
context of mathematical problems
But the list is quite general
We can use it to solve computer
related problems!
46
Problem Solving
How do you solve problems?
Understand the problem
Devise a plan
Carry out the plan
Look back
47
Problem-Solving Techniques
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?
48
Problem-Solving Techniques
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?
49
Problem-Solving Techniques
Look for familiar things
50
Problem-Solving Techniques
Solve by analogy
51
Problem-Solving Techniques
Means-end analysis
52
Problem-Solving Techniques
Divide and conquer
53
Problem-Solving Techniques
Building-block approach
54
Problem-Solving Techniques
Merging solutions
55
Problem-Solving Techniques
Object-Oriented Problem Solving Stages
- Brainstorm List all objects that might
contribute to solution
- Filter Review the classes to find duplicates
or remove unnecessary objects
- Responsibilities Determine the operations
associated with a class of objects
- Collaborations Determine the interactions
between classes
56
Problem-Solving Techniques
- Attributes Determine the values defined by
a class that are used to represent its
objects
- Driver Write a program for creating the
objects and coordinating their
collaborations to solve the problem
57