• No results found

A Gentle Introduction Java :

N/A
N/A
Protected

Academic year: 2021

Share "A Gentle Introduction Java :"

Copied!
59
0
0

Loading.... (view fulltext now)

Full text

(1)

Java :

A Gentle Introduction

- presented by Fran Trees

(2)

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.

(3)

Java Advantages

Platform independence Reuse of code

Security

Automatic garbage collection Stronger typing of objects and variables

(4)

Java Technology:

Programming language

Syntax and semantics

Development environment

Compiler, interpreter, documentation generator, class packaging tool

Application environment

Standalone programs- run on any machine where Java Runtime Environment is installed (JRE)

Deployment environment

JRE supplied by SDK: contains class files, GUI

(5)

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

(6)

JVM

JVM JVM JVM

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 bytecode

Car.class

Still platform dependent not readable by humans;

not really machine code…

(7)

JRE

Car.class

class loader

bytecode verifier

interpreter

runtime

Runtime

(8)

JVM

JVM specification provides concrete definitions for implementation of:

Instruction set

Register set

Class file format

Runtime stack

Garbage collecting heap

Memory area

(9)

SO….

Java uses a mix of compiler and interpreter

The majority of type checking is done when the code is compiled.

(10)

Garbage Collection

Allocated memory does not need to be deallocated (delete).

Java provides tracks memory allocation

Garbage Collection

checks and frees memory no longer needed

done automatically

(11)

Java promotes

Object-oriented programming

(12)

Object-Oriented Programming

Each object has

its own memory

belongs to a class (instance of a class)

Class defines

attributes (defines state)

behavior (methods)

(13)

BlueJ

tool for teaching object-oriented

programming and Java without much overhead (task overloading for

student)

development environment designed at Monash University, Australia.

(14)

Shapes….

BlueJExamples

BlueJ Time

Activity_01 (#1,2)

BlueJ can be downloaded FREE

Some materials and examples are from Objects First with Java

by Barnes and Kölling goto BlueJ

(15)

Shapes

…summary after experimentation

What we see in this BlueJ project:

ClassesCircle, 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

(16)

Picture…Summary after Experimentation

How many objects?

How many constructors?

What happened when you

commented out the code for the constructor?

(17)

Picture

"Construct" creates an instance of the Picture class

a Picture

consists of 5 objects

2 squares, 1 triangle, 1 circle, 1 canvas

Objects can create other objects!

(18)

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

(19)

Comments

BlueJ : Interface

JavaDoc creates this document

(more on this later).

(20)

Comments, White space

Comments

// comment on one line

/*……*/ comment over several lines

/** ……*/ javadoc comment

White space

ignored; use white space for clarity of code

(21)

Javadoc

some keywords :

@author*

@version*

@param*

@return*

@throws*

(22)

JAVA

Language Basics

(23)

Some basics:

Primitive types

logical : boolean

no casts between boolean and int

texual: char

integral: byte, short, int, long

(24)

(not part of AP Subset)

Integral data types

byte 8 bits -27 to 27 – 1

short 16 bits -215 to 215 – 1

int 32 bits -231 to 231 – 1

long 64 bits -263 to 263 – 1

default is int

(25)

(not part of AP Subset)

Floating Point data types

float 32 bits

double 64 bits

default is double

(26)

Everything else

Everything that is not a primitive type is a reference type

A 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

(27)

Order of Precedence

Separators

. IMPORTANT

[]

()

;

,

(28)

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 ?:

(29)

Conditionals – branching if –else if statements

if (boolean expression){

statement or block;

}

if (boolean expression){

statement or block;

}

else if (boolean expression) { statement or block;

} else{

(30)

Conditionals – branching

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

(31)

Looping

for(startExp; booleanExp; endExp) {

statement or block;

}

while(boolean expression){

statement or block;

(32)

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!

(33)

Java supports

short circuit evaluation

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

if OK then evaluates second expression

(34)

Looping

do{

statement or block;

} while(boolean expression)

(not part of AP subset)

(35)

Looping

When do you use each loop?

for

while

do

(36)

Special Loop Flow Control--

return

is part of AP subset

(37)

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

(38)

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?

(39)

Scope of variables

Fields (attributes)

private

Formal parameters

initialized by actual parameters

Local variables

(40)

arrays

Part of AP CS A subset

one- and two- dimensional arrays

more on two-dimensional arrays later (AB only)

arrays of primitive types arrays of objects

(41)

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

(42)

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

(43)

array length

If a is an array variable,

a.length represents the length of the array a.

(44)

array processing

assume 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

(45)

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.

(46)

LabArrayClass class

attributes 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

(47)

Student[] students;

private field

each LabArrayClass object has this

array of Students

What does this mean?

What is an array?

(48)

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.

(49)

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

(50)

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.

(51)

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

(52)

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

(53)

What is an ArrayList???

indexed collection of objects grows automatically

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

(54)

Constructor

public LabClass(int maxNumberOfStudents) {

instructor = "unknown";

room = "unknown";

timeAndDay = "unknown";

students = new ArrayList();

capacity =

maxNumberOfStudents;

}

(55)

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

}

(56)

Setters

public void setRoom(String roomNumber) {

room = roomNumber;

}

public void setTime(String timeAndDayString) {

timeAndDay = timeAndDayString;

}

public void setInstructor(String instructorName) {

instructor = instructorName;

}

(57)

ArrayList method

public int

numberOfStudents() {

return students.size();

}

(58)

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

}

}

(59)

Activity_01

Complete work!!!

Projectpartners

design

discuss

commit

defend

Talk to your neighbors!

References

Related documents