OOPS
It
stands for Object Oriented Programming. Object-Oriented Programming (OOP)
Object
An
object can be considered a "thing"
that can perform a set of related
activities. The set of activities that the object performs
defines the object's behavior
Class'
A class
is simply a representation of a type of object.
Class
is composed of three things: a name, attributes, and operations
Encapsulation:
The encapsulation is mainly achieved by
creating classes; the classes expose public methods and properties. The class
is kind of a container, which encapsulate the set of methods, attribute and
properties to provide its indented functionalities to other classes. In that
sense, encapsulation also allows a class to change its internal implementation
without hurting the overall functioning of the system.
In order to modularize/ define the
functionality of a one class, that class can uses functions/ properties exposed
by another class in many different ways. According to Object Oriented
Programming there are several techniques, classes can use to link with each
other and they are named association, aggregation, and composition.
There
are several other ways that an encapsulation can be used, as an example we can
take the usage of an interface. The interface can be used to hide the
information of an implemented class.
Example:
IStudent myStudent = new LocalStudent ();
IStudent myStudent = new ForeignStudent ();
According to the sample above (let’s assume that LocalStudent and ForeignStudent
are implemented by the IStudent interface) we can see how LocalStudent and ForeignStudent
are hiding their, localize implementing information through the IStudent interface.
Association:
Association is a (*a*) relationship
between two classes. It allows one object instance to cause another to perform
an action on its behalf. Association is the more general term that define the
relationship between two classes, where as the aggregation and composition are
relatively special.
Aggregation:
Aggregation describes
a special type of an association. Aggregation is the (*the*) relationship
between two classes. When object of one class has an (*has*) object of
another, if second is a part of first (containment relationship) then we called
that there is an aggregation between two classes. aggregation always insists a
direction
Abstraction:
Abstraction reduces complexity by hiding
irrelevant detail, generalization reduces complexity by replacing multiple
entities which perform similar functions with a single construct.
Generalization:
Generalization is the broadening of
application to encompass a larger domain of objects of the same or different
type.
Polymorphism
:-
The
ability to request that same operations be performed by a wide range of
different types of things.
The can achieved by using many
different techniques named
- Method overloading
- Method overriding
- Operator overloading
Method
Overloading:
It can be defined as,
ability to define a several methods all with the same name.
ΓΌ A
Function can be overloading in two situations
- When data type arguments are changed.
- When number of arguments are changed.
Example:
Public class MyLogger
{
Public void LogError (Exception e)
{
// Implementation goes here
}
Public bool LogError (Exception e, string message)
{
// Implementation goes here
}
}
Operator Overloading:
The
operator overloading (less commonly known as ad-hoc polymorphisms) is a specific case of polymorphisms in which
some or all of operators like +, - or == are treated as polymorphic functions
and as such have different behaviors depending on the types of its arguments.
Example
public class Complex
{
Private int real;
Public int Real
{
Get
{return real; }
}
Private int imaginary;
Public int Imaginary
{
Get
{return imaginary; }
}
Public Complex (int real, int imaginary)
{
this.real = real;
this.imaginary = imaginary;
}
Public static Complex operator +(Complex c1, Complex c2)
{
Return new Complex (c1.Real + c2.Real,
c1.Imaginary + c2.Imaginary);
}
}
I
above example I have overloaded the plus operator for adding two complex
numbers. There the two properties named Real and Imaginary has been declared
exposing only the required “get” method, while the object’s constructor
is demanding for mandatory real and imaginary values with the user defined
constructor of the class.
Method
Overriding:
Method overriding is a language feature that
allows a subclass to override a specific implementation of a method that is
already provided by one of its super-classes.
A subclass can give its own definition of
methods but need to have the same signature as the method in its super-class.
This means that when overriding a method the subclass's method has to have the
same name and parameter list as the super-class's overridden method.
Example:
ClassEmployee
{
Public void Display()
{
System.Console.WriteLine("From Employee Class");
}
}
Class Department : Employee
{
new public void Display()
{
System.Console.WriteLine(" From Department to Display");
}
}
Class Salary
{
public static void Main()
{
Employee objEmp;
objEmp = new Employee();
ObjEmp.Display();
}
}
Difference
between Overloading and Overriding:
Overloading:
- Providing new implementation with same name and different signatures.
- Overloading can be done in same class.
- No separate keyword is used to implement Overloading.
- Used to implement Static Polymorphism.
Overriding:
- Providing new implementation with same name and same signature.
- Overriding can be done in base class and derived class.
- Use Virtual keyword for base class function and override keyword in derived class function to implement overriding.
- Used to implement Dynamic Polymorphism.
Static or Compile time Polymorphism
- The method is to be called is decided at compile-time only. Method overloading is an example of this.
- Method overloading is a concept where we use the same method name many times in the same class, but different parameters.
- Depending on the parameters we pass, it is decided at compile-time only.
- The same method name with the same parameters is an error and it is a case of duplication of methods which C# does not permit.
- In Static Polymorphism the decision is made at compile time.
Example:
public Class
StaticDemo
{
public void display(int x)
{
Console.WriteLine("Area of a Square:"+x*x);
}
public void display(int x, int y)
{
Console.WriteLine("Area of a Square:"+x*y);
}
public static void main(String args[])
{
StaticDemo spd=new StaticDemo();
Spd.display(5);
Spd.display(10,3);
}
}
{
public void display(int x)
{
Console.WriteLine("Area of a Square:"+x*x);
}
public void display(int x, int y)
{
Console.WriteLine("Area of a Square:"+x*y);
}
public static void main(String args[])
{
StaticDemo spd=new StaticDemo();
Spd.display(5);
Spd.display(10,3);
}
}
Dynamic or Run time
Polymorphism.
- Run time polymorphism is also known as method overriding.
- In this mechanism by which a call to an overridden function is resolved at a Run-Time (not at Compile-time) if a base Class contains a method that is overridden.
- Method overriding means having two or more methods with the same name, same signature but with different implementation.
- In this process, an overridden method is called through the reference variable of a super class the determination of the method to be called is based on the object being referred to by reference variable
Example :
Class
BaseClass
{
Public void show ()
{
Console.WriteLine("From base class show method");
}
{
Public void show ()
{
Console.WriteLine("From base class show method");
}
}}
Public Class DynamicDemo : BaseClass
{
Public void show()
{
Console.WriteLine("From Derived Class show method");
}
Public static void main(String args[])
{
DynamicDemo dpd=new DynamicDemo ();
Dpd.show();
}
Inheritance:
Deriving new class based on exiting class.
Virtual Function:
They implement the concept of polymorphism; are the same as in C#, except that you use the override keyword with the virtual function implementation in the child class. The parent class uses the same virtual keyword. Every class that overrides the virtual method will use the override keyword.
They implement the concept of polymorphism; are the same as in C#, except that you use the override keyword with the virtual function implementation in the child class. The parent class uses the same virtual keyword. Every class that overrides the virtual method will use the override keyword.
Why to use them
- It is not compulsory to mark the derived/child class function with override keyword while base/parent class contains a virtual method
- Virtual methods allow subclasses to provide their own implementation of that method using the override keyword
- Virtual methods can't be declared as private.
- You are not required to declare a method as virtual. But, if you don't, and you derive from the class, and your derived class has a method by the same name and signature, you'll get a warning that you are hiding a parent's method
- A virtual property or method has an implementation in the base class, and can be overriden in the derived classes.
- We will get a warning if we won't use Virtual/New keyword.
- Instead of Virtual we can use New Keyword
Example:
class A
{
public void M()
{
Console.WriteLine("A.M() being called");
}
{
public void M()
{
Console.WriteLine("A.M() being called");
}
public virtual void N()
{
Console.WriteLine("A.N() being called");
}
}
class B : A
{
public new void M()
{
Console.WriteLine("B.M() being called");
}
{
Console.WriteLine("A.N() being called");
}
}
class B : A
{
public new void M()
{
Console.WriteLine("B.M() being called");
}
public override void N()
{
Console.WriteLine("B.N() being called");
}
}
say
A a = new B();
a.M();
a.N();
The results would be
A.M() being called
B.N() being called
{
Console.WriteLine("B.N() being called");
}
}
say
A a = new B();
a.M();
a.N();
The results would be
A.M() being called
B.N() being called
No comments :
Post a Comment