3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

59
3/28/2003 Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees

Transcript of 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

Page 1: 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

Page 2: 3/28/2003Columbia University JETT 1 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

Page 3: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT3

Java Advantages

Platform independence

Reuse of code

Security

Automatic garbage collection

Stronger typing of objects and variables

Page 4: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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.

Page 5: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 6: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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…

Page 7: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT7

JRE

Car.class

class loader

bytecode verifier

interpreter

runtime

hardware

Runtime

Page 8: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 9: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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.

Page 10: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 11: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT11

Java promotes

Object-oriented programming

Page 12: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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)

Page 13: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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.

Page 14: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 15: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 16: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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?

Page 17: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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!

Page 18: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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)!

Page 19: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT19

Comments

BlueJ : Interface

JavaDoc creates this document(more on this later).

Page 20: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 21: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT21

Javadoc

some keywords :@author*

@version*

@param*

@return*

@throws*

Page 22: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT22

JAVA

Language Basics

Page 23: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 24: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 25: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT25

(not part of AP Subset)

Floating Point data typesfloat 32 bitsdouble 64 bits

default is double

Page 26: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 27: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT27

Order of Precedence

Separators. IMPORTANT[]();,

Page 28: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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 = *= /= %= += -=

Page 29: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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;}

Page 30: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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)

Page 31: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT31

Looping

for(startExp; booleanExp; endExp)

{

statement or block;

}

while(boolean expression){

statement or block;

}

Page 32: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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!

Page 33: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT33

Java supportsshort circuit evaluation

if ((n != 0) && (x < 1/n))

evaluates first expression

if OK then evaluates second expression

Page 34: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT34

Looping

do{

statement or block;

} while(boolean expression)(not part of AP subset)

Page 35: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT35

Looping

When do you use each loop? for while do

Page 36: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT36

Special Loop Flow Control--

return

is part of AP subset

Page 37: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 38: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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?

Page 39: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT39

Scope of variables

Fields (attributes)private

Formal parameters initialized by actual parameters

Local variables

Page 40: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 41: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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).

Page 42: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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];

Page 43: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT43

array length

If a is an array variable,

a.length represents the length of the array a.

Page 44: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 45: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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.

Page 46: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 47: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT47

Student[] students;

private fieldeach LabArrayClass object has this

array of StudentsWhat does this mean?What is an array?

Page 48: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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.

Page 49: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 50: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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.

Page 51: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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))…

Page 52: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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

Page 53: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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/

Page 54: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT54

Constructor

public LabClass(int maxNumberOfStudents){

instructor = "unknown";room = "unknown";timeAndDay = "unknown";students = new ArrayList();capacity =

maxNumberOfStudents;}

Page 55: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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);

}

Page 56: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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;}

Page 57: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT57

ArrayList method

public int numberOfStudents()

{

return students.size();

}

Page 58: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

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();}

…}

Page 59: 3/28/2003Columbia University JETT 1 Java : A Gentle Introduction - presented by Fran Trees.

3/28/2003Columbia University JETT59

Activity_01

Complete work!!!

Projectpartnersdesign

• discuss• commit• defend

Talk to your neighbors!Have FUN !!!