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


Groups > comp.lang.java.programmer > #9813 > unrolled thread

equals(), Sets, Maps, and degrees of equality

Started bySean Mitchell <sean@mitchwood.com>
First post2011-11-09 18:33 -0800
Last post2011-11-16 09:15 -0800
Articles 5 on this page of 25 — 9 participants

Back to article view | Back to comp.lang.java.programmer


Contents

  equals(), Sets, Maps, and degrees of equality Sean Mitchell <sean@mitchwood.com> - 2011-11-09 18:33 -0800
    Re: equals(), Sets, Maps, and degrees of equality Owen Jacobson <angrybaldguy@gmail.com> - 2011-11-09 22:10 -0500
      Re: equals(), Sets, Maps, and degrees of equality v_borchert@despammed.com (Volker Borchert) - 2011-11-10 04:42 +0000
    Re: equals(), Sets, Maps, and degrees of equality Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-11-09 22:11 -0500
      Re: equals(), Sets, Maps, and degrees of equality markspace <-@.> - 2011-11-09 22:43 -0800
        Re: equals(), Sets, Maps, and degrees of equality Sean Mitchell <sean@mitchwood.com> - 2011-11-10 06:33 -0800
          Re: equals(), Sets, Maps, and degrees of equality markspace <-@.> - 2011-11-10 07:21 -0800
            Re: equals(), Sets, Maps, and degrees of equality Sean Mitchell <sean@mitchwood.com> - 2011-11-10 07:29 -0800
              Re: equals(), Sets, Maps, and degrees of equality markspace <-@.> - 2011-11-10 10:27 -0800
              Re: equals(), Sets, Maps, and degrees of equality Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-11-10 20:58 -0500
                Re: equals(), Sets, Maps, and degrees of equality markspace <-@.> - 2011-11-10 19:07 -0800
                  Re: equals(), Sets, Maps, and degrees of equality Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-11-10 23:24 -0500
                    Re: equals(), Sets, Maps, and degrees of equality markspace <-@.> - 2011-11-10 20:55 -0800
                Re: equals(), Sets, Maps, and degrees of equality Sean Mitchell <sean@mitchwood.com> - 2011-11-11 10:27 -0800
                  Re: equals(), Sets, Maps, and degrees of equality Lew <lewbloch@gmail.com> - 2011-11-11 14:21 -0800
      Re: equals(), Sets, Maps, and degrees of equality Sean Mitchell <sean@mitchwood.com> - 2011-11-10 06:31 -0800
        Re: equals(), Sets, Maps, and degrees of equality Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-11-10 11:27 -0800
    Re: equals(), Sets, Maps, and degrees of equality Roedy Green <see_website@mindprod.com.invalid> - 2011-11-10 16:01 -0800
    Re: equals(), Sets, Maps, and degrees of equality Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-11-11 09:08 +0000
      Re: equals(), Sets, Maps, and degrees of equality Lew <lewbloch@gmail.com> - 2011-11-11 07:27 -0800
        Re: equals(), Sets, Maps, and degrees of equality Sean Mitchell <sean@mitchwood.com> - 2011-11-11 10:28 -0800
          Re: equals(), Sets, Maps, and degrees of equality Lew <lewbloch@gmail.com> - 2011-11-11 14:22 -0800
            Re: equals(), Sets, Maps, and degrees of equality markspace <-@.> - 2011-11-11 15:19 -0800
            Re: equals(), Sets, Maps, and degrees of equality Lew <lewbloch@gmail.com> - 2011-11-13 21:18 -0800
              Re: equals(), Sets, Maps, and degrees of equality Lew <lewbloch@gmail.com> - 2011-11-16 09:15 -0800

Page 2 of 2 — ← Prev page 1 [2]


#9853

FromSean Mitchell <sean@mitchwood.com>
Date2011-11-11 10:28 -0800
Message-ID<4d65ddbc-fe11-47e5-bdb1-cefca729f8f5@p5g2000vbm.googlegroups.com>
In reply to#9847
On Nov 11, 10:27 am, Lew <lewbl...@gmail.com> wrote:

> >> consider a class Dog:
> >> public class Dog {
> >>   String breed;
> >>   String name;
> >>   String age;
> >> }
> >> I may want to have a Set<Dog>, which holds only one Dog of each breed,
>
> This is terrible modeling.

Really. Why?

[toc] | [prev] | [next] | [standalone]


#9860

FromLew <lewbloch@gmail.com>
Date2011-11-11 14:22 -0800
Message-ID<16879805.1372.1321050142818.JavaMail.geo-discussion-forums@prew38>
In reply to#9853
On Friday, November 11, 2011 10:28:35 AM UTC-8, Sean Mitchell wrote:
> On Nov 11, 10:27 am, Lew <lewb...@gmail.com> wrote:
> 
> > >> consider a class Dog:
> > >> public class Dog {
> > >>   String breed;
> > >>   String name;
> > >>   String age;
> > >> }
> > >> I may want to have a Set<Dog>, which holds only one Dog of each breed,
> >
> > This is terrible modeling.
> 
> Really. Why?

Because you want to use 'Dog' to model 'Breed', and they aren't the same thing at all.

-- 
Lew

[toc] | [prev] | [next] | [standalone]


#9861

Frommarkspace <-@.>
Date2011-11-11 15:19 -0800
Message-ID<j9kain$mc5$1@dont-email.me>
In reply to#9860
On 11/11/2011 2:22 PM, Lew wrote:
> Because you want to use 'Dog' to model 'Breed', and they aren't the same thing at all.


That's what I'm getting too form Andreas and Eric.  Breeds are discreet 
things that ought to be first class objects in a design like this. 
Modeling them as just String seems sub-optimal.  It's about as bad as 
modeling Zip codes as strings or ints.  You can, sure, but why not apply 
a type to it?  Zip codes have just enough structure and invariants that 
strings or ints are almost certainly too loosey-goosey.

It's taken me a little bit to understand what they've been talking about 
because the original design was straight forward and simple, but the 
original design is probably wrong too for anything besides a throw away 
example.


>>>> Sean Mitchell wrote:
>>>>> I may want to have a Set<Dog>, which holds only one Dog of each breed,

 >> On Nov 11, 10:27 am, Lew<lewb...@gmail.com>  wrote:
>>> This is terrible modeling.

 > On Friday, November 11, 2011 10:28:35 AM UTC-8, Sean Mitchell wrote:
>> Really. Why?

On 11/11/2011 2:22 PM, Lew wrote:
> Because you want to use 'Dog' to model 'Breed', and they aren't the same thing at all.

[toc] | [prev] | [next] | [standalone]


#9946

FromLew <lewbloch@gmail.com>
Date2011-11-13 21:18 -0800
Message-ID<9303418.406.1321247893311.JavaMail.geo-discussion-forums@prgt40>
In reply to#9860
Lew wrote:
> Sean Mitchell wrote:
>> Lew wrote:
>> 
>>>>> consider a class Dog:
>>>>> public class Dog {
>>>>>   String breed;
>>>>>   String name;
>>>>>   String age;
>>>>> }
>>>>> I may want to have a Set<Dog>, which holds only one Dog of each breed,
>>>
>>> This is terrible modeling.
>> 
> > Really. Why?
> 
> Because you want to use 'Dog' to model 'Breed', and they aren't the same thing at all.

Also, "age" is not purely an attribute of 'Dog', but of 'Dog' plus "now".  It makes no sense to store an age that will be obsolete the instant it's stored.  Rather, store the birthday.

-- 
Lew

[toc] | [prev] | [next] | [standalone]


#9976

FromLew <lewbloch@gmail.com>
Date2011-11-16 09:15 -0800
Message-ID<27229537.1431.1321463724402.JavaMail.geo-discussion-forums@prap37>
In reply to#9946
public interface Kennel
{
  void addClient(Client client);
  void removeClient(Client client);
  boolean isClient(Client client);

  void addDog(Client client, Dog dog);
  void removeDog(Client client, Dog dog);
  boolean hasDog(Client client, Dog dog);

  Set<Dog> getDogs(Client client);

  Set<Client> getClientele();
  Set<Breed> getBreeds();
  Set<Dog> getAllDogs();
}

public interface Client
{
  String getId();
}
public interface Breed
{
  String getId();
}
public interface Dog
{
  String getId();
  Breed getBreed();
  Client getOwner();
  Calendar getBirthday();
}

-- 
Lew

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | comp.lang.java.programmer


csiph-web