Object Oriented Programmi NG Language

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 31

C++

GRAMMING L ANGUAGE .
OBJECT ORIENTED PRO
ABOUT C++ AND WHY C++
C++ WAS DEVELOPED BY BJARNE STROUSTRUP IN BELL LABORATORY.
IT IS BASED ON OOPS. THIS IS NOT PURE OBJECT ORIENTED .
IT IS ADVANCE VERSION OF C AND FIRST TIME IT STANDARISE 1998 BY ISO ANCI C/C99.
C++ IS KNOWN TO BE A VERY POWERFUL LANGUAGE.

C++ ALLOWS YOU TO HAVE A LOT OF CONTROL AS TO HOW YOU USE COMPUTER RESOURCES, SO IN THE RIGHT HANDS, ITS SPEED
AND ABILITY TO CHEAPLY USE RESOURCES SHOULD BE ABLE TO SURPASS OTHER LANGUAGES.

AS A STATICALLY TYPED LANGUAGE, C++ IS GENERALLY MORE PERFORMANT THAN DYNAMICALLY TYPED
LANGUAGES BECAUSE THE CODE IS TYPE-CHECKED BEFORE IT IS EXECUTED.
Q: WHAT IS C++ GOOD AT?
• C++ EXCELS IN SITUATIONS WHERE HIGH PERFORMANCE AND PRECISE CONTROL OVER MEMORY AND OTHER RESOURCES IS NEEDED. HERE ARE A FEW
COMMON TYPES OF APPLICATIONS THAT MOST LIKELY WOULD BE WRITTEN IN C++:

• VIDEO GAMES
• REAL-TIME SYSTEMS (E.G. FOR TRANSPORTATION, MANUFACTURING, ETC…)
• HIGH-PERFORMANCE FINANCIAL APPLICATIONS (E.G. HIGH FREQUENCY TRADING)
• GRAPHICAL APPLICATIONS AND SIMULATIONS
• PRODUCTIVITY / OFFICE APPLICATIONS
• EMBEDDED SOFTWARE
• AUDIO AND VIDEO PROCESSING
• ARTIFICIAL INTELLIGENCE AND NEURAL NETWORKS
HOW DOES THE PROGRAM COMPILE AND TEST?
OBJECT ORIENTED PROGRAMMING LANGUAGE
BASICS OF TYPICS C++ ENVIRONMENT
What are Preprocessor Directives ?
The preprocessors are the directives, which give instructions to the compiler to preprocess the information before
actual compilation starts.
All preprocessor directives begin with #, and only white-space characters may appear before a preprocessor
directive on a line.
Preprocessor directives are not C++ statements, so they do not end in a semicolon (;).
You already have seen a #include directive in all the examples. This macro is used to include a header file into
the source file.
There are number of preprocessor directives supported by C++ like #include, #define, #if, #else, #line, etc. Let us
see important directives
Types of Pre-Processor :
#define : #define PI 3.146
#define : #define <iostream>
#define MIN(a,b) (((a)<(b)) ? a : b)
#ifdef DEBUG
cerr <<”Variable x = “ << x << endl;
#endif
Header Files :
Header files contain definitions of Functions and Variables, which
is imported or used into any C++ program by using the pre-
processor #include statement. Header file have an extension “.h”
which contains C++ function declaration and macro definition.
HEADER FILE
WHAT ARE NAMESPACES ?
• A NAMESPACE IS DESIGNED TO OVERCOME THIS DIFFICULTY AND IS USED AS ADDITIONAL
INFORMATION TO DIFFERENTIATE SIMILAR FUNCTIONS, CLASSES, VARIABLES ETC. WITH THE SAME
NAME AVAILABLE IN DIFFERENT LIBRARIES. USING NAMESPACE, YOU CAN DEFINE THE CONTEXT IN
WHICH NAMES ARE DEFINED

• SAME SITUATION CAN ARISE IN YOUR C++ APPLICATIONS. FOR EXAMPLE, YOU MIGHT BE WRITING
SOME CODE THAT HAS A FUNCTION CALLED XYZ() AND THERE IS ANOTHER LIBRARY AVAILABLE
WHICH IS ALSO HAVING SAME FUNCTION XYZ(). NOW THE COMPILER HAS NO WAY OF KNOWING
WHICH VERSION OF XYZ() FUNCTION YOU ARE REFERRING TO WITHIN YOUR CODE.
USING NAMESPACE
DIFFERENT VERSION OF C++
WHAT ARE MACROS ? & PRE DEFINED C++ MACOS
A MACRO IS A FRAGMENT OF CODE WHICH HAS BEEN GIVEN A NAME. WHENEVER THE NAME
IS USED, IT IS REPLACED BY THE CONTENTS OF THE MACRO.
OOPS

• OBJECT-ORIENTED PROGRAMMING (OOP) REFERS TO A TYPE OF COMPUTER


PROGRAMMING (SOFTWARE DESIGN) IN WHICH PROGRAMMERS DEFINE
NOT ONLY THE DATA TYPE OF A DATA STRUCTURE, BUT ALSO THE TYPES OF
OPERATIONS (FUNCTIONS) THAT CAN BE APPLIED TO THE DATA
STRUCTURE.
• ENCAPSULATION :
• ENCAPSULATION IS AN OBJECT ORIENTED PROGRAMMING CONCEPT THAT BINDS
TOGETHER THE DATA +FUNCTIONS THAT MANIPULATE THE DATA, AND THAT KEEPS
BOTH SAFE FROM OUTSIDE INTERFERENCE AND MISUSE.

• ACCESS MODIFIERS:
• C++ USES THE THREE MODIFIERS CALLED PUBLIC , PROTECTED , AND
PRIVATE
CONTROLLING ACCESS TO CLASS:
POLYMORPHISM
OPERATOR OVERLOADING IN C++

• OPERATOR FUNCTIONS ARE SAME AS NORMAL


FUNCTIONS. THE ONLY DIFFERENCES ARE, NAME OF AN
OPERATOR FUNCTION IS ALWAYS OPERATOR KEYWORD
FOLLOWED BY SYMBOL OF OPERATOR AND OPERATOR
FUNCTIONS ARE CALLED WHEN THE CORRESPONDING
OPERATOR IS USED.
Syntax: Complex operator + (Complex const &obj)
METHOD OVERRIDING
ABSTRACT CLASSES 

• ABSTRACT CLASSES ARE CLASSES THAT CONTAIN ONE OR


MORE ABSTRACT METHODS. AN ABSTRACT METHOD IS A METHOD
THAT IS DECLARED, BUT CONTAINS NO IMPLEMENTATION. ABSTRACT
CLASSES MAY NOT BE INSTANTIATED, AND REQUIRE SUBCLASSES TO
PROVIDE IMPLEMENTATIONS FOR THE ABSTRACT METHODS.
INTERFACE VS ABSTRACT CLASSES:

AN INTERFACE DOES NOT HAVE IMPLEMENTATION OF


ANY OF ITS METHODS, IT CAN BE CONSIDERED AS A
COLLECTION OF METHOD DECLARATIONS. IN C++, AN
INTERFACE CAN BE SIMULATED BY MAKING ALL
METHODS AS PURE VIRTUAL. IN JAVA, THERE IS A
SEPARATE KEYWORD FOR INTERFACE.
CLASSES AND DATA ABSTRACTION

• INTRODUCTION; STRUCTURE DEFINITIONS; ACCESSING MEMBERS OF STRUCTURES; CLASS SCOPE


AND ACCESSING CLASS MEMBERS; SEPARATING INTERFACE FROM IMPLEMENTATION;
CONTROLLING ACCESS FUNCTION AND UTILITY FUNCTIONS, INITIALIZING CLASS OBJECTS:
CONSTRUCTORS, USINGDEFAULT ARGUMENTS WITH CONSTRUCTORS; USING DESTRUCTORS;
CLASSES : CONST(CONSTANT) OBJECT AND CONST MEMBER FUNCTIONS, OBJECT AS MEMBER OF
CLASSES, FRIEND FUNCTION AND FRIEND CLASSES; USING THIS POINTER, DYNAMIC MEMORY
ALLOCATION WITH NEW AND DELETE; STATIC CLASS MEMBERS; CONTAINER CLASSES AND
INTEGRATORS; PROXY CLASSES; FUNCTION OVERLOADING.
WHAT ARE STRUCTURES IN C++ ?

• C/C++ ARRAYS ALLOW YOU TO DEFINE VARIABLES THAT


COMBINE SEVERAL DATA ITEMS OF THE SAME KIND
BUT STRUCTURE IS ANOTHER USER DEFINED DATA TYPE
WHICH ALLOWS YOU TO COMBINE DATA ITEMS OF
DIFFERENT KINDS.
DIFFERENCE BETWEEN STRUCTURE AND CLASSES
STRUCTURE SYNTAX :
• STRUCT BOOKS {
CHAR TITLE[50];
CHAR AUTHOR[50];
CHAR SUBJECT[100];
INT BOOK_ID;
}BOOK;
SCOPE OF CLASS

A MEMBER FUNCTION OF A CLASS IS A FUNCTION THAT HAS ITS


DEFINITION OR ITS PROTOTYPE WITHIN THE CLASS DEFINITION LIKE
ANY OTHER VARIABLE. IT OPERATES ON ANY OBJECT OF THE CLASS OF
WHICH IT IS A MEMBER, AND HAS ACCESS TO ALL THE MEMBERS OF A
CLASS FOR THAT OBJECT.
DEFINED CLASS TO ACCESS THE MEMBERS OF THE CLASS USING A MEMBER
FUNCTION INSTEAD OF DIRECTLY ACCESSING THEM:

• CLASS BOX {
PUBLIC:
DOUBLE LENGTH; // LENGTH OF A BOX
DOUBLE BREADTH; // BREADTH OF A BOX
DOUBLE HEIGHT; // HEIGHT OF A BOX
DOUBLE GETVOLUME(VOID);// RETURNS BOX VOLUME
};
• MEMBER FUNCTIONS CAN BE DEFINED WITHIN THE CLASS DEFINITION OR SEPARATELY USING SCOPE
RESOLUTION OPERATOR, ::. DEFINING A MEMBER FUNCTION WITHIN THE CLASS DEFINITION DECLARES
THE FUNCTION INLINE, EVEN IF YOU DO NOT USE THE INLINE SPECIFIER. SO EITHER YOU CAN
DEFINE GETVOLUME() FUNCTION AS BELOW:
• CLASS BOX {
PUBLIC:
DOUBLE LENGTH; // LENGTH OF A BOX
DOUBLE BREADTH; // BREADTH OF A BOX
DOUBLE HEIGHT; // HEIGHT OF A BOX

DOUBLE GETVOLUME(VOID) {
RETURN LENGTH * BREADTH * HEIGHT;
}
};
 DEFINE SAME FUNCTION OUTSIDE THE CLASS
USING SCOPE RESOLUTION OPERATOR, :: AS
FOLLOWS:

•DOUBLE BOX::GETVOLUME(VOID) {
RETURN LENGTH * BREADTH * HEIGHT;
}

You might also like