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

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. Shell 编程 数组

    本篇主要写一些shell脚本数组的使用. 数组定义 数组名=(value0 value1 vlaue2 ...) 数组名=([0]=value [1]=value [2]=vlaue ...) 列表名 ...

  2. Wordpress 设置中文语言包

    从官方安装的是英文版的,想要切换成中文语言包 1.修改项目目录下面的wp-config文件: 添加define(‘WPLANG’, ‘zh_CN’); 保存文件 2.进入站点控制板(dashboard ...

  3. python移动目录下所有子目录文件到新的总目录

    python移动目录下所有子目录文件到新的总目录 import os import shutil def file(p):     p=p     z=os.listdir(p)     for i ...

  4. linux 利用 crontab 实现 程序开机启动/crontab任务的多种实现方法

    方法一,用户登录服务器,直接修改: crontab -e 然后添加: @reboot [nohup] {命令} ctrl + O ctrl + x 方法二,指定用户进行修改: sudo crontab ...

  5. 2.1 自动内存管理机制--Java内存区域与内存溢出异常

    自动内存管理机制 第二章.Java内存区域与内存溢出异常 [虚拟机中内存如何划分,以及哪部分区域.什么样代码和操作会导致内存溢出.各区域内存溢出的原因] 一.运行时数据区域 Java虚拟机所管理的内存 ...

  6. Scrapy笔记11- 模拟登录

    Scrapy笔记11- 模拟登录 有时候爬取网站的时候需要登录,在Scrapy中可以通过模拟登录保存cookie后再去爬取相应的页面.这里我通过登录github然后爬取自己的issue列表来演示下整个 ...

  7. PID optimizer

    如何评价PID optimizer? 论文链接:http://www4.comp.polyu.edu.hk/~cslzhang/paper/CVPR18_PID.pdf作者github:https:/ ...

  8. 测试之selenium简介

    目录 selenium是什么? 应该具备的知识 Selenium功能特性 Selenium的局限性 Selenium与QTP比较 Selenium工具套件 Selenium集成开发环境(IDE) Se ...

  9. springcloud的Hystrix turbine断路器聚合监控实现(基于springboot2.02版本)

    本文基于方志朋先生的博客实现:https://blog.csdn.net/forezp/article/details/70233227 一.准本工作 1.工具:Idea,JDK1.8,Maven3. ...

  10. java dump 内存分析 elasticsearch Bulk异常引发的Elasticsearch内存泄漏

    Bulk异常引发的Elasticsearch内存泄漏 2018年8月24日更新: 今天放出的6.4版修复了这个问题. 前天公司度假部门一个线上ElasticSearch集群发出报警,有Data Nod ...