[ajug-members] design theory
521
521 at ofig.org
Mon May 5 13:43:39 EDT 2008
:)
On Mon, 5 May 2008 10:07:50 -0400, Les Hazlewood wrote
> Just a side note - I hope no one ever really creates an Interface
> named BombInterface or IBomb or anything crappy like that.
>
> Bomb _should_ be refactored into an Interface itself. Then, if you
> only have one implementation, call the class DefaultBomb or something
> like that.
>
> I know there are others that think this isn't a big deal (the
> Microsoft world loves IBomb and similar hungarian notation
> constructs), but I absolutely _despise_ it. The reason is that
> because it inherently 'undercuts' the true principals of Object
> Orientation. An interface exists as a behavioral specification: one
> component literally "interfaces" with another component via that
> specification. In true OO form, the component making the call isn't
> _supposed_ to know if its an interface or an abstract class or a
> concrete implementation. The more succinct, noun-matching names are
> inherently more self documenting too.
>
> That is the beauty of interface-driven design and polymorphism. The
> very use of Hungarian notation in interface and class names themselves
> shows either a lack of understanding of these principals or a laziness
> in choosing to ignore these principals in code. Don't get started on
> bad habits!
>
> Let the flame war begin... :)
>
> On Sun, May 4, 2008 at 9:30 PM, Bentley, Jeff <jb5561 at att.com> wrote:
> > Ok. I'll bite.
> >
> > Imagine you have some service you need to implement called
> > NuclearWeaponControl.
> > It has one method called "public void detonate(GPSCoordinates
> > coordinates) throws CantDetonateException".
> > The method is supposed to throw the exception in 500 different
> > situations.
> >
> > You are given a Class call Bomb with one method named
> > blowUp(GPSCoordinates coordinates) that will explode a bomb at the given
> > position.
> >
> > Cool. So you write a class called NuclearWeaponContol with the detonate
> > method that calls Bomb.blowup(..) and are feeling like a stud.
> >
> > Boss says... Yo dude... Have you tested that method out to make sure
> > that it works to the specs?
> > Mcdaniels says.... Uh.... No... Can I detonate a few bombs to check it
> > out?
> > Boss says... No
> >
> > In walks the high priced spring advocate that says... No problem. I can
> > write some code to test that method behavior with out actually firing
> > off a nuke.
> >
> > Boss fires Mcdaniel and hires the spring advocate.
> >
> > Spring advocate then extracts an interface called BombInterface from the
> > class Bomb.
> > Spring advocate uses spring to inject a TEST implementation of the
> > BombInterface into future test cases.
> > The TEST implementation of BombInterface is called BombTest.
> > Spring advocate then writes a series of junit tests to exercise
> > NuclearWeaponControl that uses the injected BombTest vs Bomb.
> >
> > The spring advocate gets hungry and orders a pizza. Mcdaniel delivers
> > the hot pizza and gets a $10 tip from the high priced spring advocate.
> > :-)
> >
> > The spring advocate finishes 500+ junit tests that exercise the 500
> > exception situations defined in the requirements and banks the check
> > from the boss.
> >
> > The boss is happy, the spring advocate is happy, the interface newbie
> > learns a lessson,
> > jeff
> >
> >
> >
> >
> >
> > -----Original Message-----
> > From: mcdaniel [mailto:521 at ofig.org]
> > Sent: Sunday, May 04, 2008 5:51 PM
> > To: ajug-members at ajug.org
> > Subject: [ajug-members] design theory
> >
> > can someone tell me what design to an interface means- what i mean by
> > this is that i know what it means by definition- because i read about it
> > often- most oop examples are oak tree extends tree, implements growable,
> > and then tree extends plantae... etc -then i see lots of code right up
> > front as extends jframe, extends awprx.border etc; so... and this may
> > be basic'ish, but what's a persons' example of design to the
> > interface(s); by the way- i am enjoying learning java (i've programmed
> > for years, but it has all been procedural) and tks for any (theory)input
> > [i think that i just casted theory-traits onto what was an 'input'
> > object]
> >
> > Shivraj Patil wrote:
> > > answer is Spring oriented.
> > > Design using Interfaces than Classes,
> > > it gives us multiple inheritance and polymorphism benefit.
> > > Enjoy!
> > >
> > > On Fri, May 2, 2008 at 9:51 PM, mcdaniel <521 at ofig.org
> > > <mailto:521 at ofig.org>> wrote:
> > >
> > > i understand, this was not a question- like, from a test- it's
> > > simply me
> > > wondering... -i understand why it looks that way though...
> > >
> > > b
> > >
> > > Chris Fowler wrote:
> > > > On Fri, 2008-05-02 at 21:38 -0400, mcdaniel wrote:
> > > >
> > > >> can anyone please answer my question?
> > > >>
> > > >
> > > > Not good following a mailing list post asking for an answer to
> > the
> > > > question. You'll not get many answers that way.
> > > >
> > > > I did a quick google and found some answers
> > > >
> > > >
> > >
> > http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=2
> > 7&t=002061
> > >
> > <http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=
> > 27&t=002061>
> > > >
> > > > http://www.google.com/search?hl=en&q=Extend+Threads+vs
> > > <http://www.google.com/search?hl=en&q=Extend+Threads+vs>
> > > > +Runnable&btnG=Google+Search
> > > >
> > > >
> > > >
> > > >> barclay
> > > >>
> > > >> >>>>
> > > >>
> > > >> 5/1/2008; barclay wrote:
> > > >>
> > > >>> why would one ever "extend Thread" vs. "implementing
> > > Runnable"? -are
> > > >>> there speed gains/losses?
> > > >>>
> > > >>>
> > >
> > ------------------------------------------------------------------------
> > > >>>
> > > >>> _______________________________________________
> > > >>> ajug-members mailing list
> > > >>> ajug-members at ajug.org <mailto:ajug-members at ajug.org>
> > > >>> http://www.ajug.org/mailman/listinfo/ajug-members
> > > >>>
> > > >>>
> > > >> _______________________________________________
> > > >> ajug-members mailing list
> > > >> ajug-members at ajug.org <mailto:ajug-members at ajug.org>
> > > >> http://www.ajug.org/mailman/listinfo/ajug-members
> > > >>
> > > >
> > > >
> > > > _______________________________________________
> > > > ajug-members mailing list
> > > > ajug-members at ajug.org <mailto:ajug-members at ajug.org>
> > > > http://www.ajug.org/mailman/listinfo/ajug-members
> > > >
> > > >
> > > >
> > >
> > > _______________________________________________
> > > ajug-members mailing list
> > > ajug-members at ajug.org <mailto:ajug-members at ajug.org>
> > > http://www.ajug.org/mailman/listinfo/ajug-members
> > >
> > >
> > >
> > >
> > > --
> > > Regards,
> > > ShivRaj Patil
> > > 4685, Apartment # K4
> > > Atlanta, GA-30338
> > > Cell: (908) - 720 0285
> > > ----------------------------------------------------------------------
> > > --
> > >
> > > _______________________________________________
> > > ajug-members mailing list
> > > ajug-members at ajug.org
> > > http://www.ajug.org/mailman/listinfo/ajug-members
> > >
> >
> > _______________________________________________
> > ajug-members mailing list
> > ajug-members at ajug.org
> > http://www.ajug.org/mailman/listinfo/ajug-members
> >
> > _______________________________________________
> > ajug-members mailing list
> > ajug-members at ajug.org
> > http://www.ajug.org/mailman/listinfo/ajug-members
> >
>
> _______________________________________________
> ajug-members mailing list
> ajug-members at ajug.org
> http://www.ajug.org/mailman/listinfo/ajug-members
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ajug.org/pipermail/ajug-members/attachments/20080505/d4301da0/attachment-0001.html
More information about the ajug-members
mailing list