Sunteți pe pagina 1din 56

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 What behaviors
interface 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 // Class header


{
private double length; // Instance variables
private double width;

public Rectangle(double l, double w) // Constructor method


{
length = l;
width = w;
}

public double calculateArea() // Access method


{
return length * width;
} // calculateArea()

} // 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 // Class header


{ // Start of class body
private double num = 5.0; // Instance variable

public void print() // Method definition header


{ // Start of method body
System.out.println(num); // Output statement
} // print() // 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
Java Language Summary: Access Rules
Summary: Access Rules

• Packages contain classes which contain members

(methods and fields).


• Access is determined from the top down.
•Type
If noofexplicit
Entity declaration
Declaration given,Accessibility
a default isRule
used.
Package N/A Accessibility determined by the system.
Class public Accessible if its packagesiaccessible.
default Accessible only withinits package .
Memb er public Accessible to all other objects.
(field or method )
of an accessible class
protected Accessible to its subclasses andto other
classes in it
s package.
private Accessible only withinthe cla ss.
default Accessible only withinthe packag e.
Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 1: Java Program Development
Java Language Summary: Keywords

abstract default if private throw


boolean do implements protected
throws
break double import public transient
byte else instanceof return
try
case extends int short void
catch final interface static volatile
char finally long super while
class float native switch
const for new synchronized
continue goto package this

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. 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 boolean - true or false
character char 16 ‘A’, ‘5’, ‘+’
byte byte 8 -128 to+127
integer short 16 -32768 to+32767
integer int 32 -2147483648 to +2147483647
integer long 64 really big numbers
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 Java Applets
• Stand-alone program • Embedded program.
• Runs independently • Runs in a Web browser
• Has a main() method • No main() method.
• No HTML file • Requires an HTML file
• Run using JDK’s java • Run using JDK’s
interpreter appletviewer

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 1: Java Program Development
The HelloWorld Application

/* Multi-line
* The HelloWorld application program comment block
*/
Single-line
public class HelloWorld // Class header
{ // Start of class body comments

public static void main(String argv[]) // Main method


{
System.out.println("Hello world!");
} // End of main

} // End of HelloWorld
Execution starts on
the first line of main()

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. Chapter 1: Java Program Development
The HelloWorld Applet

/*
* HelloWorld applet program
These statements import
*/ Java class names.
import java.applet.Applet; // Import the Applet class
import java.awt.Graphics; // 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 This statement displays


“HelloWorld” on the
browser window.

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. 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
implements
FirstApplet class is an
ActionListener
extension of the Applet class interface.

public class FirstApplet extends Applet Header


implements ActionListener
{
public void actionPerformed(ActionEvent e)
{ 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.
Header
public void init()
{
clickMe = new Button(”Click Me Not!"); Body
clickMe.addActionListener(this);
add(clickMe);
} // init()

Java, Java, Java, 2E by R. Morelli Copyright 2002. All rights reserved. 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-and-
conquer 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 • method invocation
• applet • object instantiation
• application • operator
• assignment expression • package
• block (compound statement • primitive data type
• declaration statement • pseudocode
• executable statement • semantics
• flow of control • software life cycle
• HyperText Markup Language • stepwise refinement
(HTML) • stub class
• identifier • stub method
• instance variable (field) • syntax
• literal value • variable
• method • waterfall model
Java, Java, Java, 2E by R. Morelli 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

S-ar putea să vă placă și