单项选择题

A.软件设计分为结构化设计、面向对象设计和面向服务设计
B.结构化设计是一种面向数据流的方法,是一个自顶向下、逐步求精和模块化的过程
C.面向对象设计其基本思想包括抽象、封装和可扩展性,其中扩展性主要通过继承和多态来实现
D.面向对象设计需要解决的核心问题是如何同时提高软件的可维护性和可复用性