abstraction
abstraction is a process. It manages complexity of objects. Abstraction identifies critical behavior of objects and eliminates the tedious details.
Example: i need to create a payroll software and software should have details of all employees within company. Employees behaviors will differ from one another. Different employees will have different hobbies, different size and shape, etc. All these behaviors are not required for creating payroll software. So we should follow a process for identifying crucial behaviors of the object. In case of payroll system, employee object should have employee id, name, band and department. All other behaviors can be eliminated. This process is called abstraction.
encapsulation
encapsulation is the mechanism by which abstraction can be implemented. Storing data and function in a single unit(class) is encapsulation. data's cannot be accessible from the outside world. function within classes can access these data. This is often referred as Information hiding.
Example: Consider a Math class. It has Add method and other member variables. Add method is exposed to the outside world. But outside world will not be knowing what is happening inside Add method. This is called information hiding.
reference:
http://oreilly.com/catalog/objectvbnet/chapter/ch01.pdf
Showing posts with label OOPS. Show all posts
Showing posts with label OOPS. Show all posts
Friday, February 5, 2010
Wednesday, November 18, 2009
Interface vs Abstract class
- When to go with Interfaces and how when to go with Abstract class?
- Can Interface contain properties?
- Can we do Interface1:Interface2?
- If yes, How does it implement in a class?
- Can an abstract class implement an Interface?
http://www.codeproject.com/KB/cs/abstractsvsinterfaces.aspx
| Feature | Interface | Abstract class |
| Multiple inheritance | A class may inherit several interfaces. | A class may inherit only one abstract class. |
| Default implementation | An interface cannot provide any code, just the signature. | An abstract class can provide complete, default code and/or just the details that have to be overridden. |
| Access Modfiers | An interface cannot have access modifiers for the subs, functions, properties etc everything is assumed as public | An abstract class can contain access modifiers for the subs, functions, properties |
| Core VS Peripheral | Interfaces are used to define the peripheral abilities of a class. In other words both Human and Vehicle can inherit from a IMovable interface. | An abstract class defines the core identity of a class and there it is used for objects of the same type. |
| Homogeneity | If various implementations only share method signatures then it is better to use Interfaces. | If various implementations are of the same kind and use common behaviour or status then abstract class is better to use. |
| Speed | Requires more time to find the actual method in the corresponding classes. | Fast |
| Adding functionality (Versioning) | If we add a new method to an Interface then we have to track down all the implementations of the interface and define implementation for the new method. | If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly. |
| Fields and Constants | No fields can be defined in interfaces | An abstract class can have fields and constrants defined |
Tuesday, November 17, 2009
Runtime polymorphism vs Compile time polymorphism
Polymorphism can be achieved in 3 ways:
Runtime polymorphism means, compiler would come to know which method to execute, at runtime not compile time. We can implement the runtime polymorphism by using override keyword.
Late binding
Reference:
http://www.dickbaldwin.com/csharp/Cs000120.htm
Difference between compile time & run time polymorphism:
- Method overloading (compile time polymorphism
- Method overriding through inheritance (runtime polymorphism)
- Method overriding through C# interface (runtime polymorphism)
Late binding
- The decision as to which version of method to invoke cannot be made at compile time.
- It has to be done at run-time.
- This is reffered as late binding
Difference between compile time & run time polymorphism:
- override functions have same signatures, but implemented in different classes
- overload is function with same name but different signatures in same class
Subscribe to:
Posts (Atom)