Designing object -oriented software is hard,and designing (60)object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the rightgranularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand,but also(61)enough to address future problems and requirements.You also want to avoid redesign,or atleast minimize it.Experienced object -oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time.Before a design is finished,they usually try to reuse it several times,madifring it each time.Yet experienced object-oriented designers do make good designs.Meanwhile new designers are (62)by the options available and tend to fall back on non-object-oriented techniques they're used before.lt takes a long time for movies to learn that goodobeject-oriented design is all about.Experienced designers evidently know something inexperiencedones.What is it?One thing expert desigeners know not to do is solve every problem from first principles.Rather, theyreuse solutions that have worked for them in the past.When they find a good (63).They use it aqain and again.Such experience is part of what makes them experts.Consequently,you'll find (64) patterns of classes and communicating objects in many object-oriented systems.