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
- Read http://www.insomniacgames.com/tech/articles/0308/three_big_lies.php. (This page rendered improperly for me; I had to highlight the text to read it.)
- Read http://hacksoflife.blogspot.com/2008/04/what-is-oop-good-for.html.
- What do you think? 1/4 sheet.
Theorize This
On your own: How might polymorphism work?
With a neighbor: convince your neighbor that your theory is right.
What Does This Do?
class IntAndDouble { public: IntAndDouble() {} private: double d; int i; }; int main(int argc, char **argv) { std::cout << sizeof(IntAndDouble) << std::endl; return 0; }
class TwoIntsAndDouble : public IntAndDouble { public: TwoIntsAndDouble() {} private: int j; }; int main(int argc, char **argv) { std::cout << sizeof(TwoIntsAndDouble) << std::endl; return 0; }
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
- http://www.antiifcampaign.com
- http://www.refactoring.com/catalog/replaceConditionalWithPolymorphism.html
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”
I went and dug up his dad
“Gramps, make him say yes”