cse 114 – computer science i objects and reference
DESCRIPTION
CSE 114 – Computer Science I Objects and Reference. Bryce Canyon, Utah. Classes. Class —definition of a kind of object Like an outline or plan for constructing specific objects Class specifies what kind of data objects of that class have - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/1.jpg)
Bryce Canyon, Utah
CSE 114 – Computer Science IObjects and Reference
![Page 2: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/2.jpg)
Classes
• Class—definition of a kind of object
• Like an outline or plan for constructing specific objects
• Class specifies what kind of data objects of that class have– Each object has the same data items but can have different
values
• Class specifies what methods each object will have– All objects of the same class have the same methods available to
them
![Page 3: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/3.jpg)
Class as an Outline
Class Name: Automobile
Data:
amount of fuel ________
speed ________
license plate ________
Methods (actions):
increaseSpeed:
How: Press on gas pedal.
stop:
How: Press on brake pedal.
Class Definition
Objects that are instantiations of the class
First Instantiation:
Object name: patsCar
amount of fuel: 10 gallons
speed: 55 miles per hour
license plate: “135 XJK”
Second Instantiation:
Object name: suesCar
amount of fuel: 14 gallons
speed: 0 miles per hour
license plate: “SUES CAR”
Third Instantiation:
Object name: ronsCar
amount of fuel: 2 gallons
speed: 75 miles per hour
license plate: “351 WLF”
![Page 4: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/4.jpg)
Objects
• Variables that are named instances of a class– the class is their type
• Have both data and methods– called members of the object
• Data items are also called fields or instance variables
• Invoking a method means to call the method, i.e. execute the method. Ex:– objectVariableName.method()– objectVariableName is the calling (invoking) object
![Page 5: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/5.jpg)
Containment
• A class contains another class if it instantiates an object of that class– “HAS-A”
• PairOfDice HAS-A Die
![Page 6: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/6.jpg)
PairOfDice dice
Die die1
int upValue
int numFaces
Die die2
int upValue
int numFaces
RollGames main method
Object Variables as Instance Variables for other Objects
![Page 7: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/7.jpg)
Primitive Types vs. Objects (Class Types)
• Primitive variables:– assigned a memory location when declared– variable’s data stored there
• Object variables – assigned a memory location when it is declared– address of where the object data will be is stored there– address starts as null
• assigned when object variable is constructed
![Page 8: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/8.jpg)
new
• Used when constructing an object
• Asks the JVM for a block of memory
• What for?– to store the instance variables of the object
• What does it return?– the address (#) of the memory block
![Page 9: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/9.jpg)
Primitive vs. Class - Example
int sum = 0;
Die die1; MEMORY
die1 null
MEMORY
sum 0
die1.roll();
// CAN'T DO THIS! // die1 hasn’t been constructed
Before object variables are constructed, they store the address null (0)
Syntax or Runtime Error
![Page 10: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/10.jpg)
Primitive vs. Class – Example (cont’d)
die1 = new Die(8,3);
die1.roll();
// Now it’s OK to roll
MEMORY
die1
upValue
numFaces
3
8
etc…
die1 stores an address, which is the address of the beginning of the memory block where the object’s data is
![Page 11: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/11.jpg)
== and Objects
Die die1 = new Die(8,4);
Die die2 = new Die(8,4);
if (die1==die2)
FALSE!
if (die1.equals(die2))
SHOULD BE TRUE!
DEPENDING ON equals DEF.
MEMORY
4
8
4
8
etc…
die1
upValue
numFaces
die2
upValue
numFaces
etc…
![Page 12: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/12.jpg)
.equals and Objects• equals should return true when the two objects have
equivalent state (instance variable) values
// INSIDE Die class
public boolean equals(Die otherDie)
{
return (
(upValue == otherDie.upValue)
&& (this.numFaces==otherDie.numFaces)
);
} this is optional, but what is it?
![Page 13: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/13.jpg)
Call-by-value Revisited
• Note: – method arguments are copies of the original data
• Consequence?– methods cannot assign (‘=’) new values to arguments
and affect the original passed variables
• Why?– changing argument values changes the copy, not the
original
![Page 14: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/14.jpg)
Java Primitives Examplepublic static void main(String[] args)
{
int a = 5;
int b = 5;
changeNums(a, b);
System.out.println(a);
System.out.println(b);
}
public static void changeNums(int x, int y)
{
x = 0;
y = 0;
}
Output?55
![Page 15: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/15.jpg)
Java Objects (Strings) Examplepublic static void main(String[] args)
{
String a = "Hateful";
String b = "Career Opportunities";
changeStrings(a, b);
System.out.println(a);
System.out.println(b);
}
public static void changeString(String x, String y)
{
x = "The Magnificent Seven";
y = "The Magnificent Seven";
}• NOTE: When you pass an object to a method, you are passing a copy of the
object’s address
Output?HatefulCareer Opportunities
![Page 16: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/16.jpg)
How can methods change local variables?
• By assigning returned values
• Ex, in the String class:– substring method returns a new String
String s = "Hello";
s.substring(0, 4);
System.out.println(s);
s = s.substring(0, 4);
System.out.println(s);
Output?HelloHell
![Page 17: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/17.jpg)
Parameter Passing Revisited
• Primitive variables are passed using call-by-value.– a copy of the value is sent to the method
– any change to that value in the method does NOT affect the original primitive variable
• What about with objects?– a copy of the address is sent
– any changes made via mutator methods can change the original object
– Danger: Reconstructing an object parameter for a method does not reconstruct the originally passed variable
![Page 18: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/18.jpg)
swap
a
die
x
y
3
6
1
3
upValue
numSides
• Example Method:
public void swap(int x, Die y){
int temp = x;x = y.getUpValue();y.setUpValue(temp);
}
• Example Method Call:int a = 3;Die die = new Die(6,1);swap(a,die);System.out.print("a is " + a);System.out.print(", die is " + die.getUpValue());
Parameter Passing Revisited (cont’d)
OUTPUT: a is 3, die is 3
x and y are temporary variables, and are stored in different places in memory than a and die
3
1
![Page 19: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/19.jpg)
Changing passed parameterspublic class ParameterPassing {
public static void change(int idNum, String name, StringBuffer surname)
{ idNum = 15; name = "Oscar"; surname.replace(0, 4, "Jobs"); }
public static void main(String[] args) { int id = 0; String fName = "Steve"; StringBuffer lName = new StringBuffer("????"); change(id, fName, lName); System.out.println(fName + " " + lName + " is employee # " + id); }}
OUTPUT: Steve Jobs is employee # 0
What is the output?
These are only temporary variables
![Page 20: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/20.jpg)
What’s happening in memory?
…
chars[0]"O"
chars[4]"r"
… …
"J"
"s"
15
…
change0idNum
surname
name
…
…
0id
lName
fName
…
…
…
MEMORY
main
chars[0]"S"
chars[4]"e"
… …
chars[0]"?"
chars[3]"?"
… …
…
…
…
MEMORY
…
…
![Page 21: CSE 114 – Computer Science I Objects and Reference](https://reader035.vdocuments.mx/reader035/viewer/2022062408/56813e2e550346895da80e91/html5/thumbnails/21.jpg)
= and Objects• = Assigns an ADDRESS TO
OBJECT VARIABLE!Die die1 = new Die(8,4);Die die2;die2 = die1;
• Doesn't make a new copy of object!
• Now die1 and die2 both refer to the same object!
die1.roll();• Causes same change indie1 AND die2
MEMORY
die2
upValue
numFaces
3
8
die1
etc…
6