Programming Class 9 LBSC 690 Information Technology Agenda

Programming Class 9 LBSC 690 Information Technology

Agenda • Questions • Programming – The mythical person-month – History of programming – Object oriented programming – Programming exercise in Java

Software • Software models aspects of reality – Input and output represent the state of the world – Software describes how the two are related • Examples – Ballistic computations – Alta Vista – Microsoft Word

Programming Languages • Used to specify every detail of the model • Special purpose – Able to specify an entire class of models • Spreadsheets (Excell, Quatro Pro, . . . ) • Databases (Access, Paradox, . . . ) • General purpose – Able to specify any possible model • Pascal, C, Java, . . .

The Mythical Person-Month • If it would take one person three months, why does it take four people SIX months? • Four causes – It wouldn’t have taken 3 months anyhow! – Partitioning strategy – Training time – Communications effort

How long will it take? • Rules of thumb – 1/3 specification – 1/6 coding – 1/2 test planning, testing, and fixing! • Add time for coding to learn as you go, but don’t take time away from the other parts! – Reread the section on “gutless estimating” if you are tempted

Training Time • Simple Example – Full time person = 2, 000 hours/year – Part time person = 288 hours per year – No training -> 7 part time people – With training -> 10 part time people • Learning the specification takes lots of time – Learning organizational “rules” takes longer

Communications • Sort of like continuous training – Who needs to know what I just learned? • Can be minimized by good partitioning – Limit the number of interfaces • Can be facilitated by computers – Asynchronous communication techniques • Email, BBS, voice mail

History of Programming • Machine code – Zeroes and Ones • Assembly language – “Assembler” changes names to machine code • High-level languages – “Compiler” translates math to machine code • Independent of machine “architecture” – FORTRAN, COBOL

History of Programming • Structured (Modular) Programming – Group instructions into meaningful abstractions – C, Pascal • Object-oriented programming – Group “data” and “methods” into “objects” – C++, Java

Your First Java Program • Log in to WAM • cd ~/. . /pub • cp /users/rba/pub/java/*. – DONT FORGET THE DOT AT THE END!!! • tap java • javac Hello. World. java • java Hello. World

What You Just Did • First you got some Java program files – Each. java file specifies one “class” • Then you “compiled” one using javac – This produced Hello. World. class • Then you ran it using java –. class files are a “bytecode” representation • An “interpreter” (“java”) is needed to run them – You don’t specify. class when you run it

Java Bytecode • “Machine language” depends on the machine – Programs compiled for a Sun won’t work on a PC • Java claims “write once, run anywhere” – Without recompiling • Traditional interpreters are slow – Because they must read every character every time • Java compiles to a standardized bytecode – Web browsers include a bytecode interpreter

Changing the Program • Use pico to edit Hello. World. java – Change “Hello, world!” to something different – Be careful not to change anything else! • Use javac to compile it – This produces the bytecode in the. class file • Use java to run it – It should print whatever you told it to – It won’t work if you include “. class” in the name

Using Java with the Web • Web browsers render HTML – But HTML lacks control and data structures • Newer browsers can interpret java bytecode – Java applets are programs designed for the web • This allows programs to be “rented” – They still execute on the client machine – But some classes can be obtained on the web

Java Applet Example • Change Hello. World. Applet. java – Make it say whatever you want • javac Hello. World. Applet. java • Fire up Netscape or Internet Explorer – http: //www. wam. umd. edu/~userid/hello. html – You should get whatever you told it to say • You can also change hello. html – Then select “reload” to reload the web page

Object Models • Represent things in the world as “objects” – The simplest objects are “variables” • Represent actions with “methods” – The simplest methods are “operations” • “Classes” group objects with methods – Classes model aspects of reality • Objects are instances of classes

A Simple Example • Variables: • Operations: Height, Weight, Shoe size Multiply, Divide • Method: Shoe size=4*Weight/Height • Class: • Object: Person George

Instances • Classes model kinds of things – “person” is an example of a class • A Class may be instantiated – I am an instance of person • Object-Oriented Programming – Define simple classes with variables & operations – Define more complex classes using simple objects – Invoke a method in some class to start things

Data Types • int – Like integers, but there is a biggest and smallest • float – Like real numbers, but there a finite number • char – Any character in any language (Unicode) • boolean – True or false

Arrays • Lists of elements, each of the same data type – For example, the number of days in each month • Each element is assigned an integer index – The index is used to refer to the element (x[4]) – In Java, the index numbers start at zero • An string acts like an array of characters

Some Basic Operations Negate Add Multiply - int + int * float produces int produces float Compare int < int produces boolean Compare char == char produces boolean

Statements • Simple assignment statements – number. Of. Birds = number. Of. Hawks + number. Of. Orioles; – note difference with comparison == • Statements that invoke a method – air. Force. One = new Airplane(“ 747”); • This is called a “constructor method” – Altitude = air. Force. One. read. Altitude(); • Return a value from a method – return number. Of. Birds;

Making Methods • Three ways to combine statements: – Sequential • {… ; …; …; …} – Conditional • if (i= =3) then {…} else {…} • try {…} catch (exception e) {…} – Loop • do {…} while (i<5) • for (i=0; i<10; i++) {…}

A Full-Featured Example • Test. Date computes Julian dates – The number of days since January 1 • You type in the year, month, and day – The program expects these to be integers • It prints out the Julian date – And it knows about leap years

Testing the Date Program • javac *. java – This will compile everything • java Test. Date. java – Test. Date contains a magic incantation to start it • Answer the questions – If you make a mistake, it should complain • Try lots of possibilities – February 29, 1900 is particularly interesting

Examining the Classes • Test. Date exercises methods in the Date class – It looks a lot like Hello. World – Don’t mess with it - it works! • Term. Input reads input from the terminal – Comments at the top describe what it does – The rest is very grungy - don’t mess with it! • But don’t forget to compile it!

A Full-Featured Example • Val. Int is a class, but it contains only data – Public data can be seen by methods in other classes • Date has all the really interesting stuff in it. – This is what you will modify for homework – Use “pico” or “more” to read it

Date. java • Braces and semicolons indicate sequential – Notice how layout is done for readability – Java does not care where line breaks happen • But not in the middle of a word! • if (boolean) {; ; ; } is a conditional • do {; ; ; } while (boolean) is a loop – for (; ; ) {; ; ; } is another kind of loop

Date. java • Comments explain what each part does – // indicates a comment to the end of the line • Lots of attention to error handling – People WILL make mistakes – Many are easily corrected

The Key Ideas • Java is a general purpose language – Sequential, conditional, and iteration • Java is object oriented – Combine objects and methods to make classes • Java can be used to make applets – Which can be run by web browsers
- Slides: 31