Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 78

Jump Start : Java

B.Ramamurthy
Copyright 1998
CSE Department

08/12/23 BR 1
Topics for Discussion
 OO Design Principles
 Java Virtual Machine
 Java Application Structure
 Class and objects
 Methods and Variables
 Access/Visibility Modifiers
 Debugging
 Inheritance
 Abstract classes, interfaces and implementation
 JDK Event Model
 Applets and Appletviewer
 Summary

08/12/23 BR 2
Object-Oriented Principles
OOP

Encapsulation Inheritance Polymorphism


(class) -- Hierarchy -- Many forms of
-- Information Hiding -- Reusability same function
-- Interface and -- Extensibility -- Abstract Methods
Implementations -- Expressive power -- Abstract Classes
-- Standardization -- Reflects many
-- Access Control mechanisms real-world problems
(private /public etc.)

08/12/23 BR 3
Conventional Compiled
Languages

Mac
Mac Compiler
Compiler Mac Hardware
C++source

C++source PC Compiler PC Hardware

C++source Sun Compiler PC Hardware

08/12/23 BR 4
Java Virtual Machine
Java compiler :javac JVM

Byte code Mac interpreter


Compiler Mac Hardware
C++source

JVM
C++source Byte code PC Interpreter PC Hardware

JVM

C++source Byte code Sun Interpreter PC Hardware

08/12/23 BR 5
“Run-anywhere” Capability

 On any machine when you compile Java


source code using javac byte code
equivalent to the source is generated.
 Byte code is machine-independent. This
enables the “run-anywhere” capability.
 You invoke java command which will feed
the byte code to the machine-dependent
interpreter.
08/12/23 BR 6
Java Application Program
Interface (Java API)

Package of related
(JAVA API)
classes : java.awt

java.util Random
Date Dictionary

Java.io, java.beans,.. package


class Etc..

08/12/23 BR 7
Java API : A Simplistic
View

API

packages

classes

methods and data declarations


08/12/23 BR 8
Java API Classes
 Unlike many other languages, you will referring to
the classes in the API.
 Where is the API?
 Packages are in:
/util/lang/jdk1.1.6/src/java
 “cd” to any package of interest:
awt, lang, io, graphics…..
 You will see the methods and data defined in the
classes in the package.

08/12/23 BR 9
Types of Programs
 Java is fully object-oriented.
 Every “function” has to be attached to a class.
 You will mainly deal with three types of programs:
 class: methods and data (variables +
constants) describing a collection (type) of
object
 application: class that has a main method: represents
a our regular program
 applet: class that is meant for execution using a
appletviewer/browser

08/12/23 BR 10
Problem Solving Using
Java
OO Design and Progamming in Java

Identify classes needed Write an Write an


application applet
class class

Reuse API Reuse Design new Create and use objects


classes your classes classes

08/12/23 BR 11
What is an Object?

 Object-oriented programming supports the view that programs are


composed of objects that interact with one another.
 How would you describe an object?
 Using its characteristics (has a ----?) and its behaviors (can do
----?)
 Object must have unique identity (name) : Basketball, Blue ball
 Consider a ball:
 Color and diameter are characteristics (Data Declarations)
 throw, bounce, roll are behaviors (Methods)

08/12/23 BR 12
Classes are
Blueprints
 A class defines the general nature of a collection
of objects of the same type.
 The process creating an object from a class is
called instantiation.
 Every object is an instance of a particular class.
 There can be many instances of objects from
the same class possible with different values for
data.

08/12/23 BR 13
Example
objects
Object
References

redRose

class Rose

blueRose

class
08/12/23 BR 14
Instantiation :
Examples
 class FordCar ---- defines a class name FordCar
 FordCar windstar; ---- defines a Object reference windStar
 windstar = new FordCar(); ---- instantiates a windstar
Object

 class HousePlan1 { color….


 HousePlan1 blueHouse;
 blueHouse = new HousePlan1(BLUE);
 HousePlan1 greenHouse = new HousePlan1(GREEN);

08/12/23 BR 15
Operator new and “dot”

 new operator creates a object and returns


a reference to that object.
 After an object has been instantiated, you
can use dot operator to access its
methods and data declarations (if you
have access permissions).
 EX: redRose.bloom(); greenHouse.color

08/12/23 BR 16
Elements of a Class

class

header methods data declarations (variables,


constants)

header body

modifiers, statements
parameters variables,
type, name constants

selection repetition others


assignment
08/12/23 BR 17
Class Structure

class

variables
constants

methods

08/12/23 BR 18
Defining Classes
 Syntax:
 class class_name {
 data-declarations
 constructors
 methods }
 Constructors are special methods used for
instantiating (or creating) objects from a class.
 Data declarations are implemented using variable
and constant declarations.

08/12/23 BR 19
Naming Convention

 Constants: All characters in uppercase, words in


the identifier separated by underscore: EX:
MAX_NUM
 Variables, objects, methods: First word all
lowercase, subsequent words start with
uppercase. EX: nextInt, myPen, readInt()
 Classes: Start with an uppercase letter. EX:
Tree, Car, System , Math

08/12/23 BR 20
A complete example

 Problem Statement: You have been


hired to assist in an secret encryption
project. In this project each message
(string) sent out is attached to a randomly
generated secret code (integer) between
1 and 999. Design and develop an
application program in Java to carry out
this project.

08/12/23 BR 21
Identify Objects

 There are two central objects:


 Message
 Secret code
 Is there any class predefined in JAVA API
that can be associated with these objects?
Yes ,
 “string” of java.lang and “Random” of
java.util

08/12/23 BR 22
The Random class

 Random class is defined in java.util


package.
 nextInt() method of Random class returns
an integer between 0 and MAXINT of the
system.

08/12/23 BR 23
Design

Class String Class Random

An instance of Random
An instance of string number generator
Input and fill up message. Generate Random integer
Attach (concatenate)

Output combined message.


For implementation see /projects/bina/java/secretMsg.java
08/12/23 BR 24
Debugging and Testing
 Compile-time Errors : Usually typos or syntax errors
 Run-time Errors : Occurs during execution. Example:
divide by zero .
 Logic Errors: Software will compile and execute with no
problem, but will not produce expected results.
(Solution: testing and correction)
 See /projects/bina/java/Peets directory for an exercise.

08/12/23 BR 25
Class Components

 Class name (starts with uppercase), constants,


instance variables, constructors definitions
and method definitions.
 Constants:
public final static double PI = 3.14;
 Variables:
private double bonus;
public string name;

08/12/23 BR 26
Method Invocation/Call
 Syntax:
method_name (values);
object_name.method_name(values);
classname.method_name(values);
Examples:
computeSum(); // call to method from within the class
where it is located
YourRose.paintIt(Red);
Math.abs(X);

08/12/23 BR 27
Defining Methods
 A method is group of (related) statements
that carry out a specified function.
 A method is associated with a particular
class and it specifies a behavior or
functionality of the class.
 A method definition specifies the code to
be executed when the method is
invoked/activated/called.

08/12/23 BR 28
Method Definition : Syntax

visibility return_type method_name


(parameter_list)
{
statements
}

08/12/23 BR 29
Return Type

 can be void, type or class identifier


 void indicates that the method called to
perform an action in a self-standing way:
Example: println
 type or class specify the value returned
using a return statement inside the
method.

08/12/23 BR 30
Return Statement

 Syntax of return statement:


return; // for void methods
return expression; // for type or class return
value
// the expression type and return type
should be same

08/12/23 BR 31
Parameter List
 Parameter list specified in method header provides a
mechanism for sending information to a method.
 It is powerful mechanism for specializing an object.
 The parameter list that appears in the header of a
method
 specifies the type and name of each parameter and
 is called formal parameter list.
 The corresponding parameter list in the method
invocation is called an actual parameter list.

08/12/23 BR 32
Parameter list : Syntax
 Formal parameter list: This is like molds or
templates
(parm_type parm_name, parm_type parm_name, ....)
 Actual parameter list: This is like material that fit
into the mold or template specified in the formal
list:
(expression, expression....)

08/12/23 BR 33
Method Definition : review
definition

header
body
Visibility
modifiers

parameter list
return type Name
{ statements }

08/12/23 BR 34
Method Definition :
Example

 Write a method that computes and


returns the perimeter of a rectangle class.
 Analysis:
 Send to the method: Length and Width
 Compute inside the method: Perimeter
 Return from the method: Perimeter

08/12/23 BR 35
...Example (contd.)
public int Perimeter (int Length, int Width)
{
int Temp; // local temporary variable
Temp = 2 * (Length + Width); // compute
perimeter
return Temp; // return computed value
}

08/12/23 BR 36
What happens when a
method is called?

 Control is transferred to the method called


and execution continues inside the
method.
 Control is transferred back to the caller
when a return statement is executed
inside the method.

08/12/23 BR 37
Method Invocation :
semantics
Operating
System 1 1. OS to main method
2 2. Main method execution
Main method
8
Rect.Area(….) 3. Invoke Area
3
4. Transfer control to Area
7
4 8 5. Execute Area method
6. Return control back to
main method
Area 7. Resume executing main
5 method 6 8. Exit to OS

08/12/23 BR 38
Constructors
 A Constructor is used to create or instantiate an
object from the class.
 Constructor is a special method:
 It has the same name as the class.
 It has no return type or return statement.
 Typically a class has more than one constructor:
a default constructor which has no parameters,
and other constructors with parameters.

08/12/23 BR 39
Constructors (contd.)
 You don’t have to define a constructor if you need only
a default constructor.
 When you want initializing constructors :
1. you must include a default constructor in this case.
2. You will use initializing constructors when you want the
object to start with a specific initial state rather than as
default state.
3. Example: Car myCar(Red); // initializing constructor for
Car class with color as parameter

08/12/23 BR 40
Visibility Modifiers

type Method/variable name

public protected “nothing”


DEFAULT private
static “nothing”
To indicate DEFAULT
class method/ To indicate
variable object
method/
08/12/23 BR
variable41
..Modifiers (contd.)

 private : available only within class


 “nothing” specified : DEFAULT: within
class and within package
 protected : within inherited hierarchy
(only to sub classes)
 public : available to any class.

08/12/23 BR 42
CLASSPATH

 Many times classes needed are available in a


repository other than the Java API.
 Set the CLASSPATH environment variable to
point to such repositories. One such is located in
/projects/bina/cs114/structures
setenv CLASSPATH
.:/util/lang/jdk1.1.6/lib/classes.zip:/projects/bina/cs114/structures
(all in a continuous line)

08/12/23 BR 43
CLASSPATH

 Now you may refer to any one of the


classes in the structures directory.
 The source code is available in
 /projects/bina/cs114/sources
 Checkout ReadStream and Keyboard
classes for nice inputs.

08/12/23 BR 44
Inheritance

 Inheritance is the act of deriving a new class


from an existing one.
 A primary purpose of inheritance is to reuse
existing software.
 Original class used to derive a new class is called
“super” class and the derived class is called
“sub” class.
 Inheritance represents “is a” relationship
between the superclass and the subclass.
08/12/23 BR 45
Syntax

class subclass extends superclass {


class definition
}
Example:
class Windstar extends FordCar // meaning it inherits
from class Fordcar{ ....}
Windstar myCar();
In this example, FordCar is the super-class and Windstar is a
sub-class and myCar is an object Windstar class.

08/12/23 BR 46
Representing the
Relationship
BankClass
has a has a
has a
Account [ ] MortgageSVC BrokerageSVC
is a is a

Checking Savings

is a : use inheritance
has a : use composition, or membership

08/12/23 BR 47
Modifers

 Visibility modifiers: private, public,


protected
 Protected modifier is used when the entity
needs to be available to the subclass but
not to the public.

08/12/23 BR 48
Example : Words

Main class
Book class
Super class

Uses
is a

Dictionary Class

subclass
08/12/23 BR 49
Example : School

Student
Main class

uses

Grad Student

08/12/23 BR 50
Abstract Class (ABC) and
methods
 An abstract class or method is defined using “abstract”
modifier.
 An abstract method has no definition in the super class.
 ABC cannot be instantiated.
 Sole purpose of ABC is to provide an appropriate super
class from which classed may inherit.
 Classes from which objects can be instantiated are
called concrete classes.

08/12/23 BR 51
Example

Food Abstract super class

Pizza Hamburger HotDog

subclasses

08/12/23 BR 52
Interface
 An abstract method is one that does not have a
definition within the class. Only the prototype is present.
 An interface is collection of constants and abstract
methods.
 Syntax
interface interface_name {
constant -declarations;
abstract methods;
}

08/12/23 BR 53
Example
interface EPA {
bool emissionControl();
bool pollutionControl();

}
class NYepa implements EPA {
bool emissionControl () {
details/semantics /statements how to implement it }
class CAepa implements EPA {
bool emissionControl () {….
// different details on implementation….}

08/12/23 BR 54
Inheritance and Interfaces

 In Java class may inherit (extend) from only one


class. (C++ allows multiple inheritance).
 But a Java class may implement many
interfaces.
 For example,
public class Scribble extends Applet implements
MouseListner, MouseMotionListner {

08/12/23 BR 55
Types of Programs
 Console programs:
 Control-driven: You start the program and the
program code determines the sequence of events.
 Mostly the actions are predetermined.
 Windows-based programs:
 Event-driven: The operation of the program
depends on what you do with the controls presented
(usually by the GUI)
 Selecting menu items, pressing buttons, dialog
interaction cause actions within the program.

08/12/23 BR 56
Events

1. Actions such as clicking a button, moving a


mouse, are recognized and identified by the
operating systems(OS).
2. For each action, OS determines which of the
many currently running programs should receive
the signal (of the action)
3. The signals that the application receives from
the OS as result of the actions are called
events.
08/12/23 BR 57
Event Generation

Other User Interface


event
Mouse actions, Keystrokes
sources
Operating Systems

JAVA API
Events

Methods and handlers Methods and handlers


Application 1 Application 2
08/12/23 BR 58
Event Handlers
 An application responds to the events by executing
particular code meant for each type of event.
 Not all events need to be handled by an
application. For example, a drawing application
may be interested in handling only mouse
movements.
 As a designer of an event-driven application you
will write methods to handle the relevant events.

08/12/23 BR 59
Event Handling Process

 Source of an event is modeled as an object. Ex:


button click’s object is a button
 Type of the event: ActionEvent, WindowEvent,
MouseEvent etc. Ex: An ActionEvent object is
passed to the application that contains
information about the action.
 Target of an event: Listener object of the event.
Passing the event to a listener means calling the
particular method of the listener object.

08/12/23 BR 60
Java Event Model
 Java event model has changed quite significantly
between JDK1.0 and JDK 1.1.
 Many Web Browsers still use JDK1.0.
 JDK1.0 event model is good for understanding event-
driven programming and for simple applications but
does not scale well for large applications.
 It is impossible to take a in-depth look at any one.
But we will learn enough to use some basic features.

08/12/23 BR 61
Java Class Hierarchy
java.lang Object
java.awt
Component
“others”

Button Container Label TextComponent

java.applet package
Window Panel
Applet
Frame Dialog
08/12/23 BR 62
JDK1.1 Event Model :
System support

Many Event classes

Low-level classes Semantic classes

FocusEvent MouseEvent Etc. ActionEvent TextEvent Etc.

Listener Interfaces : methods

08/12/23 BR 63
JDK1.1 Event Model :
Application Support

 Instantiate objects from component


classes such as buttons and checkboxes
which will serve as source of the events.
 Implement listener interfaces.
 Define methods to handle events of
interest.
 Example: /projects/bina/java/Doodle.java

08/12/23 BR 64
Implementing Listeners
 An application (class) becomes a listener when it
implements the listener interface.
 Java 1.1 event model provides a variety of listeners.
 EX:
 If an application is interested in button click, it will
have to implement ActionListener interface.
 actionPerformed() method of the ActionListener will
have be implemented by the application.
 When the button click event occurs, actionPerformed()
method will be called with event object as argument.

08/12/23 BR 65
Example: Doodle.java
1. Include “implements” at the header of the class : This
application uses MouseListener and
MouseMotionListener interfaces
2. Invoke “ methods” to add/activate required listeners.
Here we have three:
a) mouse click
b) mouse motion
c) window close
3. Set up board : use paint() and fillRect() methods.

08/12/23 BR 66
Example (contd.)

4. Implement all the methods (even if it is


empty) of the interface (why?)
5. This application needs only MousePressed
and MouseReleased for line color selection
and MouseDragged for drawing lines.
6. Finally an adapter class that handles
window closing.

08/12/23 BR 67
Applet

 An applet is a Java program that operates


within a browser and hence can appear in
a web page.
 It can be fetched from a remote computer
and run on the local computer.
 Applet’s enabling technologies:
 Java Virtual Machine (JVM)
 Interpretation rather than compilation

08/12/23 BR 68
Requirements

 Besides the classes, an applet requires a .html


file and a tool for viewing the applet (Ex:
appletviewer of JDK)
 An applet extends Applet class of java.applet
package.
import java.applet.Applet;
 An applet should have at least an init() or a
paint() method (just as an application should
have main() method)
08/12/23 BR 69
Applet Class

 Applet class has four important methods:


init()
start()
stop()
destroy()
Besides these paint() method of component
class is commonly used for drawing graphics
in an applet window.
08/12/23 BR 70
Applet Runtime Structure

html
file
Applet javac includes .html
file appletviewer
.java
Java runtime
JVM
Applet
file
.class

08/12/23 BR 71
Example 1: Using only
paint()

 //file : MyApplet.java
import java.applet.Applet; // step 1
import java.awt.Graphics;
public class MyApplet extends Applet //step 2
{
public void paint( Graphics g) // step 3
{ g.drawString(“To climb a ladder”, 20, 90); }
}

08/12/23 BR 72
Example 1: interpretation

step 1: import Applet class


step 2: inherit from Applet class
step 3: Overload /redefine/customize
paint() method

08/12/23 BR 73
html file

1. Create a html file:


<APPLET code=“MyApplet.class” width=300
height=200>
<\APPLET>
2. Save as MyApplet.html
3. To create class: javac MyApplet.java
4. To execute: appletviewer MyApplet.html

08/12/23 BR 74
Example 1: execution
semantics

Java run-time system will look for init(),


then start() methods.
Default definitions of init() and start() are
executed.
Then user-applet-defined paint() method is
executed.
Rest of the control follows default methods.

08/12/23 BR 75
More on Applets

1. main() is replaced by init() or paint() methods


2. An applet cannot access local programs or files
3. Very useful in creation of active/dynamic web
pages
4. Implements “behavior streaming”
5. Popular component of Java language.

08/12/23 BR 76
On-line Information

file:/util/lang/jdk1.1.6/api/API_users_guide.html
has user’s manual for Java API
/util/lang/jdk1.1.6/demo
has many demo programs
and of course, Sun’s home page has the JDK
distribution.

08/12/23 BR 77
Summary
 We studied Java classes and objects, object-
oriented programming, applications and applets.
 A good understanding of the event-model is
necessary to write event-driven programs.
 Graphics and awt features (buttons, panels etc.)
will tremendously enhance the capabilities and
presentation of the event driven programs.

08/12/23 BR 78

You might also like