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

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 编程 免交互 expect

    本篇主要写一些shell脚本免交互expect的使用. 概述 Expect是建立在tcl基础上的一个工具,Expect 是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题. 安装 ...

  2. python测试开发django-69.templates模板过滤器filter

    前言 templates 模板里面过滤器 filter 的作用是对变量的出来,比如小写转大写,替换一些特殊字符,对列表取值,排序等操作. 内置的过滤器有很多,本篇拿几个常用的过滤器做案例讲解下相关的功 ...

  3. 使用WIFI网卡 dhcp动态获取IP

    前面几篇博客中,wifi网卡的ip都是手工设置的,本篇博客将来移植dhcp,使得wifi网卡可以动态的获取ip.路由等信息. 那我们去哪里下载dhcp源码呢?在pc机上执行dh +tab键,看一下有哪 ...

  4. wordpress如何添加自增变量(第一篇文章显示摘要后面的只显示标题)

    有时我们在调用文章列表的时候需要在前面添加序号看起来比较整齐,如何实现呢?要想精确的控制每篇文章,我们先在循环前定义一个变量 $ashu_i=1 来计数,变量名随便,然后每循环一次,$ashu_i加1 ...

  5. IComparable<T>.CompareTo(T) 方法

    IComparable<T>.CompareTo(T) 方法 定义 命名空间: System 程序集: System.Runtime.dll, mscorlib.dll, netstand ...

  6. 【java】String与Date转换

    String转Date            String date="";            SimpleDateFormat format=new SimpleDateFo ...

  7. this指向问题(改变它的指向)

    这个问题倒不是面向对象的,而是今天遇到js面向对象的时候一个例子的时候突然遇到了,call()方法,然后自己突然发现竟然忘记了,查了之后整理如下: xxx.call((对象名),参数a,参数b) xx ...

  8. label的作用是什么?怎么用的?

    label便签用可以让用户点击文字区域,自动聚焦到当前项的input框. input设置id属性,label设置for属性,for属性的属性值为id属性值.

  9. 图的遍历 | 1034 map处理输入数据,连通块判断

    这题写得比较痛苦.首先有点不在状态,其次题目比较难读懂. “Gang”成立的两个条件:①成员数大于两个  ②边权总和大于阈值K 首先,在录数据的时候通过map或者字符串哈希建立string到int的映 ...

  10. SDOI 2019 R2 摸鱼记

    其实并没有什么动力来写这篇游记,毕竟呢,明明已经做好了被吊打的心理准备,可是当 Day 2 挂到没分时,当看到自己在高一里还排名二十时,还是有些,有些难言的滋味.学长们该走的真的都走了,就要只剩下 z ...