Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.help > #1552

Re: Interchanging objects?

From Lew <lewbloch@gmail.com>
Newsgroups comp.lang.java.help
Subject Re: Interchanging objects?
Date 2012-02-05 11:34 -0800
Organization http://groups.google.com
Message-ID <8494969.1891.1328470471486.JavaMail.geo-discussion-forums@prnc3> (permalink)
References <bb014e7e-2bf1-4d55-8677-6e2514826da5@p7g2000yqk.googlegroups.com> <2362859.192.1328425259754.JavaMail.geo-discussion-forums@prhb20> <9f687d98-30d7-4838-b09d-5ff6a77139b9@1g2000yqv.googlegroups.com>

Show all headers | View raw


Davej wrote:
> I have been trying to think of a convenient way to interchange objects
> that provide calculations that are done slightly differently. The
> objects all have the same method names and return the same types. Is
> there an elegant way to accomplish this? Thanks.

Yes. Instead of thinking in terms of objects, think in terms of types.

You have some concept of a type that will perform certain behaviors, the 
details of which will be handled by different specific subtypes of that type.

So define your overall type as in interface and have your specific subtypes 
implement that interface. Something along the lines of (not complete code):

 public interface Schmoo
 {
   Spronk schmooze(Scronx scronx);
 }

Now let's say you have two different kinds of 'schmooze()' you want types to 
perform.

 public class TankerSchmoo implements Schmoo
 {
   @Override public Spronk schmooze(Scronx scronx)
   {
     // an implementation that somehow involves Tankers
   }
 }

and

 public class HonkerSchmoo implements Schmoo
 {
   @Override public Spronk schmooze(Scronx scronx)
   {
     // an implementation that somehow involves Honkers
   }
 }

Mind you, you cannot convert TankerSchmoo to HonkerSchmoo or vice versa, but 
you can refer to either one as a Schmoo.

 Schmoo aSchmoo = new TankerSchmoo();
 Schmoo anotherSchmoo = new HonkerSchmoo();

You can have a collection of such things.

 List<Schmoo> schmoos = Arrays.asList(aSchmoo, anotherSchmoo);

and 

 Scronx scronx = getScronx();
 for (Schmoo schmoo : schmoos)
 {
   schmoo.schmooze(scronx);
 }

But what you need to do is study the Java tutorials and the conversion rules to 
which I've already alluded, and understand inheritance and polymorphism.

-- 
Lew

Back to comp.lang.java.help | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Interchanging objects? Davej <galt_57@hotmail.com> - 2012-02-04 12:02 -0800
  Re: Interchanging objects? Lew <lewbloch@gmail.com> - 2012-02-04 23:00 -0800
    Re: Interchanging objects? Davej <galt_57@hotmail.com> - 2012-02-05 07:41 -0800
      Re: Interchanging objects? Lew <lewbloch@gmail.com> - 2012-02-05 11:34 -0800
      Re: Interchanging objects? Roedy Green <see_website@mindprod.com.invalid> - 2012-02-08 22:42 -0800
        Re: Interchanging objects? Lew <lewbloch@gmail.com> - 2012-02-09 09:21 -0800
  Re: Interchanging objects? Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-02-07 08:09 -0500

csiph-web