Objects First With Java - Chapter 1

Download Report

Transcript Objects First With Java - Chapter 1

SOFTWARE AND PROGRAMMING 1
EACH student
must have obtained access
to Birkbeck computing by 26.01.11 – otherwise no use in the lab
Instructor: Prof. Boris Mirkin
DCSIS, room 744 MAL, tel. 020 7631 6746
E-mail: [email protected]
Course Assistant:
Lab/WebCT/Tests/Assignments:
Mr Martin O’Shea
E-mail: [email protected]
(FROM 26 January: Lectures 6.00-7.30, Labs 7.30-9.00)
Webpage
The course web page is currently at
my open web-site, with lecture notes
and other relevant materials:
http://www.dcs.bbk.ac.uk/~mirkin/sp109
2
Texts: Any, including
1. Quentin Charatan & Aaron Kans [CK]
JAVA in Two Semesters, 2nd Edition, McGraw-Hill, 2006,
ISBN-10 0077108892
2. 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-9
The publisher supplies a helpline in installing related software
3. I. Pohl, C. McDowell
[PM]
Java by dissection, Addison-Wesley,
2000,
ISBN 0201751585
4. J. Farrell
[F]
Java Programming, 2-4 editions, Course Technology,
Thompson,
2003-7, ISBN 0-619-21500-3 etc.
5. Free: ON-LINE text by D. Eck (on my web site); other URLs
3
Teaching Goal: Coding in Real
FRAMEWORK:
1. the interpreter/compiler Java working;
2. classes, objects and instances;
3. variables and static variables;
4. Java data types: primitive and user-defined;
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, including arrays of
a user-defined type
4
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.
5
Control
• Final exam: 75% of mark
• Course-work:
25% of mark
– 2 open-book in-class tests, 9.02 & 9.03,
– 2 assignments for home work via WebCT,
9.02-9.03 & 23.02-23.03
Composition of CW 25% mark:
T1
T2
A1
A2
5%
7%
5%
8%
6
Control: Example
• Let marks of a student be as follows:
–
–
–
–
–
Exam:
T1
T2
A1
A2
50
12
65
100
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
7
Teaching Philosophy (extracts)
• Huge respect for part-time students
•
•
•
•
•
•
The bulk of students to get trained
No student’s question is stupid since Software
is invented
Better to have simple things learnt well rather
than complex things learnt not well
Instructor’s small errors - a good teaching
device for activation of the student’s brain
Learning a language in a college differs from
consuming a lunch in a diner in many ways
Fast feedback on students’ issues if raised
8
OOP concepts you already know of
•
•
•
•
•
•
•
•
•
How a Java program works: interpret/compile
Variable
Expression
Data type
Loop
If/elseif/else structure
Class
Method
Parameter
These will be expanded to more realistic environments
9
Two JAVA environments
• Will be using both:
• Java Developer Kit JDK (currently, J2SE)
(Conventional)
• Blue J (A public project to make JAVA
coding easier)
10
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
11
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.
12
Getting JDK on a system’s path
• Click “Properties” on right-buttoned
“My computer”
• Click “Advanced”
• Click “Environmental variables”
• Enter new path (to the directory in
which javac.exe and java.exe reside)
13
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.java
produces file NicTe.class
14
Execution in JDK
• “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
15
JDK Problem: Execute what?
How does the system know which of
the methods in a class to execute?
16
“main” method in JDK
• BlueJ executes what the user says;
• 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!
17
A primer program (=class)
/* 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 Elements ONLY:
-comments
-class (with modifiers)
-methods (with modifiers & parameters/arguments) */18
BlueJ coding
• BlueJ programs are organised in the
so-called projects
• A BlueJ project is stored in a projectspecific directory on disk
• Some files store the source code,
some store the compiled code, some
store additional BlueJ related
information.
19
The BlueJ directory structure
project: calculator
Calculator
UserInterface
CalcEngine
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
20
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.
21
Software is free
• 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.2/download.jsp
– Then download BlueJ from
http://www.bluej.org/download/download.html
– Run “bluejsetup-202.exe” and follow the
given instructions
22
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
23
Variables, methods and parameters
• classes contain data stored in the socalled 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 have them
executed
24
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
25
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.
26
Example of a method (1)
Square function y = x2
x
y
1
1
2
4
5
25
11
121
The table can be used for invoking a
specific value, like, 72 = 49 or
102 = 100.
27
Example of a method (2)
A Java method to calculate the square function:
public int sq(int x){
return xx;}
To make it work, variables are needed:
int sevs=sq(7); //puts 49 into sevs
int tens=sq(10);// puts 100 into tens
28
Structure of a method
Output’s type
Inputs
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 instances
– public method/variable that is accessible from
anywhere
– private - method/variable that is accessible from only
29
within the class
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
}
}
30
HelloWorld : WHY
Why dots in
System.out.println("Hello, world");
hi.go();
?
1) To take method from a specific class
instance
2) To take a class from a set of classes: Java
is organised as a hierarchically structured
set of classes in individual files
31
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.
32
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
33
int p;
p = 4;
In memory:
p
4
34
35
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 ?
Q: WHAT is DECLARATION?
(part within curly braces{…} )
(type name ; 3-part command)
36
HelloWorld N times BlueJ
public 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");
}
}
37
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
38
No { } in for-loop in HelloN
Why?
Let us add { }: where?
Is there any difference
between before and after “ok”?
39
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
Java uses a natural precedence structure of
arithmetic operations. If you are not sure,
use parentheses!!!
40
Basic class structure
public class TicketMachine
{
Inner part of the class omitted.
}
public class ClassName
{
Variables
Constructors
Methods
}
The outer wrapper
of TicketMachine
The contents of a
class
41
Concepts considered: overview
•
•
•
•
•
•
•
•
•
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
42