Lecture 1 -- Introduction

Download Report

Transcript Lecture 1 -- Introduction

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,2005-6
About C++
 Created
by Bjarne Stroustrup at Bell Lab about
1985
 Maintains
 O-O
C (early 1980) with simpler usages
language
 Powerful,
flexible
 With
a Standard Library and a Standard Template
Library
 Reference: An
introduction to C++ for newbies:
http://www.cprogramming.com/begin.html
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6
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,2005-6
O-O programming concepts
Usually three basic parts:
 Class
construction  data encapsulation
 Inheritance
 software reuse, encapsulation
 Polymorphism
Rossella Lau
 shorter/less programming
Lecture 1, DCO10105, Semester B,2005-6
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,2005-6
Inheritance
 Parent-child
 Sub-class
relationship – base class and sub-class
inherits everything from the parent class
 Software reuse, encapsulation
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6
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,2005-6
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,2005-6
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
follow a convention means even if an id’s name can
pass the compiler, it should conform to some
additional rules
 To
 In
this course, the Java naming convention should be
followed
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6
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
Rossella Lau
methods with C++ features: const, &(reference)
Lecture 1, DCO10105, Semester B,2005-6
A simple C++ program: cirArea.cpp
Header file specification
#include <iostream>
using namespace std;
Location of header files
int main() {
Beginning of function body
float area;
C++ entrance, function header
Data Declaration
int
r;
Keyword to define constant
float const PI = 3.14;
cerr << "Please enter radius in whole number:\n";
>> r; Input operator
string
I/O objects cin
area = PI * r * r;
Assignment with expression
cout << "The radius you provided was " << r
<< " feet and the area is about " << area
<< " sq feet" << endl;
Output
operators
Statement
terminator
return EXIT_SUCCESS;
system-defined id
Function body, C++ statements
}
End of function body
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6
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 <headerName>

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,2005-6
Preprocessor directives
 #include
 It
<headerName>
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,2005-6
The general process cycle of a C++ program
Malik’s slide: 2:45
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6
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,2005-6
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
b
c
d
e
=
=
=
=
=
3;
4;
(a % b) * 6;
c / b;
(a + b + c + d) / 4;
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6
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;
char letter = ;
int one = 5, two;
double x, y, z;d = c / b;
Rossella Lau
//
//
//
//
Line
Line
Line
Line
1
2
3
4
Lecture 1, DCO10105, Semester B,2005-6
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.
b.
c.
d.
n = 12;
x + 2 = x;
x = 2.5 * x;
percent = 10%;
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6
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 25.3.
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,2005-6
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,2005-6
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,2005-6
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,2005-6
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,2005-6
Sample error removal on exercise
 Malik’s
Exercise 2:18a
#include <iostream>
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,2005-6
Sample coding on exercises
 Malik’s

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: 8
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,2005-6
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,2005-6
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,2005-6
Reference
 Malik:
1.9, 2, 13.3
 An
introduction to C++ for newbies:
http://www.cprogramming.com/begin.html
-- END --
Rossella Lau
Lecture 1, DCO10105, Semester B,2005-6