rina zviel-girshin @asc1 system development with java instructors: rina zviel-girshin...

80
Rina Zviel-Girshin @AS C 1 System development with Java Instructors: Rina Zviel-Girshin Interdiciplinary Center Herzlia School of the Computer Science Fall: 2001-2002

Upload: bryce-cameron

Post on 03-Jan-2016

222 views

Category:

Documents


2 download

TRANSCRIPT

Rina Zviel-Girshin @ASC 1

System development with Java

Instructors: Rina Zviel-Girshin

Interdiciplinary Center HerzliaSchool of the Computer Science

Fall: 2001-2002

Rina Zviel-Girshin @ASC 2

Information Source

• Course site : www.idc.ac.il/

• Course book:

Java Software Solutions /Lewis & Loftus

Thinking in Java / Bruce Eckle

Rina Zviel-Girshin @ASC 3

Course Methodology

• Non-LinearitySpiral model

Hypermedia

• CAI – Computer Assisted Instruction

•  Interactive learning

•  Labs and programming

•  Multi-approach: inductive-deductive trails

Rina Zviel-Girshin @ASC 4

Programming Languages and Java

• Programming languages

• Java language

• The basic program

• Java syntax

Rina Zviel-Girshin @ASC 5

Programming

• The process of writing programs called a programming.

• The process requires:Programming languageA translator of the programming language

into machine language• Programs are written in programming language.

Rina Zviel-Girshin @ASC 6

Syntax

• Syntax describes the grammatical rules of a language.

• Valid words• Valid grammar constructions• Valid punctuation

• Programs must be syntactically correct.

Rina Zviel-Girshin @ASC 7

Semantics

• Semantics gives the meaning of what you write with a language.

• A programming language must precisely define the meaning of every statement that can be written with it.

• Programs must be semantically correct.

Rina Zviel-Girshin @ASC 8

Example

• The following sentence is syntactically correct but semantically incorrect.

“ Java programs are green and yellow.”

– All words are correct words.– Punctuation is correct.– But logically the sentence makes no sense.

Rina Zviel-Girshin @ASC 9

Programming languages

• There are several families of the programming languages:

Procedural ( Pascal, C++, Java)

Logical ( Prolog) Visual ( Visual Basic) Document (HTML, LATEX)

Rina Zviel-Girshin @ASC 10

Programming languages

• Procedural languages can be divided into:Machine languagesLow-level (Assembler )Intermediate-level (C)High-Level (C++, Java)

Rina Zviel-Girshin @ASC 11

Java

• Java is high-level language.• Java is object oriented language.• In this course we will use the terms:

– OOP,

– OOA ,

– OOD.

Rina Zviel-Girshin @ASC 12

OOA and OOD

OOA- Object-Oriented Analysis is a way to analyze a problem.

OOD- Object-Oriented Design is a way to design a solution.

Both see the world as:• objects and • their relations (behavior, communication).

Rina Zviel-Girshin @ASC 13

OOA and OOD (cont)

• The way to analyze a problem is to define the objects relevant to it and their behavior.

•  The way to solve a problem is to realize the objects relevant and the behavior we need.

•  Both are useful as preliminary stages in OOP- Object Oriented Programming.

 

Rina Zviel-Girshin @ASC 14

OOP

Objects are the building blocks of:

the problemthe solutionthe input sourcethe output targetthe environment

Rina Zviel-Girshin @ASC 15

Objects Objects include both:

• data (fields, variables, state)• processing (behavior, methods, functions)

 

Objects have two kinds of behavior:• outer – I/O, messages, relations with others• inner – processing (usually computing the

messages)

Rina Zviel-Girshin @ASC 16

Objects (cont) 

• Relations between objects are implemented using communication (messages).

• Communication can have many forms.• Some forms are very different from the usual idea

of a message.• Objects acquire structure using their relations.• The structure is usually tree-like.

Rina Zviel-Girshin @ASC 17

High-level languages

• Writing programs in machine language is possible but very difficult and time consuming.

• Programs usually written in a more human readable language - high-level language.

• Java is high-level language.• A program written in any computer language must

be translated into a machine language in order to be executed.

Rina Zviel-Girshin @ASC 18

Translators

• Compiler

• A compiler is a program that translates a source program (usually high level language) into target program (usually machine language program).

• The resulting program can be executed many times.

• Interpreter

• An interpreter is a program that reads, translates and executes the source program statement by statement.

• The translation is done each time the program runs.

Rina Zviel-Girshin @ASC 19

Java

• Java is a high-level, third generation programming language, like C, Fortran, Smalltalk.

• Shares much of C's syntax.• Designed by a group at Sun MicroSystems.• Originally called Oak.

Rina Zviel-Girshin @ASC 20

Java advantages

• Platform independent““Write once, run anywhere”.Write once, run anywhere”.

• Improve robustness, remove unsafe language loopholes.

• According to Sun:“ Java is simple, object-oriented, distributed,

interpreted, robust, secure, architecture-neutral, portable, high-performance, multithread, and dynamic language.”

Rina Zviel-Girshin @ASC 21

Java disadvantages

• The main Java disadvantage:

Efficiency concerns.Efficiency concerns.

Looking to the future:

VM performance will improve.

Rina Zviel-Girshin @ASC 22

Java environments

• Java has many environments. • The number grows as Java evolves. • Among them are:

• Text applications• Beans• Applets• GUI Applications• Packages

Rina Zviel-Girshin @ASC 23

Two main environments

The two main environments: Web Browser Operating System

Rina Zviel-Girshin @ASC 24

Web Browser

• In the browser environment the browser acts as an intermediate between the program and the operating system.

• The JVM resides inside the browser.• The program can be simpler.• The program has to work in graphical mode.• The program is called “Applet” (a small

application).

Rina Zviel-Girshin @ASC 25

Operating System

• In the operating system environment the program is called “application”.

• Application has a more rigid structure.• Application can be textual or graphical.• Application is less secure.

Rina Zviel-Girshin @ASC 26

Learning Java The specific challenge is twofold: Learning the language technical aspect: the large

set of • new features • class libraries • classes • methods

which are provided as part of the language. Learning to maximize the benefits of the object-

oriented paradigm.

Rina Zviel-Girshin @ASC 27

Starting to Program

• The basic idea of the course is to start programming as soon as possible.

• At first you will have to take a lot of things on trust.

• Promise:

we will return to the details later.we will return to the details later.

Rina Zviel-Girshin @ASC 28

Java programs

All Java programs have three parts:Auxiliary prescriptions A class – an envelope around the other

components Code per se –

• Optionally – other components which include the instructions themselves

• Instructions to be executed

Rina Zviel-Girshin @ASC 29

Writing a Java Program

• Use an editor to type the program code.• Save the code file.• Compile the file with Java language compiler.• Fix the bugs!• Run the program.

Rina Zviel-Girshin @ASC 30

A basic Java Program

// Prints “How are you?” to the screen

class My

{

public static void main (String[] args)

{ System.out.println(“How are you?”);

}

}

Rina Zviel-Girshin @ASC 31

A basic Java Program

// Prints “How are you?” to the screen

class My

{

public static void main (String[] args)

{ System.out.println(“How are you?”);

}

}

Our program will becalled My

A comment

Rina Zviel-Girshin @ASC 32

Java program structure

• A Java program is made up of one or more classes.

• Classes have names.• The ‘My’ program consists of one class named

‘My’.

Rina Zviel-Girshin @ASC 33

Class structure

• A Java class contains one or more methods.• Methods have names too.• The program (the class) has to have a main method.• The method is called (surprisingly) – main.

Rina Zviel-Girshin @ASC 34

Main• The main method has a standard syntax:

public static void main(String args[])

{ … // your code

}• There can be only one main per file. • The main method contains the code to be executed

when the program runs.

Rina Zviel-Girshin @ASC 35

Method structure

• A method contains one or more statements.• The main method of My program has a single

statement:

System.out.println(“How are you?”);

Rina Zviel-Girshin @ASC 36

Stages of Writing and Executing

Assumptions:• Using only the basic JDK software• Assuming the JDK was installed properly• In the WIN/DOS environment• Class name is My• File name is My.java• Directory (folder) name is c:\java

Rina Zviel-Girshin @ASC 37

Stages of Writing and Executing

1. Open a text editor that can produce a plain text file (such as Notepad).

2. Create a source code file with the extension on the file name being .java . The file has to have the same name as the outer class.

3. Start a the DOS command environment by opening MSDOS prompt (using the

Start->Programs->MSDOS Prompt series of choices).

Rina Zviel-Girshin @ASC 38

Stages of Writing and Executing

4. Change directory to the directory containing the source file.

5. Compile the file, using the prompt command: javac My.java

6. The result is My.class in the same folder.

7. Run using the prompt command: java My

Rina Zviel-Girshin @ASC 39

AppletsThe program has to import two packages:• applet.Applet• awtThe program (the class) has to extend the Applet

class, using the following syntax:public class My extends Applet{ // your code}

Rina Zviel-Girshin @ASC 40

Basic applet code

The final code looks like this:

import java.awt.*;

import java.applet.*;

public class My extends Applet

{

// your code

}

Rina Zviel-Girshin @ASC 41

Stages of Writing and Executing

• Applet can’t be run directly.• Applet has to be run in Browser and by the

Browser.• Web browser executes web pages.• Web page should call the applet code.

Rina Zviel-Girshin @ASC 42

Call to applet

The call to applet consist of: – the command APPLET– the name of the applet class– the dimensions of the panel in which the applet

will run

 

Rina Zviel-Girshin @ASC 43

Example

• Assuming the name of the applet class is HelloWorld.class the call to applet looks like this:

 

<APPLET

CODE = "HelloWorld.class"

WIDTH = 150

HEIGHT= 50>

</APPLET>

Rina Zviel-Girshin @ASC 44

HTMLThe call to applet has to be in HTML file.The file can look as follows:<HTML><HEAD><TITLE>Java applet test page</TITLE></HEAD><BODY><APPLET

CODE="HelloWorld.class"WIDTH=150 HEIGHT=50>

</APPLET></BODY></HTML>

Rina Zviel-Girshin @ASC 45

Execution

Assuming the file is called HelloWorld.html

1. The stages common to all, described above.

2. Open the file HelloWorld.html in the Browser.

Rina Zviel-Girshin @ASC 46

Java Compiler

• The Java compiler is called javac.• Java programs are compiled to byte code.

Rina Zviel-Girshin @ASC 47

Byte code

• The Java compiler translates Java program into a special representation called byte code.

• Java byte code is a machine code for Java virtual Machine(JVM).

• VM is a platform-specific tool to interpret the byte code and to translate it to commands for certain processor and OS.

• The use of the byte code makes Java platform independent.

Rina Zviel-Girshin @ASC 48

Compile-interpret-execute cycle

Java soursecode

Javacompiler

Java bytecode

javac My.java

My.java

My.class

Rina Zviel-Girshin @ASC 49

Java soursecode

Javacompiler

Java bytecode

Javainterpreter

javac My.java

java My

My.java

My.class

Compile-interpret-execute cycle

Rina Zviel-Girshin @ASC 50

Errors

• A program can have three types of errors:• Syntax and semantic errors – called compile-

time errors• Run-time errors – occur during program

execution• Logical errors

Rina Zviel-Girshin @ASC 51

Errors

• Compile-time errors occur during program compilation and an executable version of the program is not created.

• Run-time errors occur during program execution and cause abnormal program termination.

• Logical errors occur during program execution and produce incorrect results.

Rina Zviel-Girshin @ASC 52

Java Syntax

• To write without syntax mistakes you have to know Java syntax.

SyntaxSyntax -

the study of the patterns of formation of sentences and phrases from words and of the rules for the formation of grammatical sentences in a language.

Rina Zviel-Girshin @ASC 53

Java Syntax

• Case-sensitive• Semi-colon (;) is line terminator• Curly braces ({,}) used for block structure• Several keywords

Rina Zviel-Girshin @ASC 54

Comments

There are two kinds of comments: •  /* text */ A traditional comment: all the text from

the ASCII characters /* to the ASCII characters */ is ignored.

•  // text  An end-of-line comment: all the text from the ASCII characters // to the end of the line is ignored.

Rina Zviel-Girshin @ASC 55

Comments

Comments do not nest. • /* and */ have no special meaning in comments

that begin with //. • // has no special meaning in comments that begin

with /* or /**.

 As a result, the text: /* this comment /* // /** ends here: */is a single complete comment.

Rina Zviel-Girshin @ASC 56

Identifiers

An identifier is:an unlimited-length sequence of Java letters

and Java digits, the first of which must be a Java letter.

 An identifier cannot have the same spelling (Unicode character sequence) as:

• a keyword, • boolean literal, • the null literal

Rina Zviel-Girshin @ASC 57

Unicode

• Letters and digits may be drawn from the entire Unicode character set (The character set that uses 16 bit per character).

•  Identifier can be written in most writing scripts in use in the world today, including:

Hebrew,Chinese, Japanese, KoreanPractically all languages

Rina Zviel-Girshin @ASC 58

Identifiers examples

• Uppercase and lowercase are different.

All the following are different identifiers:

MY my My mY my1

 

Examples of identifiers are:

Strings i3

isLetterOrDigit מונה

MAX_VALUE

Rina Zviel-Girshin @ASC 59

KeywordsThe following are reserved words called keywords

and cannot be used as identifiers:

abstractbooleanbreakbytebyvaluecasecastcatchcharclassconstcontinue

defaultdodoubleelseextendsfalsefinalfinallyfloatforfuturegeneric

gotoifimplementsimportinnerinstanceofintinterfacelongnativenewnull

operatorouterpackageprivateprotectedpublicrestreturnshortstaticsuperswitch

synchronizedthisthrowthrowstransienttruetryvarvoidvolatilewhile

Rina Zviel-Girshin @ASC 60

True, False, Null

While true and false might appear to be keywords, they are technically Boolean literals.

Similarly, while null might appear to be a keyword, it is technically the null literal.

Rina Zviel-Girshin @ASC 61

Literals A literal is a source code representation of a value of:

• a primitive type,• the String type,• the null type

 Kinds of Literals:  IntegerLiteral FloatingPointLiteral

BooleanLiteral CharacterLiteralStringLiteralNullLiteral  

Rina Zviel-Girshin @ASC 62

Integer Literals

An integer literal may be expressed in:• decimal (base 10), • hexadecimal (base 16), • octal (base 8)

Rina Zviel-Girshin @ASC 63

Hexadecimal numeral

• A hexadecimal numeral consists of the leading characters 0x or 0X followed by one or more hexadecimal digits.

• It can represent a positive, zero, or negative integer. • Hexadecimal digits with values 10 through 15 are

represented by the letters a through f or A through F, respectively. 

  HexDigit is one of:

0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

Rina Zviel-Girshin @ASC 64

Octal numeral

• An octal numeral consists of a digit 0 followed by one or more of the digits 0 through 7.

• It can represent a positive, zero, or negative integer.

•  Octal numerals always consist of two or more digits.

 

 

Rina Zviel-Girshin @ASC 65

Example

Examples of int literals:

02 0372

0xDadaCafe 1996

0x00FF00FF • the same number in decimal octal hexadecimal:

3 03 0x3

15 017 0xF

Rina Zviel-Girshin @ASC 66

Zero

• 0 is always considered to be a decimal numeral.•  The numerals 0, 00, and 0x0 all represent exactly

the same integer value – zero value.

Rina Zviel-Girshin @ASC 67

Floating-Point Literals• A floating-point literal has the following parts:

• a whole-number part, • a decimal point (represented by an ASCII period character), • a fractional part, • an exponent (is indicated by a letter e or E followed by an

optionally signed integer),

• and a type suffix. • At least one digit, in either the whole number or

the fraction part, and either a decimal point, an exponent, or a float type suffix are required. All other parts are optional.

Rina Zviel-Girshin @ASC 68

Floating-Point Literals

• A floating-point literal is of type float if it is suffixed with an ASCII letter F or f; otherwise its type is double and it can optionally be suffixed with an ASCII letter D or d.

Examples of float literals:

1e1f 2.f .3f 0f 3.14f 6.022137e+23f

Rina Zviel-Girshin @ASC 69

Boolean Literals

• The boolean type has two values, represented by the literals true and false

• A boolean literal is always of type boolean.

  BooleanLiteral is one of:

true false  

Rina Zviel-Girshin @ASC 70

Character Literals

• A character literal is expressed as a character or an escape sequence, enclosed in single quotes.

• A character literal is always of type char.

  Examples of char literals:

'a‘ '%‘ '\t‘ '\\‘ '\u03a9‘

'\uFFFF‘ '\177'

Rina Zviel-Girshin @ASC 71

String Literals • A string literal consists of zero or more characters

enclosed in double quotes.  • A string literal is always of type String.

Examples of string literals: "" // the empty string

"This is a string" // a string containing 16 characters

"This is a " + // actually a string-valued constant expression,

"two-line string" // formed from two string literals

Rina Zviel-Girshin @ASC 72

Escape Sequences for Character and String Literals

  Escape Sequence:\ b /* \u0008: backspace BS */\ t /* \u0009: horizontal tab HT */\ n /* \u000a: linefeed LF */\ f /* \u000c: form feed FF */\ r /* \u000d: carriage return CR */\ " /* \u0022: double quote " */\ ' /* \u0027: single quote ' */\ \ /* \u005c: backslash \ */

Rina Zviel-Girshin @ASC 73

The Null Literal

• The null type has one value, the null reference, represented by the literal null, which is formed from ASCII characters.

 • A null literal is always of the null type.

Rina Zviel-Girshin @ASC 74

Separators

The following nine ASCII characters are the separators (punctuators):

 ( )  { }  [ ]  ; , .

Rina Zviel-Girshin @ASC 75

Operators

The following 37 tokens are the operators, formed from ASCII characters:

= > < ! ~ ? :

== <= >= != && || ++

-- + - * / & |

^ % << >> >>> += -=

*= /= &= |= ^= %=

Rina Zviel-Girshin @ASC 76

Programming style

• Java is a free-format language. • There are no syntax rules about how the program

has to be arranged on a page. You can write entire program in one line.

• But as a matter of good programming style, you should lay out your program on the page in a way that will make its structure as clear as possible.

Rina Zviel-Girshin @ASC 77

Programming style

• Some advises:• Put one statement per line. • Use indentation to indicate statements that

are contained inside control structures. • Write comments.• Give your variables names that make sense.

Rina Zviel-Girshin @ASC 78

Style ExampleBad:

public class

Stam

{ public static void

main(String args[]){System.out.println("Hello!“);}}

Better:

// style example – outputs “Hello!”

public class Hello

{

public static void main(String args[])

{

System.out.println("Hello!");

}

}

Rina Zviel-Girshin @ASC 79

Any Questions?

Rina Zviel-Girshin @ASC 80

Any Questions?