两种主流的开发方法:结构化开发方法和面向对象开发方法。
C++,Java,C#,Ruby均是后者。面向对象的三种基本特征 : 继承,封装和多态。
封装:对对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能
继承:面向对象实现软件复用的重要手段,当子类继承父类,子类作为一种特殊的父类,将直接获得父类的属性和方法;
多态:子类对象可以直接赋给父类变量,但裕兴依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征;
------
抽象:忽略一个主题中与当前目标无关的那些方面,通常只能定义对象的部分数据,部分行为特征——而这些数据,行为特征是软件系统所关心的部分
【1】结构化程序设计(也被称作 面向数据(流)的程序设计方法)
首先,结构化分析(SA)对系统进行需求分析,然后使用结构化设计(SD)对系统进行概要设计,详细设计,最后采用结构化编程(SD)方法来实现系统。
最小程序单元是函数。对数据进行处理。采用结构化方式设计的软件系统,整个软件系统就由一个个函数组成,这个软件的运行入口往往由一个“主函数”代表,而主函数负责把系统中的所有函数“串起来”。
顺序结构,选择结构,循环结构。
【2】面向对象程序设计
从现实世界中客观存在的事物(即对象)为中心来思考,认识问题,并根据这些食物的本质特点,把它们抽象地表示为系统中的类,作为系统的基本构成单元(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的过程来构造系统),这使得软件系统的组件可以直接映像到客观世界,并保持客观世界中事物及其相关关系的本来面貌。
最小程序单元是 类。类生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。
面向对象的语言不仅使用类来封装一类事物的内部状态数据,这些动态数据就对应于上图的Filed(成员变量);而且类会提供操作这些状态数据的方法,还会为这类实物的行为特征提供相应的实现,这种实现也是方法。
类定义 = Field(状态数据)+ Method(行为)
面向对象希望对客观世界进行模拟:定义一个类,对应客观世界的哪种事物;业务需要关心这个事物的哪些状态,程序就为这些状态定义成员变量(Field);业务需要关心这个事物的哪些行为(Method),程序就为这些行为定义方法。
面向对象还支持如下几个功能:
【3】例子“猪八戒吃西瓜”
面向过程: 吃(猪八戒,西瓜)
面向对象:猪八戒,吃(西瓜)
【4】基于对象 VS 面向对象
基于对象: 也使用了对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象。→没有“继承”的特点,也就不存在“多态”
eg. JavaScript
面向对象:三大特征缺一不可