社区
Java SE
帖子详情
JAVA有没有象VB那样智能显示的平台啊???
applezh
2003-08-24 02:47:28
就是"."后面对象的属性和方法会显示。
...全文
62
4
打赏
收藏
JAVA有没有象VB那样智能显示的平台啊???
就是"."后面对象的属性和方法会显示。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
value
2003-08-25
打赏
举报
回复
eclipse 和 jcreator就可以,JBuilder当然也可以,但我觉的初学用后者就不太适合了!
Wnyu
2003-08-24
打赏
举报
回复
JCreator Pro
zhirenshao
2003-08-24
打赏
举报
回复
在上述软件里,你还可以直接把按扭拖拽出来,就像VB里面一样,JBuilder会自动帮你生成代码
zhirenshao
2003-08-24
打赏
举报
回复
你用大型一点的IDE软件就有了,像JBuilder,非常好用。 也可以用 Sun One Stdio
华报
智能
报表工具
华报
智能
报表工具(ReportAll)是开发人员最理想的报表工具,具有全新的设计思想,对中国式报表和很多复杂报表有很强的针对性,他将“对
象
摆放”类和“电子表格”类报表开发工具完美融合,使用种类丰富且功能强大的报表对
象
组合生成任意复杂的报表样式。在华报
智能
报表工具中,无论是“带区(Band)”、“表格(Grid)”、“图表(Chart)”、“文字”及“线条”等元素都作为报表对
象
嵌入在报表页面之中。这些报表对
象
独立占据一定的区域,独立地进行分页控制。事实上,使用华报
智能
报表工具为报表布局不受任何限制,开发人员可以随意灵活地利用每一块页面空间。另外,华报
智能
报表工具提供的报表对
象
都是“数据感知”的,当他们和虚拟数据集中的数据建立“绑定”关系后,可以实时
显示
数据和感知数据的变化。 1、原理 ReportAll控件/插件是符合微软COM规范的ActiveX控件,运行时需要嵌入到应用程序的窗体或HTML页面中,并由开发人员传入用来表现报表的格式或样式的外观信息(报表文档)和用来存储报表内容的数据信息(报表数据),这两种信息既相互独立又相互关联。因此,报表的开发工作主要围绕这两种信息的生成过程而进行。 报表文档和报表数据可以通过URL(或本地文件路径)请求从Web服务器(或本地操作系统)的返回结果中加载,可以从内存中的XML字符串加载,也可以通过编程(调用API编程接口)动态生成。 ReportAll控件/插件不依赖于数据库
平台
,其数据从XML数据文本中获得,因此ReportAll可以灵活地适用于各种场合。 2、组成 ReportAll报表开发工具软件包主要包括以下各部分: ReportAll报表设计器:一个标准的Win32应用程序,用于对报表的文档进行编辑和调试,编辑的结果可保存到符合XML格式的文本文件中。 ReportAll报表控件/插件:嵌入到程序窗体或Web页面中的符合微软Com规范的ActiveX控件,用于展现或编辑(仅针对设计器版)报表的外观和采集数据,同时提供了API编程接口,便于开发人员对其进行各种控制。 数据源SDK源代码:这些源代码用于帮助开发人员生成加载报表数据用的XML数据文本,它们可以由开发人员根据项目的需要自由修改。目前提供语言版本包括:Delphi,VS.Net C#,
Java
。 帮助文档:微软标准CHM帮助文件,帮助开发人员对ReportAll进行学习。 在ReportAll报表设计器中,该文档可以提供上下文敏感的帮助信息。 范例:一些使用ReportAll进行报表开发的例子,帮助开发人员快速入门。 3、适用范围 因为ReportAll报表控件/插件是标准的ActiveX控件,所以所有支持ActiveX技术的前台开发工具(如:Delphi、C++Build、VC++、
VB
、、VC#、PowerBuild、
Java
Script、
VB
Scrip、Excel等)都可以使用ReportAll报表控件/插件输出报表。 4、特点 报表设计 使用“对
象
摆放”式和“电子表格”式相结合的方式进行报表文档的布局排版;开发人员既可以像设计Form那样灵活地摆放报表对
象
并设置他们的属性,也可以
象
使用Excel那样编辑不规则的表格。 提供了丰富的报表对
象
帮助您组合成任意复杂的报表样式。 采用“即点即输”的方式进行报表对
象
的文本编辑。 每一个报表对
象
都可以使用属性编辑器对其属性进行编辑(支持批量属性修改)。 支持复杂多层表头的快速设计。 支持无限级带区的快速设计。 支持单元格内的斜线排列功能。 支持行横向和纵向的窗口冻结。 使用折页器实现分栏分段 支持超文本的分页
显示
支持复杂的图表功能 支持图片数据的动态加载 支持横向数据表格(记录横行动态扩展,自动分页)。 支持数据录入功能(可以下拉选择录入项)。 在套打设计时,提供辅助图底纹,可以帮助开发人员方便准确地定位报表对
象
。 可以在加载数据的状态下进行报表文档编辑的工作,使开发工作非常直观。 支持公制、英制、和屏幕三种单位制。 填报方式 无需预先定义数据集,通过直接对虚拟数据集操作(简单的增删和赋值操作)或从XML数据源中加载数据即可实现内容的填报。 可以在录入模式由用户通过用户界面UI输入数据至虚拟数据集中,从而实现数据的采集。 将报表对
象
与数据“绑定”,当加载数据或数据发生变化时,将会直接在报表页面上体现出来。 数据加载 以XML作为报表文档的存储格式。 可以通过报表设计器编辑静态的报表文档,也可以使用API编程接口动态地传入描述报表文档的XML字符串或者URL地址。 以XML作为数据交换的标准格式。可以传入符合XML格式的字符串或者URL地址实现数据的加载。 当从XML数据源中加载数据时可以采用多线程的方式(可选),在数据量较大的情况下的可以实现边加载边浏览
C#微软培训资料
<> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章 类 型 转 换 .48 6.1 隐式类型转换 .48 6.2 显式类型转换 .53 6.3 小 结 .56 第七章 表 达 式 .58 7.1 操 作 符 .58 7.2 算术操作符和算术表达式.59 7.3 赋值操作符和赋值表达式.64 7.4 关系操作符和关系表达式.65 <> page begin==================== 7.5 逻辑操作符和逻辑表达式.68 7.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 条 件 语 句 .79 8.2 循 环 语 句 .86 8.3 条 件 编 译.90 8.4 异常处理语句 .95 8.5 小 结 .100 第三部分 面向对
象
的 C#.101 第九章 面向对
象
的程序设计 .101 9.1 面向对
象
的基本概念.101 9.2 对
象
的模型技术 .103 9.3 面向对
象
的分析 .105 9.4 面向对
象
的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 10.2 类 的 成 员 .113 10.3 构造函数和析构函数 .119 10.4 小 结 .122 第十一章 方 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 结.137 第十二章 域 和 属 性 .139 12.1 域 .139 12.2 属 性 .143 12.3 小 结 .146 第十三章 事件和索引指示器 .148 13.1 事 件 .148 13.2 索引指示器 .151 13.3 小 结 .154 第十四章 继 承 .155 14.1 C#的继承机制.155 <> page begin==================== 14.2 多 态 性 .159 14.3 抽
象
与密封 .163 14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 15.5 抽
象
类与接口 .195 15.6 小 结 .196 第十六章 组织应用程序 .198 16.1 基 本 概 念 .198 16.2 使用名字空间 .200 16.3 使用指示符 .203 16.4 程 序 示 例 .206 16.5 小 结 .213 第十七章 文 件 操 作 .215 17.1 .Net 框架结构提供的 I/O 方式 .215 17.2 文件存储管理 .217 17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和
VB
编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间成员速查.269 参 考 资 料 .300 <> page begin==================== 第一部分 C#语言概述 第一章 第一章第一章 第一章 .NET 编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 Microsoft.NET 的概念 .NET 框架 C#语言在.NET 框架中的作用及其特性 1.1 Microsoft.NET 一场新的革命 1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 Microsoft.NET(以下简称.NET) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 Microsoft.NET 的认同 并且开发出其他基于 Internet 的服务 那么 你是否想知道 究竟什么是.NET? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个
平台
来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发
平台
它定义了一种公用语言子集 Common Language Subset CLS ,这是一种为符合其规范的语言与类库之间提供无缝集成的混合语 .NET 统一了编程类库 提供了对下一代网络通信标准 可扩展标记语言 Extensible Markup <> page begin==================== Language XML 的完全支持 使应用程序的开发变得更容易 更简单 Microsoft.NET 计划还将实现人机交互方面的革命 微软将在其软件中添加手写和语音识别的功能 让人们能够与计算机进行更好的交流 并在此基础上继续扩展功能 增加对各种用户 终端的支持能力 最为重要的 .NET 将改变因特网的行为方式 软件将变成为服务 与 Microsoft 的其它产品一样 .NET 与 Windows
平台
紧密集成 并且与其它微软产品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发
平台
环境 微软的宏 伟目标是让 Microsoft.NET 彻底改变软件的开发方式 发行方式 使用方式等等 并且 不止是针对微软一家 而是面向所有开发商与运营商 .NET 的核心内容之一就是要搭 建第三代因特网
平台
这个网络
平台
将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET
平台
上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 1.1.2 我们为什么需要.NET 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的
平台
这就是 Microsoft.NET 提高软件开发生产效率 并且试图使应用软件的发布更为容易 再也不想因为 DLL 版本不同而烦恼 希望不用重新启动电脑就能够安装应用软件 改进用户界面 并能支持多种用户终端 用户界面演进的结果包括两方面的内容 一是完成传统的 PC 界面与基于 XML 的浏览器界面间的过渡 二是对自然语言和语音 识别的支持 从而使用户与各种终端之间的沟通更加透明 真正达到网络互连的 3A Anywhere Anytime Any device 今天 许多的人时常问 除了上网看新闻 我们究竟还能干什么 这是因为今 天的互联网与旧式的大型计算机的工作模式还有许多相似之处 信息被储存在中央服 务器内 而用户的所有操作都要依靠它们 让不同的网址之间相互传递有意义的信息 或者合作提供更广泛和更深层次的服务 还是一件十分困难的事 现代人时常有一种困惑 感觉到如今生活在技术与机器架构的丛林中 我们在努 力地去适应机器 适应技术 而不是机器和技术适应人类 科技以人为本还只是一个 美好的愿望 这是因为我们还不能将控制信息的权利交给那些需要信息的人们 .NET <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行
智能
交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 1.1.3 .NET 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 Passport.NET 用于用户认 证 以及用于文件存储的服务 用户首选项管理 日历管理以及众多的其它任务 构建和管理新一代服务的基本结构和工具 包括 Visual Studio.NET .NET 企 业服务器 .Net Framework 和 Windows.NET 能够启用新型
智能
互联网设备的.NET 设备软件 .NET 用户体验 1.2 .NET 与 C# 1.2.1 支持多种编程语言的.NET 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对
象
模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发
平台
限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET
平台
欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic
VB
中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET
平台
的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms ADO.NET 和 ASP.NET 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 1.2.2 面向.Net 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层
平台
所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对
象
的程序开发语言 它使得程序员能够在新的微软.NET
平台
上快速开发种类丰富的 应用程序 .NET
平台
提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对
象
的设计 从构建组件形式的高层商业对
象
到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 1.3 C#语言的特点 C#在带来对应用程序的快速开发能力的同时 并没有牺牲 C 与 C++程序员所关心 的各种特性 它忠实地继承了 C 和 C++的优点 如果你对 C 或 C++有所了解 你会发 现它是那样的熟悉 即使你是一位新手 C#也不会给你带来任何其它的麻烦 快速应 用程序开发 Rapid Application Development RAD 的思想与简洁的语法将会使你迅 速成为一名熟练的开发人员 正如前文所述 C#是专门为.NET 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对
象
设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 1.3.1 简洁的语法 请原谅 虽然我们一再强调学习本书不需要任何的编程基础 但在这里还不得不 提到 C++ 在缺省的情况下 C#的代码在.NET 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于我们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正的关键字换掉了那些把活动模板库 Active Template Library ALT 和 COM 搞 得 乱 糟 糟 的 伪 关 键 字 , 如 OLE_COLOR BOOL VARIANT_BOOL DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新名字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行了简化 只保留了常见的形式 而别的冗余形式从它的语法 结构中被清除了出去 1.3.2 精心地面向对
象
设计 也许你会说 从 Smaltalk 开始 面向对
象
的话题就始终缠绕着任何一种现代程序 设计语言 的确 C#具有面向对
象
的语言所应有的一切特性 封装 继承与多态 这 并不出奇 然而 通过精心地面向对
象
设计 从高级商业对
象
到系统级应用 C#是建 造广泛组件的绝对选择 在 C#的类型系统中 每种类型都可以看作一个对
象
C#提供了一个叫做装箱 boxing 与拆箱 unboxing 的机制来完成这种操作 而不给使用者带来麻烦 这在 以后的章节中将进行更为详细的介绍 C#只允许单继承 即一个类不会有多个基类 从而避免了类型定义的混乱 在后 面的学习中你很快会发现 C#中没有了全局函数 没有了全局变量 也没有了全局常 数 一切的一切 都必须封装在一个类之中 你的代码将具有更好的可读性 并且减 少了发生命名冲突的可能 整个 C#的类模型是建立在.NET 虚拟对
象
系统 Visual Object System VOS 的基 础之上 其对
象
模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从
VB
中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对
象
功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 1.3.3 与 Web 的紧密结合 .NET 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对
象
程序员们能够利用他们已有的面向对
象
的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 1.3.4 完全的安全性与错误处理 语言的安全性与错误处理能力 是衡量一种语言是否优秀的重要依据 任何人都 会犯错误 即使是最熟练的程序员也不例外 忘记变量的初始化 对不属于自己管理 范围的内存空间进行修改 这些错误常常产生难以预见的后果 一旦这样的软 件被投入使用 寻找与改正这些简单错误的代价将会是让人无法承受的 C#的先进设 计思想可以消除软件开发中的许多常见错误 并提供了包括类型安全在内的完整的安 全性能 为了减少开发中的错误 C#会帮助开发者通过更少的代码完成相同的功能 这不但减轻了编程人员的工作量 同时更有效地避免了错误发生 .NET 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET
平台
提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对
象
撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对
象
的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对
象
当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 1.3.5 版本处理技术 C#提供内置的版本支持来减少开发费用 使用 C#将会使开发人员更加轻易地开发 和维护各种商业应用 升级软件系统中的组件 模块 是一件容易产生错误的工作 在代码修改过程中 可能对现存的软件产生影响 很有可能导致程序的崩溃 为了帮助开发人员处理这些 问题 C#在语言中内置了版本控制功能 例如 函数重载必须被显式地声明 而不会 像在 C++或
Java
中经常发生的那样不经意地被进行 这可以防止代码级错误和保留版 本化的特性 另一个相关的特性是接口和接口继承的支持 这些特性可以保证复杂的 软件可以被方便地开发和升级 1.3.6 灵活性和兼容性 在简化语法的同时 C#并没有失去灵活性 尽管它不是一种无限制的语言 比如 它不能用来开发硬件驱动程序 在默认的状态下没有指针等等 但是 在学习过程中 你将发现 它仍然是那样的灵巧 如果需要 C#允许你将某些类或者类的某些方法声明为非安全的 这样一来 你 <> page begin==================== 将能够使用指针 结构和静态数组 并且调用这些非安全的代码不会带来任何其它的 问题 此外 它还提供了一个另外的东西 这样的称呼多少有些不敬 来模拟指针的 功能 delegates 代表 再举一个例子 C#不支持类的多继承 但是通过对接口的 继承 你将获得这一功能 下面谈谈兼容性 正是由于其灵活性 C#允许与 C 风格的需要传递指针型参数的 API 进行交互操作 DLL 的任何入口点都可以在程序中进行访问 C#遵守.NET 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 1.4 小 结 Microsoft.NET 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET
平台
的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET
平台
的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET
平台
的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET
平台
之上 其各种特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均来自.NET
平台
的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 2.1 .NET 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 2.1.1 虚拟对
象
系统 .NET 跨语言集成的特性来自于虚拟对
象
系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想
象
不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想
象
一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在
VB
中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对
象
的语言 同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对
象
的语言方面 它统一了不同编程语言的对
象
模型 每一个对
象
在 VOS 中都被 唯一标识以与其它对
象
相区别 <> page begin==================== 2.1.2 元数据 元数据是对 VOS 中类型描述代码的一种称呼 在编译程序将源代码转换成为中间 代码时 它将自动生成 并与编译后的源代码共同包含在二进制代码文件中 元数据 携带了源代码中类型信息的描述 这在一定程度上解决了版本问题 程序使用的类型 描述与其自身绑定在一起 在 CLR 定位与装载类型时 系统通过读取并解析元数据来获得应用程序中的类型 信息 JIT 编译器获得加载的类型信息后 将中间语言代码翻译成为本地代码 在此基 础上根据程序或用户要求建立类型的实例 由于整个过程中 CLR 始终根据元数据建 立并管理对应特定应用程序的类型 从而保证了类型安全性 此外 元数据在解决方法的调用 建立运行期上下文界限等方面都有着自己的作 用 而关于元数据的一切都由.NET 在后台完成 2.1.3 公用语言规范 公用语言规范 Common Language Specification CLS 是 CLR 定义的语言特性 集合 主要用来解决互操作问题 如果一个类库遵守 CLS 那么同样遵守 CLS 规范的 其它编程语言将能够使用它的外部可见项 详细的内容见本章第二节 2.1.4 虚拟执行系统 虚拟执行系统 Visual Execution System VES 是 VOS 的实现 它用来驱动运行 环境 元数据的生成与使用 公用语言规范的满足性检查以及应用程序执行过程中的 内存管理均由它来完成 具体说来 VES 主要完成以下功能 装入中间代码 使用 JIT 将中间代码转换为本地码 装入元数据 代码管理服务 包括垃圾收集器和异常处理 定制与调试服务 线程和环境管理 2.2 公用语言运行时环境与公用语言规范 了解了.NET 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET
平台
的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 2.2.1 理解 CLR .NET 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并载入类 在内存中展开对
象
实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对
象
的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对
象
被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对
象
能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位
VB
开发人员 你可能注意到在运行时 环境的帮助下
VB
语言比以前具有更多的面向对
象
的特性 <> page begin==================== 2.2.2 可操控执行的含义 前面的叙述中 我们多次提到了 可操控 这一概念 这意味着它指向的对
象
在 执行过程中完全被运行时环境所控制 在执行过程中 运行时环境提供以下服务 自 动内存管理 调试支持 增强的安全性及与非可操控代码的互操作性 例如 COM 组件 在可控执行进程中的第一步是选择源代码的生成工具 如果你希望你的应用拥有 CLR 提供的优势 你必须使用一种 或多种 以运行时为目标的语言编译器 例如
VB
C# VC 的编译器 或者一种第三方编译器如 PERL 或 COBOL 编译器 由于运行时是一种多语言执行环境 它支持众多的数据类型和语言特性 你使用 的语言编译器决定你将使用运行时的哪一部分功能子集 在代码中使用的语法由你的 编译器决定 而不是运行时环境 如果你的组件需要被其他语言的组件完全使用 那 么你必须在你组件的输出类型中使用 CLR 所要求的语言特征 当你完成并编译你的代码时 编译器将它转换为微软中间语言 Microsoft Intermediate Language MSIL 同时产生元数据 当你要执行你的代码时 这种中间 语言被即时 Just In Time JIT 编译器编译成为本地代码 如果安全策略需要的代码 是类型安全的 通常情况下都是如此 JIT 编译器将在编译进程中对中间语言进行 类型检查 一旦失败 在代码执行中将会触发异常 2.2.3 CLR 的突出特色 跨语言集成的能力 CLR 包含了一个丰富的语言特性集 保证了它与各种程序设计语言的兼容性 这 一特性集即公用语言规范 稍后将对其进行详细说明 内存管理自动化 在执行过程中管理应用程序的资源是一项单调而困难的工作 它会将你的注意力 从你本应解决的问题中引开 而垃圾收集机制完全解决了程序员在编程过程中头痛的 问题 跟踪内存的使用 并知道何时将它们释放 在面向对
象
的环境中 每种类型都标识了对你的应用有用的某种资源 为了使用 这些资源 你需要为类型分配内存 在应用中 访问一种资源要通过以下步骤 1 为类型分配内存 2 初始化内存 设置资源的初始状态并使其可用 3 通过访问该类型的实例成员来访问资源 4 卸下将被清除的资源状态 5 释放内存 这一看似简单的过程在实际的编程中是产生程序错误的主要来源之一 更可怕的 是 内存中的错误往往导致不可预见的结果 如果你有过编程的经验 想想看 有多 少次你的程序因为内存访问错误而崩溃 CLR 要求所有的资源从可操控的堆 注 在此指一种内存结构 中分配 当一个 <> page begin==================== 进程被初始化后 CLR 保留了一个未被分配的地址空间 这一区域叫做可操控堆 在 堆中保持了指向下一个将被分配给对
象
的堆地址的指针 NEXT 初始状态下 该指 针是保留地址空间的基地址 一个应用使用新的操作产生对
象
此操作首先检查新对
象
需要字节的大小是否会超出保留空间 如果对
象
大小合适 指向下一个地址的指针 将指向堆中的这个对
象
该对
象
的构造器被调用 新的操作返回对
象
的地址 当一个应用请求建立一个对
象
时 地址空间可能不够大 堆将发现这一点 通过 将新对
象
的大小与 NEXT 指针相加 并与堆的大小进行比较 这时垃圾收集器就将被 调用 在这里 CLR 引入了 代 的概念 代 指堆中对
象
产生的先后 这样 垃圾 收集器在将发生溢出时回收属于特定的 代 的对
象
而不是回收堆中的所有对
象
6 即时编译 在各种语言的编译器对源代码进行编译之后 在 CLR 环境中产生的是中间代码 出 于兼容性与跨语言集成的考虑 其内容虽然有效 但在转化为本地代码之前它本身是 不可执行的 这就是 JIT 编译器需要完成的工作 这里需要说明一个问题 为什么要即时编译 而不是一次性的将中间代码文件进 行编译 答案很简单 原因在于效率 在大型的应用中 你很少会用到程序的全部功 能 这种边执行边编译的措施比一次性的完全编译效率更高 在 Windows
平台
中 CLR 带有三个不同的 JIT 编译器 7 缺省的编译器 主编译器 由它进行数据流分析并输出经过优化的本地代 码 所有的中间代码指令均可被它处理 8 PREJIT 它建立在主 JIT 编译器之上 其运行方式更像一个传统的编译器 每当一个.NET 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 jitman.exe 具体的使用参见联机帮助 10 解决版本与发布问题 在当前以组件为基础的系统中 开发人员和用户对于软件版本和发布中存在的问 题已经十分熟悉了 当我们安装一个新的应用之后 我们很可能发现原本正常的某个 应用程序奇怪地停止了工作 绝大多数开发人员将时间花在了确保所有注册表入口的 一致性 以便激活 COM 类上 这就是所谓的 DLL 地狱 .NET
平台
通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 2.2.4 公用语言规范 使被不同语言的编译器所编译的对
象
能够相互理解的唯一方法 是所有在互操作 过程中涉及的数据类型和语言特性对所有的语言来说是公共的 为了这个目的 公用 运行时环境标识了一组语言特征的集合 称为公用语言规范 CLS 如果你的组件在 应用程序接口 Application Program Interface 中仅使用 CLS 的特征语言 包括子类 那么该组件能够被任何支持CLS的语言所编译的组件访问 所有支持CLS并仅使用CLS 中的语言特征的组件被称为符合 CLS 的组件 设计公用语言规范时遇到的一个最主要的挑战是选择适当的语言特性子集的大 小 它应具有完全的表达能力 又应足够小 使得所有的语言能够容纳它 由于 CLS 是关于语言互用性的规范 它的规则仅应用于外部可见的条目中 CLS 假设语言间的 互操作性仅在语言集合的边界发生交叉时才是重要的 也就是说 在单一的语言集中 对于编程技术的使用没有任何限制 CLS 的规则仅作用于在定义它们的语言集合之外 仍然可见的项上 这样就大大缩小了 CLS 的范围 减轻了系统的负担 在 CLS 中是用 System.CLSCompliantAtribute 类来标识一个集合或者类是否是符合 CLS 规范的 在 System.CLSCompliantAtribute 的构造器中有一个 Boolean 型的返回值 代表了与之相关联的项是否符合 CLS 规范 2.3 开 发 工 具 .NET 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 1. Visual Studio.NET 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# 2. Assembly Generation Utility (al.exe) 用来建立集合的工具 它能够将资源文件 或 MSIL 格式的文件转换为带有内容清单的集合 3. Windows Forms ActiveX Control Importer (aximp.exe) 完成 COM 类库中类型定 义的转换 使 ActiveX 控件能够在 Windows 窗口控件上使用 4. Code Access Security Policy Utility (caspol.exe) 在用户与机器水平上修改安全策 略 <> page begin==================== 5. Software Publisher Certificate Test Utility (Cert2spc.exe) 用于从 X.509 证书中生 成软件出版证明书 SPC 6. Certificate Manager Utility (certmgr.exe) 管理证书 证书信任列表和证书回收列 表 7. Certificate Verification Utility (chktrust.exe) 检查证书签名的合法性 8. Runtime Debugger (cordbg.exe) 运行时调试器 是一个命令行程序 帮助开发 人员发现和调试基于 CLR 的应用程序中的错误 9. Global Assembly Cache Utility (gacutil.exe) 允许你浏览与操纵全局集合缓存中 内容的命令行程序 10. MSIL Assembler (ilasm.exe) MSIL 汇编程序 协助设计与实现 MSIL 生成器的 程序 11. MSIL Disassembler (ildasm.exe) MSIL 反汇编程序 与 ilasm.exe 共同使用 将 由 MSIL 代码产生的 Portable Executable 文件转换为文本文件 12. Instaler Utility (instalutil.exe) 用来安装与卸载服务资源 13. License Compiler (lc.exe) 产生可包含在可执行二进制文件中的二进制资源文 件 14. Certificate Creation Utility (makecert.exe) 生成 X.509 证书与用于数字签名的公 用与私有密钥 15. Permissions View Utility(permview.exe) 通过一个集合浏览许可集的工具 16. Peverify Utility(peverify.exe) 检查中间语言与元数据是否符合类型安全认证要 求 17. Assembly Registration Tool(RegAsm.exe) 读取集合中的元数据并加上必要注册 表入口信息 使得 COM 客户透明地建立 CLR 的类 18. Services Registration Tool (RegSvcs.exe) 服务注册工具 它完成执行以下功能 装载与注册一个集合 为现有的 COM+1.0 应用生成 注册与安装类库 19. Resource File Generator Utility(ResGen.exe) 资源文件生成器 用来将文本文件 和 XML 格式的资源文件转换为 CLR 的二进制文件 20. Secutil Utility(SecUtil.exe) 使得从集合中抽取的安全信息更加容易 21. Set Registry Utility(setreg.exe) 改变注册表中公开密钥密码系统的设置 22. Assembly Cache Viewer(shfusion.dl) 允许你使用 Windows 浏览器察看与操作 全局集合缓存中的内容 23. File Signing Utility(signcode.exe) 为 PE (portable executable)文件做标记 赋予 程序员在组件安全约束的基础上对安全性有更多的控制权 24. Shared Name Utility(Sn.exe) 帮助程序员以共享名称建立集合 25. Soapsuds Utility(SoapSuds.exe) 使用远程技术帮助你编译与 Web 服务相通信的 客户应用 26. Isolated Storage Utility(storeadm.exe) 一种用来管理隔离存储区的命令行工具 27. Type Library Exporter(TlbExp.exe) 命令行程序 生成由集合名称指示的包含集 合中公共类型定义的类库 <> page begin==================== 28. Type Library Importer (TlbImp.exe) 将 COM 类库中的类型定义转换为在 CLR 中与元数据格式一致的类型定义 29. Web Service Utility(WebServiceUtil.exe) 帮助建立 ASP.NET Web 服务与客户 30. Windows Forms Class Viewer(wincv.exe) 能够在某种查找模式下快速查找类或 者类序列的信息 31. Windows Forms Designer Test Container(windes.exe) 允许开发人员测试开发出 的视窗窗体控件在设计时的行为 32. XML Schema Definition Tool(xsd.exe) XML 计划定义工具 2.4 小 结 本章解释了与.NET 有关的概念并简要介绍了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 3.1 Welcome 程序 可以这么说 与用户没有任何交互的应用程序根本没有任何用处 病毒和黑客当 然除外 然而即使是病毒程序的作者 也常常喜欢在自己得逞之后炫耀一番 学习任 何一门语言 绝大多数情况下人们都是从输入输出开始的 第一个程序总是非常简单的 我们让用户通过键盘输入自己的名字 然后程序在 屏幕上打印一条欢迎信息 程序的代码是这样的 程 程序 序清 清单单 3-1 using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); Console.ReadLine(); Console.WriteLine("Welcome to you!"); } } 您可以在任意一种编辑软件中完成上述代码的编写 然后把文件存盘 文件名叫 做 Welcome.cs 典型的 C#源文件通常都是以 .cs 作为文件的扩展名 3.2 代 码 分 析 首先要提出的是 C#语言是大小写敏感的 这一点对于 C 和 C++程序员没什么问 <> page begin==================== 题 只是要提醒一下
VB
和 Delphi 的程序员 接下来让我为您逐条地分析上面的 C#程序语句 3.2.1 名字空间 using System 表示导入名字空间 高级语言总是依赖于许多系统预定义的元素 如果 您是 C 或 C++的程序员 那么您一定对使用#include 之类的语句来导入其它 C 或 C++ 源文件再熟悉不过了 C#中的含义与此类似 用于导入预定义的元素 这样在自己的 程序中就可以自由地使用这些元素 如果没有导入名字空间的话 我们该怎么办呢 程序还能保持正确吗 答案是肯 定的 那样的话 我们就必须把代码改写成下面的样子 程 程序 序清 清单 单 3-2 class Welcome { static void Main() { System.Console.WriteLine("Please enter your name:"); System.Console.ReadLine(); System.Console.WriteLine("Welcome to you!"); } } 也就是说 在每个 Console 前加上一个前缀 System. 这个小原点 . 表示 Console 是作为 System 的成员而存在的 C#中抛弃了 C 和 C++中繁杂且极易出错的操作符像 : 和 -> 等 C#中的复合名字一律通过 . 来连接 System 是.Net
平台
框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 够了 3.2.2 类和类的方法 让我们从写第一个程序时就记住 每个东西都必须属于一个类 如果您是 C 或 C++ 的程序员 请暂时忘掉那些全局变量 在程序的第二行 class Welcome 声明了一个类 类的名字叫做 Welcome 这个程 序为我们所作的事情就是依靠它来完成的 和 C C++中一样 源代码块被包含在一对大括号 { 和 } 中 每一个右括号 } 总是和它前面离它最近的一个左括号 { 相配套 如果左括号 { 和右括号 } 没有全部配套 那程序就是一个错误的程序 static void Main()表示类 Welcome 中的一个方法 方法总是为我们完成某件工作的 注意 在 C#程序中 程序的执行总是从 Main()方法开始的 一个程序中不允许出 <> page begin==================== 现两个或两个以上的 Main()方法 对于习惯了写 C 控制台程序的读者 请牢记 C#中 Main()方法必须被包含在一个类中 3.2.3 程序的输入和输出 程序所完成的输入输出功能都是通过 Console 来完成的 Console 究竟是什么呢 它是在名字空间中 System 已经为我们定义好的一个类 这里我们不用管它是怎么完成 工作的 只要使用它就可以了 上面的代码中 类 Console 为我们展现了两个最基本的方法 WriteLine 和 ReadLine Console.ReadLine 表示接受输入设备输入 Console. WriteLine 则用于在输出设备上输 出 我们再为读者介绍 Console 中用于输入输出的另两个方法 Read 和 Write 它们和 ReadLine 与 WriteLine 的不同之处在于 ReadLine 和 WriteLine 执行时相当在
显示
时多 加了一个回车键 而使用 Read 和 Write 时则光标不会自动转移到下一行 让我们再对例子程序进行扩展 使得用户的输入对输出产生作用 程 程序序清 清单 单 3-3 using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); string name = Console.ReadLine(); Console.WriteLine("Welcome to you,{0}!",name); } } 我们用到了 string name = Console.ReadLine()这条语句 其中 string name 表示声明一 个字符串类型的变量 name 系统定义的 Console 类提供的方法 ReadLine()的返回值类型 为 string 所以 这句话表示从输入设备读取一个字符串 并把读取的值赋予变量 name 再来看一下程序的最后一条输出语句 Console.WriteLine("Welcome to you,{0}!",name); 这条语句表示在屏幕上对输出的字符串进行格式化 其中表示用方法的第二个参 数来替代格式化后字符串相应的位置 对字符串进行格式化的参数可以是一个字符串 也可以是一个字符 或者是一个整数 等等 采用这种方式最多可以格式化三个变量 比如 int x = 3; string name1 = “Mike”; <> page begin==================== string name2 = “John”; Console.WriteLine("Welcome to you {0} times,{1} and {2}!",x,name1,name2); 和绝大多数编程语言一样 C#提供了字符串类型 string 它与 C 中的 MFC 为我们 提供的类十分类似 C#中的 string 类型是一个引用类型 引用类型在第四章中我们有 详细说明 为标准字符集 利用 string 可以方便地对字符串进行连接 截断等操作 比如 string s = “Good” + “Morning”; char x = s[3]; 例子演示了字符串 s 由两个字符串 Good 和 Morning 相加得到 字符串还可 以通过下标进行索引 得到一个字符 上面的例子中字符 x 的值为 o 所以 源程序 3-4 和源程序 3-3 的作用没什么区别 程 程序 序清 清单 单 3-4 using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); string message = “Welcome to you “ + Console.ReadLine(); Console.WriteLine(mesage); } } 3.3 运 行 程 序 理解了源程序中每条代码的具体含义之后 下一步要做的就是让这个程序真正能 够运行 不过对源代码即使还有不明白的地方也没有关系 在后续章节的学习中 您 最终会熟练掌握这些概念的 如果您的电脑上安装了 Visual Studio .Net 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net
平台
内置了 C#的编译器 下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc welcome.cs <> page begin==================== 我们假设您已经将 welcome.cs 文件保存在当前目录下 如果一切正常 welcome.cs 文件将被编译 运行 屏幕上出现一行字符 提示您输入姓名 Please enter your name: 输入任意个字符并按下回车键 屏幕将打印出欢迎信息 Welcome to you! 注意 和到目前为止我们使用过的绝大多数编译器不同 在 C#中 编译器只执行 编译这个过程 而在 C 和 C++中要经过编译和链接两个阶段 换而言之 C#源文件并不 被编译为目标文件 .obj 而是直接生成可执行文件 .exe 或动态链接库 .dll C#编译器中不需要包含链接器 编译选项 我们可以灵活地使用 .Net
平台
提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 Welcome.cs 进行编译 生成名为 MyWelcome.exe 的 可执行文件 我们可以采用这样的命令 csc/out: MyWelcome.exe Welcome.cs 如果我们并不需要一个可执行文件 而仅仅是希望简单地检查源文件中是否存在 语法错误 则命令可以写成 csc/nooutput: Welcome.cs 如果不知道各个选项的具体含义 可以通过求助来获得 csc/? 为方便读者 我们在表 3-1 中按字母排序的顺序列出了命令行编译器 csc 常用的参 数及其用途 更详细的信息请参阅 C#联机帮助文档 表 3-1 命令行编译器选项 选项 作用 @ 指定响应文件 /? 列出编译命令选项 /addmodule 指定一个或多个模块作为装配的一部分 /baseaddress 指定载入动态链接库的首选地址 /bugreport 生成一个报告文件 其中包含程序 Bug 的详细信息 /checked 指定算术运算的溢出是否会导致程序在运行时抛出一个异常 /codepage 指定编译的所有源文件所使用的代码页 /debug 给出调试信息 /define 定义预处理程序的符号 /doc 由文件注释生成 XML 文件 /fulpaths 指定输出的绝对路径 /help 列出编译命令选项 /incremental 允许对源文件进行递增式编译 /linkresource 在装配时链接指定的 NET 资源 <> page begin==================== /main 指定 Main 方法所处的位置 /nologo 编译过程中不
显示
编译信息 /nooutput 编译源文件但不输出 /nostdlib 不导入标准库 (mscorlib.dl). 续表 选项 作用 /nowarn 编译过程中不生成警告信息 /optimize 指定编译时是否进行优化 /out 指定输出文件 /recurse 搜索子目录以寻找源文件 /reference 从包含装配的文件中导入元数据 /resource 把 NET 资源内嵌到输出文件 /target 指定输出文件的格式 /target:exe 输出文件为 exe 可执行文件 /target:library 输出文件为链接库 /target:module 输出文件为模块 /target:winexe 输出文件为 winexe 可执行文件 /unsafe 允许编译使用了不安全关键字的代码 /warn 设置警告级别 /warnaserror 把警告信息作为错误看待 /win32icon 把 .ico 图标文件插入到输出文件 /win32res 把 Win32 资源插入到输出文件 .4 添 加 注 释 应用程序并不是只要你自己一个人能看懂就够了 不管以前计算机老师或者是编 程书籍是否已经告诫过 这里我还要再一次强调 养成良好的代码注释的习惯 这是 一名优秀的程序员必备的条件之一 代码注释不会浪费您的编程时间 它只会提高您 的编程效率 使您的程序更加清晰 完整 友好 注释的方式和 ++没有区别 每一行中双斜杠 后面的内容 以及在 分割符 和 之间的内容都将被编译器忽略 这样 我们就可以采用 进行单行注释 采用分割符 和 进行多行注释 让我们对 Welcome 程序加上注释 程 程序序清 清单 单 3-5 源文件 welcome.cs / 说明 这里是我的第一个 程序 <> page begin==================== using System; class Welcome { static void Main() { Console.WriteLine("Please enter your name:"); 要求用户输入姓名 Console.ReadLine(); 读取用户输入 Console.WriteLine("Welcome to you!"); 本行代码用于打印欢迎信息 您可以在这里添加自己的代码 程序在这里结束 } } 上面的注释似乎有些小题大做 但它毕竟说明了 中注释的使用方法 下面是对 程序进行注释时要注意的两个问题 首先 避免在 之后的单行注解中使用反斜杠符号 \ 因为反斜杠符号 \ 在 中是一个续行符 这样做往往会导致你所不希望的结果出现 例如 当你写了 类似于下面的代码 Console.WriteLine(“The result is:{0}” , / \ 150 ); 在编译这段代码时 表示逻辑上同一行剩余的所有文字被作为注释看待 而续行符 \ 则将这一行同下一行连接起来 那么第二行也被作为注释的一部分 这 时编译器找不到与第一行的左括号 相匹配的右括号 因此编译出错 其次 分割符 和 之间的注释不能有嵌套注释 这是因为 编译器从遇到第一个分割符 开始 将忽略下一个 直到遇上下一个与 之匹配的分割符 才认为注释结束 这样编译器就会对多余的 报告
2009.6.19—30举办3S研讨会暨Google Earth与Google Map等仿真建模与共享及ARCGIS与遥感高级程序员培训班
关于举办2009’CHINA3S’3S技术一体化应用研讨会暨遥感与GIS制图、Google Earth与Google Map等虚拟三维仿真建模与共享软件应用开发及ARCGIS与遥感分析操作应用高级程序员学习班的最新通知 (2009.6.19—30) Google Earth是一种桌面应用程序,可以Web方式浏览虚拟数字地球系统,可实现全球地理数据共享与三维仿真。其提供ArcGis/MapInfo等地理数据应用程序接口,可实现与其它遥感软件的交互性操作,其性能优于国内外众多网络GIS
平台
。GIS是数据库、图论、拓扑学、图像处理、人工
智能
、虚拟现实及计算机地形学等多门学科综合的高新技术,广泛应用于军事、政府办公、环保、生态、水利、水土保持、国土、测绘、林业、农业、城建与规划、交通、海洋、石油、导航、气
象
等众多领域。至于遥感与全球定位,我国未来五年将实施的五大航天工程,将建立长期稳定的对地观测系统体系、协调配套全国遥感应用体系;分布建立满足应用的卫星导航系统,将形成该应用产业。 尽管3s具有重要的地位与作用,但应用不尽人意,主要是缺乏熟练的、跨学科的高级操作应用人才;缺乏熟悉3s与地图学的开发人才;缺乏熟练的、经验丰富的3S人才。熟练的、经验丰富的开发人才,举办3S与Google Earth最新技术学习班。欢迎垂询、报名!具体事项如下: 一、培训对
象
:相关政府主管部门及企事业研究院(所)、大专院校及勘察、勘探、设计、测绘、勘测院、所、队的领导与业务技术骨干等相关人员。二、培训师资:在3S学习班中交替担任: 南京大学计算机/遥感/生态专业博导、教授;中科院地理所研究员、博士、留美留德访问学者;南京信息工程大学遥感专业博士生导师、教授;东南大学博士后、副教授;南京大学毕业博士、中科院遥感所博士后;南京师范大学博士、优秀骨干教师;南京大学与中科院大气所联合培养毕业博士、南京大学中青年优秀骨干教师;南京理工大学博士、南京理工大学中青年优秀骨干教师;GIS硕士、南京路川公司专业技术开发工程师;河海大学博士、南京路川信息系统工程有限公司3S与无线传感网络通讯系统工程技术应用研究中心高级讲师;南京大学规划专业博士、南京路川公司特聘高级讲师; 三、培训特点、目标、效果: 按照本培训内容,紧扣核心技术,采用理论及演讲和上机操作相结合,并结合实际案例,精讲多练(上课时间:上午、下午及晚上每天8.5--9.5小时),提高实际开发与操作技术,掌握了解最新技术动态应用,通过实际项目实例的实际与操作,达到能完成一定难度的高级应用,并介绍相关数据与软件的标准、概要、特点及转换方式与各数据、软件系统之间处理及转换。并老师与学员共同交流项目应用与开发经验,以最为客观公正,而非商业化目的介绍、评价有关国内外GIS、遥感软件的优势与弱势。经考试合格,并颁发GIS 高级程序员高级研修班结业证书及3s高级系统设计工程师水平资质证书,全国各级人事、教育、职改部门承认的专业技术继续教育证书。 四、时间:报到时间:2009年6月19日8:00~12:30; 研修班与技术交流研讨会时间:2009.6.19下午—30,其中高级程序员学习研修班:2009.6.19下午—26 五、收费标准:研修班会务、培训费和上机及其材料费敬请来电咨询。2009.6.29—30培训实习,实习费部分自理另计,相关事项来电咨询,统一代办住宿,住宿自理。双人空调标准间,24小时热水。住宿上课上机均有投影与空调和茶水。另可提前代办预定车船机票。参加本次3S高级研修班的学员代表费用全免,上述内容各人根据需要自主选修! 29日-30日组织去皖南研讨学习,考察3S在黄山、皖南旅游风景区规划及历史文化遗产保护中的3S应用单位。费用根据各自需要部分另收。个人自愿参加,实习费用可按需要另计 六、资料软件赠送:赠送有关GIS软件;赠送所需的GOOGLE EARTH与当前其它遥感图像的共享软件及其自动数字化与后台自动转换地理矢量数据软件各1套;赠送网上三维建模软件及有关虚拟现实三维建模软件及其三个实例(.exe仿真交互式软件)及PPT;另赠送GOOGLE EARTH的演示示例及相关PPT与数据及二次开发资料;基于地图控件与
VB
开发的电子地图浏览器一套(用于GIS系统的集成开发);GIS图形符号编辑器一套;DEM生成制作软件;VisualC++开发应用实例光盘一张;并赠送开发的三维地形飞行浏览及水利工程与防汛GIS系统演示软件、OpenGL开发的三维地形动画(数字城市)电力工程选线GIS系统演示光盘。并向参会代表免费提供下列GIS工程文档资料及软件和源程序,并赠送部分GIS软件和部分源程序信演示光盘。除正常应免费赠送的软件与资料电子光盘外,另有自编译相关著名GIS软件二次开发手册、编译代码、相关项目开发文档、并提供可与Google earth数据交换的网上建筑三维建模共享软件、GIS软件在相关专业的中文操作使用手册以及相关GIS教学课件资料和演示案例等资料与光盘。 备注:网上电子版培训通知文件去掉了公章印章,如需要正式会议通知请来电会务组索取或会议现场领取。另*为备选内容,依学员报名时要求,事先预约安排确定介绍。 七、报名联系方法:凡欲报名的单位或个人可提前确认(打电话/发E—mail/信函均可)。 联系人:徐老师或王老师 联系电话:(025)83418450;83410685; 传真:(025)83418450 会议培训报名与上机地址:南京市北京西路77号江苏教育学院,会议培训上课和住宿地址:南京市汉中路185号 地址:南京市福建路31号华富大厦18楼,210003 邮政通讯方式:南京鼓楼邮局218#信箱,210008 E-mail:gis20080808@sina.com http://www.china3s.net 南京路川信息系统工程有限公司 Google Earth等仿真与共享软件应用 及GIS与遥感操作分析开发学习班筹备会务组 2009年5月15日 国际3S最新技术应用及遥感与GIS制图、Google Earth与Google Map等 虚拟三维仿真建模与共享最新方法应用及ARCGIS与遥感分析操作应用 高级程序员全面系统学习班 日程安排 (2009.6.19-26) 第一单元:国际3S最新技术--3S一体化最新应用与遥感最新理论与应用: 1、3S一体化在城镇土地定级中应用 主讲人:GIS硕士、南京路川公司专业技术开发工程师 2、遥感理论与遥感最新技术开发:介绍遥感理论及一种先进的遥感图像技术及其遥感软件及其实例与专题制图,并对国外著名遥感软件进行介绍比较;并侧重介绍国土资源管理及其土地利用之实例。 3、高光谱理论及应用:介绍高光谱遥各领域中的实际应用 主讲人:南京大学毕业博士、中科院遥感所博士后(2、3) 4、高光谱遥感最新应用:(1)、高光谱遥感与旱情监测应用;(2)、高光谱遥感与精细农业案例;(3)、油气信息遥感提取案例; 主讲人:南京大学毕业博士、中科院遥感所博士后 5、介绍ENV14.5遥感图像软件介绍及遥感上机: 主讲人:GIS硕士、南京路川公司专业技术开发工程师 6、农业遥感原理及其应用案例:农业遥感 7、林业遥感与土壤侵蚀遥感定量研究及其应用案例: 主讲人:南京大学毕业博士、中科院遥感所博士后(6、7) 8、国际遥感前沿进展最新技术应用与定量遥感内容:高光谱和多光谱遥感及其应用 主讲人:南京大学毕业博士、中科院遥感所博士后 主讲人:GIS硕士、南京路川公司专业技术开发工程师 9、Erdas进行影像匹配,几何较正 主讲人:GIS硕士、南京路川公司专业技术开发工程师 10、遥感图像入理软件ERDAS9.2的操作上机:可结合实例讲授用ERDAS制作飞行、淹没、透视的过程(侧重介绍其在水土保持等行业中的运用)。(空调机房) 主讲人:GIS硕士、南京路川公司专业技术开发工程师 11、用ENVI4.5遥感软件,讲授遥感数据融合研究或ENVI+IDL开发语言介绍及其二次开发(空调机房) 主讲人:GIS硕士、南京路川公司专业技术开发工程师 12、用ERDAS遥感软件方法绘制更新电子地图 主讲人:GIS硕士、南京路川公司专业技术开发工程师 13、用ERDAS操作上机——基于遥感的三维景观可视化技术应用设计开发 主讲人:南京大学博士(12、13) 14、遥感在资源灾害与污染监测中的应用方法实例及解决方案 主讲人:南京大学博士 15、遥感特征目标提取与遥感图像数据挖掘或matlab进行遥感图像影像处理 主讲人:GIS硕士、南京路川公司专业技术开发工程师 16、ENVE+IDL的二次开发与三维可视化编程开发或水文模型与水文遥感应用 主讲人:GIS硕士、南京路川公司专业技术开发工程师(14、15) 第二单元:国际3S最新技术应用--- Google Earth\ Google Map\无线传感网络与全球地理数据共享(机房):(12或15课时) 1、Google Earth简介:GE主要功能演示: 2、Google Earth应用及网上三维建模共享软件应用:网上三维建模软件技术方法与操作应用,网上3D模型制作与仿真 1)城市规划与房地产系统;2)模拟飞行;3)飞机导航;4)汽车导航系统;公路交通管理5)天气预报系统;6)灾害预报演示;7)精细三维模型演示:水利管理;8)资源分布演示,动态变化的演示;9)获得特定区域的高清图片、下载获取制作1∶5 000或10 000的电子地图数据 3、Google Earth数据介绍与转换 4、GE API开发:开发实例还可以根据学生需求再做添加。Google Earth的二次开发及其语言将详细介绍。 5、其他虚拟数字地球系统简介: 6、Google Map 应用开发:1)Google Map介绍;2)Google Map API介绍;3)Google Map网络开发技术与应用:将详细介绍其开发实例:(1)Google Map与传统webgis区别;(2)目前国际最先进的网络GIS—————Google Map其二次开发的关键技术; 7、GM开发实例:如果感兴趣,还可以详细演示说明根据GM机制,自行开发webgis介绍一下基于Google Map这种机制,国内一些主要的软件和网站 8、GOOGLE.EARTH与全球地理数据共享及无线传感网络介绍:介绍Google earth全球海量影像地图数据存储与索引、检索机制的研究分析及影像分块技术的探讨;介绍ArcGIS9.2与Google Earth中Google maps所提供的地理数据应用程序接口(API);重点介绍GOOGLE.EARTH与其它遥感软件互操作与数据下载的使用方法及GOOGLE.EARTH遥感图像数据共享。 主讲人:GIS硕士、南京路川公司专业技术开发工程师 第三单元:地理信息系统基础概论及GIS数字地图与遥感制图 主讲人:GIS硕士、南京路川公司专业技术开发工程师 第四单元:国际最优秀GIS最新技术应用---ARCGIS9.2/9.3系列专题 1、介绍目标前国际上最优秀的GIS软件ARCCIS9体系结构及全面了解ARCCIS9.0桌面系统的体系结构和功能介绍,介绍ESRI的ARC-CATALOG,ARCTOOLBOX通用GIS解决方案的精彩设计以及最新的ARCCISENGINE和ARCCIS SERVER。 主讲人:GIS硕士、南京路川公司专业技术开发工程师 2、如何创建,使用,编辑以及管理存储在GEODATABASE数据模型中空间数据和属性数据 主讲人:GIS硕士、南京路川公司专业技术开发工程师 3、以ARCCIS9的功能结构主线,学习利用ARCCIS进行数据输入,数据编辑,地图配标,投影转换,数据转换,数据
显示
(包括三维
显示
)与制图,数据查询与分析,数据输出等一系列操作。(以ARCCIS在农业中的应为例介绍) 主讲人:GIS硕士、南京路川公司专业技术开发工程师 4、ArcGIS上机操作 主讲人:GIS硕士、南京路川公司专业技术开发工程师 5、介绍如何使用ARCCIS9的SPATIAL ANALYST扩展模块:在栅格数据和矢量数据集成的环境下进行空间分析操作(ARCCIS在环保与流行病统计分析以及环境监测的应用为例介绍),并介绍地统计学基础以及一种先进的空间插值分析方法(以ARCCIS在生态项目中的应用为例 主讲人:GIS硕士、南京路川公司专业技术开发工程师(空调机房) 6、DEM的原理与数据采集及应用及ARCCIS9-3D分析及其
显示
,空间建模以及实例操作与分析(以ARCCIS在资源环境与城市规划中的应用为例介绍) 主讲人:GIS硕士、南京路川公司专业技术开发工程师(空调机房) 7、以ARCCIS在水利中的应用为例介绍操作,并介绍ARCCIS水文分析模块应用介绍,并上机 主讲人:GIS硕士、南京路川公司专业技术开发工程师(空调机房) 8、ARCCIS开发(
VB
A,AO+
VB
,Arc-Engine+C#)及ARCCIS ENGINE与AO开发上机 主讲人:GIS硕士、南京路川公司专业技术开发工程师(空调机房) 9、ArcGIS二次开发——Arc-Engine点线面属性与空间相互查询 主讲人:GIS硕士、南京路川公司专业技术开发工程师(空调机房) 10、ARCGIS高级分析功能操作应用:ArcGIS地统计分析模块应用、网络路径分析和矢量空间分析(网络追踪分析及市区选房分析为例)、空间校正、明暗等高线(以土壤项目数据为例)、噪声影响分布分析、专题图制作、三维地形分析、ArcGIS的影像配准、虚拟GIS功能介绍及数据演示操作以及ARCGIS与遥感影像的三维动态分析。 主讲人:GIS硕士、南京路川公司专业技术开发工程师 11、ArcGIS高级开发应用上机或ArcGIS与SQL Server、ArcSDE的关联或 ARCCIS多元数据分析及ARCCIS图括元素计算(尽量依学员要求介绍); (空调机房) 主讲人:南京大学规划专业博士、南京路川公司特聘高级讲师 12、ArcGIS插值算法的应用 主讲人:GIS硕士、南京路川公司专业技术开发工程师 招待会聚餐 第五单元:国际3S最新技术应用--介绍ArcGIS9高级应用与river tools河流地形绘制软件及GIS最新技术在水文、地质和生态与在可持续发展中的应用及答疑:(4-6课时) 1)地统计应用与ArcGIS地统计分析;2). 遥感与GIS分析处理系统结构;3). 空间建模工具:如Matlab神经网络分析模型等,Matlab将可介绍上机详细操作;4). 土地生态评价中的应用;5). 土地利用、变化分析、中长期土地生态预测、土地利用规划等专题介绍;6)river tools河流地形软件上机操作;7)地下水资源系统模型Modflow等,Modflow将可介绍上机详细操作;8)分布式水文模型Swat等;9)数字流域以及数字水利:流域水资源规划模型及水资源管理信息系统设计及DEM与流域模拟及构建。(机房) 主讲人:南京大学与中科院大气所联合培养毕业博士、南京大学中青年优秀骨干教师 第六单元:国际GIS最新技术应用---虚拟GIS三维仿真建模专题: 1)虚拟现实GIS最新技术介绍及其开发与实例分析(以OpenGL开发的城市房地产小区环境虚拟仿真设计为例); 2)虚拟现实技术与虚拟现实GIS最新技术总体介绍:OpenGL介绍及上机练习开发(机房):三维建模;纹理制作;开发与系统集成:采用VC++、
java
和OpenGL以动态库或者组件的应用开发;模型库建立建模工具可以采用目前流行的工具建模软件应用,如3Dmax6.0、LightScape3.0、maya、AutoCAD2004设计开发;模型库管理与系统集成; 3)三维数字城市系统设计与开发以及基于OpenGL开发; 4)基于MultiGen Creator/Vega与3S的三维景观地理信息系统设计与制作 (1)、系统概述;(2)、基于3S、网络技术、VR技术、数据库技术、空间海量数据管理技术的集成应用;(3)、介绍用于工程设计、选线、规划、工程选址及铁路与公路交通三维仿真的应用软件的关键技术—————国际最优秀的Creator/Vega软件操作与制作应用上机(机房),将介绍如何利用可免费获得的OPENGL函数库与控件的三维地形仿真动画;利用目前最常用的实时三维建模工具与视频三维仿真、三维建模工具软件—————MultiGen Creator/Vega的三维建模优势;利用其地形模块与音效模块的功能,并通过卫星遥感影像数据处理,进行三维影像纹理制作、处理及配准。该软件可免费获得,可以与Open Flight三维建模标准格式、3DS数据、视频仿真标准格式以及多种CAD数据格式交换,可提供二次开发包接口,完全与原
平台
环境脱离,可与VC++无缝紧密集成。 主讲人:特邀南京理工大学博士、骨干教师 5)基于公开源码的真3D-GIS与虚拟GIS仿真建模 主讲人:GIS硕士、南京路川公司专业技术开发工程师 *第七单元:数字流域、数字水利与数字航道 1、WebGIS和Sybase与数字流域及水文水资源系统设计 2、基于WebGIS应用服务
平台
设计(以水利GIS项目为例) 3、流域水资源规划模型及水资源管理信息系统设计 4、数字航道系统研究设计(各子系统介绍:总体框架;逻辑模型框架图;并介绍其数据采集、网络系统及应用服务
平台
;介绍基于J2EE架构的数字航道本系结构;介绍数字航道应用系统建设及其规划决策分析基础设施管理系统等) 5、AO二次开发与WebGIS开发 6、上机介绍ArcIMS操作及其它安装与应用 7、大型地理信息系统软件的关键技术应用 8、基于WEBGIS应用开发介绍,并演示介绍水利水文WEBGIS系统的应用研究以及ArcIms网络GIS软件应用或基于ORACLE的GIS空间数据库设计存储和管理。 9、遥感科研方法与最新技术成果介绍—————基于3S的土壤侵蚀的定量评价; 主讲人:东南大学博士、河海大学骨干教师,曾参与省级水利决策支持系统及数字交通航道信息管理系统的研发; 主讲人:南京师范大学博士、南京师范大学优秀骨干教师,多次参与数字海洋软件开发 第八单元:国际3S最新技术应用---3S最新前沿技术在海洋、地质、石油等行业应用案例(侧重介绍设计分析方法) 1、高光谱遥感与海洋石油勘探及其中石油项目案例介绍: 2、高光谱遥感与海洋环境监测; 3、海洋遥感及海岸带调查及3S最新前沿技术在海洋调查(海岛、地质、渔业资源等调查)中的应用; 4、航道及海洋水下地形测量的关键技术与项目实例。 5、中国海洋的发展战略与数字海洋及东海与江苏沿海数字化 时间:第六天晚 6、介绍基于gis技术的海洋与海岸带信息管理系统研究与应用 主讲人:南京大学毕业博士、中科院遥感所博士后(1、2、3、4、5、6) 7、3S一体化技术在地质找矿中的最新技术应用 主讲人::GIS硕士、南京路川公司专业技术开发工程师 第九单元:国际3S最新技术应用--遥感数字图像处理及其最新技术应用高级课程 (含高光谱数据大气定标、辐射校正、自动解译等上机):(机房)(12-18课时) 1、遥感处理技术:介绍ENVI4.5遥感图像软件应用。以及遥感上机: (1)定标——大气辐射较正;(2)去除阴影;(3)Spot5与Quick BIRDS影像数据融合;(4)影
象
增强;(5)植被分类(介绍一种能面向对
象
自动分类的图
象
处理软件);(6)提取沙漠,水塘等特征目标点、特征目标提取;(7)影像拼接。 时间:第二天晚(空调机房) 2、介绍大范围海洋遥感制图项目数据处理与图幅拼接及专题图制作项目案例。 3、三维景观可视化:①基于遥感影像三维仿真的虚拟现实与现实虚拟及技术解析与应用和虚拟世界仿真②遥感制作DEM③三维漫游。 4、突发事件中的环境灾难的环评分析与遥感最新应用(以突发地震灾难的环评分析与环境监测为例)。 5、遥感的数据融合方法与技巧。 6、微波遥感:理论及特征和微波图像处理及其微波遥感器的成像系统。并介绍雷达SAR原理与激光遥感的原理与传感器及其应用领域以及SRTM的航天飞机生成全球三维地形图的对地观测。还介绍微波遥感应用发展与展望。 7*遥感用于城市地物目标视别及其材质鉴别(以军事项目中伪装与反伪装,目标识别为例)。 8、高光谱定量反演等最新前沿理论技术应用案例分析(图像识别与NDVI绿度指数提取) 9、*高光谱用于城市地物的分类与识别:识别分析、分清:植被、水体、煤场、道路、建筑材质及有机物;识别制图;水质分析与建模; 主讲人:南京大学毕业博士、中科院遥感所博士后 3S与ORACLE等空间地理数据库构建数字农业、 数字生态、数字城市、数字国土、数字气
象
、数字交通以及 遥感与数字卫生、防灾减灾、政府决策、电子政务等专题 3S技术一体化应用经验交流研讨会 (2009.6.26—30) 第一部分:基于3S的决策支持系统总体设计与基于3S的政府办公决策支持电子政务系统的构建: 1、决策支持系统介绍;2、基于3S华北平原节水农作物布局决策支持系统设计;3、多目标水利规划决策支持系统;4、基于3S防汛抗旱决策支持系统设计与开发;5、基于3S的政府办公决策支持电子政务系统的构建;6、省级电网调度决策支持系统设计与开发; 主讲人:南京大学博士生导师、教授(前苏联莫斯科大学数理逻辑专业博士,任八所大学兼职教授、中国计算机学会计算机科学专业委员会副主任委员。曾担任中石油自主开发的国家级大型石油数据库的总设计师,并多次参与多个大型省级水利决策支持系统等水利软件开发。) 第二部分:国际3S最新技术应用---3S最新技术在数字卫生、疾病与预防控制中的实施与分析应用方法(机房): 3S最新技术在疾病预防控制中项目案例介绍演示及其开发实施方法,并提供部分实验数据上机操作(根据项目数据、如何采用ArcGIS与PCI、Envi软件进行数据处理,实施操作分析的高级应用介绍,其中包含介绍:1.常用RS数据及其波段用途;2.遥感进行DEM提取;3.遥感镶嵌;4.矢量切图与几何校正;5.遥感决策树方法与应用;6.遥感绿度指数提取方法;7.遥感数据处理流程;8.SPOT影像数据介绍及其应用。 主讲人:特邀原南京大学毕业博士、中国科学院遥感所博士后,国家卫生部国家重大传染病课题组3S应用研究专家。 第三部分:国际3S最新技术应用---3S技术与数字农业及数字生态 1、3S一体化技术在农业气
象
与农业食品安全监测中应用 2、大尺度利用遥感监测土地退化 3、利用遥感监测全球变化 4、A).3S在农情监测与土地利用中的最新技术运用 B)。在国土资源管理电子政务中3S的应用及其案例 主讲人:中科院地理所研究员、博士、留德访问学者 5、国际3S最新技术应用--3S技术在信息农业中的进展与展望 1)研究意义与国内外动态;2)3S技术集成方法、特点与功能;3)农业资源遥感监测与评估;4)3S在农业区划中的运用;5)利用3S技术进行作物长势监测与估产;6)农业环境变化遥感监测;7)农业生产资料管理;8)农业气候资源管理;9)全球变化对农业资源与产量影响监测;10)目前3S在信息农业中的问题;11)3S技术发展趋势与前景展望——“5S”一体化应用(RS-GIS-ES-IDSS) 6、遥感监测在城市园林绿化和草地生态与农业生态中的最新研究 A).目前国际上开展草原农业资源与生态环境监测的国际组织和国际计划;B).国际上常见遥感技术反演生物物理学参数重点介绍;C).农业、生态所主要利用的遥感信息;D)3S在农业资源估测中的应用;G).3S在农田土壤水分动态监测中应用及其应用结果与分析;H)3S在土地覆盖与土地利用中应用;I)利用高光谱遥感在苏州进行的作物估产;J)与有关组织合作,采用对地观测系统进行国外草地资源与生产力调查。 7、遥感监测介绍: A)环境污染和毒理状况遥感监测;B)水资源管理遥感监测;C)土地利用变化遥感监测;D)生物多样性丧失监测;E)气候变化监测 8、综合生态管理系统的设计极其项目介绍 主讲人:南京大学博士生导师、教授(原北京大学生态专业博士、兰州大学生态专业博士博士后、新疆农业大学校长助理、草原系系主任、日晒北海道[大学遥感专业博士后) *第四部分:国际3S最新技术应用--定量遥感内容:高光谱和多光谱遥感及其应用 主讲人:南京大学博士生导师、教授 第五部分:国际3S最新技术应用--热红外遥感:理论、方法和应用 一、热红外遥感基理论方法 二、基于MODIS的洪涝灾害遥感监测 三、基于MODIS的旱灾遥感监测 主讲人:南京大学博士 第六部分:地图数据处理、空间数据库设计及其GIS算法程序设计介应用开发工程,并介绍VC++开发GIS案例 1、地图数据处理与地图数据库设计(数字地图处理与地图数据设计:地图数据的数据模型;空间数据库设计;地图数据库系统的构成与功能;地图数字化的实施;如何进行数据检测与数据处理入库,并提高数据精度) 2、GIS设计方法(设计步骤;系统结构设计;空间数据库模型;功能描述) 3、GIS工程案例和等值线追踪 1)电力选线GIS软件演示及开发应用方法介绍 2)水利工程GIS软件演示及开发应用方法介绍 3)用于水利工程与水土保持项目的淤地坝工程GIS 软件演示与开发应用方法介绍 4)公路交通GIS软件演示及开发应用方法介绍 5)交通运输决策支持GIS软件演示,并介绍虚拟环境GIS运用 6)三维地形飞行浏览软件演示,并介绍虚拟环境GIS运用 4、基于Vc++开发的GIS空间分析算法介绍及程序设计 1)网络分析方法;2)网络模型设计思想;3)DEM的特点及应用及其分析中的重要算法 主讲人:南京大学博士生导师、教授、路川公司总工程师/解放军理工大学博士 *第七部分:Oracle9i及其空间数据库培训 (待定,此内容征求学员意见后再定。如无人选择,将不做安排;如感性趣的人多,可此单项时间3--7天(总课时不变);也可据所需选择的人数考虑同时进行,有关事宜另商定) 1)数据库Oracle9i基础;2)Oracle9i的体系结构;包括:ORACLE数据库的安装与配置;管理ORACLE网络,服务器与客户端配置;安全管理、用户及其权限;ORACLE日志系统的配置与管理;数据库备份、故障处理与数据恢复;ORACLE性能监控与系统优化,并讲解Access、SQL Server、Sybase、my SQL数据库(可免费获得的)等问题解决方案。根据老师的备课安排,将尽可能考虑安排GIS Oracle空间数据库下列有关内容:1)Oracle 10g空间操作;2)ArcGIS的ArcSDE与Oracle 10g的集成应用:ArcSDE 9.1 for Oracle 10g与Oracle 10g GeoRaster影像数据管理;3)基于Oracle 10g Spatial的数据存储管理及关键技术;4)基于Orade的空间数据库存储与管理。 主讲人:南京大学博士生导师、教授 主讲人:东南大学博士、河海大学骨干教师,曾参与省级水利决策支持系统及数字交通航道信息管理系统的研发; 主讲人:南京大学博士、南京师范大学优秀骨干教师 第八部分:国际3S最新技术应用---<>—— 1、3S技术与Arcgis在规划与数字城市中应用方法与项目案例 1)GIS在南京高层建筑优化中的应用;2)Arcgis的拓扑关系在地籍数据处理中的应用;3)GIS在历史文化遗产保护中的应用(历史街区与历史文化遗产保护);4)基于3S景观格局研究以及国外最先进的软件应用介绍;5)GIS技术的生态敏感性评价中的应用;6)ARCCIS用SURFER增强,ARCgis的三维
显示
;7)高分辨率的影像数据融合及其城市规划中的应用;8)ARCCIS在地铁选址中的应用;9)ARCCIS在森林工程中的应用并介绍其中大型城市中心城区社会空间结构极其演化研究;12)用GIS对某工程项目在国家级凤景区建设对景观影响的评价 主讲人:联合国教科文组织GIS培训中心GIS与RS博士后 2、ArcGIS9.2与遥感综合应用专题(国土资源与城市规划为例介绍): 主讲人:南京大学规划专业博士 第八部分:3S技术在气
象
领域的专题应用研讨: 主讲人:南京信息工程大学遥感专业博士生导师、教授 第九部分:GIS地理数据建库:(机房):1)GIS的地理数据库建库:GIS属性数据编辑与编码;地图库管理;图幅接边; 主讲人::GIS硕士、南京路川公司专业技术开发工程师 上课时间:上午、下午及晚上每天8.5--9.5小时。 以上研讨会内容根据报名代表的需要增减 对参加本次3S高级研修班的学员代表以上研讨会费用全免,自主选修!上述内容根据报名和需要增加或简略 6月29日—30日组织去皖南研讨实习,考察3S在黄山或苏南旅游风景区规划及历史文化遗产保护中的应用单位。个人自愿参加,实习费用少部分另收。
C,C++,C#,
Java
?这些有什么区别?
c,c++,c#,
java
?这些有什么区别? C语言: 目前最著名、最有影响、应用最广泛的windows、linux和UNIX三个操作系统都是用C语言编写的。0S是计算机系统(由软硬件两个子系统构成)的核心和灵魂,它是软件中最庞大最复杂的系统软件。既然如此庞大复杂的0S都可以用c语言编写,从狭义而言,还有什么系统软件和应用软件不能用c语言编写呢?由此可以肯定的说,c语言是一门十分优秀而又
c语言,
java
,python有什么区别,c语言
java
和python哪个难
大家好,本文将围绕
java
,c语言,python,c++的不同之处展开说明,c语言,python,
java
哪一个好用是一个很多人都想弄明白的事情,想搞清楚c语言,
java
,python有什么区别需要先了解以下几个事情。
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章