Breaking News

Editors Picks

Friday, June 25, 2010

Object Oriented Programming? (oops)

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 is a Class?

A class describes all the attributes of objects, as well as the methods that implement the behavior of member objects. It is a comprehensive data type which represents a blue print of objects. It is a template of object.

What is 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. Example we have class CAR which has attributes and methods like Speed, Brakes, Type of Car etc. Class CAR is just a prototype, now we can create real time objects which can be used to provide functionality. Example we can create a Maruti car object with 100 km speed and urgent brakes.

What are different properties provided by Object-oriented systems?


Following are characteristics of Object Oriented Systems :

Abstraction

It allows complex real world to be represented in simplified manner. Example color is abstracted to RGB. By just making the combination of these three colors we can acheive any color in world. It is a model of real world or concept.

Encapsulation

It is a process of hiding all the internal details of an object from the outside world.

Communication using messages

When application wants to acheive certain task it can only be done using combination of objects. A single object cannot do all the task. Example if we want to make order processing form. we will use Customer object,Order object,Product object and Payment object to acheive this functionality. In short these objects should communicate with each other. This is achieved when objects send messages to each other.

Object lifetime

All objects have life time. Objects are created and initialized necessary functionalities are done and later the object is destroyed. Every object have there own state and identity which differ from instance to instance.


Class hierarchies
In object oriented world objects have relation and hierarchies in between them. There are basically three kind of relationship in Object Oriented World

Association

This is the simplest relationship between objects. Example every customer has sales. So Customer object and sales object have an association relation between them.

Aggregation

This is also called as composition model. Example in order to make a "Accounts" class it has use other objects example "Voucher", "Journal" and "Cash" objects. so accounts class is aggregation of these three objects.

Inheritance

Hierarchy is used to define more specialized classes based on a preexisting generalized class. Example we have VEHICLE class and we can inherit this class make more specialize class like CAR, which will add new attributes and use some existing qualities of the parent class. Its shows more of a parent-child relationship. This kind of hierarchy is called inheritance.

Polymorphism

When inheritance is used to extend a generalized class to a more specialized class, it includes behavior of the top class. The inheriting class often implement a behavior that can be somewhat different than the generalized class, but the name of the behavior can be same. It is important that a given instance of an object use the correct behavior, and the property of polymorphism allows this to happen automatically


What are abstract classes?

Following are features of a abstract class :

You can not create a object of abstract class
Abstract class is designed to act as a base class (to be inherited by other classes). Abstract class is a design concept in program development and provides a base upon which other classes are built.
Abstract classes are similar to interfaces. After declaring an abstract class,it cannot be instantiated on its own,it must be inherited.
In VB.NET abstract classes are created using "MustInherit" keyword. In C# we have "Abstract" keyword.
Abstract classes can have implementation or pure abstract methods which should be implemented in the child 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 knowthat 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 its methods
.
What is the difference between abstract classes and interfaces?
Following are the differences between abstract 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 complaint with the class. Delegates are type-safe functions pointers or callbacks.

What are events?

As compared to delegates events works with source and listener methodology. So listeners who are interested in receiving some events they subscribe to the source.Once this subscription is done the source raises events to its entire listener when needed. One source can have multiple listeners.

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

Overriding redefines only the implementation while shadowing redefines the whole element.
In overriding derived classes can refer the parent class element by using "ME" keyword, but in shadowing you can access it by "MYBASE".

What is the difference between delegate and events?

Actually events use delegates in bottom. But they add an extra layer on the delegates, thus forming the publisher and subscriber model.

As delegates are function to pointers they can move across any clients. so any of the clients can add or remove events, which can be pretty confusing. But events give the extra protection by adding the layer and making it a publisher and subscriber model.

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 :

Private : Only members of class have access

Protected : All members in current class and in derive classses can access the variables.

Friend (internal in C#) : Only members in current project have access to the elements.

Protected friend (protected internal in C#): All members in current project and all members in derived class can access the variables.

Public : All members have access in all classes and projects.

Can you prevent a class from overriding?

If you define a class as "Sealed" in C# and "NotInheritable" in VB.NET you can not 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 is done by using "MustInherit" keyword. You can not 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 :-

Both can have constructors, methods, properties, fields, constants, enumerations, events, and event handlers.

Structures and classes can implement interface.

Both of them can have constructors with and without parameter.

Both can have delegates and events.

What is the difference between Class and structures?

Following are the key differences between them :

Structure are value types and classes are reference types. So structures use stack and classes use heap.

structures members can not be declared as protected, but class members can be. You can not do inheritance in structures.

Structures do not require constructors while classes require.

Objects created from classes are terminated using Garbage collector. Structures are not destroyed using GC.


What does virtual keyword mean?
They signify that method and property can be overridden.


What are shared (VB.NET)/Static(C#) variables?
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 :

They cannot be instantiated. By default a object is created on the first method call to that object.

Static/Shared classes cannot be inherited.

Static/Shared classes can have only static members.

Static/Shared classes can have only static constructor.

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 keyword. You can access any item in array using the INDEX value of the array position.

What is a Hash Table?

You can access array using INDEX value of array, but how many times 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.


What are queues and stacks?

Queue is for first-in, first-out (FIFO) structures. Stack is for last-in, first-out (LIFO) structures.
What is ENUM?

It is used to define constants.
What is nested Classes?


Nested Classes are classes within classes.

Public Class ClsNested

    Public Class ChildNested

      Public Sub ShowMessage()
      MessageBox.Show(" Hi this is nested class ")
      End Sub

     End Class
End Class

What is Operator Overloading in .NET?

It provides a way to define and use operators such as +,-,and / for 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.

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.

How can we suppress a finalize method?

GC.SuppressFinalize()

What is the use of DISPOSE method?

Dispose method belongs to IDisposable interface. 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 is 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.

In what instances you will declare a constructor to be private?

when we create a private constructor, we can not 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 can not have differnent modifiers 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 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 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.

Read more ...

Contact Us

Name

Email *

Message *