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


Groups > comp.lang.java.programmer > #10865

Re: Design Question

From Arved Sandstrom <asandstrom3minus1@eastlink.ca>
Newsgroups comp.lang.java.programmer
Subject Re: Design Question
References <Xns9FBFC38D782BCjpnasty@94.75.214.39>
Message-ID <p2FHq.27831$2e7.8589@newsfe18.iad> (permalink)
Organization Public Usenet Newsgroup Access
Date 2011-12-19 07:16 -0400

Show all headers | View raw


On 11-12-18 08:13 PM, Novice wrote:
> I am trying to make sure I have the right idea in designing a class for a 
> game I am writing.
> 
> The game is capable of showing the score either during the game or at the 
> end. In both cases, I simply display a dialog showing the score. If the 
> game isn't over yet, I entitle the dialog "Interim Score". If the game is 
> finished, I entitle the dialog "Final Score". When the player is given the 
> interim score, the button at the bottom says "Quit" and he is returned to 
> the game when he presses it. When the player is given the final score, the 
> button at the bottom says "Exit" and the game itself ends when he presses 
> it. 
> 
> At the moment, I have a single class that gets invoked to show both the 
> interim score and the final score. That class is passed a boolean which 
> indicates if it is an interim score or a final one. Based on that boolean, 
> the title of the dialog is set appropriately and the button text is set to 
> either Quit or Exit. The actionPerformed() doesn't change: Quit causes a 
> dispose() and Exit causes a System.exit(0).
> 
> While the dialog is simple and works just fine, I suspect I'm violating 
> some OO principles by making the behavior of the class change depending on 
> what kind of score is being shown. 
> 
> Am I right in thinking that I should actually have an abstract class, maybe 
> called AbstractScore, and that it should have two subclasses, Interim Score 
> and FinalScore? AbstractScore could have all of the "common code" in it 
> while InterimScore and FinalScore could each do the stuff that was unique 
> to itself, like setting the Title appropriately, setting the text of the 
> button, and reacting to the appropriate button in actionPerformed(). In 
> other words, the actionPerformed() in InterimScore would only react to Quit 
> while the actionPerformed() in FinalScore would only react to Exit. Then, 
> my game should instantiate InterimScore during the game and FinalScore when 
> the user wants to end the game. 
> 
> Or is there a better way?  

I'm with Stefan when he says that an informational dialog of this type
is annoying, and that being able to quit the entire application from the
dialog (if it is a final score) is unusual. I'm with markspace when he
says "At some point you have to stop making objects and just make the
code actually do something" and also with respect to his comments about
separation of concerns.

Microsoft has an excellent checklist at
http://msdn.microsoft.com/en-us/library/windows/desktop/aa511268.aspx. I
direct your attention to the section "Is this the right user
interface?", and in particular the bullets "Would it be preferable to
use in-place UI?" and "For task flows, would it be preferable to use
another page?".

Better UI choices would avoid this entire problem.

As an aside, "Quit" and "Exit" mean the same thing. "Quit" in your
original terminology is more appropriately "OK".

As another aside, why the distinction between an interim score and a
final score...anywhere? I'd just have the score as a non-interesting
number. Are you saying that the user cannot quit at any time?

For a different situation - one that truly rates it - your observations
regrading using an abstract class with common functionality, and
overridden specialized methods in the derived classes, are on point.

AHS

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


Thread

Design Question Novice <novice@example..com> - 2011-12-19 00:13 +0000
  Re: Design Question Arne Vajhøj <arne@vajhoej.dk> - 2011-12-18 19:24 -0500
    Re: Design Question ilAn <idonot@wantspam.net> - 2011-12-20 16:47 +0200
      Re: Design Question Arne Vajhøj <arne@vajhoej.dk> - 2011-12-20 10:39 -0500
  Re: Design Question markspace <-@.> - 2011-12-18 19:23 -0800
    Re: Design Question Novice <novice@example..com> - 2011-12-19 13:26 +0000
    Re: Design Question Novice <novice@example..com> - 2011-12-19 13:28 +0000
  Re: Design Question Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-12-19 07:16 -0400
    Re: Design Question Novice <novice@example..com> - 2011-12-19 13:49 +0000
      Re: Design Question Martin Gregorie <martin@address-in-sig.invalid> - 2011-12-19 22:22 +0000
        Re: Design Question Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-12-19 20:13 -0400
          Re: Design Question Lew <lewbloch@gmail.com> - 2011-12-20 07:37 -0800
            Re: Design Question Arne Vajhøj <arne@vajhoej.dk> - 2011-12-20 10:42 -0500
              Re: Design Question Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-12-20 17:46 -0400
        Re: Design Question Martin Gregorie <martin@address-in-sig.invalid> - 2011-12-20 20:40 +0000
  Re: Design Question Novice <novice@example..com> - 2011-12-19 13:34 +0000
  Re: Design Question Roedy Green <see_website@mindprod.com.invalid> - 2011-12-19 06:25 -0800
  Re: Design Question Gene Wirchenko <genew@ocis.net> - 2011-12-19 11:38 -0800
    Re: Design Question Lew <lewbloch@gmail.com> - 2011-12-20 07:42 -0800
      Re: Design Question Gene Wirchenko <genew@ocis.net> - 2011-12-20 11:51 -0800
        Re: Design Question soulspirit@gmail.com - 2011-12-20 14:55 -0800
          Re: Design Question Gene Wirchenko <genew@ocis.net> - 2011-12-20 15:25 -0800
            Re: Design Question soulspirit@gmail.com - 2011-12-21 01:11 -0800
              Re: Design Question Gene Wirchenko <genew@ocis.net> - 2011-12-21 11:08 -0800
                Re: Design Question soulspirit@gmail.com - 2011-12-21 15:27 -0800
                Re: Design Question Gene Wirchenko <genew@ocis.net> - 2011-12-21 18:06 -0800

csiph-web