CSE 1020:Using Objects

28
CSE 1020:Using Objects Mark Shtern 1-1

description

CSE 1020:Using Objects. Mark Shtern. Summary. Read API Method binding and overloading Development process Input validation Assert. Utility Class. Features are static No Instantiation Memory Diagram (Fig 3.12 and Fig 3.14) Advantages of Utility Class Simplicity Suitability. - PowerPoint PPT Presentation

Transcript of CSE 1020:Using Objects

Page 1: CSE 1020:Using Objects

CSE 1020:Using Objects

Mark Shtern

1-1

Page 2: CSE 1020:Using Objects

Summary

• Read API• Method binding and overloading• Development process• Input validation• Assert

1-2

Page 3: CSE 1020:Using Objects

Utility Class

• Features are static• No Instantiation • Memory Diagram (Fig 3.12 and Fig 3.14)• Advantages of Utility Class– Simplicity– Suitability

1-3

Page 4: CSE 1020:Using Objects

Objects

• An Abstraction View• An API View

1-4

Page 5: CSE 1020:Using Objects

The Life of an Object

• The Birth of an Object– Locate the Class– Declare a Reference– Instantiate the Class– Assign the Reference

1-5

Page 6: CSE 1020:Using Objects

Object at Work

• Write a code fragment that creates a fraction object that corresponds to 8/6 and then outputs the results of invoking getNumerator and toProperString on it

1-6

AnswerFraction f;f = new Fraction(8,6)output.println(f.getNumerator());output.println(f.toProperString())

Page 7: CSE 1020:Using Objects

Object at Work

• Write a code fragment that creates fraction object that corresponds to 8/6 and then outputs the results of invoking toString method on it, once with the default separator and once with a different separator.

1-7

Answerfraction f = new Fraction (8,6);output.println(f.toString());f.Separator = ‘\u00f7’;output.println(f.toString());

Page 8: CSE 1020:Using Objects

The Object and its Reference

Fraction f1;f1 = new Fraction(6,3);Fraction f2;f2 = f1;f2 = new Fraction(5,8);f2 = null;output.println(f2.getNumerator()) ;

1-8

Page 9: CSE 1020:Using Objects

Objects’ Equality

Fraction f1 = new Fraction(3,5);Fraction f2 = f1;Fraction f3 = new Fraction(2,7);Fraction f4 = new Fraction(6,10);Fraction f5 = f4;output.println(f1 == f2);output.println(f4 == f5);

1-9

Page 10: CSE 1020:Using Objects

Equality of References

output.println(f1 == f2);output.println(f4 == f5);

1-10

Page 11: CSE 1020:Using Objects

Equality of Objects

output.println(f1.equals(f4));output.println(f4.equals(f2));

1-11

Page 12: CSE 1020:Using Objects

Obligatory Methods

• toString() returns a string that represents the current object

• equals() indicates whether some other object is "equal to" this one

• hashCode() returns an integer (hash code value) for the object. This method is supported for the benefit of containers

1-12

Page 13: CSE 1020:Using Objects

The Death of an Object

Fraction x = new Fraction(3,5);Fraction y=x;y = new Fraction(4,7);x=null;

1-13

Page 14: CSE 1020:Using Objects

Object’s state

• State– Determine the state of objects– Change the state of objects

• Accessors– public typeX getX();– public boolean isVisible();

• Mutators– public void setX(typeX value);

1-14

Page 15: CSE 1020:Using Objects

Predict its output

Fraction f = new Fraction(5,3);f.setDenominator(25);output.println(f.getNumerator());

1-15

Answer1

Page 16: CSE 1020:Using Objects

Attribute Privacy

• Neither an accessor nor a mutator: zero visibility

• An accessor and no mutator: read only access• A mutator and no accessor: write only access• An accessor and a mutator:read/write access

1-16

Page 17: CSE 1020:Using Objects

Summary

• Object (attributes, methods, states and identity)

• Object Life Time• Reference vs Object• Attribute Privacy

1-17

Page 18: CSE 1020:Using Objects

Example 4.5• Consider the following fragment Fraction f = new Fraction(1,2); Fraction g = f; // Place mystery statement here output.println(f.getNumerator()); output.println(f==g); output.println(e.equals(g));• Replace the comment with one statement such that output

is 3 true true

1-18

Page 19: CSE 1020:Using Objects

Example 4.5• Consider the following fragment Fraction f = new Fraction(1,2); Fraction g = f; // Place mystery statement here output.println(f.getNumerator()); output.println(f==g); output.println(e.equals(g));• Replace the comment with one statement such that output

is 3 false false

1-19

Page 20: CSE 1020:Using Objects

Example 4.5• Consider the following fragment Fraction f = new Fraction(1,2); Fraction g = f; // Place mystery statement here output.println(f.getNumerator()); output.println(f==g); output.println(e.equals(g));• Replace the comment with one statement such that output

is 3 false true

1-20

Page 21: CSE 1020:Using Objects

Example 4.5• Consider the following fragment Fraction f = new Fraction(1,2); Fraction g = f; // Place mystery statement here output.println(f.getNumerator()); output.println(f==g); output.println(e.equals(g));• If possible, replace the comment with one statement such

that output is 3 true false

1-21

Page 22: CSE 1020:Using Objects

Example 4.6

• Examine the following fragment, and predict its output for various user inputs:

Fraction f = new Fraction(7,10); output.print(“Enter a separator...”); boolean ok =

f.setSeparator(input.nextLine().charAt(0)); output.println(ok); output.println(f);

1-22

Page 23: CSE 1020:Using Objects

Object with static Features (predict its output)

Fraction f = new Fraction(3,2);output.println(f.toProperString());f.isQuoted = false;output.println(f.toProperString());

1-23

Answer “1 1/2”1 1/2

Page 24: CSE 1020:Using Objects

Object with static Features (predict its output)

Fraction f = new Fraction(3,2);f.isQuoted = true;Fraction g = new Fraction(5,2);g.isQuoted = true;output.println(f.toProperString());output.println(g.toProperString());

1-24

Answer1 1/22 1/2

Page 25: CSE 1020:Using Objects

Object with final Feature

• Final fields are made static:– Saves memory– Access without having to create instance first

1-25

Page 26: CSE 1020:Using Objects

Ex4.15

• Create an instance of the Random class, a member of the java.util package. Generate two random integers and output the them.

• Why was nextInt method overloaded?• Modify your program so that it also generates

two double and boolean values.

1-26

Page 27: CSE 1020:Using Objects

Ex 4.20• Create an instance, soap, of type.lib.Item with the

following state:– Item Number: “001”– Item Name: “The ABC Chicken Soup”– Sale Price: $9.75 per unit

• Assume store order two batches of these soup items:– 100 units and has overall cost of $500– 50 units and has overall cost of $400

• Simulate these two orders in your program by using purchase method

• Output the following information for this item:– Number, Name, Stock (quantity on hand) and cost price per unit

1-27

Page 28: CSE 1020:Using Objects

Ex 4.21

• Continue previous program by processing two more transactions:– Sells 20 units of soup at the posted sale price

using sell method– Sells 10 units for a total of $80

• You program must generate two output as following:– output.println(soup.getUnitPrice());– output.println(soup.getSales()/soup.getSoldQy());

1-28