420 likes | 472 Views
SOFTWARE AND PROGRAMMING 1. Lecture: UCL Roberts Building, room 212 6.00-9.00 7 & 14.01.09 Room 135 SCSIS 7.30-9.00 from 21.01.09 Lab: SCSIS 131 6:00-7:30 from 21.01.09 EACH student must have obtained access to Birkbeck computing by 21.01.09 – otherwise no use in the lab
E N D
SOFTWARE AND PROGRAMMING 1 Lecture: UCL Roberts Building, room 212 6.00-9.00 7 & 14.01.09 Room 135 SCSIS 7.30-9.00 from 21.01.09 Lab: SCSIS 131 6:00-7:30 from 21.01.09 EACH student must have obtained access to Birkbeck computing by 21.01.09 – otherwise no use in the lab Instructor: Prof. Boris Mirkin SCSIS, room 111, tel. 020 7631 6746 E-mail: mirkin@dcs.bbk.ac.uk Course Assistant: Lab/WebCT/Tests/Assignments: Mr Martin O’Shea E-mail: martin@dcs.bbk.ac.uk
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
Texts • Quentin Charatan & Aaron Kans [CK] • JAVA in Two Semesters, 2nd Edition, McGraw-Hill, 2006, ISBN-10 0077108892 • 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
Teaching Goal: Coding in Real FRAMEWORK: • the interpreter/compiler Java working; • classes, objects and instances; • variables and static variables; • Java data types: primitive and user-defined; • arithmetic and Boolean expressions; • for/while and if…elseif…else structures; • processing strings; • elements of input/output in Java; • methods and constructors; • arrays and their usage
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.
Control • Final exam: 75% of mark • Course-work: 25% of mark • 2 open-book in-class tests, 4.02 & 4.03, • 2 assignments for home work via WebCT, 4.02-4.03 & 18.02-20.03 Composition of CW 25% mark: T1 5% T2 7% A1 5% A2 8%
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
Teaching Philosophy (extracts) • Huge respect for part-time students • The bulk of students to get trained • No student’s question is stupid • Better to have simple things learnt well rather than complex things learnt not so 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 • Fast feedback on students’ issues if raised
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
Will be using both: Java Developer Kit JDK (currently, J2SE) (Conventional) Blue J (A public project to make JAVA coding easier) Two JAVA environments
A source code can be edited in any text editor: Notepad, emacs, PFE, ... MS Wordcaveat: 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 Conventional JDK: Editing
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. Command line invocation
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)
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 Compiling with 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 Execution in JDK
How does the system know which of the methods in a class to execute? JDK Problem: Execute what?
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! main method in JDK
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 Elements ONLY: -comments -class (with modifiers) -methods (with modifiers & parameters/arguments) */
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.
The BlueJ directory structure c:\bluej\calculator\ project: calculator bluej.pkg bluej.pkh Calculator.java Calculator.class Calculator.ctxt UserInterface.java UserInterface.class UserInterface.ctxt CalcEngine.java CalcEngine.class CalcEngine.ctxt Calculator UserInterface CalcEngine
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.
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.0/download.jsp • Then download BlueJ from http://www.bluej.org/download/download.html • Run “bluejsetup-202.exe” and follow the given instructions
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
Variables, methods and parameters • classescontain data stored in the so-called variables and operations which can be invoked (they are called methodsin Java) • methods may have inputs (they are called parameters in Java) to get additional data needed to have them executed
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
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.
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.
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
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 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 } }
HelloWorld : WHY Why dots in System.out.println("Hello, world"); hi.go(); ? • To take method from a specific class instance • To take a class from a set of classes: Java is organised as a hierarchically structured set of classes in individual files
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.
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 initialisedA 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
In memory: int p; p = 4; p 4
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)
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"); } }
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 varis updated, then stop-condition checked and, if yes, {} is executed again; if no, the program proceeds further on
No { } in for-loop in HelloN Why? Let us add { }: where? Is there any difference between before and after “ok”?
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!!!
Basic class structure The outer wrapper of TicketMachine public class TicketMachine { Inner part of the class omitted. } public class ClassName { Variables Constructors Methods } The contents of a class
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