`
javatome
  • 浏览: 856534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

第13章 面向对象编程(2)

 
阅读更多

13.2 面向对象编程

13.2.1 面向对象设计和面向对象编程的关系

在Python中,类和OOP都不是日常编程所必需的。尽管它从一开始设计就是面向对象的,而且结构上支持OOP,但Python没有限定或要求你在你的应用中写OO的代码。

13.2.3 *常用术语

1. 抽象/实现

抽象指对现实世界问题和实体的本质表现、行为和特征建模,建立一个相关的子集,可以用于描绘程序结构,从而实现这种模型。抽象不仅包括这种模型的数据属性,还定义了这些数据的接口。对某种抽象的实现就是对此数据及与之相关的接口的现实化(realization)。现实化这个过程对于客户程序应当是透明而且无关的。

2. 封装/接口

封装描述了对数据/信息进行隐藏的观念,它对数据属性提供接口和访问函数。通过任何客户端直接对数据的访问,无视接口与封装性都是背道而驰的,除非程序员允许这些操作。在Python中,所有的类属性都是公开的,但名字可能被“混淆”了,以阻止未经授权的访问,但仅此而已,在没有其他预防措施了。

3. 合成

合成扩充了对类的描述,使用多个不同的类合成一个大的类,来解决现实问题。

4. 派生/继承/继承结构

派生描述了子类的创建,新类保留已存类型中所有需要的数据和行为,但允许修改或者其他的自定义操作,都不会修改原类的定义。

5. 泛化/特化

泛化表示所有子类与其父类及祖先类有一样的特点,所有子类可以认为同祖先类是“是一个”的关系,因为一个派生对象(实例)是祖先类的一个"例子"。

6. 多态

多台的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类。多态表明了动态(后来又称运行时)绑定的存在,允许重载及运行时类型确定和验证。

7. 自省/反射

自省表示给予你,程序员,某种能力来进行像“手工类型检查”的工作,它也被称为反射。这个性质展示了某对象是如何在运行期取得自身信息的。

13.3 类

类是现实世界的抽象的实体以编程形式出现。实例是这些对象的具体化。

类与函数的最大的不同在于你运行函数,而类会创建一个对象。类就像一个Python容器类型。

13.3.1 创建类

基类是一个或多个用于继承的父类的集合;类体由所有声明语句,类成员定义,数据属性和函数组成。类通常在一个模块的顶层进行定义,以便类实例能够在类所定义的源代码文件中的任何地方被创建。

13.3.2 声明与定义

对于Python函数来说,声明与定义类没什么区别,因为他们是同时进行的,定义(类体)紧跟在声明(含class关键字的头行[header line])和可选的文档字符串后面。同时,所有的方法也必须同时被定义。所以对OOP很熟悉,请注意Python并不支持纯虚函数(像C++)或者抽象方法(如在Java中),这些都强制程序员在子类中定义方法。作为替换方法,你可以简单地在基类方法中引发NotImplementedError异常,这样可以获得类似的效果。

分享到:
评论

相关推荐

    面向对象编程:C++与Java比较教程 英文版

    第2章介绍了面向对象编程的基础概念和步骤,为读者理解后续更复杂的概念打下基础。 第3章详细讲述了“类”的概念,这是面向对象编程的核心之一,同时介绍了其他一些关键思想。 第4章探讨了字符串在C++和Java中的...

    Java面向对象编程思想.pdf

    多态是 Java 面向对象编程的第三大特征,通过重载、重写与覆盖,实现不同类的不同形态特征。多态使得类可以根据不同的情况表现出不同的形态,从而提高代码的灵活性和可维护性。 四、类和对象 类是 Java 面向对象...

    javascript面向对象编程.pdf

    总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...

    JAVA面向对象编程(孙卫琴)源代码

    2. **封装**:封装是面向对象编程的三大特性之一,它隐藏了对象的内部实现细节,只对外提供公共接口。源代码中可能通过访问修饰符(如private、public、protected)来实现数据封装。 3. **继承**:继承允许一个类...

    accp7.0 s2 java面向对象编程第十一章案例

    本章节——第十一章案例,旨在通过实际操作来巩固和拓展学员对于面向对象编程的理解。 面向对象编程(Object-Oriented Programming,简称OOP)基于“对象”的概念,将数据和操作数据的方法封装在一起。在Java中,类...

    java面向对象程序设计课程每章ppt(共15章+复习1章).zip

    第13章 容器和泛型.pptx 第14章 流与文件(1).pptx 第14章 流与文件(2).pptx 第15章 网络编程.pptx 第1章 Java概述.pptx 第2章 Java基础.pptx 第3章 数组.pptx 第4章 类和对象(1).pptx 第4章 类和对象(2)....

    面向对象编程技术第四章PPT资料.pptx

    面向对象编程技术第四章PPT资料.pptx 面向对象编程技术是现代软件开发中最重要的技术之一。本章节主要讲解面向对象编程技术的基本概念和实现方法。下面是从PPT资料中提取的知识点: 一、类与对象 * 类是具有相同...

    第章面向对象编程基础ppt课件.ppt

    ### 十、面向对象编程的优点 面向对象编程有很多优点,包括提高程序的可读性和可维护性,因为对象提供了清晰的接口来封装内部实现的细节。面向对象还允许代码复用,可以通过继承机制来重用现有的代码,节省开发时间...

    面向对象的Java网络编程

    面向对象的Java网络编程 \chap03 提供了本书第3章的范例源程序; \chap04 提供了本书第4章的范例源程序; \chap05 提供了本书第5章的范例源程序; \chap06 提供了本书第6章的范例源程序; \chap07 ...

    C++面向对象多线程编程

    《C++面向对象多线程编程》共分13章,全面讲解构建多线程架构与增量多线程编程技术。第1章介绍了用于构建面向对象程序的不同类型C++组件,以及如何使用这些组件来构建多线程架构。第2、3、4章简要介绍进程、线程、多...

    Delphi面向对象程序设计课件1-13章打包(含源代码).zip

    第三章Delphi面向对象编程思想 第九章对话框 第二章Delphi语法基础 第五章VCL组件应用 第八章VCL组件应用续2 第六章VCL组件应用续1 第十一章文件操作和管理 第十三章数据库编程 第十二章图形图像和多媒体技术 第十章...

    S2实现java面向对象编程1—16PPT

    面向对象编程(Object-Oriented Programming,简称OOP)是Java语言的核心特性,它通过类、对象、封装、继承和多态等概念来组织代码,提高软件的可维护性和复用性。S2实现Java面向对象编程1—16PPT的资料很可能是对这...

    面向对象程序设计(Java)第十三章例题代码-J7chapte13

    面向对象程序设计(Java)第十三章例题代码-J7chapte13面向对象程序设计(Java)第十三章例题代码-J7chapte13面向对象程序设计(Java)第十三章例题代码-J7chapte13面向对象程序设计(Java)第十三章例题代码-J7...

    Visual C++ 面向对象编程教程 王育坚

    《Visual C++ 面向对象编程教程》是王育坚编著的一本针对C++初学者的指导书籍,旨在帮助读者深入理解C++语言,特别是其面向对象编程(Object-Oriented Programming, OOP)的概念和技术。C++是一种强大的、通用的编程...

    面向对象编程-选择题.pdf

    - **第13题**: BC - 面向对象编程中异常处理的重要性。 #### 编程二 - **第1题**: B - 类与对象的关系。 - **第2题**: B - 继承与多态的关系。 - **第3题**: A - 封装的好处。 - **第4题**: B - 多态性的实现机制。...

    <java面向对象编程>孙卫琴课后答案

    2. **封装**:封装是面向对象编程的基础原则之一,通过封装,我们可以隐藏对象的内部实现细节,只暴露必要的接口给外部使用。在Java中,我们使用访问修饰符(如private, public, protected)来控制类的成员对外的...

    《Java面向对象编程》电子书+实例源代码+课后题答案.part13

    希望通过电子书了解了本书第一版内容并对其感兴趣的读者能够购买《Java面向对象编程》最新的第二版,相信它一定不会让你失望。呵呵,这也算是对矢志投身中国Java编程普及教育的孙老师的一点支持吧。。。

    matlab面向对象的程序设计.pdf

    类是面向对象编程的基础,它定义了一组属性(数据成员)和行为(成员函数)。在MATLAB中,通过`classdef`关键字创建类。例如: ```matlab classdef MyClass properties property1 property2 end methods ...

    Scala编程详解 第15讲-Scala编程详解:面向对象编程之Trait 共14页.pptx

    Scala编程详解:数组操作之数组转换 共5页第11讲-Scala编程详解:Map与Tuple 共8页第12讲-Scala编程详解:面向对象编程之类 共12页第13讲-Scala编程详解:面向对象编程之对象 共9页第14讲-Scala编程详解:面向对象...

Global site tag (gtag.js) - Google Analytics