教育>本科研究生>计算机类
VisualC#2012大学教程(第五版)

VisualC#2012大学教程(第五版)"

作者:张君施,张学敏等
ISBN:9787121219078
定价:¥109.0
字数:1460千字
页数:736
出版时间:2014-01
开本:16(185*260)
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书是一本C#编程方面的优秀教材,全面介绍了C#编程的原理和方法。本书针对现有的Windows 7操作系统进行了全新设计,内容包括类与对象、控制语句、方法、数组、继承、多态、异常处理、GUI、多线程、多媒体、数据库与SQL、ASP.NET、Web服务、网络、查找与排序、泛型、集合等基本概念及方法。此外,本书还介绍了最新C#版本Visual C# 2012的关键新特性,包括LINQ特性、数据库与LINQ to Entities、利用ASP.NET 4.5的Web应用开发、Web服务、WPF GUI、Windows 8和WPF下图形与多媒体的模块化处理等。

前言

译 者 序 本书是全球知名的编程语言作家Deitel最新编写的讲解C#编程的一部著作, 是“大学教程”(How to Program)系列丛书之一。全书以作者独有的“活代码”方式, 详细讲解了面向对象编程和C#编程。每一个功能都以一个能在真实环境下执行的程序体现, 并且每一个程序都给出了最终的执行结果。这就是“活代码”的精髓所在。对于初学者而言, 这种“所见即所得”的方式能极大地加深对C#编程的理解。 本书内容根据Microsoft最新的Visual Studio Express 2012版本进行了更新, 以体现其新增加的功能和特性。同时, 书中各章的组织结构安排非常合理, 以适应从初学者到中高级C#程序员的学习需求。 从大的模块来看, 本书可分为几个部分, 具体为: Visual C#基础知识(6章)、 面向对象编程(7章)、 Windows窗体GUI编程(2章)、 数据及文件处理(7章)、 数据库及Web程序开发(2章)、 Windows 8 UI/Windows Phone应用(3章)以及WPF GUI编程(2章)。为了缩减篇幅, 其中的一些高级内容放在了本书的配套网站上。 具体到每一章, 则讲解了面向对象编程和Visual C#编程所涉及的类、 对象、 方法、 字符串与字符、 控制语句、 数组、 继承、 多态、 异常处理、 UML、 Windows窗体与GUI设计、 文件处理、 数据搜索与排序、 数据结构、 泛型、 集合、 数据库与LINQ、 Web程序开发等。书中给出的示例带有很强的趣味性, 比如纸牌游戏程序、 学生成绩统计程序等, 使读者在学习过程中不会感到枯燥。“挑战练习”部分给出的习题则具有很强的社会性, 比如肥胖问题、 全球变暖问题等, 让学生逐渐适应将所学知识应用于现实生活中。 除了呈现在读者面前的这本纸质书之外, 本书的配套网站和作者的“资源中心”网站都有与本书相关的海量信息, 它们是作者多年积累的成果, 也极大地方便了读者的学习。 本书主要由北京工商大学张君施副教授主持翻译并统筹了全书的相关术语, 尤其是一些专业术语的译法。全书的翻译分工如下: 前言及中英文术语对照表由张君施翻译, 第1~3章由湖北工程学院的张学敏翻译, 第4~13章由张君施翻译, 第14章和第22章由黄魁东翻译, 第15章和第16章由戴高明翻译, 第17章由徐景辉翻译, 第18章和第19章由蔡志强翻译, 第20章和第21章由胡志强翻译, 第23章由陈艳羽翻译。最后, 由张君施负责审校全部初稿并确定了最终的定稿。 翻译本书时, 译者参考了本书上一版的中文译稿, 并获得上一版译者的同意, 允许在这一版本中直接使用部分译文。在此对他们给予的无私帮助表示万分感谢。 在本书的翻译过程中, 得到了电子工业出版社编辑同志的大力支持, 译者对他们表示衷心感谢。 由于本书翻译时间紧且由多人共同完成, 再加上许多新出现的专业术语还没有公认的译法, 所以译稿中如有不妥之处, 恳请广大读者批评指正。译者的联系方式为: bambozhang@gmailcom。 译 者2013年6月于北京前 言 欢迎学习Visual C# 2012编程语言, 来到Windows和用Microsoft .NET平台进行Internet编程的世界!请查看本书封底和封三的内容, 其中浓缩了本书的精髓。下面将给出有关本书的更多细节。 根据两个主要的专业组织——ACM和IEEE的推荐, 本书适合用作计算机基础性课程的教材。书中的例子可用于计算机科学、 信息技术、 软件工程以及商科专业的初中级C#课程。本书也可作为专业程序员学习之用。 本书的核心是作者独有的“活代码方法”——C#中的编程思想是在完全可工作的程序环境下给出的, 并且提供了执行样例, 而不是使用代码片段。前言后面的“学前准备”部分给出了如何将计算机设置成能够运行书中数百个代码例子的说明。书中的源代码可从www.deitel.com/books/vcsharp2012htp和www.pearsonhighered.com/deitel下载本书的配套资源也可登录华信教育资源网(wwwhxeducomcn)免费注册下载。。研究这些源代码时, 书中提供了编译和运行程序的过程——这有助于读者更快、 更深入地精通Visual C#以及相关的Microsoft技术。 我们相信, 本书以及供学生和教师使用的配套材料, 将使Visual C#的讲解变得内容丰富、 全面、 充满挑战且具有娱乐性。如果有任何问题, 可随时写信给deitel@deitel.com, 我们会尽快回复。关于本书的更新, 可访问www.deitel.com/books/vcsharp2012htp, 也可加入我们的社交媒体, 比如Facebook(www.deitel.com/DeitelFan)、 Twitter(@deitel)、 Google+(gplus.to/deitel)和LinkedIn(bit.ly/DeitelLinkedIn), 此外还可以订阅Deitel Buzz Online新闻组(www.deitel.com/newsletter/subscribe.html)。 Visual C# 2012, Visual Studio 2012 IDE, .NET 4.5, Windows 7和Windows 8 新出现的Visual C# 2012以及与之相关的技术, 促使我们编写了本书。新版本的一些主要特性如下: ● 使用Windows 7或者Windows 8。本书内容针对现有的Windows 7操作系统而设计。如果愿意, 也可以用在Windows 8环境下。第1~24章以及第28~35章中的所有例子, 都已经在这两种操作系统下进行过测试。特别是针对Windows 8的三章: 第25~27章中的代码例子, 则只在Windows 8下进行过测试。 ● C#与Visual C#。C#编程语言已经被ECMA和ISO进行了标准化(标准文档可从bit.ly/ ECMA334免费下载)。Visual C# 2012是Microsoft根据这个标准而推出的版本。 ● Windows窗体、 Windows 8 UI和WPF下的模块化、 多种GUI的处理。书中的例子采用Windows窗体GUI, 本书网站上的几章则涉及Windows 8 UI(用户界面)和WPF GUI的处理。采用Windows 8 UI的程序称为Windows Store应用(Windows Store app)根据中文的惯用叫法, 本书中会根据不同情况将“app”翻译成“应用”或者“程序”。——译者注。第25章将讲解如何创建并测试Windows Store应用, 以及如何将它上传到Microsoft的Windows Store中。 ● Windows 8和WPF下图形与多媒体的模块化处理。本书网站上的第26章, 利用了Windows 8的图形和多媒体功能, 而第33章用到了WPF的图形和多媒体功能。 ● 数据库与LINQ to Entities。本书的上一版本中探讨了LINQ to SQL(LINQ表示语言集成查询, SQL即Microsoft的SQL Server数据库系统)。2008年, Microsoft停止了LINQ to SQL的继续开发, 而代之以更新、 更健壮的LINQ to Entities和ADO.NET实体框架(Entity Framework)。本书中将探讨后两者, 以使初学者更容易学习。 ● SQL Server数据库。本书使用Microsoft免费的SQL Server Express 2012数据库(它随免费的Visual Studio Express 2012 for Windows Desktop一起安装), 用它来讲解数据库编程的基础知识。第22~23章和第29~30章使用数据库和LINQ功能分别创建了地址簿桌面程序、 基于Web的来宾簿程序、 书店程序以及航空订位系统程序。 ● ASP.NET 4.5。利用Microsoft的.NET服务器端技术ASP.NET, 可以创建健壮的、 可扩展的基于Web的程序。第23章中将创建几个程序, 包括一个基于Web的来宾簿程序, 它使用ASP.ENT和ADO .NET实体框架将数据保存到数据库中并显示在Web页面上。这一章还探讨了IIS Express Web服务器的用法, 它用于在本地计算机上测试Web程序。 ● 构建Windows Phone 8应用。Windows Phone 8是Microsoft新推出的智能手机操作系统。它的特性包括支持用于触控板和触摸屏设备的多点触摸、 强化的安全性等。第27章中将建立一个完整的、 可运行的Windows Phone 8应用, 并会在Windows Phone模拟器中测试它。此外还将探讨如何将应用上传到Windows Phone商店(Windows Phone Store)。 ● 创建Windows Azure云计算应用。Windows Azure是一个云计算平台, 使用户能够开发、 管理和发布云应用。第31章讲解了如何构建一个能够将数据保存在云中的Windows Azure应用。 ● async、 await与异步编程。Visual C# 2012中的异步编程通过新的async和await功能得到了简化。第28章讲解了使用async和await的异步编程方法。 面向对象编程 ● 尽早讲解对象。第1章就介绍了对象技术的基本概念和术语。第2章将可视化地操作对象, 比如卷标和图像。第3章将编写操作已有对象的Visual C#程序代码。第4章则首次创建定制化的类和对象。尽早讲解对象和类, 可以使读者立即“以对象的思维进行思考”, 并且能更全面地理解这些概念。 ● 大量讲解编程的基础知识。第5~6章中详细讲解了控制语句, 给出了求解问题的步骤。 ● 通过例子清晰地讲解了类、 对象、 继承、 多态和接口。 ● 选修的案例研究: 使用UML开发一个自动柜员机(ATM)的面向对象设计以及Visual C#实现。UML(统一建模语言)是设计面向对象系统的图形化建模语言的行业标准。本书的前几章用到了UML。第34~35章中包含了一个用UML进行面向对象设计的案例研究(选修)。书中设计并实现了一个用于简单自动柜员机(ATM)的软件, 分析了一个构建系统所要求的典型需求文档, 明确了实现该系统所需要的类、 类需要具有的属性、 类需要表现的行为, 还指定了类必须如何彼此交互以满足系统需求。根据这些设计, 书中还给出了一个可运行的Visual C#实现。读者经常反馈说, 他们有“眼前一亮”的感觉, 这个“集大成”的案例研究使他们真正理解了面向对象的概念。 ● 三种编程规范。书中探讨了结构化编程、 面向对象编程和泛型编程。 完整的代码例子 书中的例子程序取材广泛, 它们来自于计算机科学、 商业、 仿真、 游戏、 图形、 多媒体以及许多其他领域(见图1)。例子Account类洗牌与发牌信用查询程序地址簿案例研究CheckedListBox控件数据绑定航空订位Web服务ComboBox控件Date类动画视频的宽度和高度CommissionEmployee类DateTimePicker控件将变换应用到多边形常用的Windows 8 UI控件在XAML中定义渐变数组初始化器常用的WPF控件掷骰子ArrayList类复利计算Directory类BasePlusCommissionEmployee类计数器控制循环利用XNode进行文档导航二分搜索骰子游戏模拟绘制基本形状图1 本书数百个例子中的一小部分 例子21点游戏Web服务创建并使用文本文件绘制多边形和折线Books数据库创建定制窗口并使用计时器Employee类File类格式化字体NegativeNumberExceptionNumericUpDown控件泛型类Stack对象序列化StringBuilder类泛型类List重载构造方法TabControlGradeBook类显示图像的PictureBox文本与语音的相互转换来宾簿程序读取顺序存取文件Time类HourlyEmployee类递归的Factorial方法工具栏ASP.NET中的会话跟踪REST Web服务与JSON和XMLTreeView控件Invoice类SalariedEmployee类展示GUI定制能力的TV GUIIPayable接口用LINQ搜索目录民意调查结果分析键事件顺序搜索多态性演示LinkLabel控件排序数组用LINQ to Entities查询数据库LINQ to Objects与数组栈展开Queue类ListBox控件使用Web服务的数学教师菜单单选钮控件 图1(续) 本书数百个例子中的一小部分 趣味题、 娱乐题和挑战性练习 ● 本书包含大量的自测题和答案, 供学生自学之用。 ● 每一章都包含相当数量的练习题, 通常的形式包括书中重要术语和概念的简单回顾、 找出代码示例中的错误、 编写一行程序语句、 编写Visual C#类的一小部分内容、 写出完整的程序以及完成一个大的工程。图2中给出了本书中数百个练习的一小部分, 其中包括“挑战练习”部分中的一些内容。挑战练习鼓励读者利用计算机和Internet来研究并解决重大的社会问题——希望读者能用自己的价值观、 政治观和信仰找出它们的解决之道。练习题航空订位系统 根据一个五字母单词列出全部的三字母单词Baseball数据库程序 二叉树遍历21点体重指数计算器桶排序创建自己的计算机日历与约会“碳足迹”计算器洗牌与发牌拼车省钱计算器抛硬币复数计算机辅助教学健康记录的计算机化更健康的烹饪配料信用额度计数器掷骰子Ecofont字体八皇后问题Employee类用密码强制保护隐私增强的绘图程序阶乘绒毛骰子订单掷骰子游戏汽车油耗泛型方法重载猜数游戏Invoice类骑士旅行MDI文本编辑器营养信息回文钓鱼扫描程序电话簿Web服务儿童黑话利用Account层次的多态银行程序勾股数组快速排序小测验程序有理数饭店账单计算器薪水计数器销售佣金储蓄账户类爱拉托逊斯筛选法图2 本书中的一些练习题练习题龟兔赛跑模拟SMS语言垃圾邮件扫描器文章编写器学生调查目标心率计算器另一种税务规划: 公平税电话号码单词生成器一字棋游戏汉诺塔龟图打字练习基于Web的地址簿全球人口增长图2(续) 本书中的一些练习题 插图与图表 书中包含大量的表格、 图示、 UML框图、 程序以及程序结果输出, 图3和图4中列出了其中的一部分。主要的表格、 图示和框图锚定演示启用AJAX的Web程序二叉树的图形化表示环形双向链表环形单向链表接收Web服务器响应的客户端请求Web服务器响应的客户端创建Web服务.NET框架的集合类WPF命令库中的常用内置命令组件与控件定制控件创建DatePicker的属性/事件双向链表Books数据库的实体关系图转义序列GroupBox的属性HttpSessionState的属性简单类型之间的隐式转换增量和减量运算符insertAtBack操作的图形化表示insertAtFront操作的图形化表示 Web服务客户端与SOAP Web服务之间的交互.NET FCL的接口 键事件与事件实参关键字与上下文关键字链表的图形化表示LINQ to XML类层次主/细视图(Master/Detail)程序Math类的方法鼠标事件与事件实参.NET框架类库的命名空间常见大O记法的比较次数被所有类继承的对象方法Employee层次类的多态接口算术运算符的优先级removeFromBack操作的图形化表示removeFromFront操作的图形化表示形成结构化程序的规则SDI形式与MDI形式搜索算法、 排序算法以及它们的大O值单入/单出顺序、 选择和循环语句字符串格式指定符 三层体系结构 为每一个用户交互重载页面的传统Web程序article.xml文档的树形结构验证用ASP.NET Ajax增强的程序XSL样式表元素图3 本书中的一些表格、 图示和框图面向对象设计案例研究的图示和框图从用户角度看的ATM系统的用例框图具有类间关联的类框图展示组合关系的类框图ATM系统模型的类框图具有属性的类ATM的状态框图BalanceInquiry事务的活动框图Withdrawal事务的活动框图ATM系统中具有属性和操作的类执行余额查询的ATM通信框图执行余额查询的通信框图建模执行Withdrawal操作的顺序框图修改后的ATM系统的用例框图, 允许用户在账户间转账显示Car类的一些组合关系的类框图包含Deposit类的ATM系统模型的类框图Deposit事务的活动框图建模执行Deposit操作的顺序框图图4 书中讲解的面向对象设计案例研究的图示和框图(部分) 其他特性 ● 使用LINQ来查询文件、 数据库、 XML和集合。第9章中LINQ to Objects的讲解已经简明扼要, 以鼓励教师尽早讲授LINQ技术。后面的几章则深入分析了LINQ to Entities(第22、 23、 29、 30章)和LINQ to XML(第24、 30、 31章)。 ● 局部类型推理。当局部变量在它的声明中就初始化时, 则可以省略变量的类型——编译器会从初始化值中推导出变量的类型。 ● 对象初始化值。对于新的对象, 可以使用对象初始化值语法(类似于数组初始化值语法)来为它的公共属性和公共实例变量赋值。 ● 强化了IDE的智能感应特性, 它能使代码编写更快, 错误更少。 ● 文件与字符串。 ● 依次讲解数据结构的几章, 包括数据的搜索与排序、 数据结构、 泛型和集合。 ● 集中讲解异常处理。第8章讲解了异常处理, 以确保不会访问位于数组边界以外的数组元素。第10章讲解了当成员方法接收到一个无效的实参时如何显示异常。第13章详细探讨了异常处理的问题。 ● Visual C# XML功能。在软件开发行业和电子商务中, 大量使用了可扩展标记语言(XML), 它在.NET平台上也无处不在。第24章介绍了XML的语法以及如何在编程时使用LINQ to XML操作XML文档元素。XAML是一种XML词汇表, 用于描述图形用户接口、 图形以及多媒体。第25、 26、 32、 33章中讲解了XAML。 ● Web程序开发与ASP.NET 4.5和ASP.NET AJAX。第29章扩展了第23章中对ASP.ENT的讨论, 给出了一个案例研究, 建立一个受口令保护的、 基于Web的书店程序。此外, 第29章还讲解了ASP.NET AJAX控件, 并用它们为Web程序添加AJAX功能, 使Web程序具有与桌面程序相似的外观。 ● WCF Web服务。Web服务使程序员能将程序的功能打包, 使Web变成一种可重复使用的服务库。第30章中介绍的几个案例研究, 用于建立航空订座Web服务、 21点Web服务和一个可由数学教学程序调用的数学方程生成器Web服务。 ● WPF GUI、 图形与多媒体。第32、 33章扩展了本书的GUI内容, 这两章讲解WPF, 它是Windows 8 UI之前的一个基于XAML的Microsoft框架, 集成了GUI、 图形和多媒体功能。这两章中实现了一个绘图程序、 一个文本编辑器、 一个颜色选择器、 一个图书封面查看器、 一个电视视频播放器、 各种动画以及一个语音合成与识别程序。 本书配套网站 对于大多数入门性的Visual C#课程而言, 印刷版包含了足够多的核心内容(第1~23章)。对于高级课程和专业课程而言, 可以讲解本书包含的几章网上内容。图5中列出了本书配套网站上的几章以及几个附录, 它们为PDF格式, 需通过口令才能阅读。配套网站的网址为: 有关获取口令的方法, 请咨询出版社口令只针对本书英文原版提供, 相关资源可登录华信教育资源网(wwwhxeducomcn)免费注册下载。。在线章节第24章 XML与LINQ to XML第25章 Windows 8 UI与XAML第26章 Windows 8图形与多媒体第27章 构建Windows Phone 8应用第28章 并发性简介: async与await第29章 Web程序开发与ASP.NET: 深入探究第30章 Web服务图5 本书的在线章节和附录在线章节第31章 创建Windows Azure云计算应用第32章 GUI与WPF第33章 WPF图形与多媒体第34章 ATM案例研究(1): 面向对象设计与UML第35章 ATM案例研究(2): 实现面向对象设计附录D 数制系统附录E UML 2: 其他框图类型附录F Unicode附录G 使用Visual Studio 2012调试器图5(续) 本书的在线章节和附录 本书概览以及各章间的依赖性 这一部分讲解本书的模块化结构, 以帮助教师制订教学计划。 Visual C#与Visual Studio 2012 Express简介 第1章讲解计算机基础知识和Microsoft的.NET平台。即使不需要了解这些基础知识, 也需要了解绘图程序的测试驱动方法。书中绝大多数的例子都采用Visual Studio Express 2012 for Windows Desktop, 可运行于Windows 7和Windows 8上, 1.14节中讲解了测试驱动的方法。第25、 26章中的例子使用Visual Studio Express 2012 for Windows 8, 它们只能运行于Windows 8下, 1.15节中讲解了测试驱动的方法。此外还存在用于Web开发以及Windows Phone开发的其他Visual Studio Express 2012版本, 对应各章中会讲解这些版本。 第2章介绍了如何开发一个显示文本和图像的简单GUI程序。第25章中会更深入地探讨Visual Studio Express 2012 for Windows 8。Visual C#基础知识和面向对象编程简介 以下各章: ● 第3章 C#程序入门 ● 第4章 类、 对象、 方法和string简介 ● 第5章 控制语句(1) ● 第6章 控制语句(2) ● 第7章 方法: 深入探究 ● 第8章 数组以及异常处理简介涵盖了C#编程的基本知识(数据类型、 运算符、 控制语句、 方法、 数组), 并讲解了面向对象编程。这几章不必按顺序讲解。第8章讲解异常处理时给出了一个例子, 它演示了访问数组边界之外的元素时会出现的情况。面向对象编程: 深入探究 以下各章: ● 第9章 LINQ与List集合简介 ● 第10章 类与对象: 深入探究 ● 第11章 面向对象编程: 继承 ● 第12章 面向对象编程: 多态、 接口与运算符重载 ● 第13章 异常处理: 深入探究 ● 第34章 ATM案例研究(1): 面向对象设计与UML ● 第35章 ATM案例研究(2): 实现面向对象设计深入讲解了面向对象编程, 包括类、 对象、 继承、 多态、 接口以及异常处理。第9章讲解Microsoft的语言集成查询(LINQ)技术, 这种技术对操作来自于各种数据源的数据提供了统一的语法, 这些数据源可以是数组、 集合或者后面几章中将讲解的XML和数据库。这一章可以推迟到后面讲授, 但第17章的一个例子会用到LINQ, 而从第22章往后的许多章中也会用到它。第34、 35章讲解了一个可选修的面向对象设计及其实现的案例研究, 它需要第3~8章和第10~13章的C#和面向对象编程知识。Windows窗体图形用户界面(GUI) 现在, Windows已经存在三种GUI技术——Windows窗体(一种传统技术)、 Windows 8 UI(只用于Windows 8)和WPF(Windows Presentation Foundation)。通过对Visual C#教师的调查, 发现他们依然喜欢在课堂上使用Windows窗体, 因此本书用两章来讲解它: ● 第14章 图形用户界面与Windows窗体(1) ● 第15章 图形用户界面与Windows窗体(2)然后, 在其他几章中用到了Windows窗体。第14~15章中的大多数例子都可以在第4章之后讲解。对于那些希望更多了解Microsoft最新的GUI、 图形以及多媒体技术的人而言, 本书的(在线)第25~26章讲解了Windows 8 UI以及图形和多媒体; (在线)第32~33章讲解了WPF GUI以及图形和多媒体。字符串与文件 第4章涉及字符串, 之后在整本书中都用到它。第16章更深入地探究了字符串; 第17章讲解的是文本文件的处理以及用于输入/输出操作的对象序列化。学习完第4章之后, 可随时讲解第16章。第17章要求具备第3~14章中的C#、 面向对象编程以及Windows窗体概念。搜索、 排序和数据结构 以下各章讲解的是搜索、 排序和数据结构: ● 第18章 搜索与排序 ● 第19章 数据结构 ● 第20章 泛型 ● 第21章 集合大多数C#程序员都需利用.NET内置的搜索、 排序和集合(预包装的数据结构)能力, 它们会在第21章讲解。如果希望讲解如何实现定制化的搜索、 排序和数据结构, 则可参考第18~20章, 它们需要第3~8章以及第10~13章中的知识。数据库以及Web程序开发 第22章介绍如何利用ADO.NET实体框架和LINQ to Entities进行数据库程序开发。这一章的例子要求具备第3~14章中的C#、 面向对象编程以及Windows窗体概念。第23章讲解Web程序开发。这一章中的最后一个例子要求具备第22章讲解的LINQ以及数据库技术。可扩展标记语言(XML) 第24章讲解XML, 它用于后续的几章中。如果需要使用XAML标记来构建Windows 8 GUI、 图形以及多媒体程序(第25~26章), Windows Phone 8应用(第27章)以及WPF GUI、 图形以及多媒体程序(第32~33章), 则必须学习这一章的前几节。这一章的其他部分探讨的是LINQ to XML, 它利用LINQ语法来操作XML。这些知识将用于第30~31章中。Windows 8 UI、 图形与多媒体、 Windows Phone 以下各章讲解的是Windows 8 UI、 图形与多媒体, 以及Windows Phone 8应用的开发: ● 第25章 Windows 8 UI与XAML ● 第26章 Windows 8图形与多媒体 ● 第27章 构建Windows Phone 8应用这几章的内容只适合于运行Windows 8的计算机, 并且要求具备第14章的事件处理概念以及第24章的XML知识(细节请参见24.1节)。开发Windows Phone 8应用与开发Windows 8 UI程序有些类似。异步编程 第28章讲解.NET以及Visual C#中经过了简化的异步编程能力, 异步编程常用于Web程序以及Web服务的开发中。Web程序开发和Web服务 以下各章: ● 第29章 Web程序开发与ASP.NET: 深入探究 ● 第30章 Web服务 ● 第31章 创建Windows Azure云计算应用 继续讲解从第23章开始的Web程序开发, 并介绍了Web服务, 包括一个Windows Azure云计算的案例研究。第30~31章的内容需要有第24章的LINQ to XML知识。WPF GUI、 图形与多媒体 以下各章探讨了WPF(Windows Presentation Foundation)、 图形和多媒体: ● 第32章 GUI与WPF ● 第33章 WPF图形与多媒体这几章中的例子能够在Windows 7或者Windows 8的计算机上运行, 并且要求具备第14章的事件处理概念以及第24章的XML知识。 教学方法 本书包含丰富的例子, 重点讲解如何构建好的软件, 强调程序的清晰性。 活代码方法。本书充斥着大量的“活代码”例子。大多数新概念都是在完整的、 可运行的Visual C#应用程序环境中给出的, 程序的后面都跟着一个或多个展示程序输入和输出结果的执行界面。少数情况下给出的是代码片段, 但是为了确保正确性, 会首先将它们置于一个完整可运行的程序中进行测试, 然后将它们复制出来并放于书中。 语法阴影。为了增加可读性, 对有些代码添加了语法阴影, 这与大多数集成开发环境和代码编辑器中对代码添加语法颜色是类似的。书中采用的语法阴影约定是: ● 注释以细字体表示 ● 关键字以粗黑字体表示 ● 常量和字面值以比注释稍微浅一点的粗字体表示 ● 所有其他代码以黑体表示突出显示重要代码段。在每个程序的关键代码部分都放置了一个灰色的矩形框。 用字体突出显示。屏幕上显示的内容以加粗的Helvetica字体表示(例如, File菜单), 而Visual C#程序文本采用的是Lucida字体(例如, int count = 5)。简体中文版中取消了这些字体区分, 统一采用宋体。——编者注 目标。每一章开始处的“目标”部分给出的是该章所涉及的主题。 编程提示。书中提供的编程提示, 可帮助读者关注程序开发过程中的重要方面。这些提示和实践, 体现了两位作者累计70年的编程和教学经验之精华。 好的编程经验 “好的编程经验”提示有助于得到更清晰、 更易理解和更易维护的程序。 常见编程错误 给出这个编程提示, 可使读者减少类似的错误。 错误防止提示 这类提示包含暴露和删除程序bug的建议, 大多数描述的是如何防止将bug带入Visual C#程序。 性能提示 这类提示强调的是使程序运行得更快或使内存占用最小化的可能性。 可移植性提示 帮助读者编写能运行在各种平台下的代码。 软件工程结论 “软件工程结论”提示强调体系性以及设计的问题, 它们会影响软件系统的建立, 尤其是大规模的系统。 外观设计结论 这些提示可帮助用户设计出有吸引力的、 友好的图形用户界面, 以符合业界规范。 “小结”段落。各章末尾给出了各节的汇总性内容。 术语表。在每一章中都包含一个按字母顺序排列的重要术语列表。 索引。本书包含大量的索引。 获取本书中所用的软件 本书中的代码例子是用Microsoft免费的Visual Studio Express 2012系列产品编写的, 包括: ● Visual Studio Express 2012 for Windows Desktop(第1~24章、 第28章和第32~35章), 它包含Visual C#以及其他的Microsoft开发工具。这个产品可运行于Windows 7和Windows 8。 ● Visual Studio Express 2012 for Web(第23章和第29~31章)。 ● Visual Studio Express 2012 for Windows 8(第25~26章)。 ● Visual Studio Express 2012 for Windows Phone(第27章)。 这些产品都可以从如下站点下载: 教学辅助材料教辅申请方式请见书末的教学支持说明。 对于经过确认的教师, 可以获得下面这些辅助材料: ● 解答手册。给出了各章末尾大多数练习题的答案。本书新增加了许多“挑战练习”, 大部分都提供了答案。请不要给作者写信索要访问Pearson教师资源中心的方法, 能够访问该资源中心的人被严格限制为采用本书作为教材的教师。教师只能通过Pearson的代理获得访问资源中心的方法。“工程”类练习题没有提供答案。可以访问作者的“编程工程”资源中心, 获取大量其他的工程练习题。网址为: ● 测试项目文件。包含多项选择题(大约每一节有两个问题)。 ● 可定制的PowerPoint文档。包含教材中全部的代码和图表, 以及总结主要内容的语句段。 Microsoft DreamSpark 针对学生的专业开发和设计工具 Microsoft为学生免费提供许多专业的开发和设计工具, 这个项目称为DreamSpark(www.dreamspark.com)。关于验证学生身份以便能利用这个项目的详细信息, 请参见该网站。 致谢 要感谢Deitel & Associates公司Abbey Deitel和Barbara Deitel对这本书所做的长期贡献。Abbey合著了本前言和第1章的内容, 她与Barbara一起花费了很大精力分析了Visual C# 2012、 .NET 4.5, Windows 8、 Windows Phone 8、 Windows Azure以及其他重要主题的新功能。 我们有幸与Pearson Higher Education的出版专家团队共同完成这个项目。感谢Computer Science执行主编Tracy Johnson的指导和为此付出的精力。Carole Snyder出色地邀请了本书的评审人员并组织了评审过程。Bob Engelhardt的出色工作使本书得以出版。评审人员 我们要感谢本书评审人员的付出。本书得到了讲授C#课程的教师以及行业专家的仔细评审, 他们为更好的表述方式提出了无数的建议。书中遗留下来的错误都是属于我们自己的。 第五版的评审人员: Shay Friedman(Microsoft Visual C# MVP), Octavio Hernandez(MCSD), Stephen Hustedde(美国南山学院), José Antonio González Seco(西班牙安达卢西亚议员), 以及Shawn Weisfeld(Microsoft MVP, UserGroup.tv总裁和创始人)。 上一版的评审人员: Huanhui Hu(Microsoft), Narges Kasiri(美国俄克拉何马州立大学), Charles Liu(三藩市得克萨斯州立大学圣安东尼奥分校), Hamid R. Nemati博士(北卡罗来纳州立大学格林斯伯勒分校), Jeffrey P. Scott(Blackhawk技术学院), Douglas B. Bock(MCSD.NET, 南伊利诺伊州立大学Edwardsville), Dan Crevier(Microsoft), Amit K. Ghosh(El Paso得克萨斯州立大学), Marcelo Guerra Hahn(Microsoft)Kim Hamilton(Microsoft软件设计工程师, Learning UML 2.0作者之一), James Edward Keysor(佛罗里达技术学院), Helena Kotas(Microsoft), Chris Lovett(Microsoft软件架构师), Bashar Lulu(阿拉伯海湾INETA Country领导人), John McIlhinney(Spatial Intelligence; Microsoft MVP 2008 Visual Developer, Visual Basic), Ged Mead(Microsoft Visual Basic MVP, DevCity.net), Anand Mukundan(Polaris Software Lab有限公司架构师), Timothy Ng(Microsoft), Akira Onishi(Microsoft), Joe Stagner(资深项目经理, Developer Tools & Platforms), Erick Thompson(Microsoft), Jesús Ubaldo Quevedo-Torrero(Wisconsin–Parkside大学计算机科学系), 以及Zijiang Yang(西密歇根大学)。 阅读本书时, 我们衷心欢迎您提出意见、 批评、 更正和建议, 以完善本书。请将它们发送至: 我们会及时回复。希望读者能从阅读本书中得到快乐, 就像我们写作本书时那样! Paul Deitel Harvey Deitel 关于作者 Paul Deitel, Deitel & Associates公司CEO兼CTO, 毕业于麻省理工学院, 主修信息技术。通过Deitel & Associates公司, 他向行业客户提供了数以百计的编程课程, 这些客户包括Cisco, IBM, Siemens, Sun Microsystems, Dell, Fidelity, NASA肯尼迪航天中心, 美国国家风暴实验室, 白沙导弹基地, Rogue Wave Software, 波音, SunGard Higher Education, Nortel Networks, Puma, iRobot, Invensys, 等等。他和合作者Harvey M. Deitel博士, 是全球畅销的编程语言教材和专业图书/音频产品的作者。 Paul于2012年获得Microsoft C# MVP称号。根据Microsoft的说法, Microsoft MVP是一个年度奖项, 授予全球知名的、 有突出贡献的技术社区领导者, 他们积极地与用户和Microsoft共享高质量的、 来自于真实世界的知识。 Harvey Deitel博士, Deitel & Associates公司的主席和首席战略官, 具有50年计算机行业的工作经验。Deitel博士在麻省理工学院获得电子工程学士和硕士学位, 在波士顿大学获得数学博士学位。他具有丰富的大学教学经验, 在与儿子Paul Deitel于1991年创立Deitel & Associates公司之前, 他是波士顿大学计算机科学系主任并获得了终身任职权。他们的出版物已经赢得了国际声誉, 并被翻译成了中文、 韩文、 日文、 德文、 俄文、 西班牙文、 法文、 波兰文、 意大利文、 葡萄牙文、 希腊文、 乌尔都文和土耳其文。Deitel博士为许多大公司、 学术机构、 政府机关和军队提供了数百场的专业编程培训。 Deitel Dive-Into系列编程语言培训 Deitel & Associates公司由Paul Deitel和Harvey Deitel创立, 是一家国际知名的企业培训和写作公司, 专门进行计算机编程语言、 对象技术、 移动应用开发以及Internet和Web软件技术方面的培训和写作。公司的培训客户包括许多全球大公司、 政府部门、 军队以及学术机构。公司向全球客户提供由老师主导的主要编程语言和平台课程, 包括Visual C#, Visual Basic, Visual C++, C++, C, Java, XML, Python, 对象技术, Internet和Web编程, Android应用开发, Objective-C和iPhone应用开发, 并且还在不断提供其他编程语言和软件开发相关的课程。 Deitel & Associates公司与Prentice Hall/Pearson出版社具有37年的出版合作关系, 出版了一流的编程专业的大学教材、 专业图书以及LiveLessons视频课程。可通过如下电子邮件地址联系Deitel & Associates公司和作者: 要了解Deitel的Dive Into Series企业培训课程的更多信息, 可访问: 如果贵公司或机构希望获得关于教师现场培训的建议, 可发E-mail至deitel@deitel.com。 如果希望购买Deitel的图书和LiveLessons视频培训课程的个人, 可以访问www.deitel.com。公司、 政府机关、 军队和学术机构的团购, 应直接与Pearson公司联系。更多信息, 请访问: 学 前 准 备 这一部分包含在使用本书之前需了解的信息, 其中的说明可确保计算机被正确地设置了, 以便能够使用本书。 字体和命名规则 我们用字体区分特性(如菜单名、 菜单项)和程序开发环境中出现的其他元素。书中的约定是以sans-serif bold Helvetica字体突出IDE特性, 用sans-serif Lucida字体突出程序文本。简体中文版中统一采用宋体。——译者注 软件 本书中使用了如下软件: ● Microsoft Visual Studio Express 2012 for Windows Desktop ● Microsoft Visual Studio Express 2012 for Web(第23章和第29~31章) ● Microsoft Visual Studio Express 2012 for Windows 8(第25~26章) ● Microsoft Visual Studio Express 2012 for Windows Phone(第27章)每一种软件都可以从www.microsoft.com/express下载。这些Express 版本都具备完整的功能, 并且没有使用时间的限制。 Visual Studio 2012 Express Edition的硬件和软件要求 为了安装并运行Visual Studio 2012 Express Edition, 应确保系统满足如下的最低要求: Microsoft Visual Studio Express 2012 for Windows 8只能运行于Windows 8。 查看文件扩展名 本书中有几个屏幕截图显示了带文件扩展名(例如, .txt, .cs或.png)的文件名。可能需要将系统调整成显示文件扩展名。为此, 需对Windows 7计算机进行如下配置: 1.依次选择Start→All Programs→Accessories→Windows Explorer(开始→所有程序→附件→Windows资源管理器)。 2.按Alt键显示菜单栏, 然后从Tools(工具)菜单中选择Folder Options(文件夹选项)。 3.在出现的对话框中, 选中View(查看)标签。 4.在Advanced settings(高级设置)窗格中, 取消Hide extensions for known file types(隐藏已知文件类型的扩展名)旁边的复选框选择。[注: 如果这一项没有被选中, 则不必进行操作。] 5.单击OK(确定)按钮保存设置, 关闭对话框。对Windows 8计算机进行如下配置: 1.在Start(启动)界面上单击Desktop(桌面)tile, 切换到桌面。 2.单击任务栏中的File Explorer(文件浏览器)图标, 打开文件浏览器窗口。 3.单击View(查看)标签, 确保选中了File name extensions(文件扩展名)复选框。 获得代码例子 本书的代码例子可从如下网站下载: 如果还没有在这个站点上注册, 则需进入www.deitel.com, 单击页面左上角徽标下面的Register链接, 并填写相关信息。注册是免费的, 而且注册的信息不会透露给任何人。站点只会向注册者发送用于账号管理的电子邮件, 除非在www.deitel.com/newsletter/subscribe.html上单独注册了免费的电子邮件新闻组。必须输入有效的电子邮件地址。注册之后, 会收到一封包含验证码的确认邮件。单击确认邮件中的链接, 转到www.deitel.com, 然后登录。 接下来, 进入www.deitel.com/books/vcsharp2012htp/, 单击Examples链接, 将ZIP压缩文件下载到计算机中。记下保存文件的位置——大多数浏览器会将文件保存到Downloads文件夹中。 在整本书中, 要求访问代码例子的所有步骤都假定已经将这个ZIP文件解压到C:\Examples文件夹中。也可以将它们解压到其他位置, 但是需要相应更改书中讲述的那些步骤。用WinZip(www.winzip.com)、 7-zip(www.7-zip.org)、 Windows 7的Windows资源管理器或者Windows 8的文件管理器的内置功能, 都可以展开这个ZIP档案文件的内容。 Visual Studio主题 Visual Studio 2012有Dark主题(默认)和Light主题。本书中的屏幕截图采用的是Light主题, 这使得它们在书中更醒目。如果要切换到这种主题, 可在TOOLS菜单中选择Options, 显示Options对话框。在左列中选择Environment, 然后选择Color theme下的Light。不要关闭这个对话框, 下一步中还会用到它。 显示行号, 配置Tab键的空格数 这一步要改变设置, 使代码的显示与本书相符。为了使IDE显示行号, 需展开左侧窗格中的Text Editor节点, 然后选择All Languages。在右边选中Line Numbers复选框。接下来, 展开左窗格中的C#节点, 选择Tabs。确保选中了选项Insert spaces。在Tab Size和Indent Size字段中都输入3。现在, 任何新添加的代码都会对每一级采用三个空格的缩进。单击OK按钮, 保存设置。 其他说明 ● 有些人愿意改变开发工具中的空间布局。通过选择Window→Reset Window Layout, 可以让工具返回到它们的默认布局。 ● 书中用到许多菜单项, 在每个菜单项中都具有对应的图标。许多图标也会出现在开发环境顶部的某个工具栏中。随着对这些图标的逐渐了解, 就可以通过工具栏来提高开发速度。类似地, 许多菜单项还具有键盘快捷键(也会显示在菜单的每个菜单项中), 以便能快速访问这些命令。至此就为学习本书做好了准备, 希望读者能喜欢它!

目录

第1章 计算机、 Internet和Visual C#简介 1.1 简介 1.2 硬件与摩尔定律 1.3 数据层次 1.4 计算机的结构 1.5 机器语言、 汇编语言和高级语言 1.6 对象技术 1.7 Internet与WWW 1.8 C# 1.9 Microsoft的.NET 1.10Windows操作系统 1.11用于智能手机的Windows Phone 8 1.12Windows Azure与云计算 1.13Visual Studio Express 2012集成开发环境 1.14在Visual Studio Express 2012 for Windows Desktop中测试绘图程序 1.15在Visual Studio Express 2012 for Windows 8中测试绘图程序 第2章 Visual Studio Express 2012 for Windows Desktop介绍 2.1 简介 2.2 Visual Studio 2012 IDE概述 2.3 菜单栏和工具栏 2.4 Visual Studio IDE导航 2.5 使用帮助 2.6 用可视化程序开发创建简单的程序, 显示文本和图像 2.7 小结 2.8 Web资源 第3章 C#程序入门 3.1 简介 3.2 一个简单的C#程序: 显示一行文本 3.3 在Visual Studio中创建简单的程序 3.4 修改C#程序 3.5 用Console.Write和Console.WriteLine格式化文本 3.6 另一个C#程序: 整数相加 3.7 内存概念 3.8 算术运算符 3.9 判断: 相等运算符与关系运算符 3.10小结 第4章 类、 对象、 方法和string简介 4.1 简介 4.2 类、 对象、 方法、 属性和实例变量 4.3 声明带方法的类并实例化类的对象 4.4 声明带参数的方法 4.5 实例变量和属性 4.6 带属性的UML类框图 4.7 带属性和set与get方法的软件工程 4.8 自实现属性 4.9 值类型与引用类型的比较 4.10用构造方法初始化对象 4.11浮点数与decimal类型 4.12小结 第5章 控制语句(1) 5.1 简介 5.2 算法 5.3 伪代码 5.4 控制结构 5.5 if单选择语句 5.6 if…else双选择语句 5.7 while循环语句 5.8 制定算法: 计数器控制循环 5.9 制定算法: 标记控制循环 5.10制定算法: 嵌套控制语句 5.11复合赋值运算符 5.12增量运算符和减量运算符 5.13简单类型 5.14小结 第6章 控制语句(2) 6.1 简介 6.2 计数器控制循环的实质 6.3 for循环语句 6.4 使用for语句的例子 6.5 do…while循环语句 6.6 switch多选择语句 6.7 break与continue语句 6.8 逻辑运算符 6.9 结构化编程小结 6.10小结 第7章 方法: 深入探究 7.1 简介 7.2 C#的代码包装 7.3 静态方法、 静态变量和Math类 7.4 声明多参数方法 7.5 关于方法声明与使用的说明 7.6 方法调用栈与活动记录 7.7 实参提升与强制转换 7.8 .NET框架类库 7.9 案例研究: 随机数生成方法 7.10案例研究: 机会游戏(引入枚举) 7.11声明的作用域 7.12方法重载 7.13可选参数 7.14命名参数 7.15递归 7.16传递实参: 按值传递与按引用传递 7.17小结 挑战练习 第8章 数组以及异常处理简介 8.1 简介 8.2 数组 8.3 声明和创建数组 8.4 数组使用举例 8.5 案例研究: 洗牌与发牌模拟 8.6 foreach语句 8.7 将数组和数组元素传入方法 8.8 按值与按引用传递数组 8.9 案例研究: GradeBook类用数组保存成绩 8.10多维数组 8.11案例研究: 使用矩形数组的GradeBook类 8.12游长实参表 8.13使用命令行实参 8.14小结 特殊节: 建立自己的计算机 第9章 LINQ与List集合简介 9.1 简介 9.2 用LINQ查询int数组 9.3 用LINQ查询Employee对象数组 9.4 集合介绍 9.5 用LINQ查询泛型集合 9.6 小结 9.7 Deitel的LINQ资源中心 自测题 第10章 类与对象: 深入探究 10.1 简介 10.2 Time类案例研究 10.3 控制对成员的访问 10.4 用this引用访问当前对象的成员 10.5 Time类案例研究: 重载构造方法 10.6 默认构造方法和无参数构造方法 10.7 合成 10.8 内存回收与析构方法 10.9 静态类成员 10.10readonly实例变量 10.11数据抽象与封装 10.12Class View与Object Browser 10.13对象初始化器 10.14小结 第11章 面向对象编程: 继承 11.1 简介 11.2 基类与派生类 11.3 protected成员 11.4 基类与派生类的关系 11.5 派生类的构造方法 11.6 继承与软件工程 11.7 object类 11.8 小结 第12章 面向对象编程: 多态、 接口和运算符重载 12.1 简介 12.2 多态举例 12.3 演示多态行为 12.4 抽象类和抽象方法 12.5 案例研究: 使用多态的工资系统 12.6 sealed方法和sealed类 12.7 案例研究: 创建和使用接口 12.8 运算符重载 12.9 小结 第13章 异常处理: 深入探究 13.1 简介 13.2 例子: 除数为0不用异常处理 13.3 例子: 处理DivideByZeroException异常和FormatException异常 13.4 .NET的Exception层次 13.5 finally语句块 13.6 using语句 13.7 Exception属性 13.8 用户定义异常类 13.9 小结 第14章 图形用户界面与Windows窗体(1) 14.1 简介 14.2 Windows窗体 14.3 事件处理 14.4 控件的属性和布局 14.5 卷标、 文本框和按钮 14.6 组框和面板 14.7 复选框和单选钮 14.8 图形框 14.9 工具提示 14.10数字上下控件 14.11鼠标事件处理 14.12键事件处理 14.13小结 挑战练习 第15章 图形用户界面与Windows窗体(2) 15.1 简介 15.2 菜单 15.3 MonthCalendar控件 15.4 DateTimePicker控件 15.5 LinkLabel控件 15.6 ListBox控件 15.7 CheckedListBox控件 15.8 ComboBox控件 15.9 TreeView控件 15.10ListView控件 15.11TabControl控件 15.12多文档界面(MDI)窗口 15.13可视化继承 15.14用户定义的控件 15.15小结 第16章 字符串和字符: 深入探究 16.1 简介 16.2 字符和字符串基础 16.3 string构造方法 16.4 string索引器、 Length属性和CopyTo方法 16.5 字符串比较 16.6 定位字符串中的字符和子串 16.7 抽取字符串中的子串 16.8 拼接字符串 16.9 其他的string方法 16.10StringBuilder类 16.11StringBuilder类的Length属性、 Capacity属性、 EnsureCapacity方法以及索引器 16.12StringBuilder类的Append方法和AppendFormat方法 16.13StringBuilder类的Insert、 Remove和Replace方法 16.14几个Char方法 16.15正则表达式处理简介(网上内容) 16.16小结 挑战练习 第17章 文件和流 17.1 简介 17.2 数据层次 17.3 文件和流 17.4 File类和Directory类 17.5 创建顺序访问文本文件 17.6 从顺序访问文本文件读取数据 17.7 案例研究: 信用查询程序 17.8 序列化 17.9 用对象序列化创建顺序访问文件 17.10从二进制文件读取和去序列化数据 17.11小结 挑战练习 第18章 搜索与排序 18.1 简介 18.2 搜索算法 18.3 排序算法 18.4 搜索算法和排序算法的效率小结 18.5 小结 第19章 数据结构 19.1 简介 19.2 简单类型struct、 装箱和拆箱 19.3 自引用类 19.4 链表 19.5 栈 19.6 队列 19.7 树 19.8 小结 第20章 泛型 20.1 简介 20.2 泛型方法的由来 20.3 泛型方法的实现 20.4 类型约束 20.5 重载泛型方法 20.6 泛型类 20.7 小结 第21章 集合 21.1 简介 21.2 集合概述 21.3 Array类和枚举器 21.4 非泛型集合 21.5 泛型集合 21.6 泛型类型的协变和逆变 21.7 小结 第22章 数据库和LINQ 22.1 简介 22.2 关系数据库 22.3 Books数据库 22.4 LINQ to Entities与ADO.NET实体框架 22.5 用LINQ查询数据库 22.6 动态绑定查询结果 22.7 用LINQ取得来自于多个表的数据 22.8 创建主/细视图程序 22.9 地址簿案例研究 22.10工具和Web资源 22.11小结 第23章 Web程序开发与ASP.NET 23.1 简介 23.2 Web基础 23.3 多层程序体系结构 23.4 第一个Web程序 23.5 标准的Web控件: 设计Web窗体 23.6 验证控件 23.7 会话跟踪 23.8 案例研究: 数据库驱动的ASP.NET来宾簿程序 23.9 在线案例研究: ASP.NET AJAX 23.10在线案例研究: 受口令保护的图书数据库程序 23.11小结 在线章节 附录A 运算符优先级表 附录B 简单类型 附录C ASCII字符集 在线附录

作者简介

编辑推荐

作者寄语

电子资料

http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0219070

www.luweidong.cn

下一个