面向对象

面向过程和面向对象

左心房为你撑大大i 提交于 2020-03-22 11:45:00
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 例如五子棋,面向过程的设计思路就是首先分析问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。 而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为: 1、黑白双方,这两方的行为是一模一样的, 2、棋盘系统,负责绘制画面, 3、规则系统,负责判定诸如犯规、输赢等。 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。 功能上的统一保证了面向对象设计的可扩展性

【天赢金创】面向对象的程序设计之创建对象

岁酱吖の 提交于 2020-03-17 22:43:42
某厂面试归来,发现自己落伍了!>>> 对象的定义:无序属性的集合,属性的值可以是基本值、对象或者函数. 每个对象都是基于一个应用类型创建的,这个引用类型可以是内置的(例如Object Array Math),也可以是用户自定义的. 基于Object创建对象 所有的对象都是继承自Object的,因此我们可以从Object着手创建对象. //通过new 关键字创建对象 var person = new Ojbect(); person.name = 'yuhualinfeng' ; person.age = 30 ; person.job = 'web developer' ; //通过对象字面量创建对象 var person = {}; person.name = 'yuhualinfeng' ; person.age = 30 ; person.job = 'web developer' ; 基于Object创建对象有两种形式,一种是使用new关键字,另一种是使用对象字面量. 使用这种方式创建对象的缺点是:当创建多个相同类型的对象时,会产生许多重复的代码,假如我要三个person对象,我就需要写三相同结构的代码,为了解决这个问题,我们引入了工厂模式创建对象. 使用工厂模式创建对象 工厂模式是软件工厂领域一种广为认知的设计模式,这种模式抽象了创建具体对象的过程. function

lua 面向对象

心不动则不痛 提交于 2020-03-17 11:46:18
最近在学习lua语言的时候,对面向对象这个内容有点疑惑,开个坑解释一下。 首先先学习一些元表的概念,菜鸟教程传送 https://www.runoob.com/lua/lua-metatables.html 这里要解释一下元表中的__index,对元表的__index设置了值后,对表的数据进行访问,如果 表中没有这项数据,那么就会去查找元表中的__index字段,那么__index字段如果也是一张表, 那么就再去查找__index指向的表。‘ 到这一步你就会想了,如果把__index指向的表设置为元表自身会怎么样? 那么当表中查找不到数据的时候,就会去元表中查找数据。(是不是很像继承?) 看看下面的代码: Base = {key} Base.__index = Base function Base:new(key) this = setmetatable({},Base) this.key = key return this end a = Base:new(10) b = Base:new(20) print(a.key)--10 print(b.key)--20 这里要解释一下Base:new中的:的意思,一般来说我们对Base模块添加函数是直接Base.new就行, 如果设置成Base:new,那么就会默认传递一个字段self,self可以对元表进行操作,如果是成员函数,

面向对象程序设计4——类={数据+函数+访问权限}

只愿长相守 提交于 2020-03-17 07:53:25
类 从面向过程到面向对象 面向过程(Procedure Oriented)是一种以 操作序列 为中心的编程思想 编程目的是实现计算机辅助的数据处理 把完成任务需要的命令按 一定格式 编写,完整的程序要考虑各种可能的操作流程 常用的流程,顺序结构、选择结构、循环结构以及 递归 面向过程的程序设计不仅要知道要做什么,还要清楚如何通过具体的流程实现这个任务,以及知道写出的代码将会被如何执行 描述事物 —— 具有特定功能的事物就是对象 1.是什么—— 数据 :事物有哪些属性,在这些属性上的值是多少 2.能做什么—— 函数 :包括对事物的各种操作,如计算、判断、修改等 结构体 C语言描述事物的工具,把不同类型的数据组织到一起 struct book { char namep [ 40 ] ; char abstract [ 200 ] ; char author [ 20 ] ; int page ; double price ; } 类是结构体的延伸 在面向过程的基础上,要告诉计算机如何把数据与相关联的函数组织在一起—— 编写类 class 类名 { …… //类={数据成员(是什么)+函数成员(能做什么)+访问权限} } 类是类型的延伸 日期 示例:1949-10-1 存放一个日期需要几字节 比大小、星期几… 编写关于“ 日期 ”及其功能的代码—— 类 安排能够存放具体某个 日期 的容器

面向过程和面向对象

爱⌒轻易说出口 提交于 2020-03-17 07:11:36
首先先说面向过程,什么是面向过程?   面向过程很好理解,重点就是 过程 两个,将一个问题流程化,比如你说想煮饭,这是你的目的,那你就会自然而然想到要通过哪些步骤去实现这个目标,淘米,打开电饭煲,启动,开始煮,这就是面向过程。 而什么是面向对象?   按我个人的理解,面向对象就是将一个问题出现的角色独立出来,然后通过通信的目的达到最终的目的。   面向对象相对于面向过程抽象的多,最主要的就是思想上的改变,在面向过程中,我们头脑首当其冲的就是类似流程图的东西,而在面向对象中,出现的是类似于对象关系图的东西。 我们来聊聊他们的优缺点,面向过程比面向对象容易理解的多,为什么还要使用面向对象?   面向过程的优点,因为我们注重的就是目的,以及通过哪些步骤去实现这个目标,因此开发速度快,效率高。但也有相应的缺点,那就是重用性低,维护起来难度高,一旦用户的需求发生变化,在扩展改变功能时时完全可能牵一发而动全身   面向对象的优点:当我们把问题的角色独立出来时,可读性会变的比较高,结构清晰,扩展功能时针对某个角色进行扩展改变就可以,而不会像面向过程一样各部分冗杂在一起,可扩展性和可维护性就会相应的提高。但也就出现相应的缺点,开发效率低,面向对象过于抽象,对事物的封装导致其复杂度高   至于具体的选择要根据实际需求,毕竟需求决定一切,其次要根据个人能力来决定

面向对象-2:原型链 / hasOwnProperty自身属性 / contructor / call、apply、bind改变this指向 / 原型继承 / 传值和传址 / 深拷贝 / 组合继承

最后都变了- 提交于 2020-03-16 20:25:12
原型链 原型链是指对象在访问属性或方法时的查找方式。 1.当访问一个对象的属性或方法时,会先在对象自身上查找属性或方法是否存在,如果存在就使用对象自身的属性或方法。如果不存在就去创建对象的构造函数的原型对象中查找 ,依此类推,直到找到为止。如果到顶层对象中还找不到,则返回 undefined。 2.原型链最顶层为 Object 构造函数的 prototype 原型对象,给 Object.prototype 添加属性或方法可以被除 null 和 undefined 之外的所有数据类型对象使用。 构造函数 prototype 原型链 __proto__ hasOwnProperty():看是不是对象自身底下的属性 contructor查看对象的构造函数 可以用来做判断 instanceof:对象与构造函数是否在原型链上有关系 toString()判断类型; 转换字符串 进制转换 hasOwnProperty 判断键名是否是对象自身的属性 call、apply、bind 改变this指向 call 传参的区别,传字符串 apply 传数组 bind 后面一个括号不能省略 (bind不加括号,改变指向但是现在不执行) 继承:子类继承父类所有属性和行为,父类不受影响。 目的:找到类之间的共性精简代码 继承 原型继承 简单原型继承,出现影响父类的情况 传值和传址 传址: 复杂数据类型;

Python——关于面向对象的话题

南笙酒味 提交于 2020-03-15 03:05:20
关于这篇博文 关于面向对象的话题,是一个十分重要的话题,由于博主是做java出身的,在java 中,由于java的严谨性,面向对象可以搞死你(/很难很难),在python中,所有的> 一切都TM怎么简单,所以,这放出了详细的python面向对象阶段的学习笔记,供你> > 去翻阅,实例代码也在里面。 项目地址 一起来学Python ;《一起来学Python》。欢迎你来加入我的项目,为开源做贡献 部分的代码截图, []( https://img2020.cnblogs.com/blog/1547034/202003/1547034-20200314215154674-662809163.pn$ 来源: https://www.cnblogs.com/BM-laoli/p/12463502.html

浅谈R语言的面向对象编程

為{幸葍}努か 提交于 2020-03-13 00:50:28
R语言有两种不同的OOP机制,分别是从其前身S语言继承而来的S3 Object和S4 Object,其中S4 Object更加的正式、也是现在用于开发的主力军,所以本文就从S4 Object谈起,并在最后讨论一下古老的S3 Object。 那我们就开始吧!首先我们来设计一个时间序列类,在它的内部,需要包含主数据、起始时间与截止时间、取样间隔这些数据。在R中我们可以定义如下: setClass("TimeSeries", representation( data = "numeric", start = "POSIXct", end = "POSIXct" ) ) 在这段代码中,data/start/end用于存放数据,称作“槽(slot)”。 现在我们已经定义了一个类,我们就来创建一个TimeSeries对象吧! My_TimeSeries <- new("TimeSeries", data = c(1,2,3,4,5,6), start = as.POSIXct("01/12/2015 0:00:00", tz = "GMT", format = "%m/%d/%Y %H:%M:%S"), end = as.POSIXct("12/04/2015 0:00:00", tz = "GMT", format = "%m/%d/%Y %H:%M:%S") ) 与其他OOP语言类似

面向对象分析与设计笔记(一)

核能气质少年 提交于 2020-03-12 22:25:26
分析与设计的关系: 做正确的事情(分析),正确地做事情(设计)。 面向对象分析: 发现并描述问题领域里的对象或者概念(概念类)。 面向对象设计: 定义软件对象、 以及它们之间如何协作完成功能的(设计类) 面向对象分析与设计基本过程:定义用例→定义领域模型→定义交互图→定义设计类图 领域模型: 问题领域的概念类以及真实对象的可视化表示 ; 领域模型也被称为 概念模型、 领域对象模型、 分析对象模型 来源: https://www.cnblogs.com/juluwangshier/p/12482944.html

php面向对象和构造函数

拜拜、爱过 提交于 2020-03-10 12:03:01
面向对象分为类和对象:     类:由众多对象抽象出来的东西;     对象:一切皆对象,由类实例化出来的;   类的定义: class Ren{ var $code; //成员变量 var $name; //姓名 var $sex; //性别 var $birthday; //生日 public function say(){ echo "{$this->name}说话!"; } }    其中类名的首字母大写,$this写在类里面代表该对象(谁调用代表谁);   实例化对象(object代表对象): $r = new Ren(); $r->name = "张三"; $r->code = "p001"; $r->say();    类里面所有的变量或函数都称作类的成员;   访问修饰符:     public:公有的,任何地方都可以使用(类里类外都可用);     protected:受保护的,在外界访问不到,能在该类和子类中访问到;     private:私有的,只能在该类访问;     (之前定义用的var可变为访问修饰符);     类里面的成员是属于对象的;   面向对象和面向过程的区别:     1.面向过程较为方便;     2.面向对象结构更清晰;     3.面向对象后期改动过更方便。 面向过程做法:   $r1 = 10; $r2 = 5; $mj = 3