Object-Oriented Programming Using C++ Third Edition Chapter 1 An Overview of Object-Oriented Programming and C++ Objectives • • • • • Learn about the task of programming Examine programming universals Explore procedural programming Be introduced to object-oriented programming Get started in the C++ programming environment Object-Oriented Programming Using C++, Third Edition 2 Objectives (continued) • Work with variables and the const qualifier • Create comments • Examine the differences between ANSI/ISO C++ and Standard C++ • Produce C++ output with cout and provide input with cin • Begin to work with data structures and classes Object-Oriented Programming Using C++, Third Edition 3 The Task of Programming • Programming: writing instructions that enable a computer to carry out tasks • Programs are frequently called applications • Learning a computer programming language requires learning both vocabulary and syntax • The rules of any language make up its syntax • Types of errors: – Syntax errors – Logical errors • Semantic errors Object-Oriented Programming Using C++, Third Edition 4 The Task of Programming (continued) • Machine language: language that computers can understand; it consists of 1s and 0s • Interpreter: program that translates programming language instructions one line at a time • Compiler: translates entire program at one time • Run a program by issuing a command to execute the program statements • Test a program by using sample data to determine whether the program results are correct Object-Oriented Programming Using C++, Third Edition 5 Programming Universals • Language provides methods for directing output to an object and for sending input into the program • Variables: named locations in computer memory – “What is yourAge?” – – – – Languages define rules for naming variables Should have meaningful names May have only one value at a time Must be explicitly declared sometimes Object-Oriented Programming Using C++, Third Edition 6 Programming Universals (continued) • Data type: defines what kind of values may be stored in a variable and what kind of operations can be performed on it – Numeric • -6 – Character • ‘&’ – Floating point • 37.56 – Some languages let you create your own types Object-Oriented Programming Using C++, Third Edition 7 Procedural Programming • Procedural programs: consist of a series of steps or procedures that take place one after the other • Procedural Languages: – – – – – COBOL BASIC FORTRAN RPG C++ • Procedural programming techniques have evolved into object-oriented techniques Object-Oriented Programming Using C++, Third Edition 8 Early Procedural Programs Object-Oriented Programming Using C++, Third Edition 9 Control Structures • Control structures: logic components in programs • Sequence structure: steps execute one after another, without interruption • Selection structure: used to perform different tasks based on a condition • Loop structure: repeats actions while some condition remains unchanged Object-Oriented Programming Using C++, Third Edition 10 Selection Structure Object-Oriented Programming Using C++, Third Edition 11 Loop Structure Object-Oriented Programming Using C++, Third Edition 12 Modularity and Abstraction • Modules: functions, procedures, methods, subprograms, subroutines, or simply routines Object-Oriented Programming Using C++, Third Edition 13 Modularity and Abstraction (continued) • Using the method’s name to cause execution of the statements within the method is known as calling a method Object-Oriented Programming Using C++, Third Edition 14 Modularity and Abstraction (continued) • The program in Figure 1-6 is more concise that the previous program; it is also more abstract • Abstraction: paying attention to important properties while ignoring details Object-Oriented Programming Using C++, Third Edition 15 Encapsulation • The variables and instructions within a module are encapsulated, which helps make the module independent of other modules and reusable • You can interact with an encapsulated module by using its interface, without knowing its inner details • Reusing existing systems improves reliability • To call a module, you need to know some details – A better approach is object-oriented programming Object-Oriented Programming Using C++, Third Edition 16 Object-Oriented Programming • Objects have attributes and can take actions • You can pass messages to objects, so that they take action • The same message works differently when applied to the various objects • A method can work appropriately with different types of data • Objects can inherit traits of previously created objects • Information hiding is more complete than in procedural programs Object-Oriented Programming Using C++, Third Edition 17 Objects and Classes • • • • An object is any thing A class consists of a category of things An object is an instance of a class Is-a relationship: – “myBlueCerealBowl is a Dish” • Convention is to begin object names with a lowercase letter and class names with an uppercase letter Object-Oriented Programming Using C++, Third Edition 18 Inheritance • Classes are extensible • You can create new classes that extend or are descendents of existing classes • The descendent classes can inherit all the attributes of the parent class, or they can override inappropriate attributes – In geometry, a Cube is a descendent of a Square – A Cube has all of a Square’s attributes, plus one additional characteristic: depth Object-Oriented Programming Using C++, Third Edition 19 Polymorphism • Programming modules are sometimes needed 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 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 – With polymorphism, you create a single “clean” method Object-Oriented Programming Using C++, Third Edition 20 Getting Started in the C++ Programming Environment • Use an editor to type your source code • Compile a program to transform it to machine language – Produces object code • An executable program needs the object code and code from outside sources to which it refers – Integrating these outside references is called linking • When compiling, error messages or warnings may appear Object-Oriented Programming Using C++, Third Edition 21 Creating a main() Function • Function parts: header and body • Function header: – Return type of the function – Name of the function – Types and names of any variables enclosed in parentheses, and which the function receives Object-Oriented Programming Using C++, Third Edition 22 Working with Variables and the const Qualifier • Must provide an identifier to each variable before you can use it – Also provide identifiers for functions, structures, and classes • Identifiers can include letters, numbers, and underscores, but they must begin with a letter or underscore camel casing • Examples: Age, lastName, tax_2006, ready2go, salary, Salary, and SALARY Object-Oriented Programming Using C++, Third Edition 23 Object-Oriented Programming Using C++, Third Edition 24 Simple Data Types in C++ • int – For example, 4, -7, 15000 – Also, short int and long int • char – For example, ‘A’ or ‘&’ • bool – For example, true or false – Some older compilers do not support this data type • float, double, and long double – For example, 12.25 Object-Oriented Programming Using C++, Third Edition 25 Declaring Variables • Variables may be declared anywhere but cannot be used until after they are declared int main() { Or: int myAge, yourAge; int myAge; int yourAge; char myMiddleInitial; double myMoney, yourMoney; } Object-Oriented Programming Using C++, Third Edition 26 Declaring Variables (continued) Lvalue Object-Oriented Programming Using C++, Third Edition 27 The const Qualifier • A quantity that does not change in a program should not be declared as a variable • Instead, it should be a named constant const double MINIMUM_WAGE = 5.75; • const is a qualifier: a word that qualifies, or restricts, the ordinary capabilities of the named type (such as double) Object-Oriented Programming Using C++, Third Edition 28 Creating Comments Object-Oriented Programming Using C++, Third Edition 29 ANSI/ISO Standard C++ • C++ evolved from a language named C • 1980s: C++ was designed by Bjarne Stoustrup at Bell Labs – Several compilers were developed for C++, and the language evolved in slightly different ways • 1990s: a joint committee of the American National Standards Institute (ANSI) and the International Standard Organization (ISO) standardized the syntax – ANSI/ISO Standard – Supported by most newer compilers Object-Oriented Programming Using C++, Third Edition 30 Using Libraries, Preprocessor Directives, and namespace • Header files: files that contain predefined values and routines, such as sqrt() – Usually have no extension or end in .h – Must include a preprocessor directive in the program • Preprocessor directives begin with a pound sign (#) • #include preprocessor directive tells the compiler to include a file as part of the finished product • For example, #include <iostream> • Namespace: mechanism for grouping features you want to include in a program – For example, using namespace std; Object-Oriented Programming Using C++, Third Edition 31 Object-Oriented Programming Using C++, Third Edition 32 Producing C++ Output • C++ provides several objects for producing output • The simplest object is called cout – The name comes from Console OUTput – For example, cout<<"Hi there"; – Must include iostream • And using namespace std; in ANSI/ISO C++ – You can use ’\n’ or endl to insert a newline character • cout<<"Hi"<<endl<<"there"; Object-Oriented Programming Using C++, Third Edition 33 Producing C++ Output (continued) Object-Oriented Programming Using C++, Third Edition 34 Providing C++ Input • Interactive programs must provide a way for the user to enter responses to program prompts • The cin object fetches values from the keyboard – – – – Used with the extraction operator (>>) For example, cin>>quantity; Must include iostream Can enter more than one value: int score1, score2, score3; cout<<"Please enter 3 scores. Use a space between them. "; cin>>score1>>score2>>score3; – Whitespace consists of any number of spaces, tabs, and Enter characters Object-Oriented Programming Using C++, Third Edition 35 Providing C++ Input (continued) Object-Oriented Programming Using C++, Third Edition 36 A First Look at Data Structures and Classes • Primitive or scalar types: int, char, double • C++ supports two ways to create your own complex data types: structures and classes – For example, you might create an Employee structure or class with components such as firstName, lastName, hourlySalary, numberOfDependents, and hireDate – The relationship between these fields of the Employee class is often called a has-a relationship Object-Oriented Programming Using C++, Third Edition 37 A First Look at Data Structures and Classes (continued) fields are public Object-Oriented Programming Using C++, Third Edition fields are private 38 Object-Oriented Programming Using C++, Third Edition 39 You Do It Object-Oriented Programming Using C++, Third Edition 40 Modifying a Program to Accept Input Values cout<<"Please enter your credit hours "; cin>>creditHours; cout<<"Please enter your grade point average "; cin>>gradePointAverage; Object-Oriented Programming Using C++, Third Edition 41 Creating a Simple Structure struct Student { int creditHours; double gradePointAverage; }; Object-Oriented Programming Using C++, Third Edition 42 Summary • Programming a computer includes: – Learning the syntax of a programming language – Resolving logical errors • Programming languages provide methods for input and output of variable values • 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 Object-Oriented Programming Using C++, Third Edition 43 Summary (continued) • 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 • Comments are nonexecuting program statements • A preprocessor directive tells the compiler to do something before compiling the program • Use cout and cin to display and read values • When you create a data structure or class, you create your own C++ data type Object-Oriented Programming Using C++, Third Edition 44