---
# System prepended metadata

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

---

---
tags: Setup
---

# Lecture 4 Setup/Prep

In lecture 4, we will learn 
- how to share helper functions and common fields across classes

We will continue building on the `Dillo`, `Boa`, and `Zoo` example from lecture 3. Download the [starter zip file for `lec04`](https://brown-cs18-master.github.io/content/lectures/04absclasses/initcode/lec04.zip). You can unzip this into your lectures project's `src` directory within IntelliJ.

Remember to use `Right-Click-on-lec03 -> Mark Directory As -> Excluded` to hide your `lec03` directory while we work on `lec04`.

## Prep
Last class, we saw the idea of an *interface* as the way to create a new type name in Java. In lecture 4, we'll build on that idea to better understand Java types, and add a helper function that should work with both `Dillo` and `Boa`.

Our goal today is to learn how to design the `Dillo` and `Boa` classes to support the following `Zoo` class (which is already in the lec04 starter zip):

```
public class Zoo {
    IAnimal animal1;
    IAnimal animal2;

    public Zoo(IAnimal ani1, IAnimal ani2) {
        this.animal1 = ani1;
        this.animal2 = ani2;
    }

    /**
     Checks whether all animals in the zoo are normal size
     @return string indicating whether check passed or failed
     **/
    public String healthCheck() {
        if (animal1.isNormalSize() && animal2.isNormalSize()) {
            return "Passed";
        }
        else {
            return "Failed";
        }
    }
}
```
We will say that a normal size `Boa` has length between 12 and 24 (inclusive) and a normal size `Dillo` has length between 30 and 60 (inclusive).

Things to think about:

- In which class should we write the `isNormalSize` method? 
- Given that the `isNormalSize` computation is similar across `Boa` and `Dillo`, might we want a helper function? If so, where should that go?
