StupidBeauty
Read times:3602Posted at:Mon Jul 3 13:07:48 2017 - no title specified

《C++面向对象软件设计及构建》文章翻译:1.1基本概念,1.1 Basic Concepts

1 面向对象策略

面向对象编程,是向软件结构中加入了多个强大的设计策略,这些设计策略是基于实践和已证明有效的软件工程技巧的。通过在软件结构中引入这些策略,面向对象的编程让我们能够构建出比以前复杂得多的软件系统。这些软件结构,已由软件工程经验进行了几十年的塑造。面向对象编程中引入的那些基本设计策略,都列于下 中,它们是在与复杂的自然及人造系统打交道的过程中积累起来的。这些策略,是基本的,普遍的;它们牵涉到多种设计及问题解决场景,并且,在计算机科学中,它们经常出现在与数据结构、操作系统和其它编程语言形式相关的研究当中。本书中重点讲述的是,这些策略与面向对象软件的设计和构造之间的关系。

面向对象编程语言中的设计策略,能够高效地用于构造软件模型的问题域中的实体。事实上,有些人主张说,软件设计,就是为“真实世界”建立一个模型,而每个“真实”实体,在程序中就是由一个对应的软件组件来表示的;每个软件组件都模拟着它在真实世界中对应物的动作和状况。这种编程即建模的哲学,在三维虚拟环境中体现得最为明显,在那里,真实世界中的视觉及听觉特性都在虚拟世界中得到了模拟。

面向对象编程中引入的设计策略

抽象

简化对于真实世界中实体的描述,仅保留其本质特性

隔离

对于一个实体,将它“能”做什么与它“如何”做什么分离开

组合

利用以下两种基本方法来将简单的“部件”组合起来,以构造复杂的“整体”系统:

  • •.关联,或

  • •.聚合

泛化

利用以下四种方法来识别不同实体之间的共有元素:

  • •.层次关系

  • •.通用性,

  • •.多态性,或

  • •.模式

这些策略,在已有的面向对象编程语言中被广泛支持,当然,不同的语言中可能以不同的形式来体现它们,并且某些语言可能并不完全支持所有的这些特性。例如,某些面向对象编程语言中,并不支持所有的泛化类型。

要想掌握面向对象编程的话,妳就需要理解以下事物之间 的联系 :设计策略 ;用于支持 这些策略的软件结构; 以及, 在应用这些策略和结构时所想要达成的软件工程目标。下面 中展示了其中一些关键联系。理解 了这些联系之后,就有望构建出有用的、设计精良的系统,并用它们来解决重要的问题。随着 妳深入地探索面向对象编程技术,妳对这些关系的理解也会更加深入。


策略、结构与目标之间的联系

直到此刻 ,我们对于这些术语还未给出明确的定义:设计策略 ;面向对象软件结构;以及,软件工程目标。尽管 我们会在日后再解释这些术语(参考 起点 ),但是,目前仍然可以观察得到两个结论:

  • •.对象和类,两个结构,与四个设计策略中的三个相关,与并最重要的一个软件工程目标“复用性”相关

  • •.各种形式的泛化,都与所有的软件工程目标相关,这就表明了,这些结构是狠重要的,理解了该如何利用这些结构的话,才能创建出高质量的软件系统


学习计划


对知识的学习,通常取决于个体本身的学习习惯,通常是渐进式发展的。某些人,更适合于先理解整体的概念,再深入学习细节。另外一些人呢,更适合于将抽象的概念和实际的示例交织起来学习。无论妳是倾向于按照广度优先的方式还是按照深度优先的方式来学习,都有某些概念是必须在其它概念之前进行学习的,因为,所有的这些概念之间是有依赖关系的,并非互相独立。无论倾向于哪种方式,仅仅做一次阅读都是不够的。回溯和重新阅读之前的概念,通常都能够增强理解,并且有助于深入掌握整体知识。

这份学习材料的整体组织结构,如下 所示 ;设计策略 ,位于左侧。 妳可以按照从上到下的顺序来阅读所有这些设计策略, 以对面向对象概念 有一个宽广的认识, 而在这个过程中,任何时刻,妳都可以跟随 着横向的箭头向右看:跟随 着这个箭头向下, 将学习到对于这个概念的更具体的说明,并且最终阅读 C++所表达出来的描述。


学习指南

在指南中,有七个主要的里程碑。每个里程碑,都会被归类到底部三个角色中的一个。每个里程碑,都会与一个主要的设计概念相关系,并且,代表着开发面向对象软件系统的实践能力的一次明显进步。然而,这些里程碑之间是有顺序的。在尚未完成之前的里程碑(位于顶部及左侧)的情况下,是无法进行后面里程碑(位于底部及相对地位于右侧)的学习的。

这些里程碑,促成了角色的转变,这些角色显示在图片的底部。最简单的角色,就是,一个程序猿,会使用别人已经开发好的单个类或多个类。当妳处于这第一个角色中时,会构造出简单但有趣的系统。最开始,会使用单个类来探索且掌握一些基础知识:创建及操作对象。之后,会添加更多的类,以便构造出由多个对象交互起来形成的简单系统。学习如何使用已有的类来创建及操作对象,这是学习面向对象编程的第一步。这样的第一个角色,狠重要,不仅仅是因为它建立了面向对象编程中的基础概念,更是因为,这也是在开发真实系统过程中采用的首选角色。作为一个用户,妳会从已有类的设计者和实现者的辛勤工作中受益。这种利用已有类的机会,正是软件复用的主要益处,尤其是对于面向对象编程来说更是如此。第二个角色,指的是,一个开发者,她能够创建一个或多个新的类。最开始,每个类都是进行了独立的抽象。随后,就是更困难,也更强大的过程,即是,利用其中的某种形式的泛化,来将相关的类关联起来。对于前面这两个角色,会进行详细的说明。第三个角色,牵涉到了模式 - 对于类和对象的宽泛组织方式,这些方式已被证明适合于解决常见的设计问题。对于这个角色,也会进行说明,但只会进行最小化的说明。要想将模式随意玩弄于股掌之中的话,就必须在一个或多个应用领域有深厚的经 验。

附加C++主题

2 任务

有一个狠有趣的编程语言特性,它在C++中是被支持的,而在某些其它面向对象编程语言中却不支持,这个主题即是,操作符重载。利用操作符重载,类的设计者就能够针对大部分内置的操作符(+、-、*、/、=、==、!=、<、>等等)定义出她/他自己的具有应用程序特色的意义。操作符重载,是一种狠有用的手段,可用来为用户定义的对象提供出吸引人的、直观的、自然的进行常见操作的方式。随后会讲述这一主题。

未知美人

陈海茵

GIMP

未知美人

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands