面向对象实例补充

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象实例补充相关的知识,希望对你有一定的参考价值。

面向对象的特征:

  1. 封装:就算对象内部的数据结构改变了,只要公开给外部的方法名、功能没有改变,使用者就照常使用即可,比如我们去调用Time类的方法。
  2. 多态:Object类、String类和Float类的各个对象调用to_s的方法,得到的结果是不一样的。

多态的思考方法----鸭子模型

"能像鸭子那样走路,能像鸭子一样啼叫的,那一定是鸭子",注重对象的行为(走路、啼叫都像鸭子),那么不管是不是真的鸭子都把它当作鸭子。举例如下:

技术分享

fetch_and_downcase只要求(能以ary[index]形式获取元素,获取的元素可以执行downcase方法),所以只要能有这些行为,不管是数组还是散列,这就是鸭子模型。

面向对象的例子:

概念和网络知识补充:

体系----是指使用哪种通信协议

 

连接网络上的服务器----需要知道服务器的主机名和端口号,如下Ruby官网服务器主机名是www.ruby-lang.org(就是跟127.0.0.1那个一样,只不过它不是本地调试,提供外部访问的域名),端口号是80.

 

路径----通过主机名和端口找到服务器后,要访问特定文件,还需要路径定位到服务器上资源的位置

 

现阶段我们只要知道URL是URI的一种就可以了。

技术分享

 

获取Ruby官网首页的html,并将其输出到控制台的例子:

技术分享

着重讲一下第五行调用Net::HTTP #get方法的时候,具体进行的流程:

  1. 使用主机名和端口号,与服务器建立通信(叫做 用主机名和端口号,与服务器建立通信(叫做 socket,套接字)

② 使用路径,创建代表请求信息的 Net::HTTPRequest 对对象

  1. 对套接字写入请求信息

④ 从套接字中读取数据,并将其保存到代表响应信息的 Net::HTTPResponse 对象中

  1. 利用 Net::HTTPResponse 本身提供的功能,解析响应信息,提取文档部分并返回。

流程图如下所示:

技术分享

 

以上是关于面向对象实例补充的主要内容,如果未能解决你的问题,请参考以下文章

面向对象补充之方法

python面向对象补充

面向对象——补充:static

Python学习之路:面向对象补充

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程