chapter 6: a first look at classestomrebold.com/csis10as13/lectures/06/lec6.pdf · object-oriented...

93
Chapter 6: A First Look at Classes Starting Out with Java: From Control Structures through Objects Fourth Edition by Tony Gaddis

Upload: others

Post on 26-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Chapter 6:

A First Look at Classes

Starting Out with Java:

From Control Structures through Objects

Fourth Edition

by Tony Gaddis

Page 2: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Reading Quiz

1)

2)

Page 3: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-3

Chapter Topics

Chapter 6 discusses the following main topics:

– Classes and Objects

– Instance Fields and Methods

– Constructors

– Overloading Methods and Constructors

– Scope of Instance Fields

– Packages and Import Statements

Page 4: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

What is a class?

A collection of data and the methods that work on that data

A blueprint to create objects/instances of the class type

For example: String class

String name1 = new String(“Jose”);

sop( name1.toUpperCase() );

if ( name1.equals(name2) ) ….

name1

Jose

Page 5: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Let’s build a Student class

What data do we keep track of for a student?

1. Name

2. Student ID

3. Total units taken

4. Total credits earned (where A is 4, B is 3, ….)

What methods do we need?

1. 8 methods to Set and Get the 4 fields

2. Add units taken and credits earned

3. Calculate GPA

Page 6: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Student

name: String

stuID: String

totalUnits: double

totalCredits: double

setName(aName: String): void

setStuID(aStuID: String): void

setTotalUnits(totalUnits: double): void

setTotalCredits(totalCredits: double): void

getName(): String

getStuID(): String

getTotalUnits(): double

getTotalCredits(): double

addUnitsAndGrade(numUnits: double, numGrade: double): void

calcGPA(): double

Page 7: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-7

Creating a Student object

Student stu1 = new Student(“Joe”,”123”);

address Joe

123

stuName:

stuID:

The stu1

variable holds

the address of

the Student

object.

A Student object

totalUnits:

totalCredits:

0

0

stu1

Page 8: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Structure of a typical class public class SomeClassName

{ // data fields go here

private String stuName;

private double totalCredits;

// next come the methods

public void setName(String aName)

{ stuName = aName;

}

public double getCredits()

{ return totalCredits;

}

}

Page 9: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Building a Student class in BlueJ

First build StudentDemo.

has main() method

Student stu1 = new Student(“Jose”, “123456789”);

stu1.addUnitsAndGrade(3, 4); // csis10a

sop(“GPA for “ + stu1.getName() + “ is “ + stu1.calcGPA();

Then build the Student class.

no main(). Use the UML.

Then add to StudentDemo.

1. Make 3 students: stu1, stu2, stu3.

2. Give the 3 varying numbers of units and grades.

3. Display the info.

4. (Optional: Use a loop to calculate average, max, min #

of units.)

Page 10: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Student

- name: String

- stuID: String

- totalUnits: double

- totalCredits: double

+ Student(aName: String, aStuId: String)

+ setName(aName: String): void

+ setStuID(aStuID: String): void

+ setTotalUnits(totalUnits: double): void

+ setTotalCredits(totalCredits: double): void

+ getName(): String

+ getStuID(): String

+ getTotalUnits(): double

+ getTotalCredits(): double

+ addUnitsAndGrade(numUnits: double, numGrade: double): void

+ calcGPA(): double

UML improved

public/private

constructor

Page 11: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-11

Object-Oriented Programming

• Objects are a melding of data and procedures

that manipulate that data.

• Data in an object are known as fields.

• Procedures in an object are known as methods.

• Object-oriented programming is centered on

creating objects rather than procedures.

Page 12: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-12

Object-Oriented Programming Object

Data (Fields)

Methods

That Operate on the Data

Page 13: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-13

Object-Oriented Programming Object

Data (Fields)

typically private to this object

Methods That

Operate on the Data

Code

Outside the

Object

Page 14: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-14

Object-Oriented Programming

• Object-oriented programming combines data

and behavior via encapsulation.

• Data hiding is the ability of an object to hide

data from other objects in the program.

• Only an object’s methods should be able to

directly manipulate its data.

• Other objects are allowed manipulate an

object’s data via the object’s methods.

Page 15: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-15

Object-Oriented Programming Data Hiding

• Data hiding is important for several reasons.

– It protects the data from accidental corruption by

outside objects.

– It hides the details of how an object works, so the

programmer can concentrate on using it.

– It allows the maintainer of the object to have the

ability to modify the internal functioning of the

object without “breaking” someone else's code.

Page 16: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-16

Object-Oriented Programming Code Reusability

• Object-Oriented Programming (OOP) has encouraged object reusability.

• A software object contains data and methods that represents a specific concept or service.

• An object is not a stand-alone program.

• Objects can be used by programs that need the object’s service.

• Reuse of code promotes the rapid development of larger software projects.

Page 17: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-17

An Everyday Example of an Object—

An Alarm Clock

• Fields define the state that the alarm is currently in.

– The current second (a value in the range of 0-59)

– The current minute (a value in the range of 0-59)

– The current hour (a value in the range of 1-12)

– The time the alarm is set for (a valid hour and minute)

– Whether the alarm is on or off (“on” or “off”)

Page 18: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-18

An Everyday Example of an Object—

An Alarm Clock

• Methods are used to change a field’s value

– Set time

– Set alarm time

– Turn alarm on

– Turn alarm off

– Increment the current second

– Increment the current minute

– Increment the current hour

– Sound alarm

Public methods are

accessed by users outside

the object.

Private methods

are part of the

object’s internal

design.

Page 19: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-19

Everything is an object and can be

modeled in Java

• car

• hotel

• balloon

• invoice

• a phone call to technical support

• a zombie in a computer game

Page 20: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-20

Classes and Objects

• The programmer determines the fields and methods needed, and then creates a class.

• A class can specify the fields and methods that a particular type of object may have.

• A class is a “blueprint” that objects may be created from.

• A class is not an object, but it can be a description of an object.

• An object created from a class is called an instance of the class.

• Classes are defined to represent a single concept or service.

Page 21: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-21

The Default Constructor

• When an object is created, its constructor is always

called.

• If you do not write a constructor, Java provides one

when the class is compiled. The constructor that Java

provides is known as the default constructor.

– It sets all of the object’s numeric fields to 0.

– It sets all of the object’s boolean fields to false.

– It sets all of the object’s reference variables to the special

value null.

Page 22: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Keywords and things to know

class vs object/instance

public vs private, access specifiers

field or instance variable

scope of fields

shadowing

stale data

instance method, not static

constructor, default, no-arg

accessor and mutator methods, setters & getters

method overloading, method signature

UML diagram

Page 23: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

Page 24: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

a) Car

b) make, yearModel

c) setMake,setYearModel,

getMake,getYearModel

d) make, yearModel

e) the methods

limo.setMake("Cadillac");

Page 25: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

Page 26: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

5

20

10

15

Page 27: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

Page 28: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint • same name as class

• no return type not even void

ClassAct

ClassAct obj = new ClassAct(25);

Page 29: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

Page 30: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

different parameter lists

methodName(parameter list)

This is the second version of the method

This is the first version of the method

Page 31: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-31

Packages and import Statements

• Classes in the Java API are organized into packages.

• Explicit and Wildcard import statements

– Explicit imports name a specific class • import java.util.Scanner;

– Wildcard imports name a package, followed by an * • import java.util.*;

• The java.lang package is automatically made available to any Java class.

Page 32: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-32

Some Java Standard Packages

Page 33: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

STOP LECTURE HERE

• The rest of these slides are good. They come

from the book publisher and have good

information stated more concisely than the

book. You may want to review these slides.

Page 34: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-34

Classes

• From chapter 2, we learned that a reference

variable contains the address of an object.

String cityName = "Charleston";

Charleston Address to the object cityName

The object that contains the

character string “Charleston”

Page 35: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-35

Classes

• The length() method of the String class

returns and integer value that is equal to the

length of the string. int stringLength = cityName.length();

• Class objects normally have methods that

perform useful operations on their data.

• Primitive variables can only store data and have

no methods.

Page 36: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-36

Classes and Instances

• Many objects can be created from a class.

• Each object is independent of the others.

String person = "Jenny ";

String pet = "Fido";

String favoriteColor = "Blue";

Page 37: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-37

Classes and Instances

“Jenny” Address person

“Fido” Address pet

“Blue” Address favoriteColor

Page 38: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-38

Classes and Instances

• Each instance of the String class contains different

data.

• The instances are all share the same design.

• Each instance has all of the attributes and methods that were defined in the String class.

• Classes are defined to represent a single concept or

service.

Page 39: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-39

Building a Rectangle class

• A Rectangle object will have the following

fields:

– length. The length field will hold the rectangle’s

length.

– width. The width field will hold the rectangle’s

width.

Page 40: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-40

Building a Rectangle class

• The Rectangle class will also have the following methods: – setLength. The setLength method will store a

value in an object’s length field.

– setWidth. The setWidth method will store a value in an object’s width field.

– getLength. The getLength method will return the value in an object’s length field.

– getWidth. The getWidth method will return the value in an object’s width field.

– getArea. The getArea method will return the area of the rectangle, which is the result of the object’s length multiplied by its width.

Page 41: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-41

UML Diagram

• Unified Modeling Language (UML) provides a

set of standard diagrams for graphically

depicting object-oriented systems.

Class name goes here

Fields are listed here

Methods are listed here

Page 42: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-42

UML Diagram for Rectangle class

Rectangle

length: double

width: double

setLength(aLen: double): void

setWidth(aWidth: double): void

getLength(): double

getWidth(): double

getArea(): double

Page 43: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-43

Writing the Code for the Class Fields

public class Rectangle

{

private double length;

private double width;

}

Page 44: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-44

Access Specifiers

• An access specifier is a Java keyword that indicates how a field or method can be accessed.

• public

– When the public access specifier is applied to a class member, the member can be accessed by code inside the class or outside.

• private

– When the private access specifier is applied to a class member, the member cannot be accessed by code outside the class. The member can be accessed only by methods that are members of the same class.

Page 45: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-45

Header for the setLength Method

public void setLength (double len)

Access

specifier

Return

Type

Parameter variable declaration

Method

Name

Notice the word static does not

appear in the method

header designed to work

on an instance of a class

(instance method).

Page 46: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-46

Writing and Demonstrating the setLength Method

/**

The setLength method stores a value in the

length field.

@param len The value to store in length.

*/

public void setLength(double len)

{

length = len;

}

Examples: Rectangle.java, LengthDemo.java

Page 47: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Example 1: Defining a Rectangle Class

Page 48: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Example 1: Using the Rectangle Class

Page 49: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-49

Creating a Rectangle object

Rectangle box = new Rectangle ();

address 0.0

0.0

length:

width:

The box

variable holds

the address of

the Rectangle

object.

A Rectangle object

Page 50: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-50

Calling the setLength Method

box.setLength(10.0);

address 10.0

0.0

length:

width:

The box

variable holds

the address of

the Rectangle

object.

A Rectangle object

This is the state of the box object after the setLength method executes.

Page 51: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-51

Writing the getLength Method

/**

The getLength method returns a Rectangle

object's length.

@return The value in the length field.

*/

public double getLength()

{

return length;

}

Similarly, the setWidth and getWidth methods can be created.

Examples: Rectangle.java, LengthWidthDemo.java

Page 52: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-52

Writing and Demonstrating the getArea

Method

/** The getArea method returns a Rectangle

object's area.

@return The product of length times width.

*/

public double getArea()

{

return length * width;

}

Examples: Rectangle.java, RectangleDemo.java

Page 53: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-53

Accessor and Mutator Methods

• Because of the concept of data hiding, fields in a class are private.

• The methods that retrieve the data of fields are called accessors.

• The methods that modify the data of fields are called mutators.

• Each field that the programmer wishes to be viewed by other classes needs an accessor.

• Each field that the programmer wishes to be modified by other classes needs a mutator.

Page 54: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-54

Accessors and Mutators

• For the Rectangle example, the accessors and

mutators are: – setLength : Sets the value of the length field.

public void setLength(double len) …

– setWidth : Sets the value of the width field.

public void setLength(double w) …

– getLength : Returns the value of the length field.

public double getLength() …

– getWidth : Returns the value of the width field.

public double getWidth() …

• Other names for these methods are getters and setters.

Page 55: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-55

Stale Data

• Some data is the result of a calculation.

• Consider the area of a rectangle.

– length × width

• It would be impractical to use an area variable here.

• Data that requires the calculation of various factors has

the potential to become stale.

• To avoid stale data, it is best to calculate the value of

that data within a method rather than store it in a

variable.

Page 56: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-56

Stale Data

• Rather than use an area variable in a Rectangle

class: public double getArea()

{

return length * width;

}

• This dynamically calculates the value of the

rectangle’s area when the method is called.

• Now, any change to the length or width variables

will not leave the area of the rectangle stale.

Page 57: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-57

UML Data Type and Parameter Notation

• UML diagrams are language independent.

• UML diagrams use an independent notation to show

return types, access modifiers, etc.

Rectangle

- width : double

+ setWidth(w : double) : void

Access modifiers

are denoted as:

+ public

- private

Page 58: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-58

UML Data Type and Parameter Notation

• UML diagrams are language independent.

• UML diagrams use an independent notation to show

return types, access modifiers, etc.

Rectangle

- width : double

+ setWidth(w : double) : void

Variable types are

placed after the variable

name, separated by a

colon.

Page 59: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-59

UML Data Type and Parameter Notation

• UML diagrams are language independent.

• UML diagrams use an independent notation to show

return types, access modifiers, etc.

Rectangle

- width : double

+ setWidth(w : double) : void

Method return types are

placed after the method

declaration name,

separated by a colon.

Page 60: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-60

UML Data Type and Parameter Notation

• UML diagrams are language independent.

• UML diagrams use an independent notation to show

return types, access modifiers, etc.

Rectangle

- width : double

+ setWidth(w : double) : void

Method parameters

are shown inside the

parentheses using the

same notation as

variables.

Page 61: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-61

Converting the UML Diagram to Code

• Putting all of this information together, a Java class

file can be built easily using the UML diagram.

• The UML diagram parts match the Java class file

structure.

ClassName

Fields

Methods

class header

{

Fields

Methods

}

Page 62: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-62

Converting the UML Diagram to Code

Rectangle

- width : double

- length : double

+ setWidth(w : double) : void

+ setLength(len : double): void

+ getWidth() : double

+ getLength() : double

+ getArea() : double

public class Rectangle

{

private double width;

private double length;

public void setWidth(double w)

{

}

public void setLength(double len)

{

}

public double getWidth()

{ return 0.0;

}

public double getLength()

{ return 0.0;

}

public double getArea()

{ return 0.0;

}

}

The structure of the class can be

compiled and tested without having

bodies for the methods. Just be sure to

put in dummy return values for methods

that have a return type other than void.

Page 63: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-63

Converting the UML Diagram to Code public class Rectangle

{

private double width;

private double length;

public void setWidth(double w)

{ width = w;

}

public void setLength(double len)

{ length = len;

}

public double getWidth()

{ return width;

}

public double getLength()

{ return length;

}

public double getArea()

{ return length * width;

}

}

Rectangle

- width : double

- length : double

+ setWidth(w : double) : void

+ setLength(len : double): void

+ getWidth() : double

+ getLength() : double

+ getArea() : double

Once the class structure has been tested,

the method bodies can be written and

tested.

Page 64: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-64

Class Layout Conventions

• The layout of a source code file can vary by

employer or instructor.

• A common layout is:

– Fields listed first

– Methods listed second

• Accessors and mutators are typically grouped.

• There are tools that can help in formatting

layout to specific standards.

Page 65: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-65

Instance Fields and Methods

• Fields and methods that are declared as

previously shown are called instance fields and

instance methods.

• Objects created from a class each have their

own copy of instance fields.

• Instance methods are methods that are not declared with a special keyword, static.

Page 66: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-66

Instance Fields and Methods

• Instance fields and instance methods require an

object to be created in order to be used.

• See example: RoomAreas.java

• Note that each room represented in this

example can have different dimensions. Rectangle kitchen = new Rectangle();

Rectangle bedroom = new Rectangle();

Rectangle den = new Rectangle();

Page 67: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-67

States of Three Different Rectangle

Objects

address 15.0

12.0

length:

width:

address 10.0

14.0

length:

width:

address 20.0

30.0

length:

width:

The kitchen variable

holds the address of a

Rectangle Object.

The bedroom variable

holds the address of a

Rectangle Object.

The den variable

holds the address of a

Rectangle Object.

Page 68: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-68

Constructors

• Classes can have special methods called constructors.

• A constructor is a method that is automatically called

when an object is created.

• Constructors are used to perform operations at the time

an object is created.

• Constructors typically initialize instance fields and

perform other object initialization tasks.

Page 69: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-69

Constructors

• Constructors have a few special properties that

set them apart from normal methods.

– Constructors have the same name as the class.

– Constructors have no return type (not even void).

– Constructors may not return any values.

– Constructors are typically public.

Page 70: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-70

Constructor for Rectangle Class

/**

Constructor

@param len The length of the rectangle.

@param w The width of the rectangle.

*/

public Rectangle(double len, double w)

{

length = len;

width = w;

}

Examples: Rectangle.java, ConstructorDemo.java

Page 71: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-71

Constructors in UML

• In UML, the most common way constructors are defined is:

Rectangle

- width : double

- length : double

+Rectangle(len:double, w:double)

+ setWidth(w : double) : void

+ setLength(len : double): void

+ getWidth() : double

+ getLength() : double

+ getArea() : double

Notice there is no

return type listed

for constructors.

Page 72: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-72

Uninitialized Local Reference Variables

• Reference variables can be declared without being initialized.

Rectangle box;

• This statement does not create a Rectangle object, so it is an

uninitialized local reference variable.

• A local reference variable must reference an object before it can

be used, otherwise a compiler error will occur.

box = new Rectangle(7.0, 14.0);

• box will now reference a Rectangle object of length 7.0 and

width 14.0.

Page 73: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-73

The Default Constructor

• When an object is created, its constructor is always

called.

• If you do not write a constructor, Java provides one

when the class is compiled. The constructor that Java

provides is known as the default constructor.

– It sets all of the object’s numeric fields to 0.

– It sets all of the object’s boolean fields to false.

– It sets all of the object’s reference variables to the special

value null.

Page 74: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-74

The Default Constructor

• The default constructor is a constructor with no

parameters, used to initialize an object in a default

configuration.

• The only time that Java provides a default constructor

is when you do not write any constructor for a class.

– See example: First version of Rectangle.java

• A default constructor is not provided by Java if a

constructor is already written.

– See example: Rectangle.java with Constructor

Page 75: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-75

Writing Your Own No-Arg Constructor

• A constructor that does not accept arguments is known as a no-arg constructor.

• The default constructor (provided by Java) is a no-arg constructor.

• We can write our own no-arg constructor

public Rectangle()

{

length = 1.0;

width = 1.0;

}

Page 76: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-76

The String Class Constructor

• One of the String class constructors accepts a

string literal as an argument.

• This string literal is used to initialize a String

object.

• For instance:

String name = new String("Michael Long");

Page 77: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-77

The String Class Constructor

• This creates a new reference variable name that points to a String object that represents the name “Michael

Long”

• Because they are used so often, String objects can

be created with a shorthand:

String name = "Michael Long";

Page 78: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

Page 79: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint • same name as class

• no return type not even void

ClassAct

ClassAct obj = new ClassAct(25);

Page 80: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-80

Overloading Methods and Constructors

• Two or more methods in a class may have the

same name as long as their parameter lists are

different.

• When this occurs, it is called method

overloading. This also applies to constructors.

• Method overloading is important because

sometimes you need several different ways to

perform the same operation.

Page 81: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-81

Overloaded Method add

public int add(int num1, int num2)

{

int sum = num1 + num2;

return sum;

}

public String add (String str1, String str2)

{

String combined = str1 + str2;

return combined;

}

Page 82: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-82

Method Signature and Binding

• A method signature consists of the method’s name and the data

types of the method’s parameters, in the order that they appear.

The return type is not part of the signature.

add(int, int)

add(String, String)

• The process of matching a method call with the correct method

is known as binding. The compiler uses the method signature to

determine which version of the overloaded method to bind the

call to.

Signatures of the

add methods of

previous slide

Page 83: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-83

Rectangle Class Constructor Overload

If we were to add the no-arg constructor we wrote previously to our Rectangle class in addition to the original constructor we wrote, what would happen when we execute the following calls? Rectangle box1 = new Rectangle();

Rectangle box2 = new Rectangle(5.0, 10.0);

Page 84: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-84

Rectangle Class Constructor Overload

If we were to add the no-arg constructor we wrote previously to our Rectangle class in addition to the original constructor we wrote, what would happen when we execute the following calls? Rectangle box1 = new Rectangle();

Rectangle box2 = new Rectangle(5.0, 10.0);

The first call would use the no-arg constructor and box1 would have a length of 1.0 and width of 1.0.

The second call would use the original constructor and box2 would have a length of 5.0 and a width of 10.0.

Page 85: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-85

The BankAccount Example

BankAccount.java

AccountTest.java BankAccount

-balance:double

+BankAccount()

+BankAccount(startBalance:double)

+BankAccount(strString):

+deposit(amount:double):void

+deposit(str:String):void

+withdraw(amount:double):void

+withdraw(str:String):void

+setBalance(b:double):void

+setBalance(str:String):void

+getBalance():double

Overloaded Constructors

Overloaded deposit methods

Overloaded withdraw methods

Overloaded setBalance methods

Page 86: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-86

Scope of Instance Fields

• Variables declared as instance fields in a class

can be accessed by any instance method in the

same class as the field.

• If an instance field is declared with the public access specifier, it can also be

accessed by code outside the class, as long as

an instance of the class exists.

Page 87: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-87

Shadowing

• A parameter variable is, in effect, a local variable.

• Within a method, variable names must be unique.

• A method may have a local variable with the same name as an instance field.

• This is called shadowing.

• The local variable will hide the value of the instance field.

• Shadowing is discouraged and local variable names should not be the same as instance field names.

Page 88: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

Page 89: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

Checkpoint

different parameter lists

methodName(parameter list)

This is the second version of the method

This is the first version of the method

Page 90: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-90

Packages and import Statements

• Classes in the Java API are organized into packages.

• Explicit and Wildcard import statements

– Explicit imports name a specific class • import java.util.Scanner;

– Wildcard imports name a package, followed by an * • import java.util.*;

• The java.lang package is automatically made available to any Java class.

Page 91: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-91

Some Java Standard Packages

Page 92: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-92

Object Oriented Design Finding Classes and Their Responsibilities

• Finding the classes – Get written description of the problem domain

– Identify all nouns, each is a potential class

– Refine list to include only classes relevant to the problem

• Identify the responsibilities – Things a class is responsible for knowing

– Things a class is responsible for doing

– Refine list to include only classes relevant to the problem

Page 93: Chapter 6: A First Look at Classestomrebold.com/csis10as13/lectures/06/lec6.pdf · Object-Oriented Programming Code Reusability • Object-Oriented Programming (OOP) has encouraged

6-93

Object Oriented Design Finding Classes and Their Responsibilities

– Identify the responsibilities • Things a class is responsible for knowing

• Things a class is responsible for doing

• Refine list to include only classes relevant to the problem