面向对象设计是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程。面向对象分析和面向对象设计定义有明显区别,但实际开发过程中界限是模糊的,二者之间可以相互享受和借鉴设计成果,这与结构化方法有很大区别。它一般又分为概要设计(系统设计)和详细设计(对象设计)两步。
概要设计确定实现系统的策略和目标系统的高层结构,即整个应用软件的结构框架和外部接口。这个阶段的主要任务是用严格表达方法创建若干对象类,这些对象类应与分析阶段产生的对象实体模型相对应。一般来说,对象类可以直接采用对象实体的属性作为自己的属性,也可以把对象实体模型间的相互关系,如互操作、继承等,在对象类中体现出来。
详细设计确定解空间中的类、关联、接口形式及实现服务的算法。这个阶段的主要任务是对概要设计所得的对象类的表达作进一步的细化分析、设计和验证。细化设计包括对类静态数据属性的确定,对类方法(即操作)的参数、返回值、功能和功能的实现的明确规定等。细化验证主要指对各对象类公式间的相容性和一致性的验证,对各个类、类内成员的访间权限的严格合理性的验证,也包括验证对象类的功能是否符合用户的需求。
在详细设计的细化分析、设计和验证过程中,如果发现概要设计中有不合理或不确切的地方,就需要返回概要设计的步骤,重新设计各个对象类以及它们的功能和相互关系。