第一章、建立面向对象的新思维

1.1.1历史背景

目前对象技术的前沿课题包括设计模式、分布式对象系统、和基于网络的对象应用等

目前面向对象的语言包含4个基本的分支:

1.基于Smalltalk的:包括Smalltalk的5个版本,以Smalltalk-80为代表

2.基于C的:包括Objective-C、C++、Java、C#.

3.基于LISP的:包括Flavors、XLISP、LOOPS、CLOS。

4.基于PASCAL的:包括Delphi(Object Pascal)、Turbo Pascal、Eiffel、Ada95

1.1.2面向过程和面向对象

在面向对象编程中,程序被看做是相互协作的对象的集合,每个对象都是某个类的实例,所有的类构成一个通过继承关系相联系的层次结构。面向对象的语言常常具有以下特征:

对象生成功能、消息传递机制、类和遗传机制。

面向过程编程模式,如下图所示。

在这种编程模式中,数据和函数是分开的,即程序员看到的是函数或过程的集合以及单独的一批数据。程序的处理过程如下:

参数输入-->|函数/过程代码|-->结果输出

为实现某个功能,参数被传入某个处理过程,最后传回计算结果

面向对象编程模式如下图:

在这种模式中,函数和它需要存取的数据封装在称为对象的包中。对象之间的数据访问是间接的,是通过接口进行的。我们可以将对象看做是鸡蛋,蛋黄是数据;蛋清是访问数据的函数;蛋壳代表接口(即那些公开或公布的方法和属性)。蛋壳接口隐匿了函数和数据结构的函数。当数据结构和内部函数变化时,这种变化被限制在内部的局部范围内。由于接口的相对稳定性,使得这种内部变化的影响不会涉及到其他对象,除非蛋壳破裂(接口发生变化)。因而面向对象模式开发的程序是易于维护和扩展的。

在面向对象的编程模式中,程序的功能是通过与对象的通信获得的。对象是被定义为一个封装了状态(数据)和行为(操作)的实体。

状态实际上包含了执行行为的信息,它以数据形式存在于对象之中。消息是对象通信的方式,因而也是获得功能的方式。对象收到发个它的消息后,或者执行一个内部操作(有时成为方法或过程),或者再去调用其他对象的操作。

面向过程:

现实世界-->面向过程建模(流程图、变量、函数)-->面向过程语言-->执行求解

面向对象:

现实世界-->面向对象建模(类图、对象、方法)-->面向对象语言-->执行求解

对象它们有以下几个共同特点:

1.某类对象是对现实世界具有共同特性的某类事物的抽象。

2.对象蕴含着许多信息,可以用一组属性来表征。

3.对象内部含有数据对数据的操作。

4.对象之间是相互关联相互作用的。

面向对象的特点主要概括为抽象性、继承性、封装性和多态性。

“封装”的对象具有自己的函数,这种函数被称为“方法”,而对象的变量则被称为属性。当对象内部定义了属性的时候,它们通常不能扩展到实例以外。

在特定的场合下,有些函数确实会影响类而不是由类所创建的对象。类属性指的是专门设计来保留对象之间所用的值。类方法则用来定义和跟踪类属性。

“继承”继承类的属性。

“多态性”

1.2面向对象的基本概念

OOP就是使用对象进行编程的过程,所谓对象就是协调数据存储以及作用于数据之上的操作的独立实体。对象把数据保存在属性(变量、域、数据成员)中。对象中也包括作用于属性之上的操作,称之为方法(函数、过程、子程)。

用户可以通过定义一个对象集合以及它们之间的相互作用来创建一个面向对象程序。许多对象协同工作定义一个完成用户需要的程序。

1.2.1类和对象

可以通过类声明来定义类,然后使用类来创建用户需要的对象。类声明是用来创建对象的模板的抽象规格说明。

当程序运行时,已声明的类用来创建新对象。由类创建对象的过程称为实例化(instantiation)。每个对象是类的一个新实例。

1.属性

类定义中的属性指定了一个对象区别于其他对象的值。

2.方法

对象的操作是由方法来指定。要使一个对象做某件事情,就要调用它的相应方法。在用户程序中,这由一行给出了方法名及参数列表的代码来完成。

mycar.setColor(yellow);

这行代码包括了对象名mycar;方法名serColor;参数yellow(包含于括号中)。一个方法的参数是传送给方法的数值。这些

Delphi面向对象的编程思想的更多相关文章

  1. IT第十九天 - 继承、接口、多态、面向对象的编程思想

    IT第十九天 上午 继承 1.一般情况下,子类在继承父类时,会调用父类中的无参构造方法,即默认的构造方法:如果在父类中只写了有参的构造方法,这时如果在子类中继承时,就会出现报错,原因是子类继承父类时无 ...

  2. 面向对象的编程思想和Java中类的概念与设计

    面向对象的编程思想学习,面向对象内容的三条主线;1.java类及类的对象2.面向对象的三大特征3.其他关键字学习内容:3.1面向对象与面向过程面向对象与面向过程在应用上的区别 Java中类的概念与设计 ...

  3. C++面向对象的编程思想机器人

    C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> cla ...

  4. JS高级---面向对象的编程思想(贪吃蛇梳理)

    面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要 ...

  5. OC:面向对象的编程思想、基本的知识点总结、强,弱引用

    OC 面向对象 和 面向过程 参考 面向过程:使用步骤划分功能,然后用函数一步一步的调用 面向对象:OOP (Object Oriented Programming) 使用功能来简化问题, 面向对象语 ...

  6. Python基础之面向对象:1、面向对象及编程思想

    一.人狗大战 1.需求 用代码模拟人.狗打架的小游戏 人和狗种类不同,因此双方的属性各不相同 推导一: 人和狗各有不同属性 使用字典方式储存属性较为方便,并可储存多种属性 # 1.在字典内储存'人'属 ...

  7. Javascript 面向对象的编程思想

    面向对象,首先得有类的概念,没有类造不出来对象,,Javascript把函数名看成类. 其次分为不同结构层,如三层架构.MVC.MVVM. 本文根据实际项目演练,分为几个适用的结构层,如果项目不大一般 ...

  8. javascript中function和object的区别,以及javascript如何实现面向对象的编程思想.

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  9. IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★

    IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...

随机推荐

  1. HDP 3.1.0 集成 Sqoop2

    HDP 3.1.0 集成 Sqoop2 本文原始地址:https://sitoi.cn/posts/65261.html 环境 由三台主机组成的 HDP 3.1.0 集群 配置好时间同步 步骤 下载 ...

  2. Python 实现两个矩形重合面积

    计算两个矩形的重合面积 import math x1, y1, x2, y2 = input().split(" ") x1, y1, x2, y2=int(x1), int(y1 ...

  3. Two-Stream Adaptive Graph Convolutional Network for Skeleton-Based Action Recognition

    Two-Stream Adaptive Graph Convolutional Network for Skeleton-Based Action Recognition 摘要 基于骨架的动作识别因为 ...

  4. tf.Variable()、tf.get_variable()和tf.placeholder()

    1.tf.Variable() tf.Variable(initializer,name) 功能:tf.Variable()创建变量时,name属性值允许重复,检查到相同名字的变量时,由自动别名机制创 ...

  5. vue - 过滤器-钩子函数路由

    一.关于路由 1.使用vue router 本质上是声明一种可以通过路径进行 挂子,用子 找到对应的 template 进行页面渲染 <!DOCTYPE html> <html la ...

  6. echarts - 折线图 - 每秒刷新数据并显示

    function randomData() { now = new Date(+now + oneDay); value = value + Math.random() * 21 - 10; var ...

  7. JanusGraph入门,schema及数据模型

    5.Schema和数据建模 每个JanusGraph都有一个schema,该schema由edge labels,property keys,和vertex组成.JanusGraph schema可以 ...

  8. Browser cannot find PAC because wpad hostname cannot be resolved

    Enterprise Network administrator may faultly forget to configure wpad hostname to DNS server. If use ...

  9. Random Access Iterator 徐州网络赛(树形dp)

    Random Access Iterator \[ Time Limit: 4000 ms \quad Memory Limit: 262144 kB \] 题意 给出伪代码,问按着伪代码在树上跑,能 ...

  10. 【JZOJ100208】【20190705】传说之下

    题目 三维空间上有一个点,进行了\(n\)次移动 第\(i\)次为在\([0,L_i]\)内随机一个长度\(l_i\),向\(\vec P_i\)方向移动\(l_i\) $\vec P_i $ 表示为 ...