Download presentation
Presentation is loading. Please wait.
Published bySteven McKinney Modified over 9 years ago
1
Catie Welsh March 2, 2011
2
Program 3 due tonight by 11:59pm Lab 5 due Friday by 1pm Sample Midterm is posted on course website ◦ Solutions will be posted after class on Friday Midterm is Monday, March 14th 2
3
3
4
Objects and references More on Classes 4
5
Classes Objects Instance variables Methods ◦ Return types ◦ Parameters and arguments Information hiding and encapsulation ◦ public/private ◦ accessors/mutators 5
6
Behave differently from variables of a primitive type 6
7
When declaring a variable, a certain amount of memory is assigned based on the declared primitive type What goes in this memory? 7 int age ; double length ; char letter ; memor y
8
A data value is stored in the location assigned to a variable of a primitive type 8
9
What goes in these variables? 9 Student jack ; String inputString ; memor y
10
Contain the memory address of the object named by the variable ◦ NOT the object itself What is an address? Object is stored in some other location in memory The address to this other location is called a reference to the object Class types are also called reference types 10
11
Assume we have a class named Book Book jacksBook = new Book(“Java”); Book apusBook = new Book(“Java”); vs. Book jacksBook = new Book(“Java”); Book apusBook = jacksBook; 11
12
12 jacksBook apusBook ???? Memory Book jacksBook; Book apusBook; jacksBook = new Book(“Java”); apusBook = new Book(“Java”); jacksBook.setPage(137); apusBook.setPage(253); apusBook = jacksBook; apusBook.setPage(509); jacksBook is now on p. 509! ???????? ? Java ? Java ? Java ? Java ? Java 137 Java 253 Java 137 Java 253 Java 509 207 8 ? 207 8 105 6 ???? ? 2078 1056 2078
13
Variables of a class type contain memory addresses ◦ NOT objects themselves 13
14
String is a class type What happens when you have String s1 = new String(“Hello”); String s2 = new String(“Hello”); boolean strEqual = (s1 == s2); strEqual is false! Why? s1 and s2 store different addresses! 14
15
What happens when you have String s1 = new String(“Hello”); String s2 = new String(“Hello”); boolean strEqual = (s1.equals(s2)); strEqual is true! Why? String’s.equals() method checks if all the characters in the two Strings are the same 15
16
public class Book { private String name; private int page; public boolean equals(Book book) { return (this.name.equals(book.name) && this.page == book.page); } 16
17
Every class has a default.equals() method if it is not explicitly written ◦ Does not necessarily do what you want You decide what it means for two objects of a specific class type to be considered equal ◦ Perhaps books are equal if the names and page numbers are equal ◦ Perhaps only if the names are equal ◦ Put this logic inside.equals() method 17
18
public void increaseNum(int num) { num++; } public void doStuff() { int x = 5; increaseNum(x); System.out.println(x); } Prints 5. Why? num is local to increaseNum method; does not change x 18
19
public void changeBook(Book book) { book = new Book(“Biology”); } public void doStuff() { Book jacksBook = new Book(“Java”); changeBook(jacksBook); System.out.println(jacksBook.getName()); } Prints Java. Why? book is local to changeBook, does not change jacksBook 19
20
public void changeBook(Book book) { book.setName(“Biology”); } public void doStuff() { Book jacksBook = new Book(“Java”); changeBook(jacksBook); System.out.println(jacksBook.getName()); } Prints Biology. Why? book contains the same address as jacksBook! 20
21
Write a bank account class for Harry Potter It needs to have the ability to track ◦ # of galleons ◦ # of sickles ◦ # of knuts ◦ 3 transaction types Deposit Withdrawal Inquiry 21
22
Would you like to make a transaction? y/n y Would you like to make a deposit (d), withdrawal (w), or inquire (i)? d How many galleons, sickles, and knuts would you like to deposit? Galleons: 5 Sickles: 6 Knuts: 4 Would you like to make a transaction? y/n y Would you like to make a deposit (d), withdrawal (w), or inquire (i)? w How many galleons, sickles, and knuts would you like to withdrawal? Galleons: 4 Sickles: 0 Knuts: 0 Would you like to make a transaction? y/n y Would you like to make a deposit (d), withdrawal (w), or inquire (i)? i You now have: 1 galleons 6 sickles 4 knuts 22
23
What are instance variables? Why private? What are the instance variables for our bank account program? ◦ What do we need to keep track of? 23
24
public class Account { private int galleons = 0; private int sickles = 0; private int knuts = 0; 24
25
getGalleons: int getSickles: int getKnuts: int setGalleons(int) setSickles(int) setKnuts(int) 25
26
public static void main(String[] args) { Account potter = new Account();. potter.deposit(5, 7, 9); public void deposit(int g, int s, int k) { galleons+=g; sickles+=s; knuts+=k; } 26
27
public static void main(String[] args) { Account potter = new Account();. potter.withdrawal(5, 7, 9); public void withdrawal(int g, int s, int k) { if((g > galleons) || (s > sickles) || (k > knuts)) { System.out.println("You do not have enough money"); } else { galleons -= g; sickles -= s; knuts -= k; } } 27
28
public void inquire() { System.out.println("You now have: " + galleons + " galleons " + sickles + " sickles " + knuts + " knuts"); } public static void main(String[] args) { Account potter = new Account();. potter.inquire(); 28
29
Midterm Review Bring questions about the Sample Midterm 29
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.