Download Component-Based Software Engineering

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Object-Oriented
Programming with Java
Object-Orientation and Java
Lecture 1
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