Java Methods
Object-Oriented Programming
and Data Structures
3rd AP edition
Maria Litvin ● Gary Litvin
Chapter 2
An Introduction to Software
Engineering
Copyright © 2015 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved.
Objectives:
• Understand the software development
process, tools, and priorities
• Understand compilers and interpreters
• Learn about Java Virtual Machine, bytecode
• Learn to set up and run simple console
applications, GUI applications, and applets in
Java
• Learn basic facts about OOP
2-2
Software Today:
2,540,000,000
2-3
Software Applications
• Large business
systems
•
•
•
•
•
•
Databases
Internet, e-mail, etc.
Military
Embedded systems
Scientific research
AI
• Word processing
and other small
business and
personal productivity
tools
• Graphics / arts /
digital photography
• Social networks
• Games
2-4
Software Development
1950-1970's:
• Emphasis on
efficiency



fast algorithms
small program size
limited memory use
Now:
• Emphasis on




• Often cryptic code
• Not user-friendly

programmer’s
productivity
team development
reusability of code
easier maintenance
portability
• Better documented
• User-friendly
2-5
Programming Languages
C
Assembly
LISP
Scheme
languages
Logo
Ada
Algol
1940
1950
1960
Fortran
Machine
code
1970
1980
Pascal
C++
C#
Java
1990
2000
Python
Basic
Cobol
Smalltalk Smalltalk-80
D
2010
Swift
2015
Fortress Hack
Groovy
2-6
Software Development Tools
• Editor

programmer writes
source code
• Compiler

translates the source
into object code
(instructions specific to a
particular CPU)
• Linker

converts one or several
object modules into an
executable program
• Debugger

steps through the
program “in slow motion”
and helps find logical
mistakes (“bugs”)
2-7
The First “Bug”
“(moth) in relay”
Mark II Aiken Relay Calculator (Harvard University, 1945)
2-8
Compiled Languages:
Edit-Compile-Link-Run
Editor
Editor
Editor
Source
code
Compiler
Source
code
Compiler
Source
code
Compiler
Object
code
Object
code
Object
code
Linker Executable
program

2-9
Interpreted Languages:
Edit-Run
Editor
Source
code
Interpreter

2-10
Compiler vs. Interpreter
• Compiler:




• Interpreter:
checks syntax
generates
machine-code
instructions

not needed to run
the executable
program
the executable
runs faster



checks syntax
executes appropriate
instructions while
interpreting the
program statements
must remain installed
while the program is
interpreted
the interpreted
program is slower
2-11
Java’s Hybrid Approach:
Compiler + Interpreter
• A Java compiler converts Java source
code into instructions for the Java
Virtual Machine.
• These instructions, called bytecode, are
the same for any computer / operating
system.
• A CPU-specific Java interpreter
interprets bytecode on a particular
computer.
2-12
Java’s Compiler + Interpreter
Editor
Compiler
:
:
7
K


Hello.java
Hello.class
Interpreter
Interpreter
:

Hello,
World!

2-13
Why Bytecode?
• Platform-independent
• Loads from the Internet faster than source
code
• Interpreter is faster and smaller than it would
be for Java source
• Source code is not revealed to end users
• Interpreter performs additional security
checks, screens out malicious code
2-14
JDK — Java Development Kit
• javac

• javadoc
Java compiler

• java

Java interpreter
• appletviewer

tests applets without a
browser
generates HTML
documentation (“docs”)
from source
• jar

packs classes into jar
files (packages)
All these are command-line tools,
no GUI
2-15
JDK (cont’d)
• Developed by Sun Microsystems (now
Oracle); free download
http://www.oracle.com/technetwork/java/javase/downloads/
• All documentation is online
• Many additional Java resources on the
Internet
2-16
Java IDE
• GUI front end for JDK
• Integrates editor, javac, java, appletviewer,
debugger, other tools:


specialized Java editor with syntax highlighting,
autoindent, tab setting, etc.
clicking on a compiler error message takes you to
the offending source code line
• Usually JDK is installed separately and an
IDE is installed on top of it.
2-17
Types of Programs
• Console
• GUI applications
applications
• Applets
2-18
Console Applications
• Simple text dialog:
prompt  input, prompt  input ...  result
C:\javamethods\Ch02> path=%PATH%;C:\Program Files\Java\jdk
1.5.0_07\bin
C:\javamethods\Ch02> javac Greetings2.java
C:\javamethods\Ch02> java Greetings2
Enter your first name: Josephine
Enter your last name: Jaworski
Hello, Josephine Jaworski
Press any key to continue...
2-19
Command-Line Arguments
C:\javamethods\Ch02> javac Greetings.java
C:\javamethods\Ch02> java Greetings Josephine Jaworski
Hello, Josephine Jaworski
public class Greetings
{
public static void main(String[ ] args)
{
String firstName = args[0];
String lastName = args[1];
System.out.println("Hello, " + firstName + "
}
}
Command-line
arguments are
passed to main
as an array of
Strings.
" + lastName);
2-20
Command-Line Args (cont’d)
• Can be used in GUI applications, too
• IDEs provide ways to set them (or
prompt for them)
Josephine Jaworski
2-21
Greetings2.java
import java.util.Scanner;
public class Greetings2
{
public static void main(String[ ] args)
{
Scanner kboard = new Scanner(System.in);
System.out.print("Enter your first name: ");
String firstName = kboard.nextLine( );
Prompts
System.out.print("Enter your last name: ");
String lastName = kboard.nextLine( );
System.out.println("Hello, " + firstName + " " + lastName);
System.out.println("Welcome to Java!");
kboard.close();
}
}
2-22
GUI Applications
Clickable
panel
Button
Pull-down
menu
2-23
HelloGui.java
import java.awt.Color;
...
GUI library classes
public class HelloGui extends JFrame
{
< ... other code >
public static void main(String[ ] args)
{
HelloGui window = new HelloGui( );
// Set this window's location and size:
// upper-left corner at 300, 300; width 200, height 100
window.setBounds(300, 300, 200, 100);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
2-24
OOP —
Object-Oriented Programming
• An OOP program models a world of active
objects.
• An object may have its own “memory,”
which may contain other objects.
• An object has a set of methods that can
process messages of certain types.
2-25
OOP (cont’d)
• A method can change the object’s state, send
messages to other objects, and create new
objects.
• An object belongs to a particular class, and
the functionality of each object is determined
by its class.
• A programmer creates an OOP application by
defining classes.
2-26
The Main OOP Concepts:
• Inheritance: a subclass extends a superclass;
the objects of a subclass inherit features of
the superclass and can redefine them or add
new features.
• Event-driven programs: the program
simulates asynchronous handling of events;
methods are called automatically in response
to events.
2-27
Inheritance
• A programmer can define hierarchies of
classes
• More general classes are closer to the top
Person
Child
Baby
Toddler
Adult
Teen
2-28
OOP Benefits
• Facilitates team development
• Easier to reuse software components and
write reusable software
• Easier GUI (Graphical User Interface) and
multimedia programming
2-29
Review:
• What are some of the current software
development concerns?
• What are editor, compiler, debugger used for?
• How is a compiler different from an
interpreter?
• Name some of the benefits of Java’s
compiler+interpreter approach.
• Define IDE.
2-30
Review (cont’d):
•
•
•
•
What is a console application?
What are command-line arguments?
What is a GUI application?
What is the difference between a GUI
application and an applet?
• What is OOP?
• Define inheritance.
2-31