280 likes | 422 Views
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!
E N D
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! • Download the Documentation • 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 Virtual Machine Byte code Source javac (compiler) .class JVM Any Hardware (that supports the JVM) .java
JDK Swing Basics Applet Dialog Frame Top-Level Containers 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/
JDK Swing Basics General-Purpose Containers Panel Scroll pane Split pane Tabbed pane Tool bar
JDK Swing Basics Internal frame Layered pane Root pane Special-Purpose Containers
JDK Swing Basics Buttons Combo box List Menu Slider Spinner Text field or Formatted text field Basic Controls
JDK Swing Basics Uneditable Information Displays Label Progress bar Tool tip
JDK Swing Basics Interactive Displays of Highly Formatted Information File chooser Color chooser Text Tree Table
Object-Orientation & Java Contents • Getting Started • Some Syntax • Differences between C and Java
Defining a Class { members Account publicclassAccount { publicintnumber; publicdoublebalance; publicvoidcredit(double x) { // do some sums } publicvoiddebit(double y) { // do checking then sums } } number balance fields credit debit methods
“Circle” Example Circle radius circumference area public class Circle { } public static final double PI = 3.14159; public double radius; 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); }
The “main” method Call to Integer Class Integer Class Static Method parameters to method call int input = Integer.parseInt(args[0]);
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 radius creates instances of main circumference area
Make Circle Execution java MakeCircle 34 Java Interpreter Circle c = new Circle(); :MakeCircle <<creates>> main([“34”]) c :Circle <<creates>> c.r = input; r c.circumference(); circumference() area() c.area();
File extensions in Java Java Virtual Machine Byte code Source javac (compiler) .class JVM Any Hardware (that supports the JVM) .java
The Circle example C:\Java contains Circle.java and MakeCircle.java C:\>cd Java C:\Java>javac Circle.java C:\Java>javac MakeCircle.java C:\Java now also contains Circle.class and MakeCircle.class C:\Java>java MakeCircle 4 25.13272 50.26544 C:\Java>java MakeCircle 5 31.4159 78.53975
Object-Orientation & Java Contents • Getting Started • A Little Bit of Syntax • Differences between C and Java
Differences • No Preprocessor • No analogues of #define, #include, #ifdef • Constants are replaced by static final fields • No 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 primitive type sizes • Removes this as a platform dependency • No 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 Collection • 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 goto statement • Adds exception handling and labelled break and continue statements
Java vs. C • Variable declarations anywhere • Java allows local variable definitions to be made anywhere in a method or block • Good practice to group them, though • Forward 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