---
# System prepended metadata

title: Lecture 6 Setup/Prep
tags: [Setup]

---

---
tags: Setup
---

# Lecture 6 Setup/Prep

This lecture will cover three topics:
- Updating values stored in fields
- Showing how field updates interact with the environment and the heap
- Discussing what it means for two objects to be "equal"

We will work with the following two classes. During lecture, we will add a method to update the room in which a Course meets. 

```
public class Course { 
  String dept;
  int number;
  String room;
  
  public Course(String dept, int num, String rm) {     
    this.dept = dept;
    this.number = num;
    this.room = rm;
  }
}

public class Student { 
  String name;
  Course course1;
  
  public Student(String name, Course c) { 
    this.name = name;
    this.course1 = c;
  } 
}
```

There are a couple of different ways we could update the room for a course, and they have different implications for how our code behaves. We will study those implications using the following test class (note: this won't compile yet because we haven't yet written `newRoom`):

```
public class RegistrarTest {
 
  public RegistrarTest(){}
  
  public static void main(String[] args) {
    Course cs18 = new Course("csci", 18, "BERT 130"); 
    Student mary = new Student("mary smith", cs18);
    Student ari = new Student("ari aman", cs18);
    cs18.newRoom("SAL 001");
    Student li = new Student("wang li", cs18);
    System.out.println(li.course1.room); 
  }
}
```

## Prep

Familiarize yourself with these classes so we can get right to work using them. 

Also, be prepared with a way to draw memory layouts (whether on paper or a drawing tool) -- we'll be doing a decent bit of drawing-based work during lecture.

If you want to think ahead a bit, draw out the environment and heap contents that would be in place before the call to `newRoom` when running the `main` method in the test class (we will do this together during lecture as well).