1.1 面向对象

这种思想的实质是:程序可以添加新类型的对象使自身适用于某个特点的问题。所以你在阅读描述解决方案的代码时,也是在阅读问题的描述。
每个对象看起来都有点像一台微型计算机——它具有状态还有操作,用户可以要求对象执行这些操作。如果要对现实世界种的对象作类比,那么说它们都具有特性和行为似乎不错。
Alan Kay曾经总结了面向对象语言的五大特征:
1)万物皆为对象。将对象视为奇特的变量,它可以存储数据,除此之外,你还可以要求它在自身上执行操作。理论上讲,你可以抽取待求解决问题的任何概念化构件(狗、建筑物,服务等),将其表示为程序中的对象。
2)程序时对象的集合,它们通过发送消息来告知彼此所要做的。要想请求一个对象,就必须对该对象发送一条信息。更具体地说,可以把消息想象为对某个特定对象的方法的调用请求。
3)每个对象都有自己的由其他对象所构成的存储。换句话说,可以通过创建包含现有对象的包的方式来创建新类型的对象。因此,可以在程序中构建复杂的体系,同时将其复杂性隐藏在对象简单性背后。
4)每个对象都拥有其类型。按照通俗的说法,“每个对象都是某个类(Class)的一个实例”,这里“类”就是“类型”的同义词。每个类最重要的区别于其他类的特性就是“可以发送什么样的消息给它”。
5)某一特定类型的所有对象都是可以接受同样的消息。因为“圆形”类型的对象同时也是“几何形”类型的对象,所以一个“圆形”对象必定能接受发给“几何形”对象的消息。这意味着可以编写于“几何形”交互并自动处理所有与几何形性质相关的事物代码。这种可代替性时OOP(面向对象)中最强有力的概念之一。
Booch对对象提出了一个更加简洁的描述:对象具有状态,行为和标识。这就意味着每一个对象都可以拥有内部数据(它们给出了该对象的状态)和方法(它们产生的行为),并且每一个对象都可以唯一的与其他对象区分开来,具体的说每一个对象在内存中都有一个唯一的地址。

1.2 面向过程

面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了

什么是面向对象、面向过程?相关推荐

  1. Lawliet|面向对象/面向过程

    1.面向对象的程序设计 对象object --包含属性和行为,通过描述属性和行为来描述一个对象,是程序的基本单元. 对象=属性(特征)+方法(行为) 类class --具有相同属性和方法的对象的集合, ...

  2. python 面向对象 面向过程_python3全栈开发-面向对象、面向过程

    一. 什么是面向对象的程序设计及为什么要有它 1.面向过程 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种 ...

  3. python面向对象还是过程_Python学习————面向对象和面向过程

    一.面向过程和面向对象 面向过程: 核心是"过程"二字 过程的终极奥义就是将程序流程化 过程是"流水线",用来**分步骤解决问题**的 面向对象: ​ 核心是& ...

  4. 浅谈面向对象和面向过程

    1.面向对象   面向过程和面向对象都是对软件分析.设计和开发的一种思想,它指导着人们以不同的方式去分析.设计和开发软件.早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来 ...

  5. 带你理解面向过程与面向对象

    START WeChat Applet(公众号) :Java空巷 一.前言 如果你总是对面向对象和面向过程傻傻分不清,这篇博客尽量会用通俗的方式来讲解. 二.面向过程 概念 面向过程是一种以过程为中心 ...

  6. Python-到底啥是面向对象&面向过程?

    Hi!我是@xiaomeng小孟 今天我们开始学习python的面(yu)向(fa)对(yao)象(dian) 废话不多说,开始! 1.首先:我们先要搞明白什么是面向对象: 面向对象(Object O ...

  7. 面向对象和面向过程的区别

    面向对象&面向过程 什么是面向过程? 自上而下顺序执行,逐步求精:             其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构:             各模块之 ...

  8. 什么是面向对象和面向过程?

    众所周知,Java 是面向对象的语言,那这个面向对象是怎么来的呢?与之相对的面向过程又是什么呢?下面我说大家分享一下自己的看法: 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实 ...

  9. php是面向对象还是过程,PHP面向过程和面向对象

    php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: ...

  10. 深度之眼(九)——python函数--面向过程的编程

    文章目录 4.1 函数的定义及调用 4.1.1 为什么要调用函数 4.1.2 函数的的定义及调用 4.1.3 参数传递 4.1.4 函数体与变量作用域 4.1.5 返回值 4.1.6 几点建议 4.2 ...

最新文章

  1. 不安装Oracle使用cx_Oracle
  2. 会排序吗_洗牌算法详解:你会排序,但你会打乱吗?
  3. 冒泡算法的三种JavaScript表示
  4. mysql myisam/innodb高并发优化经验_MySQL MyISAM / PHP 高并发优化经验
  5. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)
  6. 跳槽,成为程序员晋升与成长的唯一手段?
  7. 垂直型与水平型电子商务网站的理解
  8. [USACO DEC13] 名称记录
  9. 沪漂6年,我终于在上海买了第一套房
  10. Unity打包ios应用并上架appstore审核的一些备忘
  11. 2.过滤函数-filter/filter-out
  12. 大田第一次和「 IDO 老徐 」连麦:诊断个人 IP
  13. 淘宝下单高并发解决方案
  14. 原来苹果手机是这样清理内存的,能腾出大量内存,难怪用这么久还流畅
  15. Qt部分拉伸的背景图片
  16. 考研最易出现的几种心理状态,让人崩溃!
  17. html 自动日期,excel自动生成连续日期
  18. 2018/09/29Web前端学习第五课
  19. 【C语言】小学数学练习
  20. html缩小网页时版块乱跑,解决动网论坛最后发表显示代码的问题(或导致首页排版错乱)...

热门文章

  1. cad展点kszd小程序_cad实现批量展坐标点方法介绍
  2. CAD中如何移动一点至一个绝对坐标
  3. NS2的NODE类——node
  4. 国内5款优秀的WEB前端框架
  5. 上网本 linux中文版,veket|veket linux上网本操作系统 v5.30 简体中文正式版 - 天天游戏吧...
  6. android图片美化开源,GitHub - xingxing-yan/BLImage: Android中美化图片的库。功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能...
  7. 学计算机学费一万多吗,计算机专业的学费是多少
  8. 如何做Code Review——读后感
  9. Python 语言及其应用 Chapter_3_Note_2 容器_列表_元组_字典_集合
  10. 26.java-BufferedWriter写文件