itm 352 object oriented concepts and software representations (simple java apps) lecture #2

40
ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

Upload: morris-harrington

Post on 17-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

ITM 352

Object Oriented Concepts and software representations

(simple Java apps)

Lecture #2

Page 2: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 2

AnnouncementsAssignments

Always posted on web site Always tell exactly what to do, when due Assignment 1 will be posted tonight, due 1/28

Relax! There’s plenty of time to panic later… First lectures ‘ease’ you in to OOP Focus on understanding the concepts and terms

Class web page Is now ready (if you notice problems, let me know

ASAP)

Page 3: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 3

AgendaBrief ReviewPicturesLab 1: Tour of JBuilderLecture:

Tour of basic Java programming Introduction to OOP (if time permits)

Page 4: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 4

More on Class Approach CS concepts and OO are subtle at times Our approach is to expose you to subtle concepts early

and often gestation period is vital - you should “grok”

sometime before the end of the class not much serious programming until later in the semester - after you

have “gestated”

E.g. “known” learning curve for OO is:

Page 5: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 5

A Brief Review

Page 6: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 6

What is programming?

Direct computer’s actions in detailUses a language that humans can deal with

and translates into something the computer understands

Builds a computer representation of abstractions (a model) that people value is some way

Page 7: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 7

Java virtual machine

Different types of machines have different machine languages. For portability, Java is implemented differently.

Java sourceprogram

compiler “Java virtualmachine” code

load

browser (or JVM) running in computerloads and executes JVM code

There are native compilers that directly translate Java into machine language.

Page 8: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 8

Writing and running Java programs (no IDE)

Edit Java program Hello.java (source file).

Enter command javac Hello.java

(Creates object file, Hello.class.)Enter command

java Hello

(Runs the object file.)

compiler

JVM Interpreter

Page 9: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 9

Applications vs. applets

Applications: stand-alone programs, usually invoked from command line.

Page 10: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 10

Applications vs. applets (cont.)

Applets: run within a window in a browser.

Page 11: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 11

A Tour of Concepts and Software Representations

We’ll go into greater depth on this later, today just some examples

Page 12: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 12

Robot Concept

What is a Robot? The concept

What is our intent for this? set the domain (scope) of the concept

What do we need in this for Robot Warz? Abstraction qualities (assumptions, simplification)

Page 13: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 13

Robots

Robots can:

Page 14: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 14

Robots

Robots can: move detect things talk and listen pick up and drop things fire a weapon (ouch!)

Page 15: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 15

Robot Qualities move

forward rotate left, right

detect things radar 0-360 degrees scan at a location

talk and listen broadcast and receive

live in a “world” (environment)

Page 16: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 16

Robot World Robots can not move

past walls Robots have limited

energy supply Robots can only move

one unit at a time A robots movement is

restricted by its size and weight

These are environmental

constraints

Page 17: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 17

Programming: Moving a Robot

Task {Karel.move(); // lets take our first step

}

Page 18: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 18

Programming: Moving around a wall

Task { // move around wallKarel.move();

Karel.turnRight();

Karel.move();

Karel.move();

Karel.turnLeft();

Karel.move();

}

Page 19: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 19

Programming: algorithms

Task { // move around wallKarel.move();

Karel.turnRight();

Karel.move();

Karel.move();

Karel.turnLeft();

Karel.move();

}

May not work!!!

?

Page 20: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 20

Programming: algorithm pseudocode

Turn right;

If facing a wall? then

turn left and if facing a wall? then

turn left and if facing a wall? Then

turn left and if facing a wall? Then

Page 21: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 21

Programming: algorithm in Karel language

Karel.turnRight();

if ( Karel.isFacingWall() ) {

Karel.turnLeft();

if ( Karel.isFacingWall() ) {

Karel.turnLeft();

if ( Karel.isFacingWall() ) {

….

Page 22: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 22

Programming: compactness

Karel.turnRight();

while( Karel.isFacingWall() ) {

Karel.turnLeft();

}

Karel.move();

Page 23: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 23

Programming: completion

If ( Karel.InBox() ) {

Karel.turnRight();

while( Karel.isFacingWall() ) {

Karel.turnLeft();

}

Karel.move();

}

Page 24: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 24

Qualities of algorithms

An algorithm must:

Be unambiguous Executable (compact)Terminate (converge)

Page 25: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 25

Compiling and running Java programs

Edit Java program Hello.java (source file).

Enter command javac Hello.java

(Creates object file, Hello.class.)Enter command

java Hello

(Runs the object file.)

Page 26: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 26

The Hello! application

class Hello {

// Author: Dr. Chandra

public static void main (String[] args) {

System.out.println(“Hello!”);

} // end of main

} // end of class

Page 27: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 27

Source file layout

Comments: // to end of line - can go anywhere, and can be omitted

Spaces and line breaks not significant:

Line breaks act like spaces, but are not allowed inside double quotes.

class Hello { public static voidmain(String[] args){System.out.println(“Hello!”);}}

Page 28: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 28

Source file layout (cont.)

Choose layout for readability.Note how brackets of various types tend to

match up - layout should make this clear

class Hello { // Author: Dr. Chandra public static void main (String[] args) { System.out.println(“Hello!”); } // end of main} // end of class

Page 29: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 29

Elements of a simple Java application

A simple Java application contains one class definition: class Whatsitsname { ... }

in a file with the .java extension:

Whatsitsname.java.Within the class brackets is a “main method”:

public static void main (String[] args) { ... }

Page 30: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 30

Elements of a simple Java application (cont.)

Within the brackets of the main method are declarations and executable statements.

The Hello application has no declarations and just one executable statement:

System.out.println(“Hello!”);

This says to print the word Hello! on the monitor.

Page 31: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 31

Another simple application

public class Area {

public static void main (String[] args) {

double radius;

radius = 4.5;

System.out.print("Radius = 4.5, area = ");

System.out.println(Math.PI*radius*radius);

}

}

Page 32: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 32

Another simple application (cont.)

Compiling and executing produces this output: Radius = 4.5, area = 63.61725123

Note notation for real numbers println can print either strings or

numbers. print is the same, but does not skip a line.

Page 33: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 33

Assignment 1

Read Savitch: Ch.2.1, 2.2, 2.3

Compile and run “Hello, I’m feeling…” application

Start Lab 1 exercise (posted on web site tonight)

Page 34: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 34

Why Do We Want Software? What makes computers useful?

Can faithfully represent a conceptual system in a particular

context outside of real time/space.

Computers support software models.

Software implementations are models of (real-world)

conceptual systems.

Page 35: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 35

Realms

Systems start as people conceived ideasThe task of development is to represent

concepts with technologyDevelopment engineering processes move a

concept from the Realm of Actions (concepts) to the Realm of Representations) (technology)

Page 36: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 36

Realm of Actions to Realm of Representations

Technology System Realm of

representations - •Technology•Specific

Realm of actions and possibilities - •People•General

System Concept

A translation process:

- informal to formal

- abstract to concrete

- course grain to fine grain

Page 37: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 37

People vs. Computers

Computers•Linear•Concrete•Discrete•Context Free•Passive•Logical•Consistent•Need Batteries

People•Non-linear•Abstract•Continuous•Context Sensitive•Active•Creative•Inconsistent•Need Donuts

Page 38: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 38

People vs. Computers (cont.)

People•Semantic•Highly Parallel (small tasks)•Approximate (PAC, PACE)•Learn•Do as they want•Make Choices•Flexible (usually)•Desires power•Informal

Computers•Syntactic•Sequential•Exact •Represent•Do as they are told•Compute•Rigid•Needs power•Formal

Page 39: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 39

Data vs. Information

Data: collection of facts or results Ex. Raw scores on an exam

Information: processed data (significance is assigned by an audience) Has an intended meaning with context and

relationships directed toward a particular audience

Ex. Average score on an exam

Page 40: ITM 352 Object Oriented Concepts and software representations (simple Java apps) Lecture #2

1/16/03 ITM 352 - Spring, 2003 - © Port Intro to OOP - 40

Example: Java Data and Information

Data Object name and fields Event objects Interface

implementation Argument to a method Attribute value Exception Objects

Information Result of some

computations Typing an object with

an interface Caller of a method Attribute owner Exception name used

in a catch block