Rina Zviel-Girshin @ASC1 System development with Java Instructors: Rina Zviel-Girshin...
-
Upload
bryce-cameron -
Category
Documents
-
view
223 -
download
2
Transcript of Rina Zviel-Girshin @ASC1 System development with Java Instructors: Rina Zviel-Girshin...
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!");
}
}