• No results found

Problem Solving. Software Engineering. Behavior. OCD in a Nutshell. Behavior. Objects Operations Algorithm. Object-Centered Design

N/A
N/A
Protected

Academic year: 2021

Share "Problem Solving. Software Engineering. Behavior. OCD in a Nutshell. Behavior. Objects Operations Algorithm. Object-Centered Design"

Copied!
7
0
0

Loading.... (view fulltext now)

Full text

(1)

Software Engineering

(Chap. 1)

Object-Centered Design

When we prepare a program, the experience can be just

like composing poetry or music … My claim is that it is

possible to write grand programs, noble programs, truly

magnificent ones! ... Computer programming is an art.

-

Donald Knuth, “Programming as an Art”, 1974

Problem Solving

Let’s solve this

temperature-conversion problem

:

Write a program that, given a temperature in

Celsius, displays that temperature in Fahrenheit.

5 Phases of Software Life Cycle:

•Problem Analysis and Specification

•Design

•Implementation (Coding)

•Testing, Execution and Debugging

•Maintenance

OCD (Object-Centered Design)

2

OCD in a Nutshell

• Behavior

• Objects

• Operations

• Algorithm

Behavior

A. Describe the desired behavior of the program:

Our program should display a prompt for the

Celsius temperature on the screen, read that

temperature from the keyboard, compute the

corresponding Fahrenheit temperature, and

display that temperature along with a descriptive

label on the screen.

4

Using

(2)

Objects

B. Identify the

nouns

in the behavioral description:

Our program should display a prompt for the

Celsius temperature on the screen, read that

temperature from the keyboard, compute the

corresponding Fahrenheit temperature, and

display that temperature along with a descriptive

label on the screen.

These make up the

objects

in our program.

5

Using

OCD

Operations

These make up the

operations

in our program.

C. Identify the

verbs

in the behavioral description:

Our program should display a prompt for the

Celsius temperature on the screen, read that

temperature from the keyboard, compute the

corresponding Fahrenheit temperature, and

display that temperature along with a descriptive

label on the screen.

6

Using

OCD

Algorithm

D. Organize the objects and operations into a sequence

of steps that solves the problem, called an

algorithm

.

1

. Ask

the screen

to display

a prompt

for

the Celsius

temperature

on

the screen

.

2

. Ask

the keyboard

to read

the temperature

.

3

. Compute

the Fahrenheit temperature

from

the Celsius

temperature

.

4

. Ask

the screen

to display

the Fahrenheit temperature

,

plus an

informative label

on

the

screen

.

7

Using

OCD

Don’t even think about coding until

you’re sure of your algorithm.

(3)

Coding

• We now translate the algorithm into an HLL.

• Use the features of the Java language to:

represent our objects

perform our operations

• Java provides two implementation methods:

Java

applications

Java

applets

(Sec. 1.3)

Java Applications

• Programming languages traditionally allow

programmers to write stand-alone

applications.

• In Java, these are called

applications

.

Compiler

A Java Application

Program The byte-code forthe application

Interpreter

javac

java

Abc.java

Abc.class

Representing Objects

Determine a

type and name for each object

:

ObjectJava TypeNamethe programa promptthe Celsius temp.the screenthe keyboardthe Fahrenheit temp.a label

ObjectStringdoubleScreenKeyboarddoubleString

Temperature--celsiustheScreentheKeyboardfahrenheit

--Performing Operations

Identify the Java operator to perform a given

operation, if there is one…

OperationLibrary?Name

Display a stringRead a doubleCompute fahrenheitDisplay a double

ann.easyioann.easyio--ann.easyioprint()readDouble()--print()

To compute the Fahrenheit temperature, we need to find the

Celsius to Fahrenheit formula in a reference book...

(4)

Operations (Revised)

Operation

Library?

Name

Display a string

Read a double

Compute fahrenheit

Divide two ints

Multiply two doubles

Add two doubles

Display a double

ann.easyio

ann.easyio

--

built-in

built-in

built-in

ann.easyio

print()

readDouble()

--

/

*

+

print()

We can now add more detail to the

computation:

doubles

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes class Temperature extends Object

{

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: "); Keyboard theKeyboard = new Keyboard();

double celsius = theKeyboard.readDouble(); double fahrenheit = ((9.0/5.0)*celsius) + 32; theScreen.print(celsius + " degrees Celsius is " +

fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

} }

The Code

Objects? Operations?

COMPILATION HINT

• Use the tools available to you.

• Specifically, use

M-x compile

in xemacs.

Use

C-x `

to run through the error messages.

ß

Xemacs will automatically go to the next message.

ß

It will even load in the proper file and go to the

offending line.

ß

Why do you want to do this work?

Run only one session of xemacs; open multiple

files into the same session.

If you aren't comfortable or used to it, practice.

(or middle mouse button)

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes

class Temperature extends Object {

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: "); Keyboard theKeyboard = new Keyboard();

double celsius = theKeyboard.readDouble(); double fahrenheit = ((9.0/5.0)*celsius) + 32; theScreen.print(celsius + " degrees Celsius is " +

fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

} }

Documentation

Always begin a file

with an

opening

comment

similar to this.

.

3 Kinds of Comments:

/*...*/ multi-line comment // single-line comment

-- indicate what classes of a package are used. -- explain obscure code

/**...*/ Javadoc multi-line comment javadoc program extracts these into special documentation.format

-- see Java'sAPI (Section 2.4)

(5)

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes

class Temperature extends Object {

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: "); Keyboard theKeyboard = new Keyboard();

double celsius = theKeyboard.readDouble(); double fahrenheit = ((9.0/5.0)*celsius) + 32; theScreen.print(celsius + " degrees Celsius is " +

fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

} }

Import Section

This loads the Java

packages that we need.

Packages:

-- Groups of related classes e.g., easyio

-- Often grouped into libraries

e.g., ann

-- Java has > 1600 classes grouped into several packages -- see its API

Use

import package_name.*;

to make classes in a package easily accessible

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes

class Temperature extends Object {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: "); Keyboard theKeyboard = new Keyboard();

double celsius = theKeyboard.readDouble(); double fahrenheit = ((9.0/5.0)*celsius) + 32; theScreen.print(celsius + " degrees Celsius is " +

fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

}

}

The Class Definition

Java programs are classes

built upon existing classes

Form:

class Class_name extends Object {

public static void main(String[] args) {

statements

} }

-- Use meaningful class name -- Capitalize it

-- Save program as Class_name.java

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes class Temperature extends Object

{

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: "); Keyboard theKeyboard = new Keyboard();

double celsius = theKeyboard.readDouble(); double fahrenheit = ((9.0/5.0)*celsius) + 32; theScreen.print(celsius + " degrees Celsius is " +

fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

}

}

The Main Method

Java applications begin

execution by running

main()

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes class Temperature extends Object

{

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in delsius: ");

Keyboard theKeyboard = new Keyboard(); double celsius = theKeyboard.readDouble(); double fahrenheit = ((9.0/5.0)*celsius) + 32; theScreen.print(celsius + " degrees Celsius is " +

fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

} }

Step 1

(6)

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes class Temperature extends Object

{

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: ");

Keyboard theKeyboard = new Keyboard(); double celsius = theKeyboard.readDouble();

double fahrenheit = ((9.0/5.0)*celsius) + 32; theScreen.print(celsius + " degrees Celsius is " +

fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

} }

Step 2

Read the Celsius temperature.

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes class Temperature extends Object

{

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: "); Keyboard theKeyboard = new Keyboard();

double celsius = theKeyboard.readDouble();

double fahrenheit = ((9.0/5.0)*celsius) + 32;

theScreen.print(celsius + " degrees Celsius is " + fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

} }

Step 3

Calculate the

Fahrenheit temperature.

/* Temperature.java converts Celsius * temperatures to Fahrenheit. * Author: Keith Vander Linden * Date: 2 June 2001

* Modified: L. Nyhoff, Sept. 2002 */

import ann.easyio.*; // Screen & Keyboard classes class Temperature extends Object

{

public static void main(String [] args) {

Screen theScreen = new Screen();

theScreen.print("Welcome to the temperature converter!\n" + "Please enter the temperature in Celsius: "); Keyboard theKeyboard = new Keyboard();

double celsius = theKeyboard.readDouble(); double fahrenheit = ((9.0/5.0)*celsius) + 32;

theScreen.print(celsius + " degrees Celsius is " + fahrenheit + " degrees Fahrenheit.\n" + "It's been a pleasure!\n");

} }

Step 4

Display the results.

Running the Program

You can now run your application:

Welcome to the temperature converter!

Please enter the temperature in Celsius: 20

20.0 degrees Celsius is 68.0 degrees Fahrenheit.

It's been a pleasure!

(7)

Testing

• Getting your code to compile and run is not

the main goal.

• Rather, your goal is to produce a useful

program that is:

correct

efficient

readable

usable

Running Test Cases

Do many tests on “interesting” data points.

Welcome to the temperature converter!

Please enter the temperature in Celsius: 0

0.0 degrees Celsius is 32.0 degrees Fahrenheit.

It's been a pleasure!

Welcome to the temperature converter!

Please enter the temperature in Celsius: -17.78

-17.78 degrees Celsius is -0.0040000000000048885

degrees Fahrenheit.

It's been a pleasure!

Writing Code

• Comments (

/*

...

*/

or

//

) are completely

ignored by the compiler.

• Whitespace matters only two places:

Inside quotes, and

In comment delimiters (/*, */, //).

• A semi-colon indicates the end of a program

statement.

COMPILATION HINT

• Forgotten or extra semi-colons confuse the

compiler.

• The compiler never recognizes that there's a

semi-colon problem; it usually won't say

what's wrong.

• Usually a "parse error" is an indication that

the

previous

line of code is missing a

References

Related documents

The temperature display can be changed between Celsius and Fahrenheit by pressing and holding both pads (warmer) and (colder) for the upper zone for approximately 3

Medicaid has been a hybrid program, weaving together federal and state policy and administration, public and private systems, and the deserving poor with others in the health

Conversion table from degrees Celsius to degrees Fahrenheit Temperature The temperature scale in degrees Celsius C is due most frequently used scale.. Oven Temperature Conversion

Press ”Channel” button (7) on weather station repeatedly to display the temperature of channel 1, channel 2, and channel 3.

3 Digital Display Readout of the set room temperature or timer value 4 Celsius Indicator Light Indicates that the temperature is being displayed in Celsius 5 Fahrenheit Indicator

Software provided with the DLP-TH1 sensor displays temperature, humidity, and dew-point data in both Fahrenheit and Celsius, plots graphically to the screen, and logs to a data

Next write a program which takes as input an integer representing some Fahrenheit temperature, and returns a real number to two decimal digits of the corresponding Celsius value.

The values of the variables, E/S (2.22%, w/w), hydrolysis time (3.60 h), and hydro- lysis temperature (45.70 °C) were found to be optimum for improvement of the anti- oxidant