单选题 Designing object -oriented software is hard,and designing ()object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the right granularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand,but also () enough  to address future problems and requirements.You also want to avoid redesign,or at least 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 (作答此空) by the options available and tend to fall back on non-object-oriented techniques they're used before.It takes a long time for movies to learn that good obeject-oriented design is all about. Experienced designers evidently know something inexperienced ones. What is it?

One thing expert desigeners know not to do is solve every problem from first principles.Rather, they reuse solutions that have worked for them in the past.When they find a good () .They use it again and again.Such experience is part of what makes them experts.Consequently,you'll find () patterns of classes and communicating objects in many object-oriented systems.
【正确答案】 D
【答案解析】