Okay, today we're going to get to a critical topic in object oriented program. So C++, so far has been a better C. And as a better C, it still can be used much as old standard Kernighan and Ritchie C was used. An imperative systems implementation language. Nothing changes. We just have improvements. So far, we've emphasized those improvements. But in today's lectures, we're going to talk about how you can become an object oriented programmer, using the methodology that was pioneered by the Smalltalk people at (Xerox) Parc in the 80's. And then when pushed by Bjarne Stroustrup at Bell Labs in the mid 85 release of the first form of C++, which caught on immediately, it just changed industry's perspective on using one language effectively for most problem domain. So OO lets us vastly expand the usability of the C language. And we're going to take as an example, a very, very simple example of, why we're doing that, is because something that you'll intuitively understand. It's a point in the x-y plane. We've been working with points ever since grade school. So that's a natural object to talk about. And then if you're following along in the text, the point at which you should be reading now is chapters 4 and 5. That begins to talk about classes and type extensibility, the OO characteristics of C++. So let's review your C programmers. You need to keep this in mind, when you go over to 00. So I'd like you to name three native types in C. And then if you have the expression 3 divide symbol 4, what is it's value? This is all in the context of C. And if you have the expressions 3.0 divided 4, what is its value? So all of you C programmers, this should be trivial. Okay. C, the native types, the native types of the C language, and therefore, the native types of the C++ language, include short, int, double, char, long, long double, int*, all sorts of basic pointer types. so these are any of these essential native types of language. Anything involving those types, you just declare them with those keywords that determine those types. And then you can use the language relatively easily and efficiently, if those types are expressive of the problem domain. 3 divide 4 is a 0, this always is a gotcha. Why? Because divide, when it sees two integer arguments it does integer division. So the full part of it, it does, it just falls off. It has to be in the next answer 3.0, which is a double literal. It's a constant in the double domain, and when you divide a double by an int, then you're in the double domain, and then you get the possibly intuitive answer is 3/4. So what we're learning from, from the C native types, is type matters. Type matters in a very important ways. And we have to be very careful about use of types, because use of types will also define the character of how the operator is determined, and will also define things which we will talk about later, which are conversion opportunities. All this gets more complex in C++, because in C++ we add to the native types, we extend the native types. That's the heart of object oriented programming.