CS 330 Lecture 21 – Object-oriented Programming

Agenda

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

TODO

Theorize This

On your own: How might polymorphism work?

With a neighbor: convince your neighbor that your theory is right.

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;
    }

Polymorphism without Conditions

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;
}

Haiku

Dad said, “You can’t go”
I went and dug up his dad
“Gramps, make him say yes”

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *