interface vs abstract class(.net languages)

by iatanasov 26. May 2007 16:26

When should you use an abstract class, when an interface, when both? Interfaces and abstract classes seem superficially to provide almost the same capability. How do you decide which to use?

When To Use Interfaces

An interface allows somebody to start from scratch to implement your interface or implement your interface in some other code whose original or primary

purpose was quite different from your interface. To them, your interface is only incidental, something that have to add on to the their code to be able to use your package.

When To Use Abstract classes

An abstract class, in contrast, provides more structure. It usually defines some default implementations and provides some tools useful for a full implementation.

The catch is, code using it must use your class as the base. That may be highly inconvenient if the other programmers wanting to use your package have already developed their own class hierarchy independently. In Java, a class can inherit from only one base class.

When to Use Both

You can offer the best of both worlds, an interface and an abstract class. Implementors can ignore your abstract class if they choose.

The only drawback of doing that is calling methods via their interface name is slightly slower than calling them via their abstract class name.

Summary

 

Interfaces vs Abstract Classes
feature interface abstract class
multiple inheritance A class may implement several interfaces. A class may extend only one abstract class.
default implementation An interface cannot provide any code at all, much less default code. An abstract class can provide complete code, default code, and/or just stubs that have to be overridden.
constants Static final constants only, can use them without qualification in classes that implement the interface. On the other paw, these unqualified names pollute the namespace. You can use them and it is not obvious where they are coming from since the qualification is optional. Both instance and static constants are possible. Both static and instance intialiser code are also possible to compute the constants.
third party convenience An interface implementation may be added to any existing third party class. A third party class must be rewritten to extend only from the abstract class.
is-a vs -able or can-do Interfaces are often used to describe the peripheral abilities of a class, not its central identity, e.g. an Automobile class might implement the Recyclable interface, which could apply to many otherwise totally unrelated objects. An abstract class defines the core identity of its descendants. If you defined a Dog abstract class then Damamation descendants are Dogs, they are not merely dogable. Implemented interfaces enumerate the general things a class can do, not the things a class is.

In a Java context, users should typically implement the Runnable interface rather than extending Thread, because they're not really interested in providing some new Thread functionality, they normally just want some code to have the capability of running independently. They want to create something that can be run in a thread, not a new kind of thread.The similar is-a vs has-a debate comes up when you decide to inherit or delegate.

multiple inheritance for further discussion of is-a vs has-a
plug-in You can write a new replacement module for an interface that contains not one stick of code in common with the existing implementations. When you implement the inteface, you start from scratch without any default implementation. You have to obtain your tools from other classes; nothing comes with the interface other than a few constants. This gives you freedom to implement a radically different internal design. You must use the abstract class as-is for the code base, with all its attendant baggage, good or bad. The abstract class author has imposed structure on you. Depending on the cleverness of the author of the abstract class, this may be good or bad.
homogeneity If all the various implementaions share is the method signatures, then an interface works best. If the various implementations are all of a kind and share a common status and behaviour, usually an abstract class works best. Another issue that's important is what I call "heterogeneous vs. homogeneous." If implementors/subclasses are homogeneous, tend towards an abstract base class. If they are heterogeneous, use an interface. (Now all I have to do is come up with a good definition of hetero/homo-geneous in this context.) If the various objects are all of-a-kind, and share a common state and behavior, then tend towards a common base class. If all they share is a set of method signatures, then tend towards an interface.
maintenance If your client code talks only in terms of an interface, you can easily change the concrete implementation behind it, using a factory method. Just like an interface, if your client code talks only in terms of an abstract class, you can easily change the concrete implementation behind it, using a factory method.
speed Slow, requires extra indirection to find the corresponding method in the actual class. Modern JVMs are discovering ways to reduce this speed penalty. Fast
terseness The constant declarations in an interface are all presumed public static final, so you may leave that part out. You can't call any methods to compute the initial values of your constants. You need not declare individual methods of an interface abstract. They are all presumed so. You can put shared code into an abstract class, where you cannot into an interface. If interfaces want to share code, you will have to write other bubblegum to arrange that. You may use methods to compute the initial values of your constants and variables, both instance and static. You must declare all the individual methods of an abstract class abstract.
adding functionality If you add a new method to an interface, you must track down all implementations of that interface in the universe and provide them with a concrete implementation of that method. If you add a new method to an abstract class, you have the option of providing a default implementation of it. Then all existing code will continue to work without change.

 

Currently rated 3.3 by 7 people

  • Currently 3.285714/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

object-oriented programming

Related posts

Comments

July 27. 2007 06:04

trackback

Trackback from DotNetKicks.com

interface vs abstract class(.net languages)

DotNetKicks.com

July 27. 2007 09:37

Gravatar

Here is another good article:

http://en.csharp-online.net/Should_I_use_an_abstract_class_or_an_interface" rel="nofollow">http://en.csharp-online.net/Should_I_use_an_abstract_class_or_an_interface%3F at C# Online.NET (http://en.csharp-online.net/).

Tom Elix us

July 27. 2007 09:53

Gravatar

Regardless of what the previous comment seems to suggest, as an OOP developer, we should favor composition over inheritance. Inheritance is easy to abuse, and when refactoring, it's easier to refactor into a hierarchy than out of.

Evan

Evan us

February 22. 2008 19:00

Gravatar

what do you mean?

Ivan Atanasov bg

March 29. 2008 18:07

Gravatar

nice article Ivan

anderson br

July 8. 2009 18:45

Gravatar

Very nicely put comparison. Thanks for this informative post.

North Park real estate us

September 10. 2009 02:54

Gravatar

This what i looking for my homework....thank's......

Kenali dan Kunjungi Objek Wisata di Pandeglang us

September 25. 2009 19:28

Gravatar

Wow, it's really a complete article to use interface and abstract class. Thanks for sharing.

Oes Tsetnoc us

October 17. 2009 21:37

Gravatar

I guess there's always an easier way ...

fast cash loans us

October 18. 2009 11:52

Gravatar

I havent any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us.

Kenali Dan Kunjungi Objek Wisata Di Pandeglang us

October 29. 2009 21:57

Gravatar

thanks for this useful information..
now i find what i want to know..
thanks..

Blog SEO us

October 31. 2009 14:04

Gravatar

Hmmm interesting stuff

personal loans us

November 18. 2009 17:59

Gravatar

Hmmm interesting stuff

fast payday loans us

November 22. 2009 13:54

Gravatar

Nice post . keep up the good work

cash loans us

December 4. 2009 06:22

Gravatar

Keep up the good work bro.Your article is really great and I truly enjoyed reading it.Waiting for some more great articles like this from you in the coming days.

proxy sites us

December 5. 2009 12:15

Gravatar

It's very true. There are very few people in this world who gives such tremendous views. I appreciate your work and hopping for some more informative posts.

Acai Berry us

December 18. 2009 08:12

Gravatar

I like this concept. I visited your blog for the first time and just been your fan. Keep posting as I am gonna come to read it everyday

payday loans us

December 18. 2009 22:37

Gravatar

<P>this really aids, now i receive the problems and i donot know how to figure out,
i research yahoo and found your blog,
thanks again</P><P>just one thing, can i post this entry on my blog? i will add the source and credit to your site.</P><P>regards!</P>

cool amber cn

December 23. 2009 13:16

Gravatar

Searching for this for some time now - i guess luck is more advanced than search engines :)

payday loans us

December 24. 2009 10:47

Gravatar

I use to read your posts.They are highly informative and helpful.Thanks for giving us such quality knowledge.Waiting for your next interesting posts.

Jenny Craig us

December 24. 2009 11:02

Gravatar

Thanks for the information. It is really nice of you. Please keep sharing such type of blogs in the future also.

Jenny Craig us

December 24. 2009 11:34

Gravatar

Thanks for the valuable information. It was very useful for me. Keep sharing such ideas in the future as well.

Blockbuster us

December 24. 2009 13:30

Gravatar

I wish you a successful implementation of your idea and will be waiting for more interesting ideas from you. Thank you very much for sharing your ideas.

Blockbuster us

December 29. 2009 12:53

Gravatar

You are doing a wonderful job. You are providing very nice piece of information, I would love to know more about it.

Omaha Steaks us

December 30. 2009 11:23

Gravatar

This was actually what I was looking for, and I am glad that I finally came here! Thanks for sharing the such information with us.

Omaha Steaks us

January 1. 2010 21:04

Gravatar

I love reading your posts. I wish you a Happy New Year!

Niche Blueprint 2.0 Review us

January 6. 2010 09:00

Gravatar

Thank you very much. Really the
blogging is spreading its wings rapidly. Keep up the good work.

Extenze us

January 7. 2010 12:01

Gravatar

great concept for writing...thanks for sharing

unsecured personal loans us

January 8. 2010 20:47

Gravatar

While surfing Yahoo I clicked on your link...very informative! I enjoy staying up-to-date about this kind of info. I'll definitely bookmark your site for additional review.

Tourism Country Visited us

January 9. 2010 12:07

Gravatar

I have read your informative post. it is really very informative.post. thanks....

Netflix us

January 9. 2010 12:57

Gravatar

Nice post. I always find it confusing where to use an interface and where an abstract class. But your post has clarified all my doubts..

Netflix us

January 11. 2010 09:37

Gravatar

I was searching differences between interface and abstract classes and I must say your post the complete information.

Criminal Background Check us

January 13. 2010 09:23

Gravatar

Thanks for the information. A very informative one I was looking for it. Now I had no doubts where to use abstract class and where to use interface . Keep up the good work and would like to hear more from you.

Extenze us

January 18. 2010 06:40

Gravatar

Thats a very nice topic for discussion..Your post is very helpfull for understanding the cocepts of interfaces and abstract classes....You are doing great job..Keep sharing such nice articles with us..

Payday Loans us

January 18. 2010 08:17

Gravatar

I used to read your Blog regularly. I must say great stuff .Keep posting us.

Acai Berry us

January 18. 2010 08:21

Gravatar

This is indeed a great post, I would surely love to know more about it. I will look forward to see more

Teeth Whitening us

January 18. 2010 12:16

Gravatar

Nice site. I have enjoyed your site a lot. I want to know more about this.

Teeth Whitening us

January 20. 2010 10:04

Gravatar

I have surfed the net more than three hours today, yet I never found any interesting article like yours. It's worth enough for me. Thanks.

mma pound for pound ratings us

January 21. 2010 11:17

Gravatar

well

friendly themes code structure us

January 23. 2010 12:15

Gravatar

Amazing..you really made my day & after reading this Surely..i ll twit this to my all friends to know more about this blog

Colon Cleanse gb

January 23. 2010 14:44

Gravatar

You can use the fanciest computers to gather the numbers, but in the end you have to set a timetable and act.

bad credit payday loans us

January 24. 2010 17:24

Gravatar

Saying thanks will not just be sufficient, for the great lucidity in your writing. I will right away grab your rss feed to stay informed of any updates.

buenos aires apartments us

January 24. 2010 17:24

Gravatar

Saying thanks will not just be sufficient, for the great lucidity in your writing. I will right away grab your rss feed to stay informed.

Buenos aires real estate us

January 25. 2010 07:06

Gravatar

Intimately, the post is actually the best on this laudable topic. I harmonize with your conclusions and will eagerly look forward to your future updates. Saying thanks will not just be adequate, for the fantastic lucidity in your writing.

Acai Berry us

January 28. 2010 14:48

Gravatar

Vision is the art of seeing things invisible to others.

Loans in Hawaii us

February 1. 2010 08:23

Gravatar

Interface and abstract class,there is always a lot of confusion in using these two in c++,jave,.net in all theses languages.You cleared a lot of confusion about these two.

liposuction before after us

February 2. 2010 09:15

Gravatar

It is very interesting post and very informative as well. Most of us are not aware o this truth. Thanx a lot for sharing this post with us.

Colon Cleanse us

February 2. 2010 12:48

Gravatar

Its a very informative article.

Extenze us

February 3. 2010 16:16

Gravatar

Hey this is really nice information. I was looking for something similar like this. Thanks for this useful information.

Acai Berry gb

February 8. 2010 13:00

Gravatar

Thanks for sharing such an interesting and informative post.

Teeth Whitening us

February 9. 2010 07:26

Gravatar

I was looking for such information for a long time and I am glad that I finally landed here and got the much awaited information!

netflix us

February 11. 2010 09:08

Gravatar

Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenter here! It's always nice when you can not only be informed, but also entertained! I'm sure you had fun writing this article.

P90X us

February 11. 2010 09:20

Gravatar

You made some good points here. A very informative one I was looking for it. Keep up the good work and would like to hear more from you.

Extenze us

February 11. 2010 09:25

Gravatar

I just bookmarked your blog and wanted to say that I have really enjoyed reading your blog. Thanks for sharing.

Colon Cleanse us

February 13. 2010 09:17

Gravatar

This is a really excellent read for me. Must admit that you are one of the coolest blogger I ever saw. Thanks for posting this useful article.

Teeth Whitening us

February 18. 2010 23:58

Gravatar

He who laughs, lasts.

natural detox us

February 19. 2010 00:25

Gravatar

i love to read articles that are informative and beneficial in nature.

ssk sorgulama

February 20. 2010 18:39

Gravatar

Awesome! Some really helpful information in there. Bookmarked. Excellent source.

online scheduler us

February 21. 2010 03:05

Gravatar

I really enjoyed read your article, very interesting ...

ehliyet

February 22. 2010 17:13

Gravatar

Interesting post and I really like your take on the issue. I now have a clear idea on what this matter is all about. Thank you so much.

araç sorgulama

February 24. 2010 00:56

Gravatar

Excellent post.I want to thank you for this informative read, I really appreciate sharing this great post. Keep up your work.

zerrin egeliler

February 25. 2010 17:34

Gravatar

I don't like your template but your posts are quite good so I will check back!

paydayloans

February 27. 2010 08:17

Gravatar

Super-Duper site! I am loving it!! Will come back again - taking you feeds also, Thanks.

cash advance

February 28. 2010 12:12

Gravatar

Please, can you PM me and tell me few more thinks about this, I am really fan of your blog...

Acne scar treatment

March 1. 2010 23:37

Gravatar

Fine information, many thanks to the author. It is puzzling to me now, but in general, the usefulness and significance is overwhelming. Very much thanks again and good luck!

gazeteler us

March 3. 2010 23:50

Gravatar

That is some inspirational stuff. Never knew that opinions could be this varied. Thanks for all the enthusiasm to offer such helpful information here.

Herbal colon cleanse

March 4. 2010 08:29

Gravatar

i love to read articles that are informative and beneficial in nature.

ssk hizmet dokumu sorgulama us

March 5. 2010 17:14

Gravatar

AMAZING! Great work! This is a very nice post! Thanks!

davoyanr ua

March 5. 2010 20:14

Gravatar

really a complete article to use interface and abstract class. Thanks for sharing.

forex predictive software us

March 7. 2010 04:06

Gravatar

I wasn't aware of the many ripples and depth to this story until I surfed here through Google! Great job. Big thanks for the useful info i found on interface vs abstract class(.net languages).

payday loans

March 8. 2010 20:54

Gravatar

This is such a great resource that you are providing and you give it away for free. I love seeing websites that understand the value of providing a quality resource for free. It?s the old what goes around comes around routine. Big thanks for the useful info i found on interface vs abstract class(.net languages).

cash loans

March 9. 2010 07:45

Gravatar

Thanks for the information, it was really useful. I was looking for it and I'll be waiting for your next post.

Netflix us

March 10. 2010 09:31

Gravatar

Its the 1st time i am on your site and i would like to congratulate you for the big effort you are doing to write such excellent posts.

MMA pound for pound ratings us

March 12. 2010 09:34

Gravatar

Very useful informations about these subject. Great info.I like all your post.Interesting article..

emekli sandıgı us

March 13. 2010 16:25

Gravatar

my God, i thought you were going to chip in with some decisive insght at the end there, not leave it with ‘we leave it to you to decide’.

Stretch mark removal

March 14. 2010 18:11

Gravatar

Hvala vam za dobar post puno hvala

general electric cooktop us

March 16. 2010 16:34

Gravatar

I like what you're saying because it's true to 2010 even though it's a little bit older

reverse cell phone number lookup hu

March 17. 2010 12:27

Gravatar

In my view every progammer face difficulty in differenciating between interface vs abstract class.The way you have given the differenciation is appreciable.

universal projector mounts us

March 17. 2010 15:17

Gravatar

the previous comment seems to suggest, as an OOP developer, we should favor composition over inheritance. Inheritance is easy to abuse, and when refactoring, it's easier to refactor into a hierarchy than out of.

SEO us

March 18. 2010 13:02

Gravatar

This is the main thing in .Net.but i would like to read your nect post based on it.keep posting.

jennyjosh863 us

March 22. 2010 12:08

Gravatar

This information is some of the best I have found on this topic for me, I would like to appreciate your posting style, it’s really good, keep it up.

Stretch Marks us

March 25. 2010 04:59

Gravatar

Thanks for that opinion.
Makes me want to read more info on oop

Nigel tm

March 26. 2010 12:01

Gravatar

I appreciate the article; it has given me http://www.folkd.com/user/jkljkl a brief idea on this topic. You have done a marvelous job by exploring this subject with such an honesty and depth. Thanks for sharing it http://www.folkd.com/user/heymate with us!

Christine Himmelspach cn

March 26. 2010 12:27

Gravatar

Your weblog includes a genuinely cool pattern. That becoming said http://wordpress.org/extend/plugins/backup-content-as-txt/ the details here is totally free and is of high-quality. I'm subscribing to your feed right now.

Miguel Oguendo cn

March 26. 2010 13:37

Gravatar

Your blog provided us with valuable http://www.codeplex.com/site/users/view/richard56 information to help us get http://www.bigoven.com/~richard56 started.You have done an impressive http://www.naymz.com/richard_richard_3262174 job!

Raphael Jinkens cn

March 26. 2010 23:35

Gravatar

Very interesting post - Might be old news, but it was news to me. Big thanks for the useful info i found on interface vs abstract class(.net languages).

toe nail fungus treatment

March 27. 2010 04:16

Gravatar

Well said and your post is very well versed, but I can't agree with you completely

Conservatory Pleated Blinds us

March 27. 2010 05:25

Gravatar

Well said and your post is very well versed, but I can't agree with you completely

blood pressure monitor us

March 27. 2010 07:30

Gravatar

A <a href="http://www.jellyrollpan.org/stainless-steel-jelly-roll-pan/";>stainless steel jelly roll pan</a> with aluminum surface is better for cooking and baking than a pure steel pan. This makes the steel pan more consistent. So don’t mind paying a high price for such a steel pan and buy one that is suitable.

stainless steel jelly roll pan us

March 27. 2010 11:21

Gravatar

This is an excellent thought provoking post.

Novoline de

March 27. 2010 13:15

Gravatar

Why choose earn online degree? There are lots of advantages to getting an <a href="http://www.earnonlinedegree.org/earn-online-psychology-degree-to-boost-your-future-caree/";>online psychology degree</a>.

earn online degree us

March 27. 2010 19:06

Gravatar

Hollywood movie trailers, movie reviews, and new movie on the net. We will bring daily hottest news straight to your computer.

movie trailers us

March 28. 2010 00:46

Gravatar

the best photography tips on the net. photographer, photography blog.

photography tips us

March 29. 2010 07:04

Gravatar

That is some inspirational http://foundmagazine.com/users/profile/13626 stuff. Never knew that opinions could be this http://www.blogigo.com/changemylife/need-say-somthing-about-Aquasana-drinking-water-filter/10/ varied. here.

Latesha Mccubbin cn

March 30. 2010 00:15

Gravatar

This is great that we can get the loans moreover, it opens up new possibilities.

business loans ca

March 30. 2010 01:51

Gravatar

Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It's always nice when you can not only be informed, but also entertained! I'm sure you had fun writing this article. Big thanks for the useful info i found on interface vs abstract class(.net languages).

hpv genital warts

March 30. 2010 07:45

Gravatar

hands down, sir. i have to say i couldn't agree more.

online psychology degree us

March 30. 2010 12:06

Gravatar

I hope you have a http://ezinearticles.com/?Effective-Ideas-to-Cultivate-Happiness&;id=3432583 day!

Jamel Talahytewa cn

March 30. 2010 23:49

Gravatar

Finding someone that uses security camera software in the same fashion of which you will need it can be easier than you might think. This way no matter what security network the people you meet are using you will be able to research the system as well.

security camera software us

April 1. 2010 08:31

Gravatar

I am not really sure if best practices have emerged around things like that, but I am sure that your great job is clearly identified. I was wondering if you offer any subscription to your RSS feeds as I would be very interested and can?t find any link to subscribe here.

refinance car loan

April 1. 2010 08:36

Gravatar

Having good subject can only get you so far unless you also provide a good ambience to comment in, I hope you have a good day!

Kathyrn Labarbara us

April 2. 2010 15:06

Gravatar

That is some inspirational Never knew that opinions could be this http://www.blogigo.com/changemylife/need-say-somthing-about-Aquasana-drinking-water-filter/10/ varied. here.

Monte Bocock cn

April 3. 2010 04:10

Gravatar

The material used on a memory foam mattress is designed so that when pressure is applied, it sinks down and would sink down further when more pressure is applied.

twin mattress us

April 4. 2010 02:13

Gravatar

Being a new blogger, I would like to tell you that you have given me much knowledge about it. Thanks for everything.

notebook us

April 4. 2010 12:31

Gravatar

Finally, got what I was looking for!! I definitely enjoying every little bit of it. Glad I stumbled into this article! smile I have you bookmarked to check out new stuff you post

debt management plan

April 5. 2010 03:21

Gravatar

This article gives the light in which we can observe the reality. this is very nice one and gives indepth information. thanks for this nice article! Big thanks for the useful info i found on interface vs abstract class(.net languages).

cellulite treatment us

April 5. 2010 13:26

Gravatar

Cool post thanks. Especially remarkable topic, will bookmark your site to see if you write more about in the future.

mba essay samples

April 5. 2010 20:07

Gravatar

I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.

low fat salad recipes cn

April 6. 2010 08:15

Gravatar

Howdy, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam comments? If so how do you prevent it, any plugin or anything you can advise? I get so much lately it's driving me mad so any assistance is very much appreciated.

vegetarian soup recipe cn

April 8. 2010 02:54

Gravatar

Comfortabl y, the article is in reality the best on this valuable topic. I harmonise with your conclusions and will thirstily look forward to your coming updates. Just saying thanks will not just be sufficient, for the wonderful clarity in your writing. I will instantly grab your rss feed to stay privy of any updates. Fabulous work and much success in your business dealings!

drinking water sand filter us

April 8. 2010 14:11

Gravatar

Do not turn back when you are just at the goal.

SC Payday Loans us

April 10. 2010 10:46

Gravatar

I had problems accessing this post on my iPhone, why is that?

writing topics

April 10. 2010 14:25

Gravatar

Interesting blog, not like the others!

aperitivo roma ni

April 10. 2010 21:41

Gravatar

I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well.

bad credit fast cash loans us

April 13. 2010 19:53

Gravatar

I have a awesome sense of humor and I enjoy laughing the wacky of her jokes.

Tyson F. Gautreaux us

May 2. 2010 11:53

Gravatar

I keep listening to the news talk about getting free online grant applications so I have been searching around for the best site to get one.

cash til payday loan us

May 7. 2010 09:25

Gravatar

My day was kind of frazzled so I was looking for something interesting and this worked.

Ridell au

May 8. 2010 13:29

Gravatar

I don’t usually reply to posts but I will in this case. WoW :)

quick loans us

May 8. 2010 18:50

Gravatar

This is very interesting especially because its about oop. Mosty other blogs tend to be boring

Ryan gr

May 13. 2010 22:27

Gravatar

Super-Duper website! I'm loving it!!!!
Will come back again - getting you feeds also, Many thanks.

Kris Brown eg

Comments are closed

Powered by BlogEngine.NET 1.1.0.7
Theme by Mads Kristensen

About the author

Ivan Atanasov - web developer
E-mail me Send mail Subscribe Feed

Calendar

<<  May 2012  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar

Pages

    Recent posts

    Recent comments

    Authors

    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2012 it-coder.com

    Sign in