📄 the oo design process2.mht
字号:
sufficient up-front analysis. </P>
<P>Looking back at the incipient problem statement, you'll =
notice=20
that I haven't mentioned computers anywhere. I'm describing =
the=20
problem, not a computer program. The problem domain, here, =
is=20
parenting, not banking. Consequently, the statement is =
written for a=20
parent, not a banker, to read. </P>
<P>Also, note the relatively simple structure of the =
sentences.=20
Avoid the passive voice and other turgid academic prose =
styles like=20
the plague. A simple declarative sentence=20
(subject/verb/direct-object) identifies the initiator of an =
action=20
(the subject), the operation performed (the verb) and the =
receiver=20
of the message that requests the operation (the direct =
object). The=20
passive voice only identifies the last two of these three =
parts. Use=20
"I," "you," and so forth whenever it makes sense to do so. =
</P><A=20
name=3D6>
<P><STRONG class=3Dsubhead>Happy trails </STRONG><BR>So =
that's it for=20
this month. We've made a start by defining the basic =
problem. Next=20
month I'll continue the exercise, flushing out and refining =
the=20
problem statement so that it will be sufficiently useful. =
</P><A=20
name=3Dresources>
<P><STRONG class=3Dsubhead>Resources </STRONG>
<UL>
<LI>Read a great editorial in the March/April, 2000 issue =
of IEEE=20
Software on the confusion of paperwork with progress. The=20
editorial is called "<A=20
=
href=3D"http://computer.org/software/so2000/pdf/s2011.pdf">Cargo=20
Cult Software Engineering</A>" by Steve McConnell.<BR><BR>
<LI>Learn more about UI design in <I>About Face: The =
Essentials of=20
User Interface Design</I> by Alan Cooper (IDG Books). It =
is ironic=20
that the author of a great book about UI design is also =
the=20
"father of Visual Basic," the tool responsible for many of =
the=20
worst user interfaces ever foisted on the computing =
public. Cooper=20
has a lot of opinions, some of which I agree with and some =
of=20
which I don't. (In particular, I don't think of a program =
as a UI=20
with intelligent warts hanging off of it, as Cooper seems =
to do).=20
Nonetheless, Cooper is always entertaining, and there's a =
lot of=20
good advice here.
<P></P>
<P>I find that most of the books on UI design are written =
either=20
by programmers (who put the convenience of the programmer =
above=20
the needs of the user) or graphic artists (who put =
concepts like=20
art, impact, and originality above the needs of the user). =
In=20
either case, the user loses. It's refreshing to read a =
book about=20
UI design written by a knowledgable programmer who not =
only=20
insists on putting the user first, but also has a good =
design=20
sense.</P>
<P>From the Cooper Design "Manifesto" on Cooper Design's =
Web site:=20
In fact, most of today's software might as well have an =
interface=20
like this: <BR><IMG alt=3D"Error screen" height=3D136=20
=
src=3D"http://www-106.ibm.com/developerworks/library/oo-design2/error.gif=
"=20
width=3D375><BR></P></LI></UL><A name=3Dauthor>
<P><STRONG class=3Dsubhead>About the author =
</STRONG><BR>Allen Holub=20
has been working in the computer industry since 1979. He is =
widely=20
published in magazines (<I>Dr. Dobb's Journal</I>, =
<I>Programmers=20
Journal</I>, <I>Byte</I>, <I>MSJ</I>, among others) and is a =
Contributing Editor to the online magazine <A=20
href=3D"http://www.javaworld.com/">JavaWorld</A>. He has =
eight books=20
to his credit, the latest of which (<A=20
=
href=3D"http://www.amazon.com/exec/obidos/ASIN/1893115100/alleiholuasso">=
<I>Taming=20
Java Threads</I></A>) covers the traps and pitfalls of Java=20
threading. He's been designing and building object-oriented =
software=20
for longer than he cares to remember. After eight years as a =
C++=20
programmer, Allen abandoned C++ for Java programming in =
early 1996.=20
He's been teaching programming (first C, then C++ and MFC, =
now=20
OO-Design and Java programming) both on his own and for the=20
University of California Berkeley Extension since 1982. =
Allen offers=20
both public classes and in-house training in Java technology =
and=20
object-oriented design topics. He also does object-oriented =
design=20
consulting and contract Java programming. Visit Allen's Web =
site at=20
<A =
href=3D"http://www.holub.com/">http://www.holub.com/</A>.</P><!-- End =
paper --><BR></TD>
<TD vAlign=3Dtop width=3D8><!-- gutter--><IMG height=3D1=20
src=3D"http://www-106.ibm.com/developerworks/images/c.gif"=20
width=3D8> </TD></TR><!-- gutter -->
<TR height=3D8 vAlign=3Dtop>
<TD vAlign=3Dtop width=3D8><!-- gutter --></TD>
<TD vAlign=3Dtop width=3D8><!-- gutter --></TD>
<TD vAlign=3Dtop width=3D8><!-- gutter --></TD></TR>
<TR height=3D8 vAlign=3Dtop>
<TD vAlign=3Dtop width=3D8><!-- gutter --></TD>
<TD vAlign=3Dtop width=3D8><!-- rate article form -->
<TABLE border=3D0 cellPadding=3D0 cellSpacing=3D0 =
width=3D"100%">
<TBODY>
<TR>
<TD height=3D1 width=3D"100%"><SPACER type=3D"block"=20
height=3D"1"></TD></TR>
<TR>
<TD align=3Dleft bgColor=3D#3333cc height=3D3 =
vAlign=3Dtop=20
width=3D"100%"><IMG border=3D0 height=3D3=20
=
src=3D"http://www-106.ibm.com/developerworks/images/blueline.gif"=20
width=3D"100%"></TD></TR>
<TR vAlign=3Dtop>
<TD>
<FORM=20
=
action=3Dhttp://www9.software.ibm.com/dworks/ratings.nsf/RateArticle?Crea=
teDocument=20
method=3Dpost><!-- paste title here --><INPUT =
name=3DArticleTitle=20
type=3Dhidden value=3D"Beginning to design software"> =
<!-- paste zone here --><INPUT name=3DZone type=3Dhidden=20
value=3DComponents> <INPUT name=3DRedirectURL =
type=3Dhidden=20
=
value=3Dhttp://www.ibm.com/developer/beta-feedback-thankyou.html>=20
<FONT face=3D"HELVETICA, HELV, ARIAL" =
size=3D-1><B>What do you=20
think of this article?</B></FONT>
<P>
<TABLE border=3D0 cellPadding=3D0 cellSpacing=3D0 =
width=3D570>
<TBODY>
<TR vAlign=3Dtop>
<TD><INPUT name=3DRating type=3Dradio =
value=3D5><FONT=20
face=3D"HELVETICA, HELV, ARIAL" =
size=3D-1>Killer!=20
(5)</FONT></TD>
<TD><INPUT name=3DRating type=3Dradio =
value=3D4><FONT=20
face=3D"HELVETICA, HELV, ARIAL" size=3D-1>Good =
stuff=20
(4)</FONT></TD>
<TD><INPUT name=3DRating type=3Dradio =
value=3D3><FONT=20
face=3D"HELVETICA, HELV, ARIAL" size=3D-1>So-so; =
not bad=20
(3)</FONT></TD>
<TD><INPUT name=3DRating type=3Dradio =
value=3D2><FONT=20
face=3D"HELVETICA, HELV, ARIAL" size=3D-1>Needs =
work=20
(2)</FONT></TD>
<TD><INPUT name=3DRating type=3Dradio =
value=3D1><FONT=20
face=3D"HELVETICA, HELV, ARIAL" size=3D-1>Lame!=20
(1)</FONT></TD></TR></TBODY></TABLE><BR><FONT=20
face=3D"HELVETICA, HELV, ARIAL"=20
size=3D-1><B>Comments?</B></FONT><BR><TEXTAREA =
cols=3D52 name=3DComments rows=3D3 wrap=3Dvirtual></TEXTAREA>=20
<BR><BR><INPUT type=3Dsubmit value=3D"Submit =
feedback">=20
</FORM></FONT></P></TD></TR></TBODY></TABLE><!-- end =
rate article form --></TD>
<TD vAlign=3Dtop width=3D8><!--gutter--></TD></TR>
<TR height=3D8 vAlign=3Dtop>
<TD vAlign=3Dtop width=3D8><!--gutter--></TD>
<TD vAlign=3Dtop width=3D8><!--gutter--></TD>
<TD vAlign=3Dtop =
width=3D8><!--gutter--></TD></TR></TBODY></TABLE><!-- end content =
--></TD></TR></TBODY></TABLE><!-- FOOTER -->
<TABLE border=3D0 cellPadding=3D0 cellSpacing=3D0>
<TBODY>
<TR>
<TD width=3D150>
<TABLE border=3D0 cellPadding=3D0 cellSpacing=3D0 width=3D150>
<TBODY>
<TR bgColor=3D#000000>
<TD class=3Dmast width=3D49><A class=3Dnav=20
href=3D"http://www.ibm.com/privacy/"=20
style=3D"COLOR: #ffffff">Privacy</A></TD>
<TD bgColor=3D#959595 width=3D1><IMG alt=3D"" border=3D0 =
height=3D20=20
src=3D"http://www.ibm.com/i/c.gif" width=3D1></TD>
<TD class=3Dmast width=3D49><A class=3Dnav=20
href=3D"http://www.ibm.com/legal/" style=3D"COLOR: =
#ffffff">Legal</A></TD>
<TD bgColor=3D#959595 width=3D1><IMG alt=3D"" border=3D0 =
height=3D20=20
src=3D"http://www.ibm.com/i/c.gif" width=3D1></TD>
<TD class=3Dmast width=3D49><A class=3Dnav=20
href=3D"http://www.ibm.com/contact/"=20
style=3D"COLOR: #ffffff">Contact</A></TD>
<TD bgColor=3D#959595 width=3D1><IMG alt=3D"" border=3D0 =
height=3D21=20
src=3D"http://www.ibm.com/i/c.gif" width=3D1></TD></TR>
<TR bgColor=3D#ffffff>
<TD width=3D49><IMG alt=3D"" border=3D0 height=3D1=20
src=3D"http://www.ibm.com/i/c.gif" width=3D49></TD>
<TD width=3D1><IMG alt=3D"" border=3D0 height=3D1=20
src=3D"http://www.ibm.com/i/c.gif" width=3D1></TD>
<TD width=3D49><IMG alt=3D"" border=3D0 height=3D1=20
src=3D"http://www.ibm.com/i/c.gif" width=3D49></TD>
<TD width=3D1><IMG alt=3D"" border=3D0 height=3D1=20
src=3D"http://www.ibm.com/i/c.gif" width=3D1></TD>
<TD width=3D49><IMG alt=3D"" border=3D0 height=3D1=20
src=3D"http://www.ibm.com/i/c.gif" width=3D49></TD>
<TD width=3D1><IMG alt=3D"" border=3D0 height=3D1=20
src=3D"http://www.ibm.com/i/c.gif" =
width=3D1></TD></TR></TBODY></TABLE></TD>
<TD width=3D"100%">
<TABLE border=3D0 cellPadding=3D0 cellSpacing=3D0 width=3D"100%">
<TBODY>
<TR bgColor=3D#000000>
<TD><IMG alt=3D"" border=3D0 height=3D21 =
src=3D"http://www.ibm.com/i/c.gif"=20
width=3D1></TD></TR>
<TR bgColor=3D#ffffff>
<TD><IMG alt=3D"" border=3D0 height=3D1 =
src=3D"http://www.ibm.com/i/c.gif"=20
=
width=3D1></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></BODY></HT=
ML>
------=_NextPart_000_0080_01C1008B.BF399280
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www-106.ibm.com/developerworks/i/mast_logo.gif
R0lGODlhlgAZAJEAAABmmf///wAAAAAAACwAAAAAlgAZAAACuJSPqcvtD6OcVIKLs968+w+G4kiW
Y4Wm6sq2jgnH8kzXn4vn+q7a/g8MynjEonEnTCqXwaPzCYV4AtRqAGDNYrQaLvMLBkTHZOg0e0Vr
0Rl2+K0sy+c6ULVL3eYv1vYdDihEN0iIYren58bXh8UY+GhTKDnZcHjlp9iYdvcH6TlESUVJaYl3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -