Monday, March 5, 2007

Open Secret

The title of the post is intentionally non technical ........and it has some meaning....How?The reason is quite simple....as the name suggests .......you already know the stuff that will be presented in the current post.....only difference would be we will look this entire stuff from different view point.....

This post exclusively deals with answer asked in the last part of the previous post.

We will be thinking of one real world entity (object) & we will try to find out all the major pillars of OOPs in it..which will be a proof of concept for the discussion we had in earlier post.Ready? Get...Set...Go.....

I am thinking of Personal Computer as real world entity.Now biggest question is how Abstraction, Encapsulation, Inheritance , Polymorphism and Modularity applies to this object?

I am sure you must have considered other objects as well & must have done some research on this...right?Personal Computer (PC) as an object is a very good example to understand these major pillars.

If i have to purchase a PC , very obvious step i would take is i will consult my friends, relatives and colleagues who know about it. I am sure they will ask me for What reason you are purchasing it...meaning is what you are going to do with that? or How you will make use of PC? isn't it?If i say, I am going to use for my personal use most of them would suggest me some configuration (Memory Size, CD Drive, Speakers etc..)If i say , I am going to use this as a high end server in my office or wherever this configuration would change (bit obvious that there would be more memory, speakers won't be there.)If i am going to gift this PC to a School for some educational purpose , the changes in configuration would be more multimedia features (to Show Educational CDs) and may be more multimedia related software (which were missing when i am supposed to use PC as a High End Server)

In these 3 examples i am sure you will appreciate the fact that, PC remains the PC ....Object is same , however we changed the configuration i.e. attributes of PC object according to our need and usability. We selected few attributes and dropped few one as usability changes, This is Abstraction. How we define Abstraction:Abstraction refers to identifying key aspects (and obviously ignoring/ dropping the rest) of an object/entity for the specific application.

Now you know why the title of this post is "Open Secret "............

Can i consider various electronic components on motherboard of computer or in general PC as a data members and the way we can operate the PC as a behavior of PC?Let me explain....I am a user ....I could start the PC as well as i could shutdown the PC ...when i do this there is some typical behavior shown by PC... right?......this is behavior of PC as an object......and i could do much more than this with PC...When i turn PC on / off do you agree that electronic components behind the scenes are at work..(Some capacitor gets charged and discharged & so on...)....This is Encapsulation...How Encapsulation is defined:Encapsulation is a process where data(attributes) & methods (behavior) is rolled into a single entity known as object. It protects data within an object & ensures that it could be accessed only by its methods.As a user i never need to understand the details of how PC operates but to know how i should operate it or what are the possible operations i could do with PC?...Hiding the complex details of an object is an aspect of Encapsulation.I turn on & off the PC and do some other stuff (behavior of the PC) as well and behind the scenes many Electronics parts of PC undergo electrical change(change in attributes).And end user never knows these details. This is Encapsulation

I am sure everybody is aware of PCs with Intel's Pentium IV processor , what was there earlier to Pentium IV processors? Pentium III ....earlier to this ? Pentium II .....earlier to this? Pentium I/Pentium in general.......prior to that 80486...80386....80286.........80186.......8086...8085 (In early 70's)...so on...So each time new processor for PC comes to market there are few enhancements....No need to think that new Processor is 100% brand new...it has same structure / architecture of the previous processor and there is something to more to it in new version e.g. 80186 is-a 8086 but there were few enhancements compared to 8086...so we normally use the term code written on 80186 is "backward-compatible" with 8086 & so on for other processors ..isn't it?This backward-compatibility is achieved because some part in older processor is carried forward to next processor & there are advancements on top of it.I am talking about Inheritance (Definition: Inheritance basically refers to hierarchy to reduce complexity) So if you are following the posts then, i would simply say that,Pentium IV is Subclass of Pentium III .....Let me know....whether this statement is true?

I am repeating the part of my earlier post to explain Polymorphism Answer these simple questions (you can do the steps side by side to have a fun) at the end we will revisit the definition Do you use mouse while using your PC?Have you ever used a right click button of a mouse?Have you right clicked on Files, Folders, Desktop etc..?Have you observed that response (pop-up contents) you get when you right click on Files , Folders and Desktop is different ? ...If not please check it now....Sure they are different?Hey, you have now understood Polymorphism....nothing great right?Definition : It is the ability of different objects to respond to the same message differently. Ability of different objects (Files, Folders, Desktop etc..) to respond to the same message (right click) differently(different contents on pop-up) is Polymorphism.

PC is composed of many loosely coupled components (they are object within themselves)...so different components like Keyboard, Mouse, Motherboard, Monitor, connectors and cables constitute the whole object PC however these are loosely coupled so that if keyboard or mouse or anything else is not working properly you can easily replace them individually without affecting other components say While replacing Keyboard you don't have to do anything with Monitor or motherboard etc...This is an example of Modularity (In OOPs modularity refers to breaking up the system in small modules which are loosely coupled to each other & act as a single system or as a Cohesive system. This way it is easy yo maintain & easy to extend) in case of a PC....


This brings me to end of this post ... I hope you have enjoyed the journey so far.........

Stay tuned for more........

No comments:

 
online degree programs
visit us .