Rossella Lau Lecture 1, DCO10105, Semester B, DCO10105 Object-Oriented Programming and Design Lecture 1: Introduction What this course is about: C++ programming Object-Oriented programming concepts Good Programming practice Program design -- By Rossella Lau
Rossella Lau Lecture 1, DCO10105, Semester B, About C++ Created by Bjarne Stroustrup at Bell Lab about 1985 Maintains C (early 1980) with simpler usages O-O language Powerful, flexible With a Standard Library and a Standard Template Library Reference: An introduction to C++ for newbies:
Rossella Lau Lecture 1, DCO10105, Semester B, ANSI/ISO Standard C++ C++ programs are not always portable September 1998, IS14882 has been approved as an ANS most of today’s compilers comply with this standard GNU C++ compilers Visual C++ DevC++ The tool we will use in this course
Rossella Lau Lecture 1, DCO10105, Semester B, O-O programming concepts Usually three basic parts: Class construction data encapsulation Inheritance software reuse, encapsulation Polymorphism shorter/less programming
Rossella Lau Lecture 1, DCO10105, Semester B, Class Construction To create a template for object instantiation Inside the class, it defines the data and operations (method or function) Outside the class, it does not need to know the details of the data and operations Data Encapsulation
Rossella Lau Lecture 1, DCO10105, Semester B, Inheritance Parent-child relationship – base class and sub-class Sub-class inherits everything from the parent class Software reuse, encapsulation
Rossella Lau Lecture 1, DCO10105, Semester B, Polymorphism A sub-class can pretend its base classes A class allows for applying different data types through template An expression denotes different operations through dynamic binding Shorter/Less programming
Rossella Lau Lecture 1, DCO10105, Semester B, Good programming practice Documentation Comments Naming identifiers White space: indentation, blank lines, spaces Coding convention Usually there are rules, in addition to a programming language’s syntax, to be followed in order to make people in the same organization understand each other better Coding style Statement usages Reference: Guide lines for programming styles in this course
Rossella Lau Lecture 1, DCO10105, Semester B, Good practice I: Naming Convention Naming in a programming language is always Program id, method id, variables, constants To name an identifier, one should observe the rules in C++; or the id cannot get past the compiler, otherwise To follow a convention means even if an id’s name can pass the compiler, it should conform to some additional rules In this course, the Java naming convention should be followed
Rossella Lau Lecture 1, DCO10105, Semester B, Program Design Class design with UML (Unified Modeling Language) Diagram Object-Oriented Design (OOD) Encapsulation: combine data and operations in a unit Inheritance: create new objects from existing objects Polymorphism: same expression denotes different operations Program design using structured programming approach Top-down approach with step-wise refinement Design methods with C++ features: const, & (reference)
Rossella Lau Lecture 1, DCO10105, Semester B, #include using namespace std; int main() { float area; int r; float const PI = 3.14; cerr << "Please enter radius in whole number:\n"; cin >> r; area = PI * r * r; cout << "The radius you provided was " << r << " feet and the area is about " << area << " sq feet" << endl; return EXIT_SUCCESS; } A simple C++ program: cirArea.cpp Header file specification Location of header files C++ entrance, function header Beginning of function body Function body, C++ statements End of function body Data Declaration I/O objects Output operators Input operator Keyword to define constant Assignment with expression string Statement terminator system-defined id
Rossella Lau Lecture 1, DCO10105, Semester B, C++ program style For non-class programs: Header file specification Coming with the Standard Library (SL) or the Standard Template Library (STL) Whenever a function from the SL or the STL is used, its respective header files should be specified through this “Preprocessor directives” #include Location of header files E.g., using namespace std; std is ANSI/ISO standard where objects of iostream are located A collection of functions (or methods) main() is a necessary entrance point in a C++ program
Rossella Lau Lecture 1, DCO10105, Semester B, Preprocessor directives #include It is not a C++ statement It is processed through the “preprocessor” before the compiler has taken place Reference: Malik’s slides: 2:42-44
Rossella Lau Lecture 1, DCO10105, Semester B, The general process cycle of a C++ program Malik’s slide: 2:45
Rossella Lau Lecture 1, DCO10105, Semester B, Usual style of a function For each function: Function prototype (header) typeOfFunction functionID(parameterList) Function body: { C++ statements } Data declaration statements Executable statements Syntax of basic statements are the same as in Java; Reference: Malik’s slide 2:6-36, 39, 41
Rossella Lau Lecture 1, DCO10105, Semester B, Quick revision and sample statements Malik’s Exercises: 2:7 Do a walk-through to find the value assigned to e. Assume that all variables are properly declared. a = 3; b = 4; c = (a % b) * 6; d = c / b; e = (a + b + c + d) / 4;
Rossella Lau Lecture 1, DCO10105, Semester B, Quick revision and sample statements Malik’s Exercises: 2:8 Which of the following variable declarations are correct? If a variable declaration is not correct, give the reason(s) and o provide the correct variable declarations. n = 12; // Line 1 char letter = ; // Line 2 int one = 5, two; // Line 3 double x, y, z;d = c / b; // Line 4
Rossella Lau Lecture 1, DCO10105, Semester B, Quick revision and sample statements Malik’s Exercises: 2:9 Which of the following are valid C++ assignment statements? Assume that i, x, and percent are double variables. a. n = 12; b. x + 2 = x; c. x = 2.5 * x; d. percent = 10%;
Rossella Lau Lecture 1, DCO10105, Semester B, Quick revision and sample statements Malik’s Exercises: 2:10a-f Write C++ statements that accomplish the following. a. Declares int variables x and y. b. Initializes and int variable x to 10 and a char variable ch to ‘ B ’. c. Updates the value of an int variable x by adding 5 to it. d. Sets the value of a double variable z to e. Copies the content of an int variable y into an int variable z. f. Swaps the contents of the int variables x and y.
Rossella Lau Lecture 1, DCO10105, Semester B, Basic C++ data types Integral char, short, int, long, bool unsigned char, unsigned short, unsigned int, unsigned long Floating Point float, double, long couble Enumeration user-defined data types Note that string is not a basic data type in C++ but a class in the C++ STL
Rossella Lau Lecture 1, DCO10105, Semester B, Basic C++ Input statements E.g., cin >> r; cin is a predefined (in iostream) object which refers to input from keyboard >> the input operator or extraction operator r is the variable to store the values input from cin If r is a basic C++ data type variable, data conversion is not necessary as in Java Multiple extraction operators on a line E.g., cin >> length >> width;
Rossella Lau Lecture 1, DCO10105, Semester B, Basic C++ Output statement E.g., cout << r; cout is a predefined object which refers to output to screen There is another predefined output object cerr which also direct output to screen; it is a good practice to direct user prompt and error messages to cerr and normal output to cout << is the output operator or insertion operator Variable or literal value can be easily printed Multiple insertion operators on a line; e.g., cout << “The length is “ << length << endl;
Rossella Lau Lecture 1, DCO10105, Semester B, Output with new line endl is a predeined id and its value is ‘\n’ Usually, endl is used when the last insertion operand is an identifier; ‘ \n ’ is placed at the end of a literal string if the string is the last insertion operand, e.g., cout << length << “is input from the user\n”;
Rossella Lau Lecture 1, DCO10105, Semester B, Sample error removal on exercise Malik’s Exercise 2:18a #include const int prime =11,213; const rate = 15.6 int main() { int i, x, y, w; x = 7; y = 3; x = x + w; prime = x + prime; cout << prime << endl; wages = rate * 36.75; cout << “Wages = “ << wages << endl; return 0; }
Rossella Lau Lecture 1, DCO10105, Semester B, Sample coding on exercises Malik’s Programming Exercises: 2: 8 Write a program that prompts the user to input five decimal numbers. The program should then add the five decimal numbers, convert the sum to the nearest integer, and print the result. Malik’s Programming Exercises: 2: 11 Write a C++ program that prompts the user to input the elapsed time fr an event in seconds. The program then outputs the elapsed time in hours, minutes, and seconds. (For example, if the elapsed time is 9630 seconds, then the output is 2:40:30.)
Rossella Lau Lecture 1, DCO10105, Semester B, Some major differences from Java An independent executable module Not necessary to be a class inside a program Using template much more than inheritance and dynamic binding An object can be referenced in three forms: a real object, a pointer, and a reference. Does not have a “standard web site” for on-line documentation Some on-line sites can be found through the Helpful links under the course page
Rossella Lau Lecture 1, DCO10105, Semester B, Summary This course focus on C++ programming with advanced concepts in O-O design C++ basic syntax is the same as Java except for program style and, of course, usage of functions in its own libraries Before a C++ compiler is taken place, pre-process must be performed first C++ input statement is easier than Java as it does not need numeric data conversion
Rossella Lau Lecture 1, DCO10105, Semester B, Reference Malik: 1.9, 2, 13.3 An introduction to C++ for newbies: -- END --