Unit IV
Object Oriented Concepts
                  Topics to be covered
• Abstraction
• Encapsulation
• Class Hierarchy
• Inheritance
• Multiple Inheritance
• Polymorphism
• Relationships and association
• Aggregation
                           Abstraction
• Definition: Abstraction is the concept of hiding the complex implementation details
  of a system and exposing only the essential features to the user.
• Details:
• Purpose: Simplifies interaction with objects by focusing on what they do rather
  than how they do it.
• Real-World Example: A TV remote allows you to control the TV (change channels,
  adjust volume) without knowing the internal workings of the TV.
• In Programming: Abstract classes and interfaces are often used to achieve
  abstraction.
                        Encapsulation
• Definition: Encapsulation is the bundling of data (attributes) and methods that
  operate on that data into a single unit or class, and restricting access to some of
  the object's components.
• Details:
• Purpose: Protects the integrity of the data by preventing direct access to it from
  outside the class.
• Access Modifiers: Private, protected, and public keywords are used to control
  access to class members.
                      Class Hierarchy
• Definition: Class hierarchy refers to the arrangement of classes in a hierarchical
  tree where the topmost class is the most general, and the lower classes are more
  specialized.
• Details:
• Super classes and Subclasses: A superclass (or parent class) is at a higher level in
  the hierarchy, and a subclass (or child class) inherits from it.
• Inheritance Relationship: A subclass inherits attributes and methods from its
  superclass.
                             Inheritance
• Definition: Inheritance is a mechanism in OOP where a new class (subclass) inherits
  properties and behaviors (attributes and methods) from an existing class (superclass).
• Details:
• Purpose: Promotes code reuse and establishes a natural hierarchy between classes.
• Types of Inheritance:
• Single Inheritance: A subclass inherits from one superclass.
• Multilevel Inheritance: A subclass inherits from another subclass, creating a chain.
• Hierarchical Inheritance: Multiple subclasses inherit from a single superclass.
                Multiple Inheritance
• Definition: Multiple inheritance refers to a scenario where a class inherits from
  more than one class. While not supported directly in Java, it can be achieved using
  interfaces.
• Details:
• Diamond Problem: Multiple inheritance can lead to ambiguity when two
  superclasses provide the same method, which Java avoids by not supporting
  multiple inheritance with classes.
• Interfaces in Java: Multiple inheritance can be simulated using interfaces.
                        Polymorphism
• Definition: Polymorphism means "many forms," and it allows objects of different
  classes to be treated as objects of a common superclass. It enables a single action
  to behave differently based on the object performing it.
• Details:
• Types of Polymorphism:
• Compile-Time (Static) Polymorphism: Achieved through method overloading.
• Run-Time (Dynamic) Polymorphism: Achieved through method overriding.
• Purpose: Increases the flexibility and maintainability of code.
    Relationships and Association
• Definition: Relationships in OOP define how different classes or objects are
  connected to each other. Association is a specific type of relationship that
  represents a connection between two classes.
• Details:
• Types of Associations:
• Unidirectional Association: One class knows about another class, but the reverse
  is not true.
• Bidirectional Association: Both classes know about each other.
• Multiplicity: Describes how many objects are involved in the relationship (e.g.,
  one-to-one, one-to-many, many-to-many).
                           Aggregation
• Definition: Aggregation is a type of association where one class contains a
  reference to another class. It represents a "has-a" relationship and implies
  ownership without lifecycle dependency.
• Details:
• Weak Relationship: The contained object can exist independently of the container.
• Example: A university has a collection of departments, but if the university is
  deleted, the departments may still exist.
!!..Thank You.!!