Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
presentation slides for
Object-Oriented Problem Solving
JAVA, JAVA, JAVA
Second Edition
Ralph Morelli
Trinity College
Hartford, CT
published by Prentice Hall
Java, Java, Java
Object Oriented Problem Solving
Chapter 1
Java Program Design
and Development
Objectives
• Know the basic steps involved in the program
development process.
• Understand the difference between a Java
application and a Java applet.
• Understand how a Java program is translated into
machine language.
• Know how to edit, compile, and run Java
programs.
• Understand some basic Java language elements.
• Know how to use simple output operations.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Outline
•
•
•
•
•
Designing Good Programs Java
Java Language Summary
Compiling and Executing a Java Program
Applications and Applets
From the Java Library: The System and
PrintStream classes.
• In the Laboratory: Editing, Compiling, and
Running an Applet
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Designing Good Programs
• Always precede coding with careful design.
• Remember: The sooner you begin to type
code, the longer the program will take to
finish.
• Design includes designing classes, data,
methods, and algorithms.
• Design is followed by coding, testing, and
revision.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
The Software Lifecycle
• In the waterfall model of software
development, each phase is finished is
completed before the next phase is begun.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
The Program Development Process
• Problem Specification
• Problem Decomposition
• Design Specification
• Data, Methods, and Algorithms
• Coding into Java
• Testing, Debugging, and Revising
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Object-Oriented Program Development
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Problem Specification
• What exactly is the problem to be solved?
• How will the program be used?
• How will the program behave?
Problem Specification: Design a class that will
represent a simple geometric rectangle with a
given length and width. The definition of this
class should make it possible to create rectangles
and calculate their areas.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Problem Decomposition
• Divide-and-Conquer: What objects will be
used and how will they interact?
• Nouns: In OOD, choosing objects means
looking for nouns in the problem
specification.
Problem Specification: Design a class that will
represent a simple geometric rectangle with a
given length and width. The definition of this
class should make it possible to create rectangles
and calculate their areas.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Object Design Questions
• What role will the object perform?
• What data or information will it need?
– Look for nouns.
• Which actions will it take?
– Look for verbs.
• What interface will it present to other objects?
– These are public methods.
• What information will it hide from other objects?
– These are private.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Design Specification for a Rectangle
• Class Name: Rectangle
• Role: To represent a geometric rectangle
• Attributes (Information or instance variables)
- Length: A variable to store rectangle’s length (private)
- Width: A variable to store rectangle's width (private)
• Behaviors (public methods)
- Rectangle(): A method to set a rectangle’s length and
width
- calculateArea(): A method to calculate a rectangle’s
area
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
UML Design Specification
Instance variables -- memory locations
used for storing the information needed.
Class Name
What data does it need?
Hidden
information
Public
interface
What behaviors
will it perform?
UML Class Diagram
Methods -- blocks of code used to
perform a specific task.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Method Design
• What specific task will the method
perform?
• What information will it need to
perform its task?
• What result will the method produce?
• What algorithm (step-by-step
description of the solution) will the
method use?
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Method Specification: calculateArea()
• Method Name: calculateArea()
• Task: To calculate the area of a rectangle
• Information Needed (variables)
– Length: A variable to store the rectangle's
length (private)
– Width: A variable to store the rectangle's width
(private)
• Algorithm: area = length x width
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Coding into Java
public class Rectangle
{
private double length;
private double width;
// Class header
// Instance variables
public Rectangle(double l, double w) // Constructor method
{
length = l;
width = w;
}
public double calculateArea()
{
return length * width;
} // calculateArea()
// Access method
} // Rectangle class
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Java Language Summary: Syntax
• The syntax of a programming language is
the set of rules that determines whether its
statements are correctly formulated.
• Example Rule: All Java statements must
end with a semincolon.
• Syntax error: sum = 0
• Syntax errors can be detected by the
compiler, which will report an error
message.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Java Language Summary: Semantics
• The semantics of a programming language
is the set of rules that determine the
meaning of its statements.
• Example Rule: In a + b, the + operator will
add a and b.
• Semantic error: User intended to add a and
b but coded a - b.
• Semantic errors cannot be detected by the
compiler, because it can’t read the
programmer’s mind.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Java Language Summary: Program Elements
• A Java program is made up of class
definitions.
• A class definition contains a header and a
body.
• A method is a named section of code that
can be called by its name.
• Multi-line and single-line comments are
used to document the code.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Java Language Summary: Class Definition
public class Example extends Object
{
private double num = 5.0;
public void print()
{
System.out.println(num);
} // print()
// Class header
// Start of class body
//
Instance variable
//
//
//
//
Method definition header
Start of method body
Output statement
End of print method body
public static void main(String args[]) // Method definition header
{
// Start of method body
Example example;
//
Reference variable declaration
example = new Example();
//
Object instantiation statement
example.print();
//
Method call
} // main()
// End of method body
} // Example
// End of class body
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Java Language
Language Summary:
Summary: Access
Access Rules
Rules
Java
• Packages contain classes which contain members
(methods and fields).
• Access is determined from the top down.
• If no explicit declaration given, a default is used.
Type of Entity
Declaration
Accessibility Rule
Package
Class
N/A
Accessibility determined by the system.
Accessible if its package i s accessible.
Accessible only within its package .
Accessible to all other objects.
Member
(field or method)
of an accessible class
pub lic
default
pub lic
prot ecte d
private
default
Java, Java, Java, 2E by R. Morelli
Accessible to its subclasses and to other
classes in it s packag e.
Accessible only within the cla ss.
Accessible only within the packag e.
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Java Language Summary: Keywords
abstract
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
extends
final
finally
float
for
goto
Java, Java, Java, 2E by R. Morelli
if
implements
import
instanceof
int
interface
long
native
new
package
Copyright 2002. All rights reserved.
private
protected
public
return
short
static
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
Chapter 1: Java Program Development
Java Language Summary: Identifiers
• An identifier must begin with a letter (A to Z, a to
z) and may be followed by any number of letters
or digits (0 to 9) or underscores (_). An identifier
may not be identical to a Java keyword.
• The scope of an identifier determines where it
may be used in the program. Instance variables
(isEating) and instance methods (eat()) have class
scope and may be used anywhere within the class.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Primitive Data Types
Type
Keyword Size in Bits
Examples
boolean
true or false
boolean
character
16
‘A’, ‘5’, ‘+’
char
byte
8
-128 to +127
byte
integer
16
-32768 to +32767
short
integer
32
-2147483648 to +2147483647
int
integer
64
really big numbers
long
real number float
32
21.3, -0.45, 1.67e28
real number double
64
21.3, -0.45, 1.67e28
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Applications vs. Applets
•
•
•
•
•
Java Applications
Stand-alone program
Runs independently
Has a main() method
No HTML file
Run using JDK’s java
interpreter
Java, Java, Java, 2E by R. Morelli
•
•
•
•
•
Java Applets
Embedded program.
Runs in a Web browser
No main() method.
Requires an HTML file
Run using JDK’s
appletviewer
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
The HelloWorld Application
/*
* The HelloWorld application program
*/
public class HelloWorld
{
Multi-line
comment block
// Class header
// Start of class body
Single-line
comments
public static void main(String argv[]) // Main method
{
System.out.println("Hello world!");
} // End of main
} // End of HelloWorld
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Execution starts on
the first line of main()
Chapter 1: Java Program Development
The HelloWorld Applet
/*
* HelloWorld applet program
*/
import java.applet.Applet;
import java.awt.Graphics;
These statements import
Java class names.
// Import the Applet class
// and the Graphics class
public class HelloWorld extends Applet // Class header
{
// Start of body
public void paint(Graphics g)
// The paint method
{
g.drawString("HelloWorld",10,10);
} // End of paint
} // End of HelloWorld
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
This statement displays
“HelloWorld” on the
browser window.
Chapter 1: Java Program Development
Editing, Compiling, and Running
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
The Java Development Process
• Step 1: Editing the Program
– Software: Any text editor will do.
• Step 2: Compiling the Program
– Software: Java Development Kit (JDK)
– JDK: javac HelloWorld.java
• Step 3: Running the Program
– JDK: java HelloWorld (Application)
– JDK: appletviewer file.html (Applet)
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Editing a Java Program
• Software: A text editor (vi, emacs, BBEdit).
• Program source code must be saved in a
text file named ClassName.java where
ClassName is the name of the public class
contained in the file.
• Remember: Java class names and file
names are case sensitive.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Compiling a Java Program
• Compilation translates the source program
into Java bytecode.
– Bytecode is platform-independent
• JDK Command: javac HelloWorld.java
• Successful compilation will create the
bytecode class file: HelloWorld.class
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Running a Java Application
• The class file (bytecode) is loaded into
memory and interpreted by the Java Virtual
Machine (JVM)
• JDK Command: java HelloWorld
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Running a Java Applet
• Running an applet requires an HTML file
containing an <applet> tag:
<HTML>
...
<APPLET CODE=“HelloWorld.class”
WIDTH=200 HEIGHT=200>
</APPLET>
...
</HTML>
• JDK Command: appletviewer file.html
• Browser: Open the applet’s HTML file
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Running a HelloApplet
• Try running HelloApplet
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Coding into Java
• Stepwise Refinement is the right way to code.
- Code small stages at a time, testing in between.
- Errors are caught earlier.
• Syntax rules must be followed.
- Syntax is the set of rules that determine whether
a particular statement is correctly formulated
• Semantics must be understood.
- Semantics refers to the meaning (effect on the
program) of each Java statement.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Testing, Debugging, and Revising
• Coding, testing, and revising a program is
an iterative process.
• The java compiler catches syntactic errors,
producing error messages.
• The programmer must test thoroughly for
semantic errors.
- Semantic errors are errors which manifest
themselves through illogical output or behavior.
- Errors are corrected in the debugging phase
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Writing Readable Programs
• Style, in addition to working code, is the mark of a
good programmer. Style consists of:
- Readability.
• Code should be well-documented and easy
to understand.
- Clarity.
• Conventions should be followed and
convoluted code avoided.
- Flexibility.
• Code should be designed for easy
maintenance and change.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Java Library: System and PrintStream
• The java.lang.System class
contains PrintStream objects
that perform Input/Output
(I/O).
• The java.lang.PrintStream
class contains the print() and
println() methods that perform
output.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Example: OldMacDonald Program
public class OldMacDonald
// Class header
{
// Start of body
public static void main(String argv[])
// Main method
{
System.out.println(“Old MacDonald had a farm.”);
System.out.println(“E I E I O.”);
System.out.println(“And on his farm he had a duck.”);
System.out.println(“E I E I O.”);
System.out.println(“With a quack quack here.”);
System.out.println(“And a quack quack there.”);
System.out.println(“Here a quack, there a quack.”);
System.out.println(“Everywhere a quack quack.”);
System.out.println(“Old MacDonald had a farm”);
System.out.println(“E I E I O.”);
} // End of main
} // End of OldMacDonald
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Qualified Names
• A qualified name takes the form
reference.elementName
where reference refers to some object (or class or
package) and elementName is the name of one of
the object’s (or class’s or package’s) elements.
• Use: To refer to elements in Java’s package, class,
element hierarchy.
• Context dependent.
System.out.println(); //println() method in System.out class
pet1.eat();
// eat() method in pet1 object
java.awt.Button
// Button class in java.awt package
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
In the Laboratory: FirstApplet
• Objectives
– To familiarize you with the process of
editing, compiling, and running a Java
applet.
– To introduce the stepwise refinement
coding style.
– To provide some examples of both syntax
and semantic errors.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
FirstApplet Demo
• Click here to run the FirstApplet and read
its source code.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Program Walkthrough: Documentation
• The program begins with a comment block:
/*
* File: FirstApplet.java
* Author: Java Java Java
* Description: This applet plays the click-me-not game
*
with the user.
*/
• Comments should be used throughout the program
to clarify and document the code.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Program Walkthrough: Documentation
• Documentation comments /** … */ are used to
document the class and its methods.
/**
* The FirstApplet class plays click-me-not with the user.
* @author Java Java Java
*/
• The JDK javadoc utility can turn such comments
into HTML documentation.
• Example: See FirstApplet.html to see the
documentation generated for this program.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Program Walkthrough: Import Statement
• An import statement is a convenience that lets you
refer to a library class by its short name (Applet)
instead by its fully qualified name.
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
• Java library classes are organized into packages.
• In java.applet.Applet we mean the Applet class in
the java.applet package.
• In a qualified name of the form X.Y.Z the last item
(Z) is the referent and (X.Y) are its qualifiers.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Program Walkthrough: Class Definition
• Class definition: header plus body.
FirstApplet class is an
extension of the Applet class
FirstApplet
implements
ActionListener
interface.
public class FirstApplet extends Applet
implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
Header
Body
• A block is a set of statements enclosed
within braces {}.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Program Walkthrough: Variables
• A variable is a memory location that stores a piece
of data or an object.
• A variable declaration gives the variable’s type
(Button) and name (clickMe):
private Button clickMe;
// The button
• Variable names should be descriptive and should
follow a distinctive style: clickMe
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Program Walkthrough: init() Method
• A method is a named module that’s called to do
some task.
• The init() method is where the applet starts. It is
called automatically when the applet is executed.
• A method definition has a header and a body.
public void init()
{
clickMe = new Button(”Click Me Not!");
clickMe.addActionListener(this);
add(clickMe);
} // init()
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Header
Body
Chapter 1: Java Program Development
The actionPerformed()Method
• The actionPerformed() method handles user
actions such as button clicks.
public void actionPerformed (ActionEvent e)
{
if (clickMe.getLabel().equals(“Click Me!”))
clickMe.setLabel(“Click Me Not!”);
else
clickMe.setLabel(“Click Me!”);
} //actionPerformed()
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Stepwise Refinement
• Stepwise refinement is a coding and testing
strategy that employs the divide-andconquer principle.
• It helps to break a large task into smaller,
more manageable subtasks.
• It helps to localize and identify errors in
your code.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Stepwise Refinement of FirstApplet
• Stage 1: Input the comment block, the
import statements, and class definition.
• Compile and test.
• Stage 2: Input the variable declarations.
• Compile and test.
• Stage 3: Input the init() method.
• Compile and test.
• Stage 4: Complete actionPerformed()
method.
• Compile and test.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Summary: Technical Terms
•
•
•
•
•
•
•
•
•
•
•
•
•
algorithm
applet
application
assignment expression
block (compound statement
declaration statement
executable statement
flow of control
HyperText Markup Language
(HTML)
identifier
instance variable (field)
literal value
method
Java, Java, Java, 2E by R. Morelli
•
•
•
•
•
•
•
•
•
•
•
•
•
•
method invocation
object instantiation
operator
package
primitive data type
pseudocode
semantics
software life cycle
stepwise refinement
stub class
stub method
syntax
variable
waterfall model
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Summary: Key Points
• A Java applet is an embedded program that runs
within the context of a WWW browser. Java
applets are identified in HTML documents by
using the <applet> tag.
• A Java application runs in stand-alone mode.
Applications must have a main() method.
• Java programs are first compiled into bytecode and
then interpreted by the Java Virtual Machine
(JVM).
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Summary: Key Points
• A Java source program must be stored in a
file that has a .java extension.
• A Java bytecode file has the same name as
the source file but a .class extension.
• The name of the source file must be
identical to the name of the public class
defined in the file.
• Java is case sensitive.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Summary: Key Points
• Good program design requires that each
object and each method have a well-defined
task.
• Coding Java should follow the stepwise
refinement approach.
• A stub method is a method with a complete
header and an incomplete body.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development
Summary: Key Points
• A syntax error results when a statement
violates one of Java’s grammar rules.
• A semantic error or logic error is an error in
the program’s design and cannot be detected
by the compiler.
• Testing a program can only reveal the
presence of bugs, not their absence.
• Good programs should be designed for
readability, clarity, and flexibility.
Java, Java, Java, 2E by R. Morelli
Copyright 2002. All rights reserved.
Chapter 1: Java Program Development