You are on page 1of 8

OOP:-

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 :-

Encapsulation is used to hide the 1. IN OOPS AN EMPTY CLASS REFERS TO A CLASS


No data hiding.
data.
THAT DOESN ’T HAVE ANY ATTRIBUTES OR METHODS
DEFINED WITHIN IT .
High complexity (heavy
Less complex
coding) 2. IT’S A CLASS THAT DOESN ’T CONTAIN ANY
MEMBERS OR FUNCTIONALITY .
3. SUCH A CLASS MAY BE CREATED FOR VARIOUS
Object functions are linked Parts of program are linked
through message passing. through parameter passing. REASONS INCLUDING AS A PLACEHOLDER FOR FUTURE
DEVELOPMENT , AS A PART OF INHERITANCE HIERARCHY .

It can be implemented into real It doesn’t model real world


*ABSTRACT CLASS :-
world problems. problems.
1. AN ABSTRACT CLASS IS A CLASS THAT CAN’T BE
INSTANTIATED AND IS DESIGNED TO SERVE AS A BASE OR PARENT
Code/ Data reusability. No code reusability.
CLASS FOR OTHER CLASSES .
2. ABSTRACT CLASS ARE USED TO PROVIDE COMMON INTERFACE
Not suitable for solving big AND FUNCTIONALITY FOR A GROUP OF RELATED CLASSES ,
use for solving big problems.
problems. WITHOUT SPECIFYING THE IMPLEMENTATION DETAILS .
3. THIS ALLOWS FOR CODE REUSABILITY , EXTENSIBILITY , AND
C++, JAVA, Python. C, Pascal. FLEXIBILITY . ALSO, IT CAN BE INHERITED BY OTHER CLASSES .

4. ABSTRACT CLASS MAY OR MAY NOT INCLUDE ABSTRACT METHODS .


5. IT CONTAINS AT LEAST ONE PURE VIRTUAL FUNCTION. IT’S A FUNCTION THAT HAS NO DEFINITION .
 YES, AN INSTANCE OF AN EMPTY CLASS CAN BE CREATED. THE CLASS HAS NO DATA MEMBERS, IT STILL HAS A SIZE OF AT
LEAST ONE BYTE . BECAUSE THE COMPILER NEEDS TO STORE SOME INFORMATION ABOUT THE OBJECT SUCH AS ITS ADDRESS
AND TYPE .

Q. WHAT IS POLYMORPHISM ? HOW IS ACHIEVED AT RUNTIME AND COMPILE TIME ?


*POLYMORPHISM :-(GREEK WORD- ‘’MANY FORMS”)

1. IT IS THE ABILITY OF AN OBJECT TO TAKE ON MANY FORMS .


2. IT’S A FUNDAMENTAL CONCEPT IN OOPS AND IT ALLOWS US TO WRITE CODE THAT IS MORE FLEXIBLE AND REUSABLE.
3. THE DIFFERENCE FORMS ARISE BECAUSE THESE ENTITIES CAN BE ASSIGNED DIFFERENT MEANINGS AND USED IN VARIOUS WAYS
IN MULTIPLE CONTEXTS .
4. MANY PROGRAMMING LANGUAGES DISPLAY OR ALLOW POLYMORPHISM , INCLUDING JAVA, C++, PYTHON, RUBY AND PHP .
5. IN THESE LANGUAGES POLYMORPHISM ENABLES CLASS OBJECTS BELONGING TO THE SAME HIERARCHICAL TREE TO BEHAVE
DIFFERENTLY EVEN THOUGH THEY MIGHT HAVE FUNCTIONS WITH THE SAME NAME .
OOP:-
COMPILE TIME POLYMORPHISM :- RUNTIME POLYMORPHISM :-
1. IN COMPILE TIME POLYMORPHISM , THE CALL TO A METHOD 1. IN RUNTIME POLYMORPHISM, THE CALL TO AN OVERRIDDEN
IS RESOLVED AT COMPILE TIME. METHOD , IT ’S RESOLVED AT RUNTIME .
2. IT IS ALSO KNOWN AS STATIC BINDING , EARLY BINDING OR 2. IT IS ALSO KNOWN AS DYNAMIC BINDING, LATE BINDING,
OVERLOADING . OVERRIDING OR DYNAMIC METHOD DISPATCH .
3. OVERLOADING IS A COMPILE TIME POLYMORPHISM IN WHICH 3. OVERRIDING IS A RUNTIME POLYMORPHISM HAVING SAME
WE CAN DEFINE MULTIPLE METHODS OR CONSTRUCTORS METHOD WITH SAME PARAMETERS OR SIGNATURE , BUT
WITH DIFFERENT SIGNATURES. ASSOCIATED IN DIFFERENT CLASSES .
4. IT IS ACHIEVED BY FUNCTION OVERLOADING AN OPERATOR 4. IT IS ACHIEVED BY VIRTUAL FUNCTIONS AND POINTERS.
OVERLOADING . 5. IT PROVIDES SLOW EXECUTION AS COMPARED TO EARLY
5. IT PROVIDES FAST EXECUTION BECAUSE THE METHOD THAT BINDING, BECAUSE THE METHOD THAT NEEDS TO BE
NEEDS TO BE EXECUTED IS KNOWN EARLY AT THE COMPILE EXECUTED IS KNOWN AT THE RUNTIME .
TIME . 6. REQUIRES INHERITANCE .
6. DOES NOT REQUIRE INHERITANCE . 7. MORE FLEXIBLE AND CUSTOMIZABLE .
7. LESS FLEXIBLE AND CUSTOMIZABLE .

Q. DIFFERENTIATE BETWEEN CONSTRUCTOR AND INSTRUCTOR. IS IT MANDATORY TO USE CONSTRUCTOR IN A 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:-

Q. WHAT IS MEANT BY EXCEPTION? HOW EXCEPTIONS ARE HANDLED IN C ++ PROGRAMMING ?


*EXCEPTION: -IN C++ AN EXCEPTION IS AN UNEXPECTED OR ABNORMAL EVENT THAT OCCURS DURING THE EXECUTION OF A
PROGRAMME AND DISRUPTS THE NORMAL FLOW OF INSTRUCTIONS .
- EXCEPTIONS CAN ARISE DUE TO VARIOUS REASONS SUCH AS INVALID INPUT, DIVISION BY ZERO , MEMORY ALLOCATION FAILURES
OR OTHER RUNTIME ERRORS.
- WHEN IT OCCURS, THE PROGRAMME CAN BE INTERRUPTED, AND CONTROL CAN BE TRANSFERRED TO A SPECIAL BLOCK OF CODE
KNOWN AS AN EXCEPTION HANDLER .

:- 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 .

MEMBER FUNCTION:- NORMAL FUNCTION:-


1. IT IS A FUNCTION THAT IS DECLARED INSIDE A CLASS. 1. IT IS A FUNCTION THAT IS NOT DECLARED INSIDE A CLASS.
2. IT CAN ONLY BE CALLED ON AN OBJECT OF THAT CLASS. 2. IT CAN BE CALLED ANYWHERE IN THE PROGRAM.
3. IT IS ASSOCIATED WITH A SPECIFIC CLASS AND OPERATES ON THE 3. NOT ASSOCIATED WITH ANY CLASS AND DOESN ’T OPERATE
DATA MEMBERS OF THAT CLASS. ON CLASS-SPECIFIC DATA .
4. IT HAS ACCESS TO THE CLASS’ S DATA MEMBERS AND CAN 4. IT DOESN’T HAVE ACCESS TO THE PRIVATE MEMBERS OF A
MODIFY THE DIRECTLY . CLASS.
5. IT COULD BE INVOKED DIRECTLY IN THE MAIN FUNCTION OR 5. IT IS INVOKED USUALLY WITH REFERENCE TO THE INSTANCE
OTHER FUNCTIONS . OF A CLASS .
6. EX- class MyClass: 6. EX- def my_function(self):
def my_function(self): print (“hello world!”)
print (“hello world!”) my_function()
my_object = MyClass()
my_object.my_function()

Q. DESCRIBE THE VARIOUS CONTROL STATEMENTS WITH AN EXAMPLE .


: CONTROL STATEMENTS-: *T HE CONTROL STATEMENTS HELP USERS SPECIFY THE ORDER OF EXECUTION OF THE INSTRUCTIONS
PRESENT IN A PROGRAM .
* THIS MADE IT POSSIBLE FOR THE PROGRAM TO MAKE CERTAIN DECISIONS, PERFORM VARIOUS TASKS REPEATEDLY OR TO JUMP
FROM ANYONE SECTION TO ANOTHER .
OOP:-
if x > 10:
:-THERE ARE 4 CONTROL STATEMENTS - print("x is greater than 10")
1. CONDITIONAL STATEMENTS: else:
*IF STATEMENTS: EXECUTES A BLOCK OF CODE IF A SPECIFIED CONDITION IS TRUE . e.g. print("x is not greater than 10")
*ELSE STATEMENT : PROVIDES AN ALTERNATIVE BLOCK OF CODE TO EXECUTE WHEN THE “if”
CONDITION IS FALSE .
if x > 10:
e.g. print("x is greater than 10")
else:
print("x is not greater than
*ELSE IF STATEMENT : ALLOWS FOR CHECKING MULTIPLE CONDITIONS SEQUENTIALLY . 10")
e.g.

if x > 10: 2. LOOPING STATEMENTS:


print("x is greater than 10")
* FOR LOOP: REPEAT A BLOCK OF CODE, A SPECIFIED NUMBER OF TIMES, ITERATING OVER A
else:
SEQUENCE . e.g.
print("x is not greater than for i in range(10):
10") print(i)

* WHILE LOOP : REPEAT A BLOCK OF CODE AS LONG AS A SPECIFIED CONDITION IS TRUE.

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 .

Q. EXPLAIN ATM SYSTEM USING OBJECT ORIENTED DIAGRAM .


1. AN ATM(AUTOMATED TELLER MACHINE ) IT IS AN ELECTRO -MECHANICAL MACHINE WHICH CONSISTS OF AUTOMATED BANKING
OOP:-
PLATFORMS THAT ALLOW CLIENTS TO PERFORM SMOOTH TRANSACTIONS WITHOUT THE ASSISTANCE OF A BRANCH REPRESENTATIVE
OR TELLER . IT REQUIRES A PLASTIC CARD AND PIN TO COMPLETE A TRANSACTION .
2. CLASSES:
* ATM CLASS: THIS CLASS REPRESENTS THE ATM ITSELF. IT WOULD HAVE METHODS LIKE ‘withdraw’, ‘deposit’,
‘checkBalance’, ETC. THESE METHODS WOULD INTERACT WITH THE CUSTOMER'S ACCOUNT .

*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 .

 ATMs CAN BE USED FOR : - CASH DEPOSITS, CASH WITHDRAWAL ,


-CASH TRANSFER , ACCOUNT DETAILS ,
-ACCOUNT BALANCE DETAILS ETC .
*THE "+" AND "-" SYMBOLS DENOTE PUBLIC AND PRIVATE ATTRIBUTES/METHODS, RESPECTIVELY .
*"<>-----" INDICATES A BIDIRECTIONAL ASSOCIATION .

ATM MACHINE USER BANK


-machineID -userID -bankName
-location -pin -branch
-status <>----- -accountNumber -accounts[]

+dispensecash() +enterPIN() +verifyPIN()


+acceptDeposit() +requestBalance() +processTransaction()
+authenticateUser( +withdrawCash()
+depositMoney()
ACCOUNT
-
accountNumber
-balance

+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 .

Q. CAN FRIEND FUNCTION BE USED TO OVERLOAD THE ASSIGNMENT OPERATOR (=)?


: NO; THE ASSIGNMENT OPERATOR IS A SPECIAL OPERATOR THAT IS OVERLOADED BY THE COMPILER TO PERFORM MEMBER-WISE
ASSIGNMENT . I F YOU TRY TO OVERLOAD THE ASSIGNMENT OPERATOR USING A FRIEND FUNCTION , THE COMPILER WOULD
GENERATE AN ERROR .
Q. HOW MESSAGE PASSING IS POSSIBLE IN JAVA? GIVE EXAMPLE
: MESSAGE PASSING IS A COMMUNICATION PARADIGM IN WHICH PROCESSES COMMUNICATE WITH EACH OTHER BY SENDING AND
RECEIVING MESSAGES .
: IT IS A POWERFUL AND FLEXIBLE WAY FOR OBJECTS TO COMMUNICATE WITH EACH OTHER . IT ALLOWS OBJECTS TO BE LOOSELY
COUPLED , WHICH MEANS THAT THEY DO NOT NEED TO KNOW MUCH ABOUT EACH OTHER 'S INTERNAL IMPLEMENTATION . THIS
MAKES CODE MORE REUSABLE AND MAINTAINABLE .
: IT IS A FUNDAMENTAL CONCEPT IN CONCURRENT PROGRAMMING AND IS SUPPORTED BY MANY PROGRAMMING LANGUAGES ,
INCLUDING JAVA .
1. IN JAVA, MESSAGE PASSING IS IMPLEMENTED USING METHOD CALLS. WHEN AN OBJECT INVOKES A METHOD OF ANOTHER
OBJECT , IT IS SENDING A MESSAGE TO THAT OBJECT . THE MESSAGE CONTAINS THE NAME OF THE METHOD TO BE CALLED AND ANY
ARGUMENTS THAT ARE REQUIRED .
2. THE RECEIVING OBJECT THEN EXECUTES THE METHOD AND RETURNS A RESULT , IF ANY. T HE RESULT IS THEN SENT BACK TO THE
SENDING OBJECT .
3. USING SHARED OBJECTS (MONITORS): YOU CAN ACHIEVE MESSAGE PASSING BETWEEN THREADS BY USING SHARED OBJECTS,
ALSO KNOWN AS MONITORS. J AVA PROVIDES THE ‘synchronized’ KEYWORD TO CREATE SYNCHRONIZED BLOCKS OR METHODS THAT
ENSURE ONLY ONE THREAD CAN ACCESS THEM AT A TIME .
4. USING THE ‘WAIT()’ AND ‘ NOTIFY()’ METHODS: THE ‘wait()’ AND ‘notify()’ METHODS IN JAVA CAN BE USED FOR MORE
ADVANCED MESSAGE PASSING BETWEEN THREADS . THREADS CAN WAIT FOR A CONDITION TO BE MET AND BE NOTIFIED WHEN IT
HAPPENS. e.g.
public class MyClass {
public void sendMessage(MyOtherClass otherObject) {
otherObject.receiveMessage();
}
public void receiveMessage() {
System.out.println("Received message!");
}
}
OOP:-
Q. WHAT DO YOU MEAN BY ARRAY INDEX OUT OF BOUNDS EXCEPTION AND NULL POINTER EXCEPTION ?
: “ ARRAY INDEX OUT OF BOUNDS E XCEPTION” AND “NULL- POINTER EXCEPTION ” ARE BOTH RUNTIME EXCEPTIONS IN JAVA THAT
INDICATES ERRORS IN THE CODE RELATED TO ARRAYS .
: A RUNTIME EXCEPTION IN JAVA IS AN ERROR THAT OCCURS DURING THE NORMAL OPERATION OF THE JAVA VIRTUAL MACHINE
(JVM). THESE EXCEPTIONS ARE UNCHECKED EXCEPTIONS THAT IS THEY DON’T NEED TO BE DECLARED IN THE METHOD OR
CONSTRUCTOR ’S THROW CLAUSE .
* ARRAY INDEX OUT OF BOUNDS EXCEPTION:
1.THIS EXCEPTION OCCURS WHEN YOU TRY TO ACCESS AN ARRAY ELEMENT USING AN INDEX THAT IS OUTSIDE THE VALID RANGE
FOR THAT ARRAY .
2. IN JAVA, ARRAY INDICES START FROM 0 AND GO UP TO ‘array.length – 1’. IF YOU ATTEMPT TO ACCESS AN INDEX LESS THAN 0
OR GREATER THAN OR EQUAL TO THE LENGTH OF THE ARRAY , YOU WILL GET
int[] numbers = {1, 2, 3};
AN ‘Array Index Out Of Bounds Exception’. e.g. System.out.println(numbers[3]); // This will throw
ArrayIndexOutOfBoundsException
*NULL POINTER EXCEPTION:
1.THIS EXCEPTION OCCURS WHEN YOU TRY TO ACCESS OR MODIFY AN OBJECT REFERENCE THAT HAS A ‘null’ VALUE.
2. IN JAVA, OBJECTS MUST BE INSTANTIATED BEFORE YOU CAN USE THEM. IF YOU TRY TO INVOKE A METHOD OR ACCESS A FIELD ON
AN OBJECT REFERENCE THAT IS CURRENTLY ‘null’, YOU WILL GET A ‘Null Pointer Exception’.
. e.g.
String text = null;
System.out.println(text.length()); // This will throw NullPointerException
Q. WRITE A PROGRAMME IN C++ FOR
MULTIPLE INHERITANCE .
: MULTIPLE INHERITANCE IS A FEATURE OF C++ THAT ALLOWS A CLASS TO INHERIT FROM MORE THAN ONE BASE CLASS .
THIS MEANS THAT A DERIVED CLASS CAN HAVE DATA MEMBERS AND MEMBER FUNCTIONS FROM MULTIPLE BASE CLASSES.
:TO IMPLEMENT MULTIPLE INHERITANCE , WE USE THE PUBLIC KEYWORD TO SPECIFY THE BASE CLASSES FROM WHICH THE DERIVED
CLASS INHERITS .

#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.

You might also like