Presentation is loading. Please wait.

Presentation is loading. Please wait.

Catie Welsh March 2, 2011.  Program 3 due tonight by 11:59pm  Lab 5 due Friday by 1pm  Sample Midterm is posted on course website ◦ Solutions will.

Similar presentations


Presentation on theme: "Catie Welsh March 2, 2011.  Program 3 due tonight by 11:59pm  Lab 5 due Friday by 1pm  Sample Midterm is posted on course website ◦ Solutions will."— Presentation transcript:

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


Download ppt "Catie Welsh March 2, 2011.  Program 3 due tonight by 11:59pm  Lab 5 due Friday by 1pm  Sample Midterm is posted on course website ◦ Solutions will."

Similar presentations


Ads by Google