Jobs在90年间的一个电视机节目里曾谈到面向对象,怎样通过构造函数的办法开创一个具有属性和措施的对象

不觉春消散得那般快,上午出去扫个尾,临河樟树上一躺、跟着歌哼哼唧唧,旁边的飞禽也是。还有众多松鼠穿来荡去。和风一来,似梦似醉。

题材1: OOP 指什么?有哪些特征

  • OOP是Object-orientend programming

Object-oriented programming (OOP) is a programming paradigm based on
the concept of “objects”, which may contain data, in the form of
fields, often known as attributes; and code, in the form of
procedures, often known as methods. A feature of objects is that an
object’s procedures can access and often modify the data fields of the
object with which they are associated (objects have a notion of “this”
or “self”). In OOP, computer programs are designed by making them out
of objects that interact with one another. There is significant
diversity of OOP languages, but the most popular ones are class-based,
meaning that objects are instances of classes, which typically also
determine their type. — 来自 wiki

  • OOP的特性:
    1.继承性:能够缓解代码复用,让编程尤其接近人类思维。当八个类存在同样的性质(变量)和办法时,能够从那几个类中架空出父类,在父类中定义这个相同的特性和措施,所有的子类不须求重新定义这么些属性和艺术,只要求经过持续父类中的属性和形式。
    2.封装性:封装就是把抽象出来的多少和对数据的操作封装在一块儿,数据被有限支撑在内部,程序的其他一些唯有经过被授权的操作(成员方法),才能对数码举行操作。
    3.多态性:指一个引用(类型)在差异景况下的有余景观。也足以掌握成:多态是指通过指向父类的引用,来调用在分化子类中贯彻的艺术。多态利于代码的维护和扩张,当大家必要使用相同类树上的目标时,只需求传入分歧的参数就行了,而不需求再new
    一个对象。

心灵念着,有酒的神人也不过那样呢。作为一只JAVA猿,在不写程序的时段里,生活简简单单,虚度得这般美好。

题材2: 怎样通过构造函数的方法创设一个持有属性和办法的靶子?

     function People(name,age) {
         this.name = name
         this.age = age
     }
     People.prototype.work = function() {
         console.log('我的名字是:' + this.name + '我今年' + this.age + '岁了')
     }

     var people01 = new People('Jack',18)
     people01.work()

但顺序的社会风气杂念太多,以致背离了美的初衷。今夜自己要谈—面—向—对—象!我不爱好它,以Ruby之名。

题材3: prototype 是怎么样?有怎么样特点

  • JavaScript
    的每个对象都继承另一个对象,后者称为“原型”(prototype)对象。只有null除外,它从不团结的原型对象。每一个构造函数都有一个prototype属性,这么些特性就是实例对象的原型对象。

Jobs在90年代的一个电视机节目里曾谈到面向对象,举了个咖啡的例子。以前的主次须求了解一杯摩卡的种种制作细节,亲自创设;而面向对象,仅需走进咖啡馆、冲着美丽的女服务员、“嗨〜一杯摩卡”。

标题4:画出如下代码的原型图

function People (name){
  this.name = name;
  this.sayName = function(){
    console.log('my name is:' + this.name);
  }
}

People.prototype.walk = function(){
  console.log(this.name + ' is walking');  
}

var p1 = new People('饥人谷');
var p2 = new People('前端');

图片 1

QQ截图20171110191521.png

虽说Jobs写程序没我发誓,但不可不可以认那个栗子很好。wikipedia关于OOP的首句画风却是那样:
Object-oriented programming (OOP) is a programming paradigm
based on the concept of “objects”, which may contain data, in the form
of fields, often known as attributes and code, in the form of
procedures, often known as methods.

难点5. 创设一个 Car 对象,拥有属性name、color、status;拥有方法run,stop,getStatus

        function Car(name,color,status) {
            this.name = name
            this.color = color
            this.status = status
        }
        Car.prototype = {
            run: function() {
                console.log('run')
            },
            stop: function() {
                console.log('stop')
            },
            getStatus: function() {
                console.log(this.status)
            }
        }

暧昧觉厉!晚上我躺在树上一阵清劲风、沁人心脾。但在沸腾的咖啡馆,平时旁边坐着一堆发际线明确的年青人,有的高呼、有的脸红,混乱之中好不简单才辨识了一句“面向对象就是包装、继承、多态”。

标题6.开立一个 GoTop 对象,当 new 一个 GotTop 对象则会在页面上创办一个重回顶部的因素,点击页面滚动到顶部。拥有以下属性和艺术

1. `ct`属性,GoTop 对应的 DOM 元素的容器
2.  `target`属性, GoTop 对应的 DOM 元素
3.  `bindEvent` 方法, 用于绑定事件
4 `createNode` 方法, 用于在容器内创建节点

GoTop
Demo

广明清序猿入行起就被强行灌入了许多高大尚的酒,醉了便再也不醒人事。也忘记了像Jobs这样说人话,我宁愿记起前台那身材正点的妹纸。

标题7: 使用木桶布局落成一个图纸墙

Barrels
Demo

面向对象,精髓更加多是面向美丽的丫头,而不是像SOLID原则这样生硬的把戏。Spring团队花了不少年才将“控制反转”换成了“着重注入”,即使技术完结都无异、但忽略了难点的实质。

有的是程序猿爱分析xx的原理,但对xx所缓解的题材、却领悟不深。工作推行上做系统规划,解决方案一向都有N种,跟据所面临的题材来择其优劣。

OOP将复杂的世界解藕成对象和涉嫌,关系更加首要点,如同人跟社会、社会更敬服一样。OOP如同交易的契约、通行货币,是对服务的应允。以物易物,我养牛的不要求种稻谷,拿钱交易。

软件设计思想是没有界限,但语言一向都有。

用作Rubyer,我深知Java是有罪的,在面向对象方面,因为它很庸肿,继承、抽象、还有死版的接口。继承是很糟糕的一套,好在GO已经没有持续机制。Object-C曾经必有.h和.m来分别定义interface和促成,幸运的是斯维夫特把它干掉了。

Ruby的纯情在于它有不少广大措施叫人爽,无论从哪偷来的。首先一种是“Duck
Typing”,英雄莫问出处,你假设叫的像只鸭子、走得像只鸭子,固然是私家、但在我心中永远都是只鸭子。

In Ruby, we rely less on the type (or class) of an object and more on
its capabilities. Hence, Duck Typing means an object type is defined by
what it can do, not by what it is. Duck Typing refers to the tendency of
Ruby to be less concerned with the class of an object and more concerned
with what methods can be called on it and what operations can be
performed on it. In Ruby, we would use respond_to? or might simply pass
an object to a method and know that an exception will be raised if it is
used inappropriately.

代码不会盘算,但人会。卓绝的语言不关切咖啡堂妹是长腿的仍然胸大的,它关注的应当是能为自身提供咖啡的劳务。Ruby天然萌。

再有更酷的火器让洋洋程序语言哭晕在厕所。我曾做一个越发恶心的须求,那年还很年轻,产品大姨子说就照着xx那样做,于是把那多少个业务线的代码copy过来,进度疼得就像是连根拔起一棵树木,涉及10来个类,我索要的仅是那200行不到的功用。

那是个很难受的故事。因为它乱用了继续,像蜘蛛网一样牵一发而动全身。Ruby有include,带组合的含意。

module ModuleA
def greet
puts ‘hello world’
end
end

module ModuleB
include ModuleA
end

ModuleB.new.greet

hello,
world!万分卓越,似乎中午那阵和风、浮动着寂静的河水,令人惦记。我躺在树上酣睡了半天,树下路过个小女孩,就好像发现新陆地一样冲着三姑尖叫,“看,有五伯在树上睡觉。”

莫不我老了,不再年轻,却更懂时间。曾经在风景里瞎逛,昨天在风景的树上一躺,也成了风光本身。我不是在嘲弄Java、也无意乱喷什么,而是真爱自由、开放、包容的Ruby。

2016/04/17
于上海

网站地图xml地图