Upload
vivian-mcgee
View
212
Download
0
Embed Size (px)
Citation preview
SOFTWARE AND PROGRAMMING 1
Lecture: GOR B04 7:30-9:00 (10&17.01.07 – from 6:00)
Lab: SH 131, BBK536 6:00-7:30 (from 24.01.07)
EACH student must have obtained access to Birkbeck computing by 24.01.07 – otherwise no use in the
lab
Instructor: Prof. Boris MirkinSCSIS, room 111, tel. 020 7631 6746E-mail: [email protected]
Course Assistant:
Lab/WebCT/Tests/Assignments: Marie-Helene Ng
SCSIS, room NG26, tel. 0207 631 6550E-mail: [email protected]
2
Webpage
The course web page is currently at my open web-site, with lecture notes and other relevant materials:
www.dcs.bbk.ac.uk/~mirkin/sp105
3
Texts
1. Quentin Charatan & Aaron Kans [CK]JAVA in Two Semesters, 2nd Edition, McGraw-Hill, 2006,
ISBN-10 00771088922. David J. Barnes & Michael Kölling [BK]
Objects First with Java: A Practical Introduction using BlueJ, 2nd edition, Pearson Education, 2005, ISBN 0-13-124933-9The publisher supplies a helpline in installing related software
3. I. Pohl, C. McDowell [PM]Java by dissection, Addison-Wesley, 2000,
ISBN 02017515854. J. Farrell [F]
Java Programming, 2nd edition, Course Technology, Thompson, 2003, ISBN 0-619-21500-3
5. Free: ON-LINE text by D. Eck (on my web site); other URLs
4
Teaching Goal: Coding in Real FRAMEWORK: 1. the work of a compiler and an interpreter;2. classes and instances;3. variables and static variables;4. data and number types in Java;5. arithmetic and Boolean expressions;6. for/while and if…elseif…else
structures;7. processing strings;8. elements of input/output in Java;9. methods and constructors;10. arrays and their usage.
5
Teaching Goal PRACTICE:
To have developed skills in practical programming of small but real-world problems e.g. keeping transaction records,
assigning seats to customers, managing a bus schedule, etc.
6
Control• Final exam: 75% of mark• Course-work: 25% of mark
– 2 open-book in-class tests, 8.02 & 8.03,– 2 assignments for home work via WebCT
Composition of CW 25% mark: T1 5% T2 7% A1 5% A2 8%
7
Control: Example• Let marks of a student be as follows:
– Exam: 50– T1 12– T2 65– A1 100– A2 0 (hasn’t submitted)
• The total mark will be 48 because it rounds up the result:
50*0.75 + 12*0.05 + 65*0.07 + 100*0.05 + 0*0.08=
=37.5 + 0.6 + 4.55 + 5 + 0 = 47.65
8
Teaching Philosophy (extracts)
• Huge respect for part-time students• The bulk of students to get taught• No student’s question is stupid• Simple things to be learnt well: rather
than complex things not learnt well• Instructor’s small errors - a teaching
device for activation of learning process• Learning a language in a college differs
from consuming a lunch in a diner in many ways (e.g., cognitive systems are individual)
• Fast feedback on students’ issues if raised
9
Why Java• Object-oriented (a program is a set of
classes sending messages to each other with methods within to process inputs), which is useful for code transfer and maintenance
• Network-oriented (server-to-clients) • Works within Internet browsers
[devices viewing HTML (hyper-text markup-language) documents via HTTP (hyper-text transfer protocol) links]
10
Fundamental concepts
• How a Java program works• Java as is and Java with BlueJ• Object• Class• Method• Parameter• Variable• Data type
11
High-language code to machine code translated
A compiler takes a high-level-language program and translates it as a whole into an executable machine-language program. Once the translation is done, the machine-language program can be run any number of times, but of course it can only be run on one type of computer. Thus, each type of computer requires a specific translator.
An interpreter is a program that runs in a loop in which it repeatedly reads one instruction from the program, decides what is necessary to carry out of that instruction, and then performs the appropriate machine-language commands to do so. This is slow but universal.
12
source file
011010
110101
010001
class file011010
110101
1001
10
1
0111
0110110
1
1
editorcompiler(javac)
virtual machine(java interpreter)
Java edit-compile-interpret-execute cycle
13
Two JAVA environments
• Java Developer Kit JDK (currently, J2SE) (Conventional)
• Blue J (A public project to make JAVA coding easier)
– Both available in Birkbeck
14
Conventional JDK: Editing• A source code can be edited in any
text editor: Notepad, emacs, PFE, ...• MS Word caveat: by default, Word
does not save in ASCII text format• Make sure to save the code before
compiling! The file name: the same as that of the class, with extension:
say, class NicTe{…} must be saved as file NicTe.java, case sensitive
15
Command line invocation
• compilation and execution of Java in JDK are done from a command line
• On Microsoft systems: DOS shell• On Unix: Unix shell• Must make sure that the commands
for compiler and runtime (JVM) are in the command path.
16
Compiling with JDK
• Name of the JDK compiler: javac• To invoke:javac <source name>
• compiles <source name> and all classes it depends on into an executable on JVM file <source name>.class
• Example:
javac NicTe.javaproduces file NicTe.class
17
Execution
• “java” starts the Java virtual machine:
java NicTe• The named class is loaded and
execution is started.• Other classes are loaded as
needed.• Only possible if class has been
compiled into a file, say, NicTe.class
18
JDK Problem: Execute what?
How does the system know which of the methods to execute?
19
The main method in JDK
• The JDK java system always executes a method called main, it should have a certain signature:
Signature _______________________
public static void main(String[ ] args){ ...}
• To work with JDK, such a method must be present in your program!
20
A simple program/* HelloWorld.java Purpose: printing a message to the screen */ class HelloWorld {
// Each program is organised as a class public static void main(String[] args) { System.out.println("Hello World!"); } } // end of class HelloWorld /* Always Three Types of Element s ONLY: -comments-class (with modifiers)-methods (with modifiers & parameters/arguments) */
21
BlueJ coding
• BlueJ programs are organised in the so-called projects
• A BlueJ project is stored in a project-specific directory on disk
• Some files store the source code, some store the compiled code, some store additional BlueJ related information.
22
The BlueJ directory structure
UserInterface
CalcEngine
Calculator
project: calculator c:\bluej\calculator\bluej.pkg
bluej.pkh
Calculator.java
Calculator.class
Calculator.ctxt
UserInterface.java
UserInterface.class
UserInterface.ctxt
CalcEngine.java
CalcEngine.class
CalcEngine.ctxt
23
The BlueJ file structure
• bluej.pkg - the package file. Contains information about classes in the package. One per package.
• bluej.pkh - backup of the package file.• *.java - standard Java source file (text).
One per class.• *.class - standard Java code file. One per
class• *.ctxt - BlueJ context file. Contains extra
information for a class. One per class.
24
• Available on BBK’s network – Java JDK (which allows you to compile and
execute your program)– BlueJ (Preferred editor)
• Installing BlueJ (for home use)– First download the Java JDK from
http://java.sun.com/j2se/1.5.0/download.jsp– Then download BlueJ from http://www.bluej
.org/download/download.html
– Run “bluejsetup-202.exe” and follow the given instructions
Software is free
25
Objects and classes
• Classes: program templates– represent all objects of a kind
(example: “student”)• Objects = instances
– A template copy to represent a specific element of the class (“an individual student”)
– Instances are created with the so-called constructors, explicitly in JDK or somewhat easier in BlueJ
26
Variables, methods and parameters
• classes contain data stored in the so-called variables and operations which can be invoked (they are called methods in Java)
• methods may have inputs (they are called parameters in Java) to get additional data needed to get them executed
27
Remarks• Many instances can be created from a
single class• An object has attributes/variables:
values stored in fields (memory locations).
• The class defines what fields any its object has (a template), but each object may store its own set of values (the state of the object)
• A variable is initialised with assigning it a value, an object – with a constructor
28
More on Method
Method in Java is a named set of instructions that transforms some input into an output. This is, actually, a machine implementation of the concept of algorithm which itself is a computational analogue to the mathematical concept of function.
Static method: is shared by all instances.
29
Example of a method (1)Square function y = x2
x y 1 1 2 4 5 2511 121
The table can be used for invoking a specific value, like, 72 = 49 or 102 = 100.
30
Example of a method (2) A Java method to calculate the square function:
public int sq(int x){return xx;} To make it work, variables are needed:
int sevs=sq(7); //puts 49 into sevs
int tens=sq(10);// puts 100 into tens
31
Structure of a method
modifiers return-type name ( parameter-list ) {
statements;return variable/expression; //if return type is not void
}Modifiers:
– static - method/variable that belongs to class as whole and is shared by all
– public - method/variable that is accessible from anywhere
– private - method/variable that is accessible from only within the class
Output’s type Inputs
32
HelloWorld with a method// Hello-world program to demonstrate BlueJ
class Hello{ // Method that does the work of printing
public void go() { System.out.println("Hello, world"); } // main method for working outside BlueJ
public static void main(String[] args) { Hello hi = new Hello(); //instance
hi.go(); //method in instance hi
}}
33
Fields
• Fields store values for an object.
• They are also known as instance variables.
• Use the Inspect option to view an object’s fields.
• Fields define the state of an object.
public class TicketMachine{ private int price; private int balance; private int total; Constructor and methods omitted.}
private int price;
visibility modifier type variable name
34
Assigning values
• Values are stored into fields (and other variables) via assignment statements:– variable = expression;– price = ticketCost;
• The value on the right is assigned to a variable on the left.
• A variable stores a single value, so any previous value is lost.
35
Variable• It provides for multiple uses of the
same program• A variable is a name for a location in
memory that can hold data. • Variables are declared and/or
initialised A variable declaration includes the following:– A data type that identifies the type of data that is stored in
the variable
– An identifier that is the variable’s name– An optional assigned initial value
36
int p;
p
p = 4;
4
In memory:
37
38
Scope of a variable:
The range of statements that can access the variable.
It stretches from the declaration point to the end of the block containing the declaration
Q: WHAT is BLOCK ? (part within curly braces{…} )
Q: WHAT is DECLARATION? (type name ; 3-part command)
39
HelloWorld N times BlueJpublic class HelloN { int number; \\ variable declared
public void go() { System.out.println("Hello,
world"); } public HelloN(int howmany) {number=howmany; } \\constr to initialise
object
public void prrt() \\printing number times
{ for(int i=1;i<=number;i++) \\loop
go(); System.out.println("ok"); } }
40
Loop for
for(int var=1;var<=st;var++){do operation depending on var}
• Two types of parentheses: () and {}• The expression in () consists of three
different items: initialising a variable, variable update, and stop-condition
• Given a value of var, {} is executed, after which var is updated, then stop-condition checked and, if yes, {} is executed again; if no, the program proceeds further on
41
No { } in for-loop in HelloN
Why?Let us add { }: where?
Is there any difference
between before and after “ok”?
42
Arithmetic Operators• * 53=15
• / 36/9=4, 39/9=4, 39/50=0 (integers)
• / 36.0/9=4.0, 39.0/9=4.33333333, 39.0/50=0.78 (reals)
• % 36%9=0, 39%9=3, 39%50=39
• + 5 + 3 = 8
• - 5 – 3 = 2
• Other operators such as Abs or exp are in class Math of Java (to be later)
43
Arithmetic Expressions
• 2 * 6 / 4 + 5 – 2 * 3 = 3 + 5 – 6 = 2
• 2 * 6.0 / (4 + 5) – 2 * 3 = 12.0/9 – 6 = – 4.67 (note: reals, not integers)
• 2 * 6 / 4 + (5 – 2) * 3 = 12
There is a natural precedence structure of arithmetic operations. If you are not sure, use parentheses!!!
44
Basic class structure
public class TicketMachine{ Inner part of the class omitted.}
public class ClassName{ Variables Constructors Methods}
The outer wrapperof TicketMachine
The contents of aclass
45
Concepts considered• Compiler & interpreter• JDK/JDS and BlueJ environments• Method• Variable; declaration and intialisation• Primitive variable types• Class type• Arithmetic operators and expressions• Class and instance• HelloWorld class in three versions
46
47
48