面向对象概览

     面向对象作为一种广泛使用程序设计方法,首先需要理解两个概念:类和对象。类(Class)是一组共享公共属性和公共行为的对象集合。而对象就是类的一个实例,具有行为和状态,有着清晰的边界。没有公共结构和公共行为的对象,我们不能将它们组合在一个类中。在软件领域中,我们将问题进行分解分类(将大问题分解成许多小问题,每个小问题可以归纳为一类),然后再针对每一类进行分析设计以及实现,这就是广义的面向对象。    
    面向对象定义:尽量模仿现实世界,在软件中将复杂问题中的实体都作为一个对象来处理,然后根据这些对象的结构和行为再划分出类(即实现问题的分解),最后实现软件的模拟仿真。
    面向过程的程序设计都是在想怎样才能一步一步地解决问题,思维方式是过程,或者说是步骤。
    而面向对象有以下特点:
        抽象:解决复杂性问题的一种基本方法,抽象会重点强调我们应该注意什么,而不应该注意什么!通过抽象我们可以着重实现需关注的细节而忽略一些非实质性或无关紧要的细节,从而能够更好的分析问题解决问题!我们也可以将抽象定义为:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征。抽象的本质就是将问题分解,在面向对象中,所有对象被抽象成各种类,从而让程序员集中关注于功能的实现!
        封装:是一种信息隐蔽技术。在开发中,封装可以更通俗的理解为:把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用。
        继承:类和类之间的关系之一,是面向对象系统的最基本要素。继承表明为一个“是一种”的关系。简单理解就是:超类的创建代表泛化,子类的派生代表特化!子类除了能通过继承共享父类的属性和行为之外,还能修改继承于父类的属性和行为,最重要的一点就是:能在继承父类的基础上定义属于子类自身的属性和方法,从而实现扩展!
        多态:通过晚绑定(动态绑定)实现的“一个对外接口可以调用不同内在实现方法”的机制。三个必要条件是->要有继承,要有重写,父类引用指向子类对象。
    在面向对象开发中,一般都会遵循三方面来分析解决问题:
        首先,通过一些好的方法对问题进行分析,寻找问题中的对象实体、类。
        其次,基于分析结果使用类和对象抽象在逻辑上构建系统,实际上就是使用面向对象的各种 分解方法来建立系统的逻辑、物理模型和动态、静态模型。 
        最后,就是运用不同的面向对象语言对设计的结果的实现,即类和对象的实现。
    OOA:是一种分析方法,它以可在问题域的词汇表中找到的类和对象的观点来理解、审视需求。在使用UML建模时,OOA阶段主要是通过另一种方法---用例分析来实现系统的用例图以及简单类图和时序图等,既 UML 是将系统用一种统一标准的图形来表示。
     OOD:是对OOA的细化,强调的是复杂系统的正确和有效的构建,通过不同的方法来着重于系统的逻辑设计、物理设计。如果说分析是产生系统的类和对象,那么设计则确定类和类之间的关系、对象和对象之间的关系、类的状态转换、模块之间的依赖性等。
     OOD与 OOA的区别
       OOA偏重于理解问题,描述软件要做什么,而 OOD偏重于理解解决方案,描述软件要如何做 
       OOA只考虑理想的设计,不关心技术与实现底层的细节,而OOD需要得到更具体详细更接近于真实的代码的设计方案  
       在设计结果的描述上,OOA 偏重于描述对象的行为,OOD 偏重于描述对象的属性与方法 
       OOA只关注功能性需求,OOD 还需要关注非功能性需求
    OOP:是一种实现方法,程序被组织成对象的协作集合,每一个对象代表某一个类的实例,而类则是通过继承关系联系在一起的。
    OOP 阶段必须满足三个标准条件:
      使用对象而不是算法(面向过程则是使用算法)作为其基本逻辑构件
      任何一个对象都必须是某一个类的实例
      类通过继承关系和其它类相关
    基于对象编程和面向对象编程:如果某种语言只满足了以上的前两个条件,而第三个条件并没满足(如 JavaScript 语言),那么我们就将该语言称之为基于对象的语言。
    对象的属性及其值表现状态,不同的状态会有不同的属性。对象的状态和行为时相互的,行为可以改变状态,状态可以促使行为的产生。
    程序设计语言的发展阶段:
        第一代语言(1GL) : 二进制机器代码
      第二代语言 (2GL) : 汇编语言 (Low Level Language LLL) 
      第三代语言 (3GL): 高级语言 (HLL)
      第四代语言(4GL) : 面向对象语言(00P )。Java属于第四代语言...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值