标题：对象数组
对象数组
对象数组就是数组里的每个元素都是类的对象，赋值时先定义对象，然后将对象直接赋给数组就行了。
对象
某种计算机语言中对于某特定程序的函数
对象(object)是一件事、一个实体、一个名词，可以获得的东西，可以想象有自己的标识的任何东西。对象是类的实例化。一些对象是活的，一些对象不是。 
   客户端对象件的包含关系图
比如这辆汽车、这个人、这间房子、这张桌子、这株植物、这张支票、这件雨衣。 概括来说就是：万物皆对象。 
面向对象(ObjectOriented,OO)是当前计算机界关心的重点，它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发，扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。 
在ASP动态网页中，对象是一个抽象的概念，是要操作的目标。比如，在现实生活中，电脑就是我们搜寻资料的一个对象，他具有外观、操作系统、价格等等特点，这在对象概念中被称为属性，而利用这个电脑玩游戏、看电影、查找资料等用途，这就对应于对象里的方法，另外，主板、CPU、显卡、键盘等等组件，我们可以称作对象的集合。 
在ASP动态网页中，对象的特点归结起来有三个：属性、方法、集合。
面向对象的基本概念
(1)类 
具有相同或相似性质的对象的抽象就是类。因此，对象的抽象是类，类的具体化就是对象，也可以说类的实例是对象。 
类具有属性，它是对象的状态的抽象，用数据结构来描述类的属性。 
类具有操作，它是对象的行为的抽象，用操作名和实现该操作的方法来描述。 
(2)类的结构 
在客观世界中有若干类，这些类之间有一定的结构关系。通常有两种主要的结构关系，即一般--具体结构关系，整体--部分结构关系。 
①一般——具体结构称为分类结构，也可以说是“或”关系，或者是“is a”关系。 
②整体——部分结构称为组装结构，它们之间的关系是一种“与”关系，或者是“has a”关系。 
(3)对象 
对象是人们要进行研究的任何事物，从最简单的整数到复杂的飞机等均可看作对象，它不仅能表示具体的事物，还能表示抽象的规则、计划或事件。 
(4)对象的状态和行为 
对象具有状态，一个对象用数据值来描述它的状态。 
对象还有操作，用于改变对象的状态，对象及其操作就是对象的行为。 
对象实现了数据和操作的结合，使数据和操作封装于对象的统一体中 
(5)消息和方法 
对象之间进行通信的结构叫做消息。在对象的操作中，当一个消息发送给某个对象时，消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名（即对象名、方法名）。一般还要对参数加以说明，参数可以是认识该消息的对象所知道的变量名，或者是所有对象都知道的全局变量名。
面向对象的特征
(1)对象唯一性 
每个对象都有自身唯一的标识，通过这种标识，可找到相应的对象。在对象的整个生命期中，它的标识都不改变，不同的对象不能有相同的标识。 
(2)分类性 
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象，它反映了与应用有关的重要性质，而忽略其他一些无关内容。任何类的划分都是主观的，但必须与具体的应用有关。 
(3)继承性 
继承性是子类自动共享父类数据结构和方法的机制，这是类之间的一种关系。在定义和实现一个类的时候，可以在一个已经存在的类的基础之上来进行，把这个已经存在的类所定义的内容作为自己的内容，并加入若干新的内容。 
继承性是面向对象程序设计语言不同于其它语言的最重要的特点，是其他语言所没有的。 
在类层次中，子类只继承一个父类的数据结构和方法，则称为单重继承。 
在类层次中，子类继承了多个父类的数据结构和方法，则称为多重继承。 
在软件开发中，类的继承性使所建立的软件具有开放性、可扩充性，这是信息组织与分类的行之有效的方法，它简化了对象、类的创建工作量，增加了代码的可重性。 
采用继承性，提供了类的规范的等级结构。通过类的继承关系，使公共的特性能够共享，提高了软件的重用性。 
(4)多态性(多形性) 
多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象，收到同一消息可以产生不同的结果，这种现象称为多态性。 
多态性允许每个对象以适合自身的方式去响应共同的消息。 
多态性增强了软件的灵活性和重用性。
面向对象的要素
(1)抽象 
抽象是指强调实体的本质、内在的属性。在系统开发中，抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节。 
类实现了对象的数据（即状态）和行为的抽象。 
(2)封装性（信息隐藏） 
封装性是保证软件部件具有优良的模块性的基础。 
面向对象的类是封装良好的模块，类定义将其说明（用户可见的外部接口）与实现（用户不可见的内部实现）显式地分开，其内部实现按其具体定义的作用域提供保护。 
对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。 
(3)共享性 
面向对象技术在不同级别上促进了共享： 
①同一类中的共享 
同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。 
②在同一应用中共享 
在同一应用的类层次结构中，存在继承关系的各相似子类中，存在数据结构和行为的继承，使各相似子类共享共同的结构和行为。使用继承来实现代码的共享，这也是面向对象的主要优点之一。 
③在不同应用中共享 
面向对象不仅允许在同一应用中共享信息，而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。 
(4).强调对象结构而不是程序结构
面向对象的开发
目前，面向对象开发方法的研究已日趋成熟，国际上已有不少面向对象产品出现。面向对象开发方法有Coad方法、Booch方法和OMT方法等。 
(1).Booch方法 
Booch最先描述了面向对象的软件开发方法的基础问题，指出面向对象开发是一种根本不同于传统的功能分解的设计方法。面向对象的软件分解更接近人对客观事务的理解，而功能分解只通过问题空间的转换来获得。 
(2).Coad方法 
Coad方法是1989年Coad和Yourdon提出的面向对象开发方法。该方法的主要优点是通过多年来大系统开发的经验与面向对象概念的有机结合，在对象、结构、属性和操作的认定方面，提出了一套系统的原则。该方法完成了从需求角度进一步进行类和类层次结构的认定。尽管Coad方法没有引入类和类层次结构的术语，但事实上已经在分类结构、属性、操作、消息关联等概念中体现了类和类层次结构的特征。 
(3).OMT方法 
OMT方法是1991年由James Rumbaugh等5人提出来的，其经典著作为“面向对象的建模与设计”。 
该方法是一种新兴的面向对象的开发方法，开发工作的基础是对真实世界的对象建模，然后围绕这些对象使用分析模型来进行独立于语言的设计，面向对象的建模和设计促进了对需求的理解，有利于开发得更清晰、更容易维护的软件系统。该方法为大多数应用领域的软件开发提供了一种实际的、高效的保证，努力寻求一种问题求解的实际方法。 
(4).UML(Unified Modeling Language)语言 
软件工程领域在1995年～1997年取得了前所未有的进展，其成果超过软件工程领域过去15年的成就总和，其中最重要的成果之一就是统一建模语言（UML)的出现。UML将是面向对象技术领域内占主导地位的标准建模语言。 
UML不仅统一了Booch方法、OMT方法、OOSE方法的表示方法，而且对其作了进一步的发展，最终统一为大众接受的标准建模语言。UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计，还支持从需求分析开始的软件开发全过程。
数组
概述关于可变长数组（VLA）的问题：原来的C标准中是不允许可变长数组出现的，也就是你说的那个n可变。但是在C99中，加入了对VLA的支持，也有不少编译器已经支持这个了，而且好像没有太多的人用这个可变长数组。 
如果有过用其它语言编程的经历，那么想必会熟悉数组的概念。由于有了数组，可以用相同名字引用一系列变量，并用数字（索引）来识别它们。在许多场合，使用数组可以缩短和简化程序，因为可以利用索引值设计一个循环，高效处理多种情况。数组有上界和下界，数组的元素在上下界内是连续的。因为 Visual Basic对每一个索引值都分配空间，所以不要不切实际声明一个太大的数组。 
此处数组是程序中声明的变量数组。它们不同于控件数组，控件数组是在设计时通过设置控件的 Index 属性规定的。变量数组总是连续的；与控件数组不同的是，不能从一个数组的中部加载或卸载数组元素。 
一个数组中的所有元素具有相同的数据类型（在在C、C++、Java中都这样。但也并非所有涉及数组的地方都这样，比如在Visual Foxpro中的数组就并没这样的要求）。当然，当数据类型为 Variant 时，各个元素能够包含不同种类的数据（对象、 字符串 、数值等等）。 可以声明任何基本数据类型的数组，包括用户自定义类型（请参阅 “再论编程”中的“创建自己的数据类型”）和对象变量（请参阅“用对象编程”）。 
如果要用户输入的是一个数组，一般是用一个循环，但是在输入前也需要固定数组的大小。 
compact跟变长数组没有太大的关系，也应该用不到变长数组。因为一般的传数组到函数中就是传数组的地址和元素的个数的，那只是一个提示，不是要求。 
原型可以这样写（假设数组的元素是type）： 
int compact(type *Array,int Count) 
数组类型说明 在Ｃ语言中使用数组必须先进行类型说明。 
数组说明的一般形式为： 类型说明符 数组名 [常量表达式]，……； 其中，类型说明符是任一种基本数据类型或构造数据类型。 数组名是用户定义的数组标识符。 方括号中的常量表达式表示数据元素的个数，也称为数组的长度。例int a[10]; 说明整型数组a，有10个元素。 
float b[10],c[20]; 说明实型数组b，有10个元素，实型数组c，有20个元素。 
char ch[20]; 说明字符数组ch，有20个元素。