object-oriented software engineering
DESCRIPTION
Object-Oriented Software Engineering. Object-Orientation and Java. Object-Orientation & Java. Contents Getting Started A Little Bit of Syntax Differences between C and Java. Getting Started. Goto: http://java.sun.com Download the Java Software Development Kit (SDK) Its free! - PowerPoint PPT PresentationTRANSCRIPT
Object-Oriented Software Object-Oriented Software EngineeringEngineering
Object-Orientation and JavaObject-Orientation and Java
22UniS
Object-Orientation & JavaObject-Orientation & Java
ContentsContents Getting StartedGetting Started A Little Bit of SyntaxA Little Bit of Syntax Differences between C and JavaDifferences between C and Java
33UniS
Getting StartedGetting Started
Goto:Goto:http://java.sun.comhttp://java.sun.com
Download the Java Software Development Kit Download the Java Software Development Kit (SDK)(SDK) Its free!Its free!
Download the DocumentationDownload the Documentation Also free! (Also free! (http://java.sun.com/docs/books/tutorial)http://java.sun.com/docs/books/tutorial)
Buy Buy JAVA In a NutshellJAVA In a Nutshell, by David Flanagan, , by David Flanagan, Publ. O’RiellyPubl. O’Rielly It’ll cost you, sorry!It’ll cost you, sorry!
44UniS
File extensions in JavaFile extensions in Java
.java Source
Byte code.class
javac (compiler)
JVM Java Virtual Machine
Any Hardware (that supports the JVM)
55UniS
What you get in the JDKWhat you get in the JDK
appletviewerappletviewer For running AppletsFor running Applets
javacjavac Compiles .java Compiles .java .class .class
javajava Interprets a Java ClassInterprets a Java Class
classes.zipclasses.zip The system provided classesThe system provided classes
src.zipsrc.zip Complete source for standard Complete source for standard classesclasses
javadocjavadoc Generates Java HTML documentsGenerates Java HTML documents
… …
……
66UniS
JDK Swing BasicsJDK Swing Basics
Java JDK provides a collection of Foundation classes to allow easy implementation of GUI-s (Graphical User Interface)
For this lecture borrowed heavily from:http://java.sun.com/docs/books/tutorial/information/
Top-Level Containers
Applet
Dialog
Frame
77UniS
JDK Swing BasicsJDK Swing Basics
General-Purpose Containers
Panel
Scroll pane
Split pane
Tabbed pane
Tool bar
88UniS
JDK Swing BasicsJDK Swing Basics
Special-Purpose Containers
Internal frame
Layered pane
Root pane
99UniS
JDK Swing BasicsJDK Swing Basics
Basic Controls
Buttons
Combo box
List
Menu
Slider
Spinner
Text field or Formatted text field
1010UniS
JDK Swing BasicsJDK Swing Basics
Uneditable Information Displays
Label
Progress bar
Tool tip
1111UniS
JDK Swing BasicsJDK Swing Basics
Interactive Displays of Highly Formatted Information
Color chooser
File chooser
Table
Text
Tree
1212UniS
Object-Orientation & JavaObject-Orientation & Java
ContentsContents Getting StartedGetting Started Some SyntaxSome Syntax Differences between C and JavaDifferences between C and Java
1313UniS
Defining a ClassDefining a Class
Account
numberbalance
creditdebit
{membersfields
methods
public class Account {
public int number; public double balance;
public void credit(double x) { // do some sums } public void debit(double y) { // do checking then sums }}
1414UniS
““Circle” ExampleCircle” Example
Circle
radius
circumferencearea
public class Circle {
}
public double radius;
public double circumference() { return 2 * PI * radius;}public double area() { return PI * radius * radius;}
public static final double PI = 3.14159;
1515UniS
The “Circle” classThe “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; }}
1616UniS
The “main” methodThe “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); }
1717UniS
The “main” methodThe “main” method
int input = Integer.parseInt(args[0]);
Call to Integer Class
Integer Class Static Method
parameters to method call
1818UniS
Put “main” in a new class?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);
}}
1919UniS
An AssociationAn Association
MakeCircle
main
Circle
radius
circumferencearea
creates instances of
2020UniS
Make Circle ExecutionMake Circle Execution
Java Interpreter
:MakeCircle<<creates>>
Circle c = new Circle();
main([“34”])
circumference()
area()
c.r = input;
c.circumference();
c.area();
r
<<creates>> c :Circle
java MakeCircle 34
2121UniS
File extensions in JavaFile extensions in Java
.java Source
Byte code.class
javac (compiler)
JVM Java Virtual Machine
Any Hardware (that supports the JVM)
2222UniS
The Circle exampleThe Circle example
C:\>cd Java
C:\Java>javac Circle.java
C:\Java>javac MakeCircle.java
C:\Java>java MakeCircle 4
25.1327250.26544
C:\Java>java MakeCircle 5
31.415978.53975
C:\Java contains Circle.java and MakeCircle.java
C:\Java now also contains Circle.class and MakeCircle.class
2323UniS
Object-Orientation & JavaObject-Orientation & Java
ContentsContents Getting StartedGetting Started A Little Bit of SyntaxA Little Bit of Syntax Differences between C and JavaDifferences between C and Java
2424UniS
DifferencesDifferences
No PreprocessorNo Preprocessor No analogues of No analogues of #define#define, , #include#include, , #ifdef#ifdef
Constants are replaced by Constants are replaced by static finalstatic final fieldsfields
No Global VariablesNo Global Variables Avoids possibility of namespace collisionsAvoids possibility of namespace collisions We will see later how you can make a We will see later how you can make a
constant or variable globally accessibleconstant or variable globally accessible
2525UniS
Java vs. CJava vs. C
Well-defined primitive type sizesWell-defined primitive type sizes Removes this as a platform dependencyRemoves this as a platform dependency
No pointersNo pointers Although Java Classes and Arrays are Although Java Classes and Arrays are
reference types, these references are reference types, these references are “opaque”. No “address of” or “dereference” “opaque”. No “address of” or “dereference” operatorsoperators
This is This is notnot a handicap and eliminates an a handicap and eliminates an important source of bugsimportant source of bugs
2626UniS
Java vs. CJava vs. C
Garbage CollectionGarbage Collection Objects are “tidied away” as soon as there are Objects are “tidied away” as soon as there are
no further references to themno further references to them So, no need to explicitly manage memorySo, no need to explicitly manage memory Eliminates memory leaksEliminates memory leaks
No goto statementNo goto statement Adds exception handling and labelled Adds exception handling and labelled breakbreak
and and continuecontinue statements statements
2727UniS
Java vs. CJava vs. C
Variable declarations anywhereVariable declarations anywhere Java allows local variable definitions to be Java allows local variable definitions to be
made anywhere in a method or blockmade anywhere in a method or block Good practice to group them, thoughGood practice to group them, though
Forward referencesForward references Methods can be invoked before they are Methods can be invoked before they are
defined (we’ll see why it is important to be defined (we’ll see why it is important to be able to do this)able to do this)
2828UniS
Java vs. CJava vs. C
Method overloadingMethod overloading Multiple methods can be defined with the same name, Multiple methods can be defined with the same name,
so long as they have different parameter listsso long as they have different parameter lists
No struct and union typesNo struct and union types No enumerated typesNo enumerated types No bitfieldsNo bitfields No typedefNo typedef No method pointersNo method pointers No variable-length argument listsNo variable-length argument lists