Lecture 01
Lecture 01
Lecture 01
Introduction
BMED‐4360 (Object Oriented Programming)
1
2
1.1 Introduction
4
1.1 Introduction (Cont.)
5
1.1 Introduction (Cont.)
• Over the years, many programmers learned
structured programming.
• You’ll learn structured programming and object-
oriented programming—the key programming
methodology used by programmers today.
• You’ll create and work with many software
objects.
Their internal structure is often built using structured-
programming techniques.
• The logic of manipulating objects is occasionally
expressed with structured programming.
6
1.1 Introduction (Cont.)
7
1.1 Introduction (Cont.)
• Authors’ e-mail
[email protected].
• The Deitel® Buzz Online
www.deitel.com/newsletter/
subscribe.html
• Java Resource Centers (and other related ones)
www.deitel.com/
ResourceCenters.html.
9
1.9 History of Java
• Microprocessors are having a profound impact in intelligent
consumer-electronic devices.
• 1991
Recognizing this, Sun Microsystems funded an internal corporate
research project, which resulted in a C++-based language named
Java
Created by James Gosling.
• 1993
The web exploded in popularity
Sun saw the potential of using Java to add dynamic content to web
pages.
• Java garnered the attention of the business community
because of the phenomenal interest in the web.
10
1.10 Java Class Libraries
• Java programs consist of pieces called classes.
• Classes include methods that perform tasks and return
information when the tasks complete.
• Java class libraries
Rich collections of existing classes
Also known as the Java APIs (Application Programming Interfaces)
• Two aspects to learning the Java “world.”
The Java language it-self
The classes in the extensive Java class libraries
• Download the Java API documentation
java.sun.com/javase/downloads/
Scroll down to the Additional Resources section and click the
Download button to the right of Java SE 6 Documentation.
11
12
1.10 Java Class Libraries (Cont.)
• Programming tips
Software Engineering Observations—explain
concepts that affect and improve the overall
architecture and quality of software systems.
Good Programming Practices—help you write
programs that are clearer, more understandable,
more maintainable and easier to test and debug—
i.e., remove programming errors.
Common Programming Errors—discuss problems
to watch out for and avoid.
13
1.10 Java Class Libraries (Cont.)
14
15
16
17
1.13 Typical Java Development
Environment
• Java program development and execution
cycle (illustrated in Fig. 1.1).
18
19
20
1.13 Typical Java Development
Environment (Cont.)
• Java programs normally go through five
phases
edit
compile
load
verify
execute
21
1.13 Typical Java Development
Environment (Cont.)
• We discuss these phases in the context of the Java SE
Development Kit 6 (JDK6) from Sun Microsystems, Inc.
• Download the most up-to-date JDK and its documentation
from java.sun.com/javase/downloads/.
• Carefully follow the installation instructions for the JDK
provided in the Before You Begin section of this book to
ensure that you set up your computer properly to compile
and execute Java programs.
• Sun’s New to Java Center at:
• java.sun.com/new2java/
22
1.13 Typical Java Development
Environment (Cont.)
• Phase 1 consists of editing a file with an editor
program (normally known simply as an editor).
Type a Java program (source code) using the editor
Make any necessary corrections
Save the program
• A file name ending with the .java extension indicates that
the file contains Java source code.
Linux editors: vi and emacs.
Windows editors: Notepad, EditPlus
(www.editplus.com), TextPad
(www.textpad.com) and jEdit
(www.jedit.org).
23
1.13 Typical Java Development
Environment (Cont.)
• Integrated development environments (IDEs)
Provide tools that support the software-development
process, including editors for writing and editing
programs and debuggers for locating logic errors—
errors that cause programs to execute incorrectly.
• Popular IDEs
Eclipse (www.eclipse.org)
NetBeans (www.netbeans.org)
JBuilder (www.codegear.com)
JCreator (www.jcreator.com)
BlueJ (www.blueJ.org)
jGRASP (www.jgrasp.org)
24
1.13 Typical Java Development
Environment (Cont.)
• Phase 2
Use the command javac (the Java compiler) to
compile a program. For example, to compile a
program called Welcome.java, you’d type
javac Welcome.java
If the program compiles, the compiler produces
a .class file called Welcome.class that contains
the compiled version of the program.
25
1.13 Typical Java Development
Environment (Cont.)
• Java compiler translates Java source code into bytecodes
that represent the tasks to execute.
• Bytecodes are executed by the Java Virtual Machine (JVM)
—a part of the JDK and the foundation of the Java platform.
• Virtual machine (VM)—a software application that
simulates a computer
Hides the underlying operating system and hardware from the
programs that interact with it.
• If the same VM is implemented on many computer
platforms, applications that it executes can be used on all
those platforms.
26
1.13 Typical Java Development
Environment (Cont.)
• Bytecodes are platform independent
They do not depend on a particular hardware platform.
• Bytecodes are portable
The same bytecodes can execute on any platform
containing a JVM that understands the version of Java
in which the bytecodes were compiled.
• The JVM is invoked by the java command. For
example, to execute a Java application called
Welcome, you’d type the command
java Welcome
27
1.13 Typical Java Development
Environment (Cont.)
• Phase 3
The JVM places the program in memory to execute it
• This is known as loading.
Class loader takes the .class files containing the
program’s bytecodes and transfers them to primary
memory.
Also loads any of the .class files provided by Java
that your program uses.
• The .class files can be loaded from a disk on your system
or over a network.
28
1.13 Typical Java Development
Environment (Cont.)
• Phase 4
As the classes are loaded, the bytecode verifier
examines their bytecodes
• Ensures that they are valid and do not violate Java’s
security restrictions.
Java enforces strong security to make sure that
Java programs arriving over the network do not
damage your files or your system (as computer
viruses and worms might).
29
1.13 Typical Java Development
Environment (Cont.)
• Phase 5
The JVM executes the program’s bytecodes.
JVM typically uses a combination of interpretation and just-in-time
(JIT) compilation.
Analyzes the bytecodes as they are interpreted, searching for hot
spots—parts of the bytecodes that execute frequently.
A just-in-time (JIT) compiler (the Java HotSpot compiler) translates
the bytecodes into the underlying computer’s machine language.
When the JVM encounters these compiled parts again, the faster
machine-language code executes.
Java programs actually go through two compilation phases
• One in which source code is translated into bytecodes (for portability
across computer platforms)
• A second in which, during execution, the bytecodes are translated into
machine language for the actual computer on which the program
executes.
30
31
1.14 Notes about Java and Java How to
Program, Eighth Edition
• Web-based version of the Java API
documentation
• java.sun.com/javase/6/docs/api/index.html
• Download this documentation to your own
computer
• java.sun.com/javase/downloads/
• Additional technical details on many aspects of
Java development
• java.sun.com/reference/docs/index.html
32
33
34
35
36
1.15 Test-Driving a Java Application
37
38
39
40
41
42
43
44
45
46
1.16 Software Engineering Case Study:
Introduction to Object Technology and the UML
47
1.16 Software Engineering Case Study
(Cont.)
• Objects
Reusable software components that model real
world items.
Humans think in terms of objects. People, animals,
plants, cars, etc.
Have attributes (e.g., size, shape, color and weight)
Exhibit behaviors (e.g., a ball rolls, bounces,
inflates and deflates; a baby cries, sleeps, crawls,
walks and blinks; a car accelerates, brakes and
turns; a towel absorbs water).
48
1.16 Software Engineering Case Study
(Cont.)
• Object-oriented design (OOD)
Models software in terms similar to those that people use to
describe real-world objects.
Class relationships
Inheritance relationships
Models communication between objects (via messages).
Encapsulates attributes and operations (behaviors) into
objects.
Information hiding
• Objects may know how to communicate with one another across
well-defined interfaces, but normally they are not allowed to know
how other objects are implemented.
49
1.16 Software Engineering Case Study
(Cont.)
• Object oriented languages
Programming in such a language, called object-oriented
programming (OOP)
Allows you to implement an object-oriented design as a working
system.
Java is object oriented.
• Focus on creating classes.
Each contains fields and the set of methods that manipulate the
fields and provide services to clients (i.e., other classes that use the
class).
Programmers use existing classes as the building blocks for
constructing new classes.
• Classes are to objects as blueprints are to houses.
• Associations—relationships between classes.
• Packaging software as classes facilitates reuse.
50
1.16 Software Engineering Case Study
(Cont.)
• Object-oriented analysis and design (OOAD)
Analyzing your project’s requirements (i.e.,
determining what the system is supposed to do) and
developing a design that satisfies them (i.e., deciding
how the system should do it).
• Unified Modeling Language (UML)—A single
graphical language for communicating the results
of any OOAD process has come into wide use.
• The UML is the most widely used graphical
representation scheme for modeling object-
oriented systems.
51