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
Internet Software
Development
Object-Orientation and Java
Paul J Krause
Object-Orientation & Java
Contents
Getting Started
A Little Bit of Syntax
Differences between C and Java
Object-Oriented Programming in Java
Getting Started
Goto:
http://java.sun.com
Download the Java Software Development Kit
(SDK)
Download the Documentation
Its free!
Also free! (http://java.sun.com/docs/books/tutorial)
Buy JAVA In a Nutshell, by David Flanagan,
Publ. O’Rielly
It’ll cost you, sorry!
File extensions in Java
.java
Source
javac (compiler)
.class
JVM
Any Hardware (that supports the JVM)
Byte code
Java Virtual Machine
What you get in the JDK
appletviewer
javac
java
classes.zip
src.zip
javadoc
…
…
For running Applets
Compiles .java .class
Interprets a Java Class
The system provided classes
Complete source for standard
classes
Generates Java HTML documents
Object-Orientation & Java
Contents
Getting Started
A Little Bit of Syntax
Differences between C and Java
Object-Oriented Programming in Java
Defining a Class
public class Account {
Account
members
{
number
balance
credit_account
debit_account
fields
methods
public int number;
public double balance;
public void credit(double x) {
// do some sums
}
public void debit(double y) {
// do checking then sums
}
}
“Circle” Example
public class Circle {
public static final double PI = 3.14159;
Circle
radius
public double radius;
circumference
area
public double circumference() {
return 2 * PI * radius;
}
public double area() {
return PI * radius * radius;
}
}
The “Circle” class
public class Circle {
// A class field
public static final double PI= 3.14159;
// A useful constant
// A class method: just compute a value based on the arguments
public static double radiansToDegrees(double rads) {
return rads * 180 / PI;
}
// An instance field
public double r;
// The radius of the circle
// Two instance methods: they operate on the instance fields
// of an object
public double area() {
// Compute the area of the circle
return PI * r * r;
}
public double circumference() {
// Compute the circumference
return 2 * PI * r;
}
}
The “main” method
public class Circle {
public double r;
// The radius of the circle
public double area() {
// Compute the area of the
circle
return PI * r * r;
}
public double circumference() {
// Compute the circumference
return 2 * PI * r;
}
public static void main(String[] args) {
int input = Integer.parseInt(args[0]);
Circle c = new Circle();
c.r = input;
double result = c.circumference();
System.out.println(result);
}
}
Put “main” in a new class?
public class MakeCircle {
public static void main(String[] args)
{
int input = Integer.parseInt(args[0]);
Circle c = new Circle();
c.r = input;
double circum = c.circumference();
System.out.println(circum);
double a = c.area();
System.out.println(a);
}
}
An Association
Circle
MakeCircle
creates instances of
main
radius
circumference
area
File extensions in Java
.java
Source
javac (compiler)
.class
JVM
Any Hardware (that supports the JVM)
Byte code
Java Virtual Machine
The Circle example
C:\>cd Java
C:\Java contains
Circle.java and
MakeCircle.java
C:\Java>javac Circle.java
C:\Java>javac MakeCircle.java
C:\Java>java MakeCircle 4
25.13272
50.26544
C:\Java>java MakeCircle 5
31.4159
78.53975
C:\Java now also contains
Circle.class and
MakeCircle.class
Object-Orientation & Java
Contents
Getting Started
A Little Bit of Syntax
Differences between C and Java
Object-Oriented Programming in Java
Differences
No
No analogues of #define, #include,
#ifdef
Constants are replaced by static final
fields
No
Preprocessor
Global Variables
Avoids possibility of namespace collisions
We will see later how you can make a
constant or variable globally accessible
Java vs. C
Well-defined
Removes this as a platform dependency
No
primitive type sizes
pointers
Although Java Classes and Arrays are
reference types, these references are
“opaque”. No “address of” or “dereference”
operators
This is not a handicap and eliminates an
important source of bugs
Java vs. C
Garbage
Objects are “tidied away” as soon as there are
no further references to them
So, no need to explicitly manage memory
Eliminates memory leaks
No
Collection
goto statement
Adds exception handling and labelled break
and continue statements
Java vs. C
Variable
Java allows local variable definitions to be
made anywhere in a method or block
Good practice to group them, though
Forward
declarations anywhere
references
Methods can be invoked before they are
defined (we’ll see why it is important to be
able to do this)
Java vs. C
Method overloading
Multiple methods can be defined with the same name,
so long as they have different parameter lists
No struct and union types
No enumerated types
No bitfields
No typedef
No method pointers
No variable-length argument lists
Object-Orientation & Java
Contents
Getting Started
A Little Bit of Syntax
Differences between C and Java
Object-Oriented Programming in Java