第八章 面向对象实例补充

面向对象的特征:

  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 本身提供的功能,解析响应信息,提取文档部分并返回。

流程图如下所示:

时间: 2024-12-29 17:13:01

第八章 面向对象实例补充的相关文章

第十八章 面向对象的特性

学习要点:1.OOP 的封装2.OOP 的继承3.OOP 的多态 面向对象的三个主要特性是封装.继承和多态. 一.OOP的封装 隐藏对象的字段和实现细节,仅对外公开接口,控制在程序中字段的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成"类",其中数据和函数都是类的成员. 字段的作用域1.public 公共的(类外可以访问)2.private 私有的(类内可以访问)3.protected 受保护的(类内和

第八章 面向对象之一:对象的理解

js的面向对象概念跟C++.Java不太一样,更像是一个精简版的设计(可能是因为语言设计者本身讨厌面向对象随便为了应付弄出来一个?还是为了减轻浏览器的负担才这么设计,我觉的是第二者哦,毕竟解释型程序没有编译型程序效率高). ECMAScript对对象的定义:”无需属性的集合,其属性可以包含基本值.对象或者函数“.等等,这句话眼熟啊,想起来了吧,Object类型就是这么定义的啊.所以,Object类型就是js里所有对象(类)的父类. 而所有通过new Array.new String的变量都是Ar

第八章 面向对象之二:function与面向对象的关系(两个实现面向对象的重要属性)

每一个函数建立完成之后,javaScript都会自动的给它添加两个属性和一个配套对象(配套类),即prototype属性和__proto__属性,而配套对象(类)叫做“原型对象”. 只要是函数,它就有这个原型对象,我们无法删除它. 原型对象的意义在于,它包含的属性和方法对于通过此函数创建的实例来说,是公用的.而我们在函数本身内部定义的属性和方法不是公用的,每次建立实例之后,虽然两个实例都具有想通的属性和方法,但是实际上是两份相同的拷贝,并不是同一段内存的属性和方法,它们的各自修改不会对其他实例造

面向对象之补充

1 组合补充 <1>类或对象可以做字典的key <2>对象中到底有什么 class Foo(object): # # def __init__(self,age): # self.age = age # # def display(self): # print(self.age) # # data_list = [Foo(8),Foo(9)] # for item in data_list: # print(item.age,item.display()) #8 8 None 9

python学习笔记-Day08--(面向对象)--补充

类还有两个方法,一个是判断一个对象是否是某个类的实例,另外一个方法是判断一个类是否是另外一个类的子类. isinstance(obj,cls)检查obj是否是类cls的对象返回结果为布尔值 issubclass(sub,supper)检查sub是否是supper的派生类返回结果为布尔值 注意:如果一个类C的基类B继承自某个类A,那么类C也是类A的的派生类 class A:            pass class B(A):            pass class C(B):       

软件工程概论第八章--面向对象设计

面向对象设计主要讲设计的概念.软件体系结构.系统设计.详细设计.应用设计模式.用户界面设计和设计文档等方面知识,面向对象的设计是面向对象技术中比较重要的阶段. 设计的概念中讲了设计活动和设计原则,设计是一个建模活动,此活动能实现从需求分析到软件实现间的跨越.设计原则主要有模块化.耦合度和内聚性和复用性,模块化可以使复杂的系统简化,耦合度和内聚性分别是子系统间的关联程度和系统内部的相关程度,降低耦合性提高内聚性.复用性利用以开发的软件元素生成新的软件系统. 软件体系结构主要有仓库体系结构,分层体系

PHP面向对象实例(图形计算器)

效果: index.php <!DOCTYPE html> <html> <head> <title>图形计算(使用面向对象技术开发)</title> <meta http-equiv="content" content="text/html" charset="utf-8" /> </head> <body> <center> <!

《软件工程 ——理论、方法与实践》知识概括第八章 面向对象设计

第8章 面向对象设计 分析模型:功能模型.分析对象模型.动态模型. 一.设计的概念 设计活动 设计也是一个建模活动,它在分析模型的基础上完成实现环境的类建模.状态图建模.协作建模.组件建模.部署建模.持久建模和用户界面原型,实现从需求分析到软件实现之间的跨越. 设计活动划分为系统设计和详细设计等两个主要阶段. 将系统模块化就是讲一个复杂的大系统分解成若干个相对简单的较小部分,称为子系统.子系统是一个定义明确的软件组件,它向其他子系统提供多种服务. 对系统进行层次分解,子系统划分为不同的层次,每一

2015年7月20日 第八章 面向对象之三:继承

javaScript的继承是通过原型链来实现的,而原型链是各级函数的原型对象的__proto__属性组成的. 我们知道当一个函数实例化之后,实例对象具有的内容是函数的属性和方法以及一个__proto__,它指向函数的原型对象,从而也具备了原型对象的属性和方法. 我们如果有如下函数(采自高级程序设计三): function SuperType () { this.property = true; } SuperType.prototype.getSuperValue = function () {