permaculture playing cards*
The moose likes OO, Patterns, UML and Refactoring and the fly likes Essentials Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » OO, Patterns, UML and Refactoring
Bookmark "Essentials" Watch "Essentials" New topic
Author

Essentials

Maxim Katcharov
Ranch Hand

Joined: Sep 07, 2004
Posts: 113
If you were to certify that someone "knows OO", what would you be sure they know, know how to do, and know not to do? Feel free to direct to a site or book, saying "everything in there", or just listing pieces of knowlege, maybe things that you think are neglected but fundamental concepts
Sathya Srinivasan
Ranch Hand

Joined: Jan 29, 2002
Posts: 379
I would probably think that to cerify a person as OO, one should know the following concepts

Encapsulation
Inheritance
Abstraction
Polymorphism

and the following principles

Liskov Substitution Principle
Open-Closed Principle
Single Responsibility Principle
Dependency Inversion Principle
Interface Segregation Principle

and optionally

Law of Demeter
Design by Contract

For reference, you can look at

Agile Software Development by Robert Martin.


Cheers, Sathya Srinivasan - SCJP 1.2, SCWCD 1.2, SCMAD 1.0
Co-Author of Whizlabs SCMAD Certification Exam Simulator and SCMAD Exam Guide Book
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
The Law of Demeter comes to mind.

The best method I can think of for a certification of someone's skills would be to have the candidate code something and then evaluate how what she produced follows the object-oriented design principles you're looking for.


Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
Ah. I see Sathya was faster in typing
I also second the suggestion for Uncle Bob's ASD book.
Stan James
(instanceof Sidekick)
Ranch Hand

Joined: Jan 29, 2003
Posts: 8791
Sathya, great list!

Also google for "java interview questions". You'll find hundreds of mystified applicants trying to figure out what somebody just asked them, plus a few golden nuggets of good interviewing techniques. I have a couple links around here somewhere ... will try to find them. I recall one that had a nice progression so if somebody couldn't answer #5 don't even bother with #6.


A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Kishore Dandu
Ranch Hand

Joined: Jul 10, 2001
Posts: 1934
Originally posted by Lasse Koskela:
Ah. I see Sathya was faster in typing
I also second the suggestion for Uncle Bob's ASD book.


what is uncle bob's ASD book??


Kishore
SCJP, blog
Kishore Dandu
Ranch Hand

Joined: Jul 10, 2001
Posts: 1934
Originally posted by Sathya Srinivasan:

Liskov Substitution Principle
Open-Closed Principle
Single Responsibility Principle
Dependency Inversion Principle
Interface Segregation Principle

and optionally

Law of Demeter
Design by Contract

For reference, you can look at

Agile Software Development by Robert Martin.


I have been doing oo systems development for almost 7 years. I have no clue what the above principles are. Can some one shed a light where I can read through them??

BTW OO design is also a inherant skill only can be grasped by better iq persons( I am not saying I am one)
Daniel Mayer
Ranch Hand

Joined: Sep 09, 2004
Posts: 103
Originally posted by Kishore Dandu:


what is uncle bob's ASD book??


"Agile Software Development: Principles, Patterns, and Practices" by Robert C. Martin
Daniel Mayer
Ranch Hand

Joined: Sep 09, 2004
Posts: 103
Originally posted by Kishore Dandu:
I have been doing oo systems development for almost 7 years. I have no clue what the above principles are.


What a shame!

Can some one shed a light where I can read through them??


The best really would be to read the above book. It's worth every single penny.

http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign also has some information on them.
Kishore Dandu
Ranch Hand

Joined: Jul 10, 2001
Posts: 1934
Originally posted by Daniel Mayer:


The best really would be to read the above book. It's worth every single penny.

http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign also has some information on them.


I am not talking about polymorphism etc. I am talking about the principles.

U can ask around the javaranch(ask the experts), I am confident at least 50% of gurus did not go through those principles. Still they are likely to have produced high quality, highly appreciated oo based complex systems. Daa......
Maxim Katcharov
Ranch Hand

Joined: Sep 07, 2004
Posts: 113
Kishore, I believe you may not need to know the names of the principles in order to have applied them in your designs. I'm sure that of the people you mentioned, most of them would recognize the principles without knowing their names.

Stan, great tip on the java interview questions!
Daniel Mayer
Ranch Hand

Joined: Sep 09, 2004
Posts: 103
Originally posted by Kishore Dandu:
I am not talking about polymorphism etc. I am talking about the principles.


Did something in my post indicate that I was not talking about the principles?


U can ask around the javaranch(ask the experts), I am confident at least 50% of gurus did not go through those principles. Still they are likely to have produced high quality, highly appreciated oo based complex systems.


Knowing the principles still helps. I would advice everyone to take a look at them.
Sathya Srinivasan
Ranch Hand

Joined: Jan 29, 2002
Posts: 379
I agree with what one of the posts mentioned that most experienced developers would have knowingly or unknowingly applied the mentioned principles in their code.

If someone says (not just you) that your code is easy to understand and reuse, chances are that you have applied some or all of the principles.

That said, it definitely helps to actually read these principles as you might understand some of the subtleties better. Personally, I found that I had not thought of some very important subtleties in LSP before reading Martin's book.

Here are the links for the points that I mentioned.


Principles and
Patterns



Single Responsibility Principle



Open-Closed Principle



Liskov Substitution Principle



Interface Segregation Principle



Dependency Inversion Principle


And all these principles are mentioned in the book


Agile Software Development, Principles, Patterns, and Practices
by Robert Cecil Martin




Law of Demeter


Sathya.
Scott Ambler
author
Ranch Hand

Joined: Dec 12, 2003
Posts: 608
A good developer will know more than just OO stuff. OO is only part of the picture, you need to have a handle on non-OO issues which are equally important.

If you're looking for a good intro to software development which addresses the full development lifecycle (e.g. modeling, coding, testing, ...), OO, more than just OO (e.g. database stuff, UI stuff, ...), agility, and UML 2 then you might want to look at The Object Primer 3rd Edition(www.ambysoft.com/theObjectPrimer.html).

- Scott


<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
Lasse Koskela
author
Sheriff

Joined: Jan 23, 2002
Posts: 11962
    
    5
Originally posted by Scott Ambler:
...then you might want to look at The Object Primer 3rd Edition (www.ambysoft.com/theObjectPrimer.html).

Disclaimer:
Just in case it's not clear from the context, Scott is the author of the said book (and many others).
 
 
subject: Essentials
 
Similar Threads
Using lists in a jsp
Windows XP?
any1 knows openssh?
redirect=true in config does not work
what to do