# teaching machines

## CS 330 Lecture 21 – Object-oriented Programming

March 24, 2014 by . Filed under cs330, lectures, spring 2014.

### Agenda

• what ?s
• homework 3 – due before April 4
• textbook definition of OOP
• theorize this
• what does this do?
• Game of Life with Conditionals

### Theorize This

On your own: How might polymorphism work?

### What Does This Do?

1. class IntAndDouble {
public:
IntAndDouble() {}
private:
double d;
int i;
};

int main(int argc, char **argv) {
std::cout << sizeof(IntAndDouble) << std::endl;
return 0;
}

2. class TwoIntsAndDouble : public IntAndDouble {
public:
TwoIntsAndDouble() {}
private:
int j;
};

int main(int argc, char **argv) {
std::cout << sizeof(TwoIntsAndDouble) << std::endl;
return 0;
}

3. class IntAndDouble {
public:
IntAndDouble() {}
virtual int Get() const {
return i;
}
private:
double d;
int i;
};

class TwoIntsAndDouble : public IntAndDouble {
public:
TwoIntsAndDouble() {}
virtual int Get() const {
return j;
}
private:
int j;
};

int main(int argc, char **argv) {
std::cout << sizeof(IntAndDouble) << std::endl;
std::cout << sizeof(TwoIntsAndDouble) << std::endl;
return 0;
}

### Code

#### Sizeof.cpp

#include <iostream>

class IntAndDouble {
public:
/* IntAndDouble() {} */
/* int Get() { return i; } */
private:
/* double d; */
int i;
int j;
};

int main(int argc, char **argv) {
std::cout << sizeof(IntAndDouble) << std::endl;
return 0;
}