Professional Documents
Culture Documents
Q. WHAT IS PROCEDURAL ORIENTED PROGRAMMING AND OBJECT ORIENTED PROGRAMMING? DEFINE THEIR CHARACTERISTICS,
LANGUAGES AND FEATURES?
OOP: POP:
-CHARACTERISTICS :-
* OOP: * POP:
Program is divided into
Program is divided into objects. .POLYMORPHISM - P REDEFINED FUNCTIONS
functions.
.ENCAPSULATION -LOCAL VARIABLES
.ABSTRACTION -G LOBAL VARIABLES
Bottom-up approach. Top-down approach. .C LASSES - MODULARITY
.OBJECTS - T OP-DOWN APPROACH
Inheritance property is used. Inheritance is not allowed. . INHERITANCE
Q. WHAT IS EMPTY AND ABSTRACT CLASS ? CAN
It uses access specifier. It doesn’t use access specifier. INSTANCE EMPTY CLASS BE CREATED ? G IVE REASON .
ANS . * EMPTY CLASS :-
CONSTRUCTOR :- DESTRUCTOR :-
1. CONSTRUCTOR IS A SPECIAL MEMBER FUNCTION WHO TASK 1. DESTRUCTOR IS USED TO DESTROY OBJECTS THAT HAVE BEEN
IS TO INITIALISE THE OBJECTS OF ITS CLASS . CREATED BY A CONSTRUCTOR .
2. A CONSTRUCTOR IS CALLED WHEN A NEW INSTANCE OF 2. A DESTRUCTOR IS CALLED WHEN AN ALREADY EXISTING
CLASS IS CREATED . INSTANCE OF A CLASS IS DESTROYED .
3. CONSTRUCTORS OFTEN ACCEPT ARGUMENTS . 3. DESTRUCTOR CANNOT HAVE ARGUMENTS.
4. IT ALLOCATES MEMORY TO A NEWLY CREATED OBJECT. 4. DEALLOCATES MEMORY AFTER OBJECT ’S DELETION.
5. THERE CAN BE MULTIPLE CONSTRUCTORS IN A CLASS. 5. THERE CAN BE ONLY ONE DESTRUCTOR IN A CLASS.
6. IT CAN BE OVERLOADED . 6. IT CAN’T BE OVERLOADED .
7. THEY HAVE THE SAME NAME AS THE CLASS NAME . 7. ITS NAME IS SAME AS CLASS NAME , BUT IS PRECEDED BY TILDE
8. EX- student(int a, int b) ’~’.
8. EX- ~student()
*NO, IT’S NOT MANDATORY , THE COMPILER WILL AUTOMATICALLY PROVIDE A DEFAULT CONSTRUCTOR FOR ANY CLASS
WITHOUT CONSTRUCTORS . YOU CAN DECLARE A CONSTRUCTOR USING ANY OF THE ACCESS MODIFIERS. IT ’S MANDATORY TO HAVE A
CONSTRUCTOR WITH THE RIGHT ACCESS MODIFIER .
Q. EXPLAIN THE CONCEPT OF ASSOCIATION AND AGGREGATION IN OBJECT ORIENTED APPROACH .
AGGREGATION:- ASSOCIATION:-
1. AGGREGATION DESCRIBES A SPECIAL TYPE OF AN ASSOCIATION 1. ASSOCIATION IS A RELATIONSHIP BETWEEN TWO OR MORE
WHICH SPECIFIES A WHOLE AND PART RELATIONSHIP . CLASSES WHERE ONE CLASS USE ANOTHER .
2. IN THIS RELATIONSHIP , ONE CLASS IS CONSIDERED THE 2. IT SERVES AS A CORNERSTONE FOR DESIGNING THE
WHOLE , AND ANOTHER CLASS IS REGARDED AS ITS PART . STRUCTURAL ASPECTS OF A SYSTEM , EMPHASIZING THE
3. IT IS REPRESENTED BY “has a” + ”whole part” CONNECTIONS BETWEEN VARIOUS ENTITIES.
RELATIONSHIP . 3. ASSOCIATIONS CAN BE BI-DIRECTIONAL , SIGNIFYING
4. UNLIKE COMPOSITION , AGGREGATION SUGGESTS A MORE MUTUAL AWARENESS BETWEEN CLASSES , OR UNI -
LOOSELY COUPLED ASSOCIATION , WHERE THE OBJECTS OF THE DIRECTIONAL , INDICATING A ONE -SIDED RELATIONSHIP .
PART CLASS CAN EXIST INDEPENDENTLY OF THE WHOLE . 4. IN UNIFIED MODELLING LANGUAGE (UML) DIAGRAMS,
5. IN UNIFIED MODELLING LANGUAGE (UML) DIAGRAMS, ASSOCIATIONS ARE VISUALLY DEPICTED THROUGH LINES
AGGREGATION IS COMMONLY REPRESENTED BY A DIAMOND - CONNECTING CLASSES , SHOWCASING THE INTRICATE
SHAPED SYMBOL ON THE SIDE OF THE WHOLE CLASS, RELATIONSHIPS THAT EXIST WITHIN A SYSTEM .
POINTING TOWARDS THE PART CLASS . 5. LINE SEGMENT IS USED BETWEEN THE COMPONENTS OR THE
6. THIS NOTATION HELPS CONVEY THE NATURE OF THE CLASS.
RELATIONSHIP AND EMPHASIZES THAT THE PART CLASS IS NOT 6. IN SOME ASSOCIATIONS , ROLES ARE ASSIGNED TO EACH
EXCLUSIVE TO THE WHOLE CLASS ; IT CAN BE ASSOCIATED WITH CLASS TO DENOTE THEIR RESPONSIBILITIES OR ROLES IN THE
OTHER CLASSES AS WELL . RELATIONSHIP .
7. IT IS FLEXIBLE IN NATURE. 7. IT IS INFLEXIBLE IN NATURE.
8. IT IS REPRESENTED “has a” RELATIONSHIP .
OOP:-
:- EXCEPTION HANDLING:- A STANDARD MECHANISM FOR SEPARATION OF THE CODE THAT DETECTS AND HANDLES EXCEPTIONAL
CIRCUMSTANCES IN A PROGRAM TO PROCESS ERRORS .
- EXCEPTION HANDLING IN C++ IS DONE BY USING THREE KEYWORDS: ‘try’, ‘catch’, and ’throw’.
1. ‘try’-: THIS BLOCK CONTAINS THE CODE WHERE EXCEPTIONS MIGHT OCCUR . IT IS FOLLOWED BY ONE OR MORE ‘catch’ BLOCKS.
2. ‘catch’-: THIS BLOCK IS USED TO HANDLE SPECIFIC TYPES OF EXCEPTIONS . IF AN EXCEPTION OCCURS IN THE ASSOCIATED ‘try’
BLOCK , THEN THE CONTROL IS TRANSFERRED TO THE APPROPRIATE ‘catch’ BLOCK BASED ON THE TYPE OF EXCEPTION .
3. ’throw’:- THE ’throw’ STATEMENT IS USED TO MANUALLY THROW AN EXCEPTION. IT IS TYPICALLY USED IN SITUATIONS WHERE
THE PROGRAM ENCOUNTERS AN ERROR THAT CANNOT BE HANDLED LOCALLY .
:- THE MAIN ADVANTAGES OF EXCEPTION HANDLING OVER TRADITIONAL ERROR HANDLING :
*SEPARATION OF ERROR HANDLING CODE FROM NORMAL CODE: THESE CONDITIONS AND THE CODE TO HANDLE ERRORS GET
MIXED UP WITH THE NORMAL FLOW . THIS MAKES THE CODE LESS READABLE AND MAINTAINABLE . WITH TRY CATCH BLOCKS , THE
CODE FOR ERROR HANDLING BECOMES SEPARATE FROM THE NORMAL FLOW .
*FUNCTIONS/METHODS CAN BE HANDLED ONLY BY THE EXCEPTIONS THEY CHOOSE :- THE EXCEPTIONS NOT CHOSEN WILL BE
HANDLED BY THE CALLER . EXCEPTIONAL HANDLING ALLOWS THE GROUPING OF ERROR TYPES WHICH HELPS IN CATEGORIZING THEM .
*GROUPING OF ERROR TYPES: IN C++, WE CAN CREATE A HIERARCHY OF EXCEPTION OBJECTS, GROUP EXCEPTIONS IN
NAMESPACES OR CLASSES AND CATEGORIZE THEM ACCORDING TO THEIR TYPES.
Q. DIFFERENTIATE BETWEEN MEMBER FUNCTION AND NORMAL FUNCTION. EXPLAIN WITH EXAMPLE .
i=0 e.g.
while i < 10:
*DO-WHILE LOOP : SIMILAR TO A WHILE LOOP, BUT ENSURES THE CODE BLOCK IS EXECUTED AT LEAST ONCE .
print(i)
. e.g.
i += 1 i=0
do:
print(i)
X 3. SWITCH STATEMENTS: *USED FOR HANDLING MULTIPLE CONDITIONS BASED ON THE VALUE OF AN
i += 1
EXPRESSION . IT PROVIDES A CLEANER ALTERNATIVE TO A SERIES OF IF -ELSE STATEMENTS .
while i < 5
4.BREAK AND CONTINUE STATEMENTS:
*BREAK STATEMENT : TERMINATES THE LOOP OR SWITCH STATEMENT , ALLOWING THE PROGRAMME TO EXIT PREMATURELY.
e.g.
for i in range(10):
*CONTINUE STATEMENT : SKIPS THE REST OF THE CODE INSIDE THE LOOP FOR THE CURRENT ITERATION
if i == 5:
AND MOVES TO THE NEXT ITERATION . e.g.
break for i in range(10):
print(i) if i == 5:
break
print(i)
Q. DEFINE FUNCTION TEMPLATE AND CLASS TEMPLATE.
*FUNCTION TEMPLATE :
1. A FUNCTION TEMPLATE IN C++ ALLOWS YOU TO WRITE A GENERIC FUNCTION THAT CAN OPERATE template <typename T>
WITH VARIOUS DATA TYPES WITHOUT THE NEED TO DUPLICATE THE CODE FOR EACH TYPE . e.g. T add(T a, T b) {
2.THE TEMPLATE IS INSTANTIATED WITH SPECIFIC TYPES WHEN THE FUNCTION IS CALLED. return a + b;
*CLASS TEMPLATE : }
1.IT ALLOWS YOU TO CREATE A GENERIC CLASS THAT CAN WORK WITH DIFFERENT DATA TYPES .
2. AS FUNCTION TEMPLATE , CLASS TEMPLATES ARE INSTANTIATED WITH SPECIFIC TYPES WHEN OBJECTS OF THE CLASS ARE
CREATED .
*ACCOUNT CLASS: THIS CLASS REPRESENTS A BANK ACCOUNT . IT WOULD HAVE ATTRIBUTES LIKE ‘accountNumber’, ‘balance’,
AND METHODS LIKE ‘withdraw’, DEPOSIT , AND ‘checkBalance’.
*CUSTOMER CLASS: THIS CLASS REPRESENTS A BANK CUSTOMER . IT WOULD HAVE ATTRIBUTES LIKE ‘name’, ‘address’, AND A
REFERENCE TO THEIR ‘Account’ OBJECT .
+getBalance()
+deposit()
+withdraw()
Q. WHAT IS OPERATOR OVERLOADING ? WHY IS IT NECESSARY TO OVERLOAD AN OPERATOR?
*OPERATOR OVERLOADING :
1. IT IS A TYPE OF POLYMORPHISM IN COMPUTER PROGRAMMING. IT ALLOWS DIFFERENT OPERATORS TO HAVE DIFFERENT
IMPLEMENTATIONS DEPENDING ON THEIR ARGUMENTS .
2. FOR EXAMPLE , IN MANY PROGRAMMING LANGUAGES, THE "+" OPERATOR IS USED FOR BOTH ADDITION OF NUMBERS AND
CONCATENATION OF STRINGS. THIS IS POSSIBLE BECAUSE THE LANGUAGE SUPPORTS OPERATOR OVERLOADING. THE BEHAVIOR OF
THE "+" OPERATOR IS DETERMINED BY THE TYPES OF THE OPERANDS INVOLVED .
; NECESSITY :- OPERATOR OVERLOADING PROVIDES A WAY TO DEFINE CUSTOM BEHAVIOURS FOR OPERATORS BASED ON THE TYPES
OF OPERANDS INVOLVED .
1. EXPRESSIVENESS AND READABILITY : OPERATOR OVERLOADING ALLOWS YOU TO WRITE CODE THAT CLOSELY RESEMBLES
MATHEMATICAL OR REAL -WORLD EXPRESSIONS . THIS MAKES THE CODE MORE INTUITIVE AND READABLE , ESPECIALLY FOR
OPERATIONS THAT HAVE CLEAR MATHEMATICAL MEANINGS.
2. NATURAL SYNTAX : OVERLOADING OPERATORS ALLOWS YOU TO USE A MORE NATURAL AND CONCISE SYNTAX FOR OPERATIONS
INVOLVING OBJECTS OF YOUR CUSTOM CLASSES . THIS CAN MAKE YOUR CODE MORE ELEGANT AND REDUCE THE COGNITIVE LOAD ON
DEVELOPERS .
OOP:-
3. CODE CONSISTENCY : BY OVERLOADING OPERATORS, YOU CAN PROVIDE A CONSISTENT INTERFACE FOR YOUR CLASSES. THIS
CONSISTENCY CAN LEAD TO MORE MAINTAINABLE AND UNDERSTANDABLE CODE , AS USERS OF YOUR CLASSES CAN RELY ON
STANDARD OPERATORS BEHAVING IN A PREDICTABLE WAY .
4. CUSTOMISATION FOR USER -DEFINED TYPES: WHEN YOU DEFINE YOUR OWN CLASSES, OVERLOADING OPERATORS ENABLES YOU
TO DEFINE SPECIFIC BEHAVIOURS FOR OPERATIONS ON INSTANCES OF THOSE CLASSES. THIS CUSTOMIZATION IS PARTICULARLY
USEFUL WHEN DEALING WITH COMPLEX DATA STRUCTURES OR ABSTRACTIONS.
5. INTEGRATION WITH BUILT-IN TYPES: OVERLOADED OPERATORS ENABLE YOUR CUSTOM CLASSES TO SEAMLESSLY INTEGRATE
WITH THE LANGUAGE 'S BUILT -IN TYPES AND STANDARD LIBRARIES . THIS CAN IMPROVE THE INTEROPERABILITY OF YOUR CODE AND
MAKE IT EASIER TO WORK WITH IN A LARGER ECOSYSTEM .
6. REDUCED VERBOSITY : OPERATOR OVERLOADING CAN REDUCE THE NEED FOR EXPLICIT METHOD CALLS, LEADING TO MORE
CONCISE AND EXPRESSIVE CODE . FOR EXAMPLE , INSTEAD OF CALLING A METHOD LIKE ‘add()’, YOU CAN USE THE ‘+’ OPERATOR
DIRECTLY .
7. ALIGNMENT WITH DOMAIN CONCEPTS: IN CERTAIN DOMAINS, OVERLOADING OPERATORS ALLOWS YOU TO ALIGN YOUR CODE
WITH THE NATURAL CONCEPTS OF THAT DOMAIN . THIS CAN MAKE YOUR CODE MORE DOMAIN - SPECIFIC AND EASIER FOR DOMAIN
EXPERTS TO UNDERSTAND.
8. SYNTACTIC SUGAR : OPERATOR OVERLOADING PROVIDES A FORM OF SYNTACTIC SUGAR , MAKING CODE MORE ELEGANT AND
REDUCING THE AMOUNT OF BOILER PLATE . THIS CAN LEAD TO MORE EXPRESSIVE AND AESTHETICALLY PLEASING CODE .
#include <iostream>
class A { public: void displayA() { std::cout << "Class A" << std::endl; } };
class B { public: void displayB() { std::cout << "Class B" << std::endl; } };
class C : public A, public B { public: void displayC() { std::cout << "Class C" << std::endl; } };
int main() { C obj; obj.displayA(); obj.displayB(); obj.displayC(); return 0; }
Q. GIVE EXAMPLE OF MULTIPLE OBJECT DECLARATION, VARIABLE DECLARATION AND CONSTANT DECLARATION.
// Object declaration
class MyClass {};
MyClass obj1;
MyClass obj2;
// Variable declaration
int x = 1;
int y = 2;
int z = 3;
// Constant declaration
const int MY_CONSTANT = 10;
Q. NOTES:
1. ASSOCIATION COMPOSITION.
A: COMPOSITION IN OBJECT -ORIENTED MODELLING SIGNIFIES A ROBUST WHOLE -PART RELATIONSHIP BETWEEN TWO CLASSES ,
WHERE THE PART CLASS IS AN ESSENTIAL AND INSEPARABLE COMPONENT OF THE WHOLE CLASS .
B: UNLIKE AGGREGATION , COMPOSITION IMPLIES A STRICT AND EXCLUSIVE OWNERSHIP , STATING THAT THE PART CANNOT EXIST
INDEPENDENTLY OF THE WHOLE .
C : IF THE WHOLE IS DISMANTLED OR DESTROYED , THE PARTS ARE TYPICALLY DESTROYED AS WELL .
OOP:-
D: THIS FORM OF ASSOCIATION REPRESENTS A STRONG COUPLING BETWEEN CLASSES , EMPHASIZING THE INTERDEPENDENCE OF THE
OBJECTS INVOLVED .
E : THIS FORM OF ASSOCIATION REPRESENTS A STRONG COUPLING BETWEEN CLASSES, EMPHASIZING THE INTERDEPENDENCE OF THE
OBJECTS INVOLVED .
F: IN U NIFIED M ODELLING L ANGUAGE (UML) DIAGRAMS, COMPOSITION IS VISUALLY DENOTED BY A FILLED DIAMOND SHAPE ON
THE SIDE OF THE WHOLE CLASS POINTING TO THE PART CLASS .
2. ACCESS MODIFIERS :
A. ACCESS MODIFIERS IN OBJECT -ORIENTED PROGRAMMING (OOP) LANGUAGES DICTATE THE VISIBILITY AND ACCESSIBILITY OF
CLASS MEMBERS (FIELDS, METHODS , AND NESTED CLASSES ) FROM OTHER PARTS OF THE PROGRAM .
B. THEY PLAY A CRUCIAL ROLE IN ENCAPSULATION , WHICH IS ONE OF THE FUNDAMENTAL PRINCIPLES OF OOP, BY CONTROLLING
THE EXPOSURE OF INTERNAL IMPLEMENTATION DETAILS.
*THERE ARE 3 MAIN ACCESS MODIFIERS:-
C . PUBLIC : M EMBERS DECLARED AS PUBLIC ARE ACCESSIBLE FROM ANY PART OF THE PROGRAM .
PUBLIC MEMBERS ARE OFTEN USED TO REPRESENT THE INTERFACE OF A CLASS, PROVIDING ACCESS TO EXTERNAL CODE.
D. PRIVATE : M EMBERS DECLARED AS PRIVATE ARE ONLY ACCESSIBLE WITHIN THE CLASS THEY ARE DEFINED IN.
PRIVATE MEMBERS ARE USED TO HIDE THE INTERNAL IMPLEMENTATION DETAILS OF A CLASS AND ENFORCE ENCAPSULATION.
E . PROTECTED : M EMBERS DECLARED AS PROTECTED ARE ACCESSIBLE WITHIN THE CLASS , ITS SUBCLASSES , AND FRIEND FUNCTIONS .
PROTECTED MEMBERS ARE COMMONLY USED WHEN DESIGNING CLASSES FOR INHERITANCE , ALLOWING DERIVED CLASSES TO
ACCESS CERTAIN MEMBERS.