3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.
-
Upload
lucinda-lawrence -
Category
Documents
-
view
215 -
download
1
Transcript of 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.
3/28/2003Columbia University JETT1
Java :
A Gentle Introduction
- presented by Fran Trees
3/28/2003Columbia University JETT2
Java Programming Language
1991 A group led by James Gosling and Patrick Naughton
at Sun Microsystems designed “Green”, a language for consumer devices (coffee makers, VCRs, etc.). Didn’t overly excite anyone.
1994 Gosling – HotJava Browser
• could download “applets” from the web and run them
• applets were written in Java.• greatly extended capabilities of a web page
3/28/2003Columbia University JETT3
Java Advantages
Platform independence
Reuse of code
Security
Automatic garbage collection
Stronger typing of objects and variables
3/28/2003Columbia University JETT4
Java Technology:
Programming language Syntax and semantics
Development environment Compiler, interpreter, documentation
generator, class packaging toolApplication environment Standalone programs- run on any machine
where Java Runtime Environment is installed (JRE)
Deployment environment JRE supplied by SDK: contains class files,
GUI classes, etc.
3/28/2003Columbia University JETT5
Portability and Security
Java Virtual Machine An imaginary machine that is implemented
by emulating it in software on a real machine (fake CPU that sits on top of an operating system). Code for the JVM is stored in .class files.
Provides hardware platform specifications Reads compiled byte codes that are platform
independent
3/28/2003Columbia University JETT6
JVM
JVM JVM JVM
Unix Windows
A JVM has been written for every operating system.
A compiler takes Java application source code and generates bytecode (machine code instructions for JVM).
Java source code(Car.java)
compiled
bytecodeCar.class
Mac
Still platform dependent
not readable by humans;not really machine code…
3/28/2003Columbia University JETT7
JRE
Car.class
class loader
bytecode verifier
interpreter
runtime
hardware
Runtime
3/28/2003Columbia University JETT8
JVM
JVM specification provides concrete definitions for implementation of: Instruction set Register set Class file format Runtime stack Garbage collecting heap Memory area
3/28/2003Columbia University JETT9
SO….
Java uses a mix of compiler and interpreter
The majority of type checking is done when the code is compiled.
3/28/2003Columbia University JETT10
Garbage Collection
Allocated memory does not need to be deallocated (delete).
Java provides tracks memory allocation
Garbage Collectionchecks and frees memory no longer
neededdone automatically
3/28/2003Columbia University JETT11
Java promotes
Object-oriented programming
3/28/2003Columbia University JETT12
Object-Oriented Programming
Each object hasits own memorybelongs to a class (instance of a
class)
Class definesattributes (defines state)behavior (methods)
3/28/2003Columbia University JETT13
BlueJ
tool for teaching object-oriented programming and Java without much overhead (task overloading for student)
development environment designed at Monash University, Australia.
3/28/2003Columbia University JETT14
Shapes….
BlueJExamples
BlueJ TimeActivity_01 (#1,2)
BlueJ can be downloaded FREESome materials and examples are from
Objects First with Java by Barnes and Kölling
goto BlueJ
3/28/2003Columbia University JETT15
Shapes…summary after experimentation
What we see in this BlueJ project: ClassesCircle, Square, Triangle, Canvas creation of an object : call to Constructor invoking (calling) methods passing parameters method signatures data types : int, String, and boolean multiple instances of the same class changing the state of the object
3/28/2003Columbia University JETT16
Picture…Summary after Experimentation
How many objects?
How many constructors?
What happened when you commented out the code for the constructor?
3/28/2003Columbia University JETT17
Picture
"Construct" creates an instance of the Picture class
a Pictureconsists of 5 objects
• 2 squares, 1 triangle, 1 circle, 1 canvas
Objects can create other objects!
3/28/2003Columbia University JETT18
Constructors
If no constructor is included in the class, Java provides one. if values are not set, default values for
instance variables of a class are:• 0 for int• 0.0 for double• null for objects• false for boolean
If a constructor is included in the class, all bets are off (no default constructor is provided)!
3/28/2003Columbia University JETT19
Comments
BlueJ : Interface
JavaDoc creates this document(more on this later).
3/28/2003Columbia University JETT20
Comments, White space
Comments// comment on one line/*……*/ comment over several lines/** ……*/ javadoc comment
White space ignored; use white space for clarity of
code
3/28/2003Columbia University JETT21
Javadoc
some keywords :@author*
@version*
@param*
@return*
@throws*
3/28/2003Columbia University JETT22
JAVA
Language Basics
3/28/2003Columbia University JETT23
Some basics:
Primitive typeslogical : boolean
•no casts between boolean and int
texual: charintegral: byte, short, int, long
floating: double, float
3/28/2003Columbia University JETT24
(not part of AP Subset)
Integral data typesbyte 8 bits -27 to 27 – 1short 16 bits -215 to
215 – 1int 32 bits -231 to 231 – 1long 64 bits -263 to 263 – 1
default is int
3/28/2003Columbia University JETT25
(not part of AP Subset)
Floating Point data typesfloat 32 bitsdouble 64 bits
default is double
3/28/2003Columbia University JETT26
Everything else
Everything that is not a primitive type is a reference typeA reference variable contains a reference to an object
Circle sun = new Circle(); allocates memory for this new object initializes attributes sun executes constructor assigns reference to reference variable
3/28/2003Columbia University JETT27
Order of Precedence
Separators. IMPORTANT[]();,
3/28/2003Columbia University JETT28
Operator Order of Precedence(associativity – operators)
R to L ++ -- + - ~ !
L to R * / %
L to R + -
L to R << >> >>>
L to R < > <= >= instanceof
L to R == !=
L to R &
L to R ^
L to R |
L to R &&
L to R ||
R to L ?:
R to L = *= /= %= += -=
3/28/2003Columbia University JETT29
Conditionals – branchingif –else if statements
if (boolean expression){statement or block;}
if (boolean expression){statement or block;}
else if (boolean expression) {statement or block;}
else{statement or block;}
3/28/2003Columbia University JETT30
Conditionals – branchingswitch statements (not part of AP subset)
switch (expression){case constant2:
statements;break
case constant3:statements;break;
default:statements;break;
}note: expression must be assignment compatible with int.
(byte, char, short are OK; double, long, Strings not OK)
3/28/2003Columbia University JETT31
Looping
for(startExp; booleanExp; endExp)
{
statement or block;
}
while(boolean expression){
statement or block;
}
3/28/2003Columbia University JETT32
Teaching Tip:
Company Rules:Have a permanent place in your
classroom with your Company Rules listed.
That way everyone knows what is expected and no one will be needlessly fired!
3/28/2003Columbia University JETT33
Java supportsshort circuit evaluation
if ((n != 0) && (x < 1/n))
evaluates first expression
if OK then evaluates second expression
3/28/2003Columbia University JETT34
Looping
do{
statement or block;
} while(boolean expression)(not part of AP subset)
3/28/2003Columbia University JETT35
Looping
When do you use each loop? for while do
3/28/2003Columbia University JETT36
Special Loop Flow Control--
return
is part of AP subset
3/28/2003Columbia University JETT37
More with BlueJ
More with BlueJ – TicketMachines NaiveTicketMachine
• attributes (fields)• private int price; //price of ticket• private int balance; //how much $ put in for ticket• private int total; //total $ in machine
• Constructor• Methods
• insertMoney• printTicket• getBalance• getPrice
3/28/2003Columbia University JETT38
Naïve TicketMachine
Is there a default constructor?
How many constructors are there?
What do we mean by a "method signature?"
What methods are the accessors?
What methods are the modifiers (mutators)?
What's wrong with this ticket machine?
What enhancements can we make?
3/28/2003Columbia University JETT39
Scope of variables
Fields (attributes)private
Formal parameters initialized by actual parameters
Local variables
3/28/2003Columbia University JETT40
arraysPart of AP CS A subset
one- and two- dimensional arraysmore on two-dimensional arrays later
(AB only)
arrays of primitive types
arrays of objects
3/28/2003Columbia University JETT41
arrays
Declaring an array variable is similar to declaring other variables.int[] a; //array of ints;double[] b; //array of doubles;String[] c; //array of Strings;
Does not cause Java to allocate memory (space).
3/28/2003Columbia University JETT42
arrays
To allocate memory (space) for your array.
final int MAXNUM = 5;
int [] a = new int [10];
double[] b = new double[20];
String[] c = new String[MAXNUM];
3/28/2003Columbia University JETT43
array length
If a is an array variable,
a.length represents the length of the array a.
3/28/2003Columbia University JETT44
array processingassume an array of ints
rate each of the following on a scale of 1 – 5 where 5 is very hard to implement : fill: value of array element filled with index of array
element find largest value in array find smallest value in array find sum of values in array search for item in array sort items in an array count occurrences of a value in an array insert an item into a sorted array
3/28/2003Columbia University JETT45
Initializing arrays
Initialization of named arrays:
int[] a = {1,2,3};
Declaration without initialization gets default values.
int[] a = new int[10];
filled with 0s.
3/28/2003Columbia University JETT46
LabArrayClass classattributes are private
• private String instructor;• private String room;• private String timeAndDay;• private Student[] students;• private int currentNumberOfStudents
methods are public (for now)• Constructors• Accessors • Mutators
3/28/2003Columbia University JETT47
Student[] students;
private fieldeach LabArrayClass object has this
array of StudentsWhat does this mean?What is an array?
3/28/2003Columbia University JETT48
A look at the constructor
public LabArrayClass(int maxNumberOfStudents) { instructor = "unknown"; room = "unknown"; timeAndDay = "unknown"; students = new Student[maxNumberOfStudents]; currentNumberOfStudents=0; }
An array is a fixed-length collection of values of the same type.Access array elements by indexing : students[3]First element in the array has index 0.
3/28/2003Columbia University JETT49
Comparing array elements
Comparing elements in arrays of primitives is not a problem.comparison operators are defined.
What about arrays of Strings?Strings are Objects
3/28/2003Columbia University JETT50
Suppose we wanted to "search?"
We need to search for a String, key…Look at each element in the array of
Strings and check to see if it contains the same characters as key.
3/28/2003Columbia University JETT51
Comparing Strings
Strings are objects. Do not use == to compare the values of two strings.
To test if two Objects have the same data, we use the equals method. (API)
Every Java Object supports the equals method but its implementation may be different (more on this later).
if(aString.equals(bString))…
3/28/2003Columbia University JETT52
LabArrayClass
A peek at the code……
How can we search for a student by ID?
How can we remove a student who has a specified ID?
How can we sort the students according to ID numbers?
Work with LabArrayClass project
3/28/2003Columbia University JETT53
What is an ArrayList???
indexed collection of objectsgrows automaticallyAP CS A subset methods : int size() boolean add (Object x) Object get(int index) Object set(int index, Object x) void add(int index,Object x) Object remove(int index)
A look at the API ! http://www.cs.duke.edu/csed/ap/subset/doc/
3/28/2003Columbia University JETT54
Constructor
public LabClass(int maxNumberOfStudents){
instructor = "unknown";room = "unknown";timeAndDay = "unknown";students = new ArrayList();capacity =
maxNumberOfStudents;}
3/28/2003Columbia University JETT55
…Recall Java A subset…Recall API
public void enrolStudent(Student newStudent){
if(students.size() == capacity) {System.out.println("The class is
full, but the student has been added.");
}students.add(newStudent);
}
3/28/2003Columbia University JETT56
Setters
public void setRoom(String roomNumber){
room = roomNumber;}
public void setTime(String timeAndDayString){
timeAndDay = timeAndDayString;}
public void setInstructor(String instructorName){
instructor = instructorName;}
3/28/2003Columbia University JETT57
ArrayList method
public int numberOfStudents()
{
return students.size();
}
3/28/2003Columbia University JETT58
More about objects and ArrayList
public void printList(){…int i;for(i = 0; i < students.size(); i++){Student theStudent = (Student)students.get(i);theStudent.print();}
…}
3/28/2003Columbia University JETT59
Activity_01
Complete work!!!
Projectpartnersdesign
• discuss• commit• defend
Talk to your neighbors!Have FUN !!!