1 An Overview of Object-Oriented Programming and C++ Object-Oriented Programming Using C++ Second Edition 1 Objectives • In this chapter, you will learn: • About the task of programming • About programming universals • About procedural programming • About object-oriented programming • About the C++ programming environment • How to create a main() function 1 Objectives • In this chapter, you will learn: • How to work with variables and the const qualifier • How to create comments • How to use libraries and preprocessor directives • How to use cout and cin • How to work with classes 1 The Task of Programming • Programming a computer involves writing instructions that enable a computer to carry out a single task or a group of tasks • A computer programming language requires learning both vocabulary and syntax • Programmers use many different programming languages, including BASIC, Pascal, COBOL, RPG, and C++ • The rules of any language make up its syntax • Machine language is the language that computers can understand; it consists of 1s and 0s 1 The Task of Programming • A translator (called either a compiler or an interpreter) checks your program for syntax errors • A logical error occurs when you use a statement that, although syntactically correct, doesn’t do what you intended • You run a program by issuing a command to execute the program statements • You test a program by using sample data to determine whether the program results are correct 1 Programming Universals • All programming languages provide methods for directing output to a desired object, such as a monitor screen, printer or file • Similarly, all programming languages provide methods for sending input into the computer program so that it can be manipulated • In addition, all programming languages provide for naming locations in computer memory • These locations commonly are called variables (or attributes) 1 Programming Universals • Ideally, variables have meaningful names, although no programming language actually requires that they meet this standard • A variable may have only one value at a time, but it is the ability of memory variables to change in value that makes computers and programming worthwhile • In many computer programming languages, including C++, variables must be explicitly declared, or given a data type as well as a name, before they can be used 1 Programming Universals • The type determines what kind of values may be stored in a variable • Most computer languages allow at least two types: one for numbers and one for characters • Numeric variables hold values like 13 or -6 • Character variables hold values like ‘A’ or ‘&’ • Many languages include even more specialized types, such as integer (for storing whole numbers) or floating point (for storing numbers with decimal places) 1 Procedural Programming • Procedural programs consist of a series of steps or procedures that take place one after the other • The programmer determines the exact conditions under which a procedure takes place, how often it takes place, and when the program stops • Programmers write procedural programs in many programming languages, such as COBOL, BASIC, FORTRAN, and RPG • You can also write procedural programs in C++ 1 Early Procedural Programs • When programming languages were first used, the programmer’s job was to break a task into small, specific steps • Each step was then coded in an appropriate language • Three basic control structures are used in procedural programming • In the first structure, a sequence, program steps execute one after another, without interruption 1 Early Procedural Programs • Procedural programs also can include a second control structure called selection, which you use to perform different tasks based on a condition 1 Early Procedural Programs • The third control structure used in computer programs is the loop • some programmers call the loop structure a repetition or iteration structure 1 Adding a Loop to a Simple Procedural Billing Program 1 Modularity and Abstraction • Programming in the oldest procedural languages had two major disadvantages: – The programming process involved so much detail that the programmer (and any person reading the program) lost sight of the big picture – Similar statements required in various parts of the program had to be rewritten in more than one place • Writing programs became easier when programming languages began to allow the programmer to write methods • Using methods allows programmers to group statements together into modules or routines 1 Modularity and Abstraction 1 The Procedural Billing Program Containing Several Module Calls 1 Encapsulation • Modules or procedures act somewhat like relatively autonomous mini-programs • Not only can modular routines contain their own sets of instructions, but most programming languages allow them to contain their own variables as well • The variables and instructions within a module are hidden and contained —that is encapsulated—which helps to make the module independent of all other modules, and therefore reusable 1 Object-Oriented Programming • Object-oriented programming requires a different way of thinking and adds several new concepts to programming; – You analyze the objects with which you are working—both the attributes of those objects and the tasks that need to be performed with and on those objects – You pass messages to objects, requesting the objects to take action – The same message works differently when applied to the various objects 1 Object-Oriented Programming – A method can work appropriately with different types of data it receives, without the need for separate method names – Objects can share or inherit traits of previously created objects, thereby reducing the time it takes to create new objects – Information hiding is more complete than in procedural programs 1 Object-Oriented Programming • The basic principles behind using objectoriented programming techniques involve: – Objects – Classes – Inheritance – Polymorphism 1 Objects and Classes • An object is any thing • A class consists of a category of things • An object is a specific item that belongs to a class; it is called an instance of a class • A class defines the characteristics of its objects and the methods that can be applied to its objects • It is conventional, but not required, to begin object names with a lowercase letter, and to begin class names with an uppercase letter 1 Inheritance • The concept of using classes provides a useful way to organize objects; it is especially useful because classes are reusable or extensible • You can create new classes that extend or are descendants of existing classes • The descendent classes can inherit all the attributes of the original (or parent) class, or they can override inappropriate attributes 1 Polymorphism • Programming modules might occasionally need to change the way they operate depending on the context • Object-oriented programs use polymorphism to carry out the same operation in a manner customized to the object • Without polymorphism you would have to use a separate module or method name for a method that multiplies two numbers and one that multiplies three numbers • Without polymorphism you would have to create separate module names for a method that cleans a Dish object, one that cleans a Car object, and one that cleans a Baby object 1 Getting Started in the C++ Programming Environment • Depending on your C++ installation, you can access the compiler by clicking an icon, selecting from a menu, or typing a command • The main work area in any C++ programming environment is the editor • An editor is a simplified version of a word processor in which you type your program statements, or source code • After you enter the source code for a program, you must compile the program 1 Getting Started in the C++ Programming Environment • When you compile, the code you have written is transformed into machine language—the language that the computer can understand • The output from the compilation is object code • When a C++ program is compiled, a file is created that has the same filename as the source code, but has the extension .obj • A runnable, or executable, program needs the object code as well as code from any outside sources (other files) to which it refers 1 Getting Started in the C++ Programming Environment • The process of integrating these outside references is called linking • An executable file contains the same filename as the source code and the object code, but carries the extension .exe to distinguish it as a program • When you compile a C++ program, error messages and/or warnings might appear • A C++ program with errors will not execute; you must eliminate all error messages before you can run the program 1 Creating a main( ) Function • C++ programs consist of modules called functions • Every statement within every C++ program is contained in a function • Every function consists of two parts: – A function header is the initial line of code in a C++ which always has three parts: • Return type of the function • Name of the function • Types and names of any variables enclosed in parentheses, and which the function receives – A function body 1 Creating a main( ) Function • A C++ program may contain many functions, but every C++ program contains at least one function, and that function is called main( ) • If the main function does not pass values to other programs or receives values from outside the program, then main( ) receives and returns a void type • The body of every function in a C++ program is contained in curly braces, also known as curly brackets 1 Creating a main( ) Function • Every complete C++ statement ends with a semicolon • Often several statements must be grouped together, as when several statements must occur in a loop • In such a case, the statements have their own set of opening and closing braces within the main braces, forming a block 1 Working with Variables • In C++, you must name and give a type to variables (sometimes called identifiers) before you can use them • Names of C++ variables can include letters, numbers, and underscores, but must begin with a letter or underscore • No spaces or other special characters are allowed within a C++ variable name • Every programming language contains a few vocabulary words, or keywords, that you need in order to use the language 1 Common C++ Keywords 1 Working with Variables • A C++ keyword cannot be used as a variable name • Each named variable must have a type • C++ supports three simple types: – Integer — Floating point — Character • An integer is a whole number, either positive or negative • An integer value may be stored in an integer variable declared with the keyword int • You can also declare an integer variable using short int and long int 1 Working with Variables • Real or floating-point numbers are numbers that include decimal positions, such as 98.6, 1000.00002, and -3.85 • They may be stored in variables with type float, double, and long double • Characters may be stored in variables declared with the keyword char • A character may hold any single symbol in the ASCII character set • Often it contains a letter of the alphabet, but it could include a space, digit, punctuation mark, arithmetic symbol, or other special symbol 1 Working with Variables • In C++, a character value is always expressed in single quotes, such as ‘A’ or ‘&’ • To declare a variable, you list its type and its name • In addition, a variable declaration is a C++ statement, so it must end with a semicolon • If you write a function that contains variables of diverse types, each variable must be declared in a statement of its own • If you want to declare two or more variables of the same type, you may declare them in the same statement 1 Working with Variables • Explicitly stating the value of a variable is called assignment, and is achieved with the assignment operator = • The variable finalScore is declared and assigned a value at the same time • Assigning a value to a variable upon creation is often referred to as initializing the variable 1 The const Qualifier • A variable that does not change in a program should not be declared as a variable • Instead, it should be a constant • The statement const double MINIMUM_WAGE = 5.75; declares a constant named MINIMUM_WAGE that can be used like a variable, but cannot be changed during a program 1 Creating Comments • Comments are statements that do not affect the compiling or running of a program • Comments are simply explanatory remarks that the programmer includes in a program to clarify what is taking place • These remarks are useful to later program users because they might help explain the intent of a particular statement or the purpose of the entire program • C++ supports both line comments and block comments 1 Creating Comments • A line comment begins with two slashes (//) and continues to the end of the line on which it is placed • A block comment begins with a single slash and an asterisk (/*) and ends with an asterisk and a slash (*/); it might be contained on a single line or continued across many lines 1 Using Libraries and Preprocessor Directives • Header files are files that contain predefined values and routines, such as squrt( ) • Their filenames usually end in .h • In order for your C++ program to use these predefined routines, you must include a preprocessor directive, a statement that tells the compiler what to do before compiling the program • In C++, all preprocessor directives begin with a pound sign (#), which is also called an octothorp • The #include preprocessor directive tells the compiler to include a file as part of the finished product 1 C++ Output • C++ provides several objects for producing output • The simplest object is called cout, pronounced “see out” • When contained in a complete C++ program, the statement cout<<“Hi there”; places the phrase “Hi there” on the monitor 1 C++ Output • To indicate a newline character, you can use the escape sequence \n • Another way to advance output to a new line is to use the end line manipulator endl • Inserting endl into the output stream causes a new line plus all waiting output to become visible, a process called flushing the buffer • To create a program that declares two variables, assigns values to them, and creates output, perform the steps on pages 21 to 23 of the textbook 1 Program Listing for Output1.cpp 1 Output of Output1.cpp 1 C++ Input • Many programs rely on input from a user • These are called interactive programs because the user interacts with the program statements • You create prompts by using the cout object; you retrieve user responses by using the cin object • The cin (pronounced see in) object fetches values from the keyboard • It is used with the extraction operator >> • Prior to a cin statement, it is almost always necessary to provide the user with a prompt, or a short explanation of what is expected 1 C++ Input • Whitespace consists of any number of spaces, tabs, and Enter characters • You will add prompts and interactive input to the Output1.cpp program by following the instructions shown on pages 24 and 25 of the textbook 1 Output of Output2.cpp 1 C++ Classes and Objects • When you use data types like int, char, and double within a program, you are using the C++ built-in, primitive or scalar data types • A major feature of object-oriented languages is the ability to create your own new, complex data types • These new types are called classes • A class can contain many simpler data types within it, as well as any number of functions • The relationship between these components, or fields, is often called a has-a relationship 1 C++ Classes and Objects 1 A Complete Class Definition and a main( ) Method that Uses a Class Object 1 C++ Classes and Objects • You will create a Student class, and then create a program that uses a Student class object using the procedures outlined on pages 27 and 28 of the textbook • Creating a class provides a means to group data fields together in a logical way 1 Summary • Programming a computer involves learning the syntax of a computer programming language and resolving logical errors • All programming languages provide methods for input and output of variable values • You declare a variable by providing it with a name and a type • Procedural programs consist of a series of steps or procedures that take place one after the other • Object-oriented programming adds several new programming concepts including objects, classes, inheritance, and polymorphism 1 Summary • You write a C++ program by typing source code into an editor and compiling the program • C++ modules are called functions, and each function contains a header and a body • C++ variables must be given a type and a name • Simple types include integer for whole numbers, double and float for floating-point values, and character for any character • Comments are non-executing program statements 1 Summary • C++ supports line comments and block comments • A preprocessor directive tells the compiler to do something, such as to include a header file, before compiling the program • The cout statement (along with an insertion operator) is used to display values • When you create a class, you create your own C++ data type, which is a complex type composed of simpler types