Download Class Notes

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
ISYE 7210
Simulation of Interactive,
Real-Time Discrete Systems
(in Java)
Initial Notes
Q: 2.day.2 9/20/2005 9:13 PM
Christine M. Mitchell
Center for Human-Machine Systems Research
School of Industrial and Systems Engineering
Georgia Institute of Technology
Atlanta GA 30332-0205
office: ISyE Groseclose, Rm. 334, 404 894-4321
chmsr lab: ISyE “Main” Building, Rm. 426, 404 385-0363
404.385-0360 (fax)
{cm}@chmsr.gatech.edu
(8.24.05)
CHMSR1
7210 Initial Flow
Introduction to
Java
Object-Oriented
Programming
Java
Fundamentals
Java Classes
Variable names
Style guidlines
Primitive data types
Flow of control
(8.24.05)
2
Building a Real-Time Interactive Simulator
Real-Time Interactive
Simulator
Java
Classes
Java classes
Subclasses
Inheritance
Packages
Timing
LinkedList
Interfaces
Simulator
Tools
Random number generator (RNG)
Statistical distributions
Event timing
Simulation event list
Simulation(s)
Sim0
Sim1
Sim2
Sim3
(8.24.05)
3
The Java Technology Phenomenon

About Java Technology
 Java is both
 Programming language
 Platform

Java programming language
 High-level language characterized by the following buzzwords
 Simple
 Interpreted
 Architecture neutral
 Multithreaded
 Object oriented
 Robust
 Portable
 Dynamic
 Distributed
 Secure
 High performance
(8.24.05)
4
The Java Technology Phenomenon (cont’d)

The buzzwords are explained in
 The Java Language
 White paper: James Gosling & Henry McGilton
 http://java.sun.com/docs/white/langenv/

Java programming language is unusual as it is both
 Compiled
 Interpreted
 Compiler translates source code into Java bytecode
 Java bytecode
 Machine-independent
 Intermediate
(8.24.05)
code
code
5
The Java Technology Phenomenon (cont’d)

Java compiler
 Parses runs source code line, myProgram.java
 Produces bytecode instructions, myProgram.class
 Compilation happens once
myProgram.java //source code
javac myProgram.java //compile source code into bytecode

Java interpreter
 Translates bytecode into machine instructions
 Intepreter can run a program many times
java myProgram //produces output
(8.24.05)
6
The Java Technology Phenomenon (cont’d)

Java bytecode
 ‘Write once; run anywhere”
 Runs on any platform that has a Java compiler
 Platform-independent code

Java Virtual Machine (VM)
 Interprets bytecode on any implementation of Java VM
 Creates platform-dependent code
(8.24.05)
7
The Java Technology Phenomenon (cont’d)
(8.24.05)

Platform
 Hardware &/or software environment in which a program runs
 Windows 2000
 Linux
 Solaris
 MacOS

Java platform differs
 Software-only environment
 Runs on top of hardware-based platforms

Java platform has two components:
 Java Virtual Machine (Java VM)
 Java Application Programming Interface (Java API)
8
The Java Technology Phenomenon (cont’d)
Java “Advantages”

Develop programs more quickly
 Java development may be twice as fast as C++
 Why?
 Fewer lines of code
 Simpler language

Avoid platform dependencies with 100% pure Java
 Portable
 Use standard Java libraries
 Avoid use of libraries written in other languages.
(8.24.05)
9
The Java Technology Phenomenon (cont’d)
Java “Advantages” (cont’d)

Get started quickly
 “Easy” to learn, especially for programmers of C or C++
 Eliminates common C/C++ errors
 No pointers
 No array overflow
 Minimizes memory leakage

Write less code
 Java program can be 4 times smaller than a C++ program
 Metrics (counts)
 Number of classes
 Number of methods

Write better code
 Encourages good coding practices
 Garbage collection helps avoid memory leaks
 Object oriented: extensible & reusable code
(8.24.05)
10
The Java Technology Phenomenon (cont’d)

The Java platform has two components:
 Java Virtual Machine (Java VM)
 Java Application Programming Interface (Java API)
 Large collection of ready-made software components

(8.24.05)
Includes many capabilities
 Pre-defined classes, Integer
 Graphical user interface (GUI) widgets
 Libraries of related classes
11
Object-Oriented Programming

Programming Types (not inclusive)
 Procedural: FORTRAN, BASIC, C, Pascal
 int a, b;
 a = 5;
 b = -21;
 Object-oriented: (COBOL*), Smalltalk, C++, Java
 Class
(template)
 SavingsAccount
 Instance
of a class
 SavingsAccount chrisSavingsAccount = new SavingsAccount( );
 SavingsAccount yourAccount = new SavingsAccount( );
*Common Business Oriented Language
(8.24.05)
12
Java Basics

A Java program consists of Java source files, Part.java, Inventory.java

All Java source files must have the extension, *.java, Part.java

Each Java source file contains exactly one Java class

A Java source file and a Java class file, which contains the class file, must have
exactly the same name, file Part.java implements (contains) class Part

Java is case sensitive

Java syntax conventions should be used to re-enforce meaning of Java entities,
e.g., ClassName, anObject, anInstanceVariable
(8.24.05)
13
Java Variables Names & Conventions
Variable Names
 Example declaration & initialization of double variable, balance, set to 0.0
double balance = 0.0;

Variable names should
 Start with a lowercase letter, balance
 Be short yet meaningful, balance
 Mnemonic--designed to indicate the intent of use, firstName
 Written with mixed case, String firstName = “Chris”;
 One-character variable names should be avoided
 The exception is for temporary "throwaway" (local) variables

(8.24.05)
Common names for temporary variables are i, j, k, m
14
First Java Program & Class: Part.java & Part.class

Part.java illustrates a self-contained Java program

Part.java contains one Java class: Part

Part is a self-contained, or complete, because it contains
 Class declaration
 Class body
 main(String[ ] args) method (function)
**************** Start Part.java Listing Here**************
//Part.java (First Java class example) (see Part)
public class Part
{ //class body starts here
//Variables (class & instance) for class Part
//Constructors for class Part
//Methods (class & instance) for class Part
//Part (cont’d)
(8.24.05)
15
Part Class
//Part
public static void main (String[ ] args)
{
int parts = 50; //local variable
System.out.println ("Current number of parts is " + parts);
System.out.println ("Current number of parts is " + 5 + " " + parts); //numeric literal
parts = parts + 10; //add ten to local variable, parts
System.out.println ("Current number of parts is " + parts);
System.out.println ("Ends Part class demonstration");
} //end main method
} //end class body & end class Part
Output
Current number of parts is 50
Current number of parts is 5 50
Current number of parts is 50
Current number of parts is 60
Ends Part class demonstration
(8.24.05)
16
Compiling & Running a Java Program from a Command Line

Open a command window: START | RUN | CMD

Go to the directory that contains your java file(s), C:\7210.05\example1\Part.java

Compile a Java class, Part.java
 javac** Part.java //if the results is a “clean compile,” there will be a new file,
Part.class

Run the Part program
 java Part //this only works with if the compiler produced a Part.class file
(8.24.05)
** javac –g Part.java //the –g provides debugging information
17
Creating, Compiling, & Running Java is Easier in an ISE

Tools comprising an IDE (integrated development environment)
 Create Java source code: myNewClass.java
 Compile Java source code: javac myNewClass.java
 Run Java program: java myNewClass

Examples (free or lite versions)
1. Most basic--not really integrated
 editor (vi or emacs)
 javac on command line
 java on command line
2.
(8.24.05)
TextPad
 Set variables for Java programs
 Open & create Java file, with indenting & highlighting
 Compile java file
 Run java file
18
Creating, Compiling, & Running Java is Easier in an ISE
3. drjava--a lightweight IDE
 Ongoing development at Rice University used as a teaching tool
 Free sourceforge.net
http://drjava.sourceforge.net/

(8.24.05)
See on-line instructions

Download

Documentation

How to Run

QuickStart
19
Creating, Compiling, & Running Java is Easier in an ISE
3. drjava (cont’d)
 Interaction pane
(8.24.05)
20
Creating, Compiling, & Running Java is Easier in an ISE
4. NetBeans 4.1 http://www.netbeans.org/
 See link to cmm/sva NetBean 4.1 tutorial for GUI development
(8.24.05)
21
Creating, Compiling, & Running Java is Easier in an ISE
5. JCreator (Lite)
http://www.jcreator.com/
6. JGrasp (CoC uses this IDE for CS introductory courses)
http://www.jgrasp.org/
7. Eclipse (state of the art)
http://www.eclipse.org/
 drjava plug-in
 GUI development plug-in
(8.24.05)
22