第1 章:对象入门
所有编程语言的最终目的都是提供一种"抽象"方法。在机器模型(位于"方案空间")与实际解决的问题模型(位于"问题空间")之间,程序员必须建立起一种联系
对象:
-
所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。理论
上讲,可从要解决的问题身上提出所有概念性的组件,然后在程序中将其表达为一个对象。
-
程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象"发送一条消息"。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。
-
每个对象都有自己的存储空间,可容纳其他对象。或者说,通过封装现有对象,可制作出新型对象。所以,尽管对象的概念非常简单,但在程序中却可达到任意高的复杂程度。
-
每个对象都有一种类型。根据语法,每个对象都是某个"类"的一个"实例"。其中,"类"(Class)是"类型"(Type)的同义词。一个类最重要的特征就是"能将什么消息发给它?"。
-
同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法,大家不久便能理解。由于类型为"圆"(Circle)的一个对象也属于类型为"形状"(Shape)的一个对象,所以一个圆完全能接收形状消息。这意味着可让程序代码统一指挥"形状",令其自动控制所有符合"形状"描述的对象,其中自然包括"圆"。这一特性称为对象的"可替换性",是OOP 最重要的概念之一。
面向对象的程序设计语言都采用了"class"关键字等同于"type"这个关键字,反之亦然。
Java采用三个显式(明确)关键字以及一个隐式(暗示)关键字来设置类边界:
public,private,protected以及暗示性的friendly。若未明确指定其他关键字,则默认为后者。这些关键字的使用和含义都是相当直观的,它们决定了谁能使用后续的定义内容。
-
"public"(公共)意味着后续的定义任何人均可使用。
-
"private"(私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。private在您与客户程序员之间竖起了一堵墙。若有人试图访问私有成员,就会得到一个编译期错误。
-
"friendly"(友好的)涉及"包装"或"封装"(Package)的概念——即Java用来构建库的方法。若某样东西是"友好的",意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作"包装访问")。
-
"protected"(受保护的)与"private"相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。继承的问题不久就要谈到。
上溯造型:根据基础类进行造型就是一个从上面继承的过程,即"Upcasting"。其中,"cast"(造型)是指根据一个现成的模型创建;而"Up"(向上)表明继承的方向是从"上面"来的——即基础类位于顶部,而衍生类在下方展开。应用父类的接口。
下溯造型:父类的实例应用子类的接口,造成就是不能
动态绑定:将一条消息发给对象时,如果并不知道对方的具体类型是什么,但采取的行动同样是正确的,这种情况就叫作"多形性"(Polymorphism)。实现多形性的方法叫作"动态绑定"。C++中,关键字virtual实现动态绑定。
集合或者数组用来实现:新型对象容纳了指向其他对象的句柄(对象的名字封装了这个对象称之为句柄)。
将一个句柄植入集合的方法:就是Push(推)。
Vector矢量:只能用索引运算符或函数。
Iterator继续器:它属于一种对象,负责选择集合内的元素,并把它们提供给继承器的用户。
vector 、list、deque的使用。
vector
表示一段连续的内存区域,每个元素被顺序存储在这段内存中,对vector 的随机访问效率很高,但对非末尾元素的插入和删除则效率非常低。
deque
也表示一段连续的内存区域,但与vector不同的是它支持高效地在其首部插入和删除元素,它通过两级数组结构来实现,一级表示实际的容器,第二级指向容器的首和尾
list
表示非连续的内存区域并通过一对指向首尾元素的指针双向链接起来,插入删除效率高,随机访问效率低
1、如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
2、如果你需要大量的插入和删除,而不关心随即存取,则应使用list
3、如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque。
客户机/服务器计算
客户机/服务器概述的一个关键在于信息是"集中存放"的。
将各种元素集中到一起,信息仓库、用于投递信息的软件以及信息及软件所在的那台机器,它们联合起来便叫作"服务器"(Server)
驻留在远程机器上的软件,它们需要与服务器通信,取回信息,进行适当的处理,然后在远程机器上显示出来,这些就叫作"客户"(Client)
一般可以考虑让客户机负担部分处理任务,但有时亦可分派给服务器所在地的其他机器,那些机器亦叫作"中间件"(中间件也用于改进对系统的维护)。
基本HTML语言提供了简单的数据收集机制:文字输入框、复选框、单选钮、列表以及下拉列表等,另外还有一个
按钮,只能由程序规定重新设置表单中的数据,以便回传给服务器。
服务器一般为客户浏览器产生静态网页,浏览器简单地解释并显示出来。
"通用网关接口"(CGI)
插件实际是浏览器的一个"后门",允许创建新的客户端程序设计语言(尽管并非所有语言都是作为插件实现的)
脚本编制语言的宗旨是尽可能地简化与快速
一个信息网络局限于一家特定的公司,那么在将Web技术应用于它之后,即可称其为"内联网"(Intranet)它提供了比因特网更大的安全级别,因为可以物理性地控制对公司内部服务器的使用。