Upload
mukesh427
View
219
Download
0
Embed Size (px)
Citation preview
7/30/2019 Object Oriented Programming Languge1
1/22
Object oriented programming languge :
Traditional programming language like c, known as Structural programming language lacks the functionality code security
and reusablility of code.
To provide the security and reusability of code in new approach in programming has been introduced as object oriented
programming
A language to be called as object oriented need to satisfied a set of basic priniciples
Encapsulation, Abstraction Inheritance, Polymorphism
Encapsulation : Acording to this the code in an object oriented language as to be wrapped under a container known as
class, which provides security to the code,.
Abstraction : Its an approach wh ich talks about hiding of the complexity by providing the user with a set of interfaces to
consulme the functionalities
Inheritance : Acording to this members of a class can be accessed by another class . If they have parent child
relation ship which provides code- reusability.
Polymorphism : Entities behaving in diff. ways depending up on the input they received is known as polymorphis
Members of a class :
As we were aware of a class is a collection of members and these members can be variables types like
Fields,methods,constructors,properties, delegates, events, enumeration
Field Declaration
class Rectangle
{
public int Width
public int Height;
}
Multiple field declaration
class Rectangle
{
publicint Width, Height;
}
7/30/2019 Object Oriented Programming Languge1
2/22
Methods :
Methods consider as members of class gets defined only under the class, as per the rule of encapsulation .
Methods of variables defined under a class were considered as members of a class, where members of class can be
accessed only through object of a class
In a object or copy of a class has to be created first to access the class because we were aware that types can t be
consumed directly
Ex: program p = new program()
Or
Program p
P= new program();
You can create the object of a class any where under a class as well as can be created from other classes , but
while creating under the same class we do it under the main as it was the main entry of a class
Test the program
Class Program
{
Void test();
{
Console.writeline(First METHOD);
}
Void test2(int x)
{
Console.writeline(Second Method , x);
}
7/30/2019 Object Oriented Programming Languge1
3/22
String test3()
{
Return Third Method;
}
String test4(string name)
{
Return hello + name;
}
Int math(int x, int y ref int z)
{
Z=x*y;
Return x+y;
Static void main(string[] args)
Program p = new program();
p.test2(10);
console.writeline(p.test3());
console.writeline(p.test4(Raju);
int prod=0;
int sum=p.math(100,50,ref prod);
console.writeline(um + + prod);
console.writeline(sum + + prod);
}}
A variable which is declared using ref key word its considered as a reference variable or a variable or pointer variable
C -->> int *p
C# ref int p
7/30/2019 Object Oriented Programming Languge1
4/22
A reference variable in c# language will never disclose the address which gets stored in it as well it will not allow pointer
arthematic.
We store the address of variable under reference variable to refer to address of variable we prefix with ref key word only
C -- > int *p =&x;
C# -- > ref int p = ref x;
Add a class in year project naming it has first cs & wrote following code
Class program
{
Int x = 100;
Static void main ( )
{
First f ; // f is a variable
F = new first ( ); // f is on object
Console write line (f.x);
Console readline ( );
}
}
The memory which is required for on object gets allocated only with the user new operator.
First f ;
F= new first( );
7/30/2019 Object Oriented Programming Languge1
5/22
You can explicitly destroyed the object of a class by assigning the value null to once if it was destroyed you can never
access members of the class
To test this re write the code under main method of the class first under following.
First f= niw first () ; // f is an object
Console write line (f.x); // valid
F= null; // object destroyed
Console write line ( f.x); // invalid
Console read line( );
First f= new firstd( );
F = null
Wecan create multiple objects to a class each objects we create for the class will maintain a separate copy of its memberswhere the modification made on the a vetiable of the object doesnt reflec to vatrable of the other object
To test this re write the code under main methods of class first as following.
First f1= new first ();
Firstf2=new first();
Console write line(f1.x+ +f2.x);
F1.x=500
Console write line (f1.x+ + f2.x);
Console read line ();
We can assign the object of a class to the variable of name class. Which converts the variable to a reference [ con be used
as on objects] for in this case both the objects & reference the dome memory location because in this case new is used
only for once.
To test this re write the code under main methods of a class first as following
First f1 = new first();
First f2 = f1;
Console write the ( f1.x+ + f2.x);
F1.x= 500;
Console write line (f1.x+ + f2.x);
Console read line ();
When multiple objective are referring to the name memory, when use assigned null to an objects the other object can still
consume the memory. But not the object for which null was assigned to test this re write the code under main method of a
class first as following.
First f1 = new first ();
First f2 = f1;
7/30/2019 Object Oriented Programming Languge1
6/22
F1 = null;
Console write line (f2.x); // valid
Console write line (f1.x); // in volid
Console read line ();
What is the role of new operator in object creation?
When we use the new operator for creating the object
public class Geometry
{
// Unknown Shape
public double CalculateArea()
{
return;
}
// Squarepublic double CalculateArea(double side)
{
return side * side;
}
// Rectangle
public double CalculateArea(double length, double height)
{
return length * height;
}
}
public class Exercise
{
static int Main(){
var geo = new Geometry();
System.Console.WriteLine("Geometric Shapes");
System.Console.WriteLine("Calculation of Areas");
System.Console.Write("Square: ");
System.Console.WriteLine(geo.CalculateArea(26.38));
System.Console.Write("Rectangle: ");
System.Console.WriteLine(geo.CalculateArea(39.17, 26.38));
return 0;
}
}
public class BankAccount
{
private string customerName;
private decimal originalDeposit;
public void Initialize(string name, decimal deposit)
{
customerName = name;
originalDeposit = deposit;
}
public void Show()
{
System.Console.WriteLine("Customer Account Information");System.Console.Write("Customer Name: ");
System.Console.WriteLine(customerName);
7/30/2019 Object Oriented Programming Languge1
7/22
System.Console.Write("Original Deposit: ");
System.Console.WriteLine(originalDeposit);
}
}
public class Exercise
{
static int Main(){
BankAccount account = new BankAccount();
account.Initialize("Paul Motto", 450.00M);
account.Show();
return 0;
}
}
Class members :
What ever we define under a class were known as class members like variable, fields, methods ,constructor ,properties
,enumerations
These members were categorized into two types.
Instance Members or Non Static
Static Members
What are non static or instance members ?
Members of a class which requires the object of a class for initialization or execution were known as non static
members
What are static members ?
Members of the class which doesnot require object of the class for intitalization or execution were known asstatic members
Instance variables vs static variables
A variable declared using static modifier or a declared under static block were known as static variable and rest of all are
Instance
Ex:
Int x=100; // Instance
Statc inty=200; static
Static voidmain()
{
Int z=300; // static
7/30/2019 Object Oriented Programming Languge1
8/22
++
Instance variable gets initialized whenever the object of class gets created . So the minimum and maximum no. of times its
gets initialized will be zero or {n}
Where as a static variable gets initialized once the execution of a class starts. So the minimum and the maximum no. of
times its gets initialized will be only and one
Note :Use instanacevariable if you want the variable accessable only to the single object.
Use static variables if we want to to be accessable to all objectsWhile refereeing to instancemembers of a class we use the object of the class where as while refgering to static
members of the class we use name of the class
classProgram
{
int x = 100;staticint y = 100;
staticvoid Main(string[] args)
{
Console.WriteLine(Program.y);
Program p1 = newProgram();
Console.WriteLine(p1.x);
Console.ReadLine();
}}
Instance Methods VS static methods
A method declared by using static modifier is a static method rest of all are Instance :
While defining static methods we need to consider a rule I,e non static members can not be refer from static
block directly. They can be only referred using the object of the class where as static members can be refered
from non static blocks directly.
classProgram
{
int x = 100; // instance variablestaticint y = 100;
staticvoid mul()
{
Program p1 = newProgram();
Console.WriteLine(p1.x * y);
}
staticvoid Main(string[] args)
{
7/30/2019 Object Oriented Programming Languge1
9/22
Program.mul();
Console.ReadLine();
}
What is constructor ?
A constructor is a special method available in every class responsible or initializing
the variable of a class
The name of constructor method is same as the class name. A constructor method never returns a value Without a constructor under a class a class can never execute If the programmers did not define a constructor under his class , while compiling
the class the compiler takes the responsiblilty of defining the constructor under a
class tomake the class to execute
classProgram
{
Program(){
Console.WriteLine("constructor");
}
void show()
{
Console.WriteLine("Method");
}
staticvoid Main(string[] args){
Program p1 = newProgram();
Program p2 = newProgram();
Program p3 = p1;
p1.show();
p2.show();p3.show();
}
}
# Creating the object of the class using new operator will call the constructor ,which will allocate the memory
required for the object
Constructor are of two types
1.Default or Zero argument Constructor
2. Parameterized constructors
# A constructor doesnot take any input parameters is known as Default Construtor .This can be defined either
by a programmer or will be defined by the compiler
A constructor which takes input paratmeters is known as parameterized constructors. This can be defined only
by a programmer
7/30/2019 Object Oriented Programming Languge1
10/22
If the constructor is parameterized ,you need to send the value to the parameters while creating the object of
the class ,because a constructor call should match the constructor siognature.
classProgram
{
Program(){
Console.WriteLine("constructor");
}
Program(int x)
{
Console.WriteLine("Constructor :" + x);
}
void show()
{
Console.WriteLine("Method");
}
staticvoid Main(string[] args)
{Program p1 = newProgram(10);
Program p2 = newProgram(20);
}}
Instance constructors VS static constructors
A constructor declared using the static modifier is a static constructor , rest of all are instance constructor.
Static constructor are responsible for initializing static variables and instance constructor responsible forinitializing instance variables
A static constructor gets called one and only one in the execution of a class, when the class execution starts
Where as instance constructor gets called zero or n times I,e each time the object of the class get called
Note : The first block of the code which gets executed in a class is static constructor
V v..imp
As we can pass parameters to an instance constructor it can not be done in the case of static constructors
Because static constructors never takes parameters or cant beparaeterized
7/30/2019 Object Oriented Programming Languge1
11/22
classClass1
{
// static constructor
static Class1()
{
Console.WriteLine("Static construcotr");
}
Class1()
{
Console.WriteLine("Non- staic construcorr");
}
staticvoid Main()
{
Class1 c1 = newClass1();// Class1 c2= new Class1();
Console.ReadLine();
Method overloading :
Overloading is an approach which allows toprovide multiple behavior to amethods
classoverloaddemo
{publicvoid show()
{
Console.WriteLine("First Method");
}
publicvoid show(int x){
Console.WriteLine(x);
}publicvoid show(string s)
{
Console.WriteLine(s);
}publicvoid show(int x, string s)
{
Console.WriteLine(4);
}
publicvoid show(string s, int x)
{
Console.WriteLine(5);
}
staticvoid Main()
7/30/2019 Object Oriented Programming Languge1
12/22
{
overloaddemo od = newoverloaddemo();
od.show();od.show(10);
od.show(10, "Hello");
od.show("hellow", 10);
Console.ReadLine();
}}
Constructor Overloading :
As you overload the methods ,you canalso overlaoad constructor of a class
Note : If you want to define a parameterized constructor under a class a make a habit of defining a default construcotor
under the clas
A class can be defined with any no. of constructor
Inheritance
As we were aware a class is a collection of memebres and these members can be consumed or re-used by other classes
once we have parent child relationship between the classes
Note : The default scope for members of class in c# is private . Where private members of a class cant be acquired by the
children or child class
Syntax :
[modifiers]class
7/30/2019 Object Oriented Programming Languge1
13/22
{
}
classparent{public parent()
{
Console.WriteLine("Parent constructor");
}
publicvoid show(){
Console.WriteLine("Method one ");
}publicvoid show1()
{ Console.WriteLine("Method Two");
}
Add a child class
classchild : parent
{
public child(){
Console.WriteLine("Constructor child ");
}
publicvoid show3(){
Console.WriteLine("Method Three");
}
staticvoid Main()
{
child c2 = newchild();
c2.show3();
c2.show();
c2.show1();
Console.ReadLine();
}
}}
While using inheritance we need to consider the following Rules and Regulations :
1. In inheritance , execution of a child class always starts with calling the parent class . Default constructor whichshould always accessible to the child class. If not accessible inheritance will not be allowed
7/30/2019 Object Oriented Programming Languge1
14/22
2. As we aware , child classes can be refer to parent class members where as parent class can never refer to childclass members
To test this Write the following code
Class c1 = new class()
C1.show();
C1.show2();
C1.show3() // invalid
Console.readline();
As we aware that object of a class can be assigned to its
variable it can also be assigned to parent class variables , but
in this case we cant refer to members of child class using
parent reference
To test this write the following code
Class2 c2 = new class2()
Class1 c1 =c2
C1.show(), c1.show2();
c1.show3() // Invalid
console.readline();
As per the standards of Object oriented programming language we have two types of inheritance
1. Single Inheritance2. Multiple Inheritance
If a class has only one immediate base class to it we called it as single inheritance
Class1class2class3
If a child class has more thatn one immediate base class to it we called as Multiple I nheritance
7/30/2019 Object Oriented Programming Languge1
15/22
***
Classical object oriented programming language like c++ supported both single and multiple Inheritances where as in
modern obect oriented programming language like JAVA & .NET supports only sngle inheritance through classs because
multiple inheritance suffers from the drawback of ambiguity.
Test() test()
Class1 class2
Class3
As we aware that exection of child class starts by calling the default constructor of the parent . In some cases parent class
may not contain a default constructor in it. i.e it may contain parametrised in such situation it is the programmer
responsibility to call the available constructor or parent from the child class constructor using the base keyword.
Base keyword is used to referring to members or paent class from a child clas. To test this make the constructor , or parent
classs1 as parameterized
Public class(int x)
{
Console.writeline(x)
}
Now , under the main() of classs1 send vaue to parameters while creatint its object as following
Cclass1 c1= new classs1(10)
Sometmes it shows an error ..
To overcome this problem use the Base key word as follows
Public class2() : base(20)
{
Console.writeline(class2 constructor);
}
Inheritance Based Overloading :
If a method is overloaded under a child class we called it as inheritance based overloading
Parent.cs
Public void test()
7/30/2019 Object Oriented Programming Languge1
16/22
Public void test(int x)
Child .cs
Public void test(string s)
{}
Add a parent class and find
Note : As we aware overloading allows to provide multiple be behavior to a method , we can add new behavior to the
method using a child when the parent provided were not as per our requirement.
Method Overriding
**
If a method of parent class was re-defined in the child class with the same signature we called it has method over-ridding.
Differnce between overloading and Overriding
This allows defining multiple
methods with in the same name
by changing their signature
This allows defining multiple
methods with same name and
SAME signature
This can be performed with in aclass or with in a child class
This can be performed only within a child class
When performed under the child
class does not require any
permission from parent
To perform this we require on
explicit permission from parent.
OVERLOADING OVERRIDING
How does a parent class give permission to the child class to override or re-define the method
The parent class gives the permission to the child class to re-define the method by declaring the method as
virtual . now the child class can override the method on optional basis using the override modifier
Ex : Loadparent.cs
Public void test()
Public virtual void test(int x)
Child.cs
7/30/2019 Object Oriented Programming Languge1
17/22
Public override void test(int x)
Note : when the method is overridden under the child class object of the chil class gives the preference to load method and
invokes the method it has overhidden but not the virual method of parent
In overriding approach parent class provides a method to the child to consume it directly or re-define it as per the
requirements
Question : After overriding a method under a child class can we invoke the virtual method of a parent from the child class .
Ans : yes, this can be done in two ways.
Create the object of the parent class under the child class to invoke the virtual method
To test this write the following code under the main() of child class
Loadparen p =new loadparent();
Loadchild c = new loadchild()
p.test(10);
c.test(10)
Method Hiding :
Can we re-write a method under the child class without permission from parent ?
Yes, we can rewrite a method under the child without the permission of parent also I,e not declared as virtual ), we called
this as method Hiding .
Method overloadin and method hiding were similar type approaches . Where in the first casse we re-write a method
under a child which is declared as virtual in parent where as In the second case we re-write a method under thechilld which
we not declared as virtual in parent
In case of overriding we use the override modifier to re-write a method
Where as in case of method hiding we use the new modifier for re-writing the method
Public void test()
7/30/2019 Object Oriented Programming Languge1
18/22
Public new void test()
To test re-write the code in the child class
Public new void test()
{console.writeline(Mehtod5);
}
Sealed class :
Question : how can we restrict a class not to be inherited by any other class ?
If you want to restrict a class not to be inherited by any other class it should be declared using the sealed modifier
Ex :
Sealed class class1
{
}
Class Testoverride: Testchild //> Invalid
{
}
Question : can we restrict a method not to be orve ridden under a child class ?
Yes, if you want to restrict a method not to be overridden by child class it should be declared as sealed but every method
by default sealed unless it was decalred as virtual.
L
Question : if a method is decalred as virtual under parent can any class overwrite it.
Yes. If a method is decalred as viratual in parent any child class as a right to over write it
Class1 public virtual void test(); // parent class
Class-2 public override void test(); // child1 class //sealed
Class3 public override void test() // child2 class
Question : Can we restrict further overriding of a method at a child class which was declared as virtual in its parent.
Yes, this can be performed by using sealed modifier on the method while overriding
Ex :
Public virtual void test() // parent class
7/30/2019 Object Oriented Programming Languge1
19/22
Class2 public seal0ed override void test() // child class
Class3 public override void test(); // invalid because declared as sealed in class2b
Abstracts Methods and Abstract Classes
A Method without any method body is known as an abstract method what it has only the signature of the method
The class under which u define the abstract methods is known as abstract class
When we use an Abstract Class?
We use abstract classes when we want multiple child class to implement a method with same signature irrespective of
logic
Interface :
In object oriented programming we can also declare abstract members under another container I, e interface a part from
abstract classes
But these interface can contiain only abstract members in it
Class :
Only non-abstract members
Abstract Class
Abstract + non abstract members
Interface
Only abstract members
Note : As we aware that multiple inheritance is not supported through a class but it was still supported with interfaces I,e
a class can have only one immediate base class to it but we can have multiple immediate interface are parent
Syntax ;
Modifiers
{
Abstract members declaration>
]
7/30/2019 Object Oriented Programming Languge1
20/22
Rules :
An interface cant be declared with any variable
Every member of interface by default public
Every member declared in a interface by default abstract
An interface can be inherited from another interface just like a class inheriting from another class
Check the example
0 Ex
abstractclassProgram
{
publicabstractvoid add(int x, int y);
publicvoid sub( int a , int b);
}
** The approach of abstract method is a bit similar to method overriding where as in case of overriding the method
declared as virtual in parent can be overridden by the child optimally.
But in case of abstract methods the method declared as abstract in parent should be overridden by the child which is
mandatory.
Abstract classes provides restriction based properties to the child classes I,e the chi ld class as to implement all the
abstract methods in the parent if at all it wants to access the non abstract methods of parent
Parent.
Virtual
Override on child is options
But where as parent
Abstract----override on child Mondtory
Note : Abstract classes provide restriction based properties to the the childl classes it the child class as to implement all the
abstract methods in the parent if at all it wants to access the non-abstract metjods of parent
Abstract Class == Non abstract methods + Absrtact Methods
It implelmets all abstract methods of parent 2. Now we can consurme non-abstract methods of parent
Whey is it mst for child class to rovidce the implementation for all abstract methods of its parent
7/30/2019 Object Oriented Programming Languge1
21/22
Ans ; we can never create the obj of a class which contains any abstract methods It it. So if the child class doesnot provide
the implementation the abstract methods of parent get inherted to child classes and will not allow to create the object
Note : An abstract class is never user to it self it can be consumed only by the child class that to after providing the
implementation from abstract methods of thet parent
Method overloading Method Overriding Method Hiding
Providing Multiple Behaviour to a
method
Changing the behavior of amethod
under childl class with a permission
from parent
Changing the behavior of amethod
under child class without a permission
from parent
Check the programme
Note : As we discusses objects of a abstract classes cant be created , But there reference cam be created with the help of
their child class object using the reference all the non-abstract and abstract metjhods which were declared u nder it .
To Test this re-write the code under the main() of child class as following
0
Properties
When You want to provide access to values of a class out side of class this can be done in two ways .
Public variables
Properties
In case of variables it access is provide the user has a change of getting as well as setting the value
If the same access is provided through a property the can be restricted in three ways
1. Read write property : Which provide get and set access2. Read only property : Which provides only Get Acess3. Write only property : Which provides only set access
Syntax : [
7/30/2019 Object Oriented Programming Languge1
22/22
In C++ and Java, when creating the member variables of a class, programmers usually "hide" these members in private
sections (C++) or create them as private (Java). This technique makes sure that a member variable is not accessible outside
of the class so that the clients of the class cannot directly influence the value of the member variable.