Object Oriented Programming
What is Object Oriented Programming? |
It is a problem solving technique to develop software systems. It is a technique to think real world in terms of objects. Object maps the software model to real world concept. These objects have responsibilities and provide services to application or other objects. |
What’s an Object? |
It is a basic unit of a system. An object is an entity that has attributes, behavior, and identity. Objects are members of a class. Attributes and behavior of an object are defined by the class definition. |
What is the relation between Classes and Objects? |
They look very much same but are not same. Class is a definition, while object is a instance of the class created. Class is a blue print while objects are actual objects existing in real world. |
What are different properties provided by Object-Oriented systems? |
Following are characteristics of Object Oriented Systems:
|
What are abstract classes? |
Following are features of a abstract class :
|
What is a Interface? |
Interface is a contract that defines the signature of the functionality. So if a class is implementing a interface it says to the outer world, that it provides specific behavior. Example if a class is implementing IDisposable interface that means it has a functionality to release unmanaged resources. Now external objects using this class know that it has contract by which it can dispose unused unmanaged objects. Single Class can implement multiple interfaces. If a class implements a interface then it has to provide implementation to all |
What is difference between abstract classes and interfaces? |
Abstract classes can have concrete methods while interfaces have no methods implemented. Interfaces do not come in inheriting chain, while abstract classes come in inheritance. |
What is a delegate? |
Delegate is a class that can hold a reference to a method or a function. Delegate class has a signature and it can only reference those methods whose signature is compliant with the class. Delegates are type-safe functions pointers or callbacks. Public Class FrmDelegates Inherits System.Windows.Forms.Form Public Delegate Sub DelegateAddString() Private Sub FrmDelegates_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub AddString() lstDelegates.Items.Add("Running AddString() method") End Sub Private Sub cmdDelegates_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDelegates. Click Dim objDelegateAddString As DelegateAddString objDelegateAddString = AddressOf AddString objDelegateAddString.Invoke() End Sub End Class |
Do events have return type? |
No, events do not have return type. |
Can events have access modifiers? |
Events are always public as they are meant to serve every one register ing to it. But you can access modifiers in events.You can have events with protected keyword which will be accessible only to inherited classes.You can have private events only for object in that class. |
Can we have shared events? |
Yes, you can have shared events note only shared methods can raise shared events. |
What is shadowing? |
When two elements in a program have same name, one of them can hide and shadow the other one. So in such cases the element which shadowed the main element is referenced. |
What is the difference between Shadowing and Overriding? |
Following are the differences between shadowing and overriding:
|
What is the difference between delegate and events? |
|
If we inherit a class do the private variables also get inherited? |
Yes, the variables are inherited but cannot be accessed directly by the class interface. |
What are the different accessibility levels defined in .NET? |
Following are the five levels of access modifiers :
|
Can you prevent a class from overriding? |
If you define a class as "Sealed" in C# and "NotInheritable" in VB.NET you cannot inherit the class any further. |
What is the use of "MustInherit" keyword in VB.NET ? |
If you want to create a abstract class in VB.NET it’s done by using "MustInherit" keyword. You cannot create an object of a class which is marked as "MustInherit". When you define "MustInherit" keyword for class you can only use the class by inheriting. |
Do interface have accessibility modifier? |
All elements in Interface should be public. So by default all interface elements are public by default. |
What are similarities between Class and structure? |
Following are the similarities between classes and structures :
|
What are differences between Class and structure? |
Following are the key differences between classes and structures :
|
What does virtual keyword mean? |
It signifies that method and property can be overridden. |
What are shared (VB.NET)/static(C#) classes? |
Static/Shared classes are used when a class provides functionality which is not specific to any instance. In short if you want an object to be shared between multiple instances you will use a static/Shared class. Following are features of Static/Shared classes :
Below is a snippet. It has a "AddCount" function which increments a static "intCount" variable. In form there are two buttons which creates a new object and displays the count of the static variable. Even though the object is created and destroyed, the variable values does not change. It retains its old value. Public Class ClsShared
Shared intCount As Integer Public Function AddCount() As Integer intCount = intCount + 1 Return intCount End Function End Class Public Class FrmSharedClasses Inherits System.Windows.Forms.Form Private Sub CmdInstance1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdInstance1.Click Dim pobjClsShared As New ClsShared() MessageBox.Show("The count at this moment is" & pobjClsShared.AddCount.ToString()) End Sub Private Sub CmdInstance2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdInstance2.Click Dim pobjClsShared As New ClsShared() MessageBox.Show("The count at this moment is" & pobjClsShared.AddCount.ToString()) End Sub End Class |
What is Dispose method in .NET? |
.NET provides "Finalize" method in which we can clean up our resources. But relying on this is not always good so the best is to implement "Idisposable" interface and implement the "Dispose" method where you can put your clean up routines. |
What is the use of "Overrides" and "Overridable" keywords ? |
Overridable is used in parent class to indicate that a method can be overridden. Overrides is used in the child class to indicate that you are overriding a method. |
Where are all .NET Collection classes located? |
System.Collection namespace has all the collection classes available in .NET. |
What is ArrayList? |
Array is whose size can increase and decrease dynamically. Array list can hold item of different types. As Array list can increase and decrease size dynamically you do not have to use the ReDim (in VB.Net) keyword. You can access any item in array using the Index value of the array position. |
What is a HashTable? |
You can access array using index value of array, but only if you know the real value of index. Hashtable provides way of accessing the index using a user identified key value, thus removing the index problem. |
Queue is for first-in, first-out (FIFO) structures. Stack is for last-in, first-out (LIFO) structures. |
What is enum? |
The enum keyword is used when you require a enumeration. A enumeration is a distinct type that consists of a set of named constants called the enumetor list. Every enumeration type has an underlying type which can be all integral times except that of a char type. |
What is nested Classes? |
Nested classes are classes within classes. In sample below "ClsNested" class has a "ChildNested" class nested inside it. Public Class ClsNested This is the way we can instantiate the nested class and make the method call. Dim pobjChildNested As New ClsNested.ChildNested() |
What is Operator Overloading in .NET? |
It provides a way to define and use operators such as +, -, and / or user-defined classes or structs. It allows us to define/redefine the way operators work with our classes and structs. This allows programmers to make their custom types look and feel like simple types such as int and string. VB.NET supports operator overloading since VB.Net 2005. Operator overloading is done by using the "Operator" keyword. |
What is the significance of Finalize method in .NET? |
.NET Garbage collector does almost all clean up activity for your objects. But unmanaged resources (ex: - Windows API created objects, File, Database connection objects, COM objects etc) is outside the scope of .NET framework we have to explicitly clean our resources. For these types of objects .NET framework provides Object. Finalize method which can be overridden and clean up code for unmanaged resources can be put in this section. |
Why is it preferred to not use finalize for clean up? |
Problem with finalize is that garbage collection has to make two rounds in order to remove objects which have finalize methods. Below figure will make things clear regarding the two rounds of garbage collection rounds performed for the objects having finalized methods. Below figure will make things clear regarding the two rounds of garbage collection rounds performed for the objects having finalized methods. In this scenario there are three objects Object1, Object2 and Object3. Object2 has the finalize method overridden and remaining objects do not have the finalize method overridden. Now when garbage collector runs for the first time it searches for objects whose memory has to free. He can see three objects but only cleans the memory for Object1 and Object3. Object2 it pushes to the finalization queue. Now garbage collector runs for the second time. He see’s there are no objects to be released and then checks for the finalization queue and at this moment it clears object2 from the memory So if you notice that object2 was released from memory in the second round and not first. That’s why the best practice is not to write clean up Non.NET resources in Finalize method rather use the Dispose. |
How can we suppress a finalize method? |
GC.SuppressFinalize () |
What is the use of Dispose() method? |
Dispose method belongs to IDisposable interface. We had seen in the previous section how bad it can be to override the finalize method for writing the cleaning of unmanaged resources. So if any object wants to release its unmanaged code best is to implement. IDisposable and override the Dispose method of IDisposable interface. Now once your class has exposed the Dispose method it’s the responsibility of the client to call the Dispose method to do the cleanup. |
How do I force the Dispose method to be called automatically, as clients can forget to call Dispose method? |
Call the Dispose method in Finalize method and in Dispose method suppress the finalize method using GC.SuppressFinalize. Below is the sample code of the pattern. This is the best way we do clean our unallocated resources and yes not to forget we do not get the hit of running the Garbage collector twice. Public Class ClsTesting |
In what instances you will declare a constructor to be private? |
When we create a private constructor, we cannot create object of the class directly from a client. So you will use private constructors when you do not want instances of the class to be created by any external client. Example utility functions in project will have no instance and be used without creating instance, as creating instances of the class would be waste of memory. |
Can we have different access modifiers on get/set methods of a property? |
No we cannot have different modifiers for the same property. The access modifier on a property applies to both its get and set accessors. |
If we write a goto or a return statement in try and catch block will the finally block execute ? |
The code in then finally always run even if there are statements like goto or a return statements. |
What is Indexer? |
An indexer is a member that enables an object to be indexed in the same way as an array. |
Can we have static indexer in C#? |
No. |
Can two catch blocks be executed? |
No, once the proper catch section is executed the control goes finally to block. So there will not be any scenarios in which multiple catch blocks will be executed. |
What is the difference between System.String and System.StringBuilder classes? |
System.String is immutable; System.StringBuilder can have mutable string where a variety of operations can be performed. |
Comments
Post a Comment