Beginning C# Objects中文版--概念到代码
基本信息
编辑推荐
C#入门经典!独一无二的创新之作,全面阐述面向对象理论的基本内容,程序员必备手册。...
推荐阅读
内容简介回到顶部↑
本书关注的是软件对象:什么是软件对象?为什么它们如此神奇而直白,以及如何正确使用对象去构建一个软件应用。这也是一本关于C#的书,但它并非一本“C#大全”,而是一份对该语言的温文但全面的介绍,还特别强调了如何把对象模型转换到功能完备的C#应用程序。本书分三部分,结合C#深入浅出地阐述面向对象理论的基本内容,即从对象基本概念到对象建模,到C#代码的整个学习过程。为了完善本书,我们还写了标题为“下一步”的最后章节,它给出一些建议,让你在读完本书后,懂得如何继续自己的面向对象发现之旅。...
作译者回到顶部↑
本书提供作译者介绍
作者简介:
Jacquie Barker是一位专业软件工程师、作者和华盛顿特区乔治·华盛顿大学编外教师。Jacquie拥有超过25年的软件开发和相关管理经验,在过去12年中集中关注对象技术,并成为对象建模师和Sun Microsystems认证Java程序员。她目前在位于弗吉尼亚州荷顿县的Technology Associates,Inc.公司工作,任技术班子资深成员。她同时也是对象技术咨询和培训机构ObjectStart LLC的创始人。.
Jacquie在俄亥俄州的Case Western Reserve大学以最高等级荣誉获理学士学位。稍后,又获UCLA(哥.. << 查看详细
Jacquie Barker是一位专业软件工程师、作者和华盛顿特区乔治·华盛顿大学编外教师。Jacquie拥有超过25年的软件开发和相关管理经验,在过去12年中集中关注对象技术,并成为对象建模师和Sun Microsystems认证Java程序员。她目前在位于弗吉尼亚州荷顿县的Technology Associates,Inc.公司工作,任技术班子资深成员。她同时也是对象技术咨询和培训机构ObjectStart LLC的创始人。.
Jacquie在俄亥俄州的Case Western Reserve大学以最高等级荣誉获理学士学位。稍后,又获UCLA(哥.. << 查看详细
目录回到顶部↑
关于作者.
致谢
序
介绍
第一部分:对象入门
第1章 初尝c#
1.1 c#上手指南
1.2 为什么用c#
1.3 c#语言基础
1.4 解析一个简单的c#程序
1.5 预定义类型
1.6 变量
1.7 字符串(string)
1.8 大小写敏感
1.9 c#表达式
1.10 隐式类型转换和显式类型转换
1.11 循环和其他控制结构流程
1.12 跳出语句
1.13 代码块和变量作用范围
1.14 输出到屏幕
致谢
序
介绍
第一部分:对象入门
第1章 初尝c#
1.1 c#上手指南
1.2 为什么用c#
1.3 c#语言基础
1.4 解析一个简单的c#程序
1.5 预定义类型
1.6 变量
1.7 字符串(string)
1.8 大小写敏感
1.9 c#表达式
1.10 隐式类型转换和显式类型转换
1.11 循环和其他控制结构流程
1.12 跳出语句
1.13 代码块和变量作用范围
1.14 输出到屏幕
译者序回到顶部↑
由于工作性质的关系,我常常需要为公司面试程序员。通常,我会首先要求应聘者做两件事:第一,口头说明虚方法、抽象方法、接口之间的异同和使用场景;第二,脱离IDE,手写一个简单的WinForm程序(例如包括布局整齐的两个文本框和三个按钮、点击按钮弹出消息框显示文本框内容),然后在命令行编译运行。第一题是考面向对象中的继承和多态概念,第二题则是考C# GUI类和关于委托等C#独有特性的基础知识,以及编译、调试技巧。很遗憾,有一大半的应聘者会在这两个简单考题面前败下阵来。尤其是第二个考题,甚至难倒了一些写代码有年头的程序员。为什么?因为这些程序员不具备基本的面向对象知识,更加不理解C#的面向对象实现手法。.
这不能完全归咎于中国计算机教育。实际上,在美国或其他发达国家,真正懂得面向对象开发的程序员也并非随处可见。这也是Beginning C# Objects(及其Java原版本Beginning Java Obiects)一书成为畅销书、并在Amazon上获得读者极高评价的原因。作者写道:“我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio.NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。”
翻开市面上任何一本你能找到的C#入门书,看看第一章讲什么,第一个范例是怎么实现的。闭上眼睛你都能告诉我,第一章多半是讲怎么安装VS.NET,第一个例子多半是拖一个按钮控件到窗体,双击后输入一段调用消息框的代码。我们的技术作者们,就是这样把读者引入歧途的。IDE(集成开发环境)能极大地提升生产力,但开发应用程序所需的高度专业的知识和技能,却非IDE所能代替。的确,任何一个菜鸟也许都能利用可视化组件拼凑出“看起来还不错”的应用程序,但这样的程序却将带来高昂的扩展和维护成本。
面向对象编程,绝非一些可视化组件那么简单,它涉及人类思维(抽象)模式、建模符号体系、面向对象方法学等诸多方面,对开发者有较高的要求。功夫过关的开发者,不止是技术高手,同时也一定会是有深度的思想者。把需求从自然语言翻译为对象模型,再把对象模型翻译为特定语言代码,殊非易事。最基础的,到底什么是对象?如果你曾经好好思考过这个问题,就会得到很多启发。例如,现实世界中的一张纸,如何抽象为计算世界中的对象?这个对象将具有哪些特性(属性和行为),例如尺寸、颜色、质地、折叠、裁减、卷筒……?综合来看,面向对象的要素是什么?把事物抽象为对象的过程,是做思维体操的过程,也是极富挑战性和乐趣的过程。如果你还不了解对象和面向对象的概念,或想与作者一起就该话题做更深入的思考,那本书第一部分就是最好的入门手册。..
我认识一些优秀的程序员朋友,他们在大学时念的专业是建筑。这些朋友对应用程序架构和/或开发流程,有近乎严苛的要求,因为他们深刻地理解,蓝图、材料、工序……对于建造房屋是多么的重要。对象模型的静态方面(域类、数据结构等)在应用程序中开发相当于建材单元,而动态方面(行为、方法等)则是关于建材之间如何组合的指导书,它们合起来,构成一个应用程序的“蓝图”。越是复杂、大型的应用程序,对蓝图的要求就越高;即便是简单的应用,有蓝图也比较有利于维护、升级和扩展。给你一份需求说明书,你将如何分析它、并且组织出正确的对象模型(蓝图)?如果你对此信心不足,建议好好阅读本书第二部分。
第三部分涉及的范例,在有经验的开发者眼中看来,似乎过于简单。其实不然。整个开发过程当中,没有使用IDE拖放过任何一个控件,或在IDE中编译调试。这样做的目的有二:第一,让读者可以掌握.NET Framework和C#本身的特性,而不会被DE的花哨界面所迷惑、急于求成:第二,帮助读者学会用正确的手法和模式(如公认的MVC模式)开发程序。例如委托(delegation),这是.NET Framework中一种特别的语言元素,也不易理解。如果你只懂得往窗体放一个按钮,双击该按钮,输入一行代码,那么你永远不会明白,这个过程体现了利用委托实现事件处理的巧妙手法。但是,如果让你脱离IDE编写事件处理方法,你就很快能明白这个道理,而且也知道怎么用于实践。IDE能提升生产力,不过它却不能凭空创造生产力,本源的生产力还是来自开发者的知识与技能。
面向对象编程已经流行多年,然而还是有无数的入门者在入门阶段就走错路子,抱着错误的观念、用错误的方式开发着意大利面般一团乱麻的程序。入门不简单,对于初学者如此,对于有经验的开发者,更该回头检讨自己在面向对象编程领域的经验是否根本就是错误或细枝末节的经验。本书作者开发和培训经验丰富(一位是NASA开发工程师,一位是大学教师和对象技术专家),理解面向对象程序员可能进入的误区和面对的挑战,他们知识与经验的总结,形成了这么一本用心良苦、循循善诱、深入浅出的C#面向对象开发指南。每一位C#开发者,无论有经验还是没经验,都该读读这本书。入门不简单,你真的入对门了吗?...
韩磊
2006年5月于北京
这不能完全归咎于中国计算机教育。实际上,在美国或其他发达国家,真正懂得面向对象开发的程序员也并非随处可见。这也是Beginning C# Objects(及其Java原版本Beginning Java Obiects)一书成为畅销书、并在Amazon上获得读者极高评价的原因。作者写道:“我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio.NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。”
翻开市面上任何一本你能找到的C#入门书,看看第一章讲什么,第一个范例是怎么实现的。闭上眼睛你都能告诉我,第一章多半是讲怎么安装VS.NET,第一个例子多半是拖一个按钮控件到窗体,双击后输入一段调用消息框的代码。我们的技术作者们,就是这样把读者引入歧途的。IDE(集成开发环境)能极大地提升生产力,但开发应用程序所需的高度专业的知识和技能,却非IDE所能代替。的确,任何一个菜鸟也许都能利用可视化组件拼凑出“看起来还不错”的应用程序,但这样的程序却将带来高昂的扩展和维护成本。
面向对象编程,绝非一些可视化组件那么简单,它涉及人类思维(抽象)模式、建模符号体系、面向对象方法学等诸多方面,对开发者有较高的要求。功夫过关的开发者,不止是技术高手,同时也一定会是有深度的思想者。把需求从自然语言翻译为对象模型,再把对象模型翻译为特定语言代码,殊非易事。最基础的,到底什么是对象?如果你曾经好好思考过这个问题,就会得到很多启发。例如,现实世界中的一张纸,如何抽象为计算世界中的对象?这个对象将具有哪些特性(属性和行为),例如尺寸、颜色、质地、折叠、裁减、卷筒……?综合来看,面向对象的要素是什么?把事物抽象为对象的过程,是做思维体操的过程,也是极富挑战性和乐趣的过程。如果你还不了解对象和面向对象的概念,或想与作者一起就该话题做更深入的思考,那本书第一部分就是最好的入门手册。..
我认识一些优秀的程序员朋友,他们在大学时念的专业是建筑。这些朋友对应用程序架构和/或开发流程,有近乎严苛的要求,因为他们深刻地理解,蓝图、材料、工序……对于建造房屋是多么的重要。对象模型的静态方面(域类、数据结构等)在应用程序中开发相当于建材单元,而动态方面(行为、方法等)则是关于建材之间如何组合的指导书,它们合起来,构成一个应用程序的“蓝图”。越是复杂、大型的应用程序,对蓝图的要求就越高;即便是简单的应用,有蓝图也比较有利于维护、升级和扩展。给你一份需求说明书,你将如何分析它、并且组织出正确的对象模型(蓝图)?如果你对此信心不足,建议好好阅读本书第二部分。
第三部分涉及的范例,在有经验的开发者眼中看来,似乎过于简单。其实不然。整个开发过程当中,没有使用IDE拖放过任何一个控件,或在IDE中编译调试。这样做的目的有二:第一,让读者可以掌握.NET Framework和C#本身的特性,而不会被DE的花哨界面所迷惑、急于求成:第二,帮助读者学会用正确的手法和模式(如公认的MVC模式)开发程序。例如委托(delegation),这是.NET Framework中一种特别的语言元素,也不易理解。如果你只懂得往窗体放一个按钮,双击该按钮,输入一行代码,那么你永远不会明白,这个过程体现了利用委托实现事件处理的巧妙手法。但是,如果让你脱离IDE编写事件处理方法,你就很快能明白这个道理,而且也知道怎么用于实践。IDE能提升生产力,不过它却不能凭空创造生产力,本源的生产力还是来自开发者的知识与技能。
面向对象编程已经流行多年,然而还是有无数的入门者在入门阶段就走错路子,抱着错误的观念、用错误的方式开发着意大利面般一团乱麻的程序。入门不简单,对于初学者如此,对于有经验的开发者,更该回头检讨自己在面向对象编程领域的经验是否根本就是错误或细枝末节的经验。本书作者开发和培训经验丰富(一位是NASA开发工程师,一位是大学教师和对象技术专家),理解面向对象程序员可能进入的误区和面对的挑战,他们知识与经验的总结,形成了这么一本用心良苦、循循善诱、深入浅出的C#面向对象开发指南。每一位C#开发者,无论有经验还是没经验,都该读读这本书。入门不简单,你真的入对门了吗?...
韩磊
2006年5月于北京
前言回到顶部↑
前言.
本书最初和最重要的关注点,是软件对象:什么是软件对象、为什么它们如此神奇而直白、以及如何正确使用对象去构建一个软件应用。
这也是一本关于C#的书:它并非一本“C#大全”,而是一份对该语言的温文但全面的介绍,还特别强调了如何把对象模型转换到功能完备的C#应用程序——其他图书很少这样编写。
本书的目标
我们撰写本书的目标(希望也是你买它的目的)是
? 让你熟悉基础的面向对象(OO)术语和概念。
? 让你得到对象建模领域的上手实践体验:即,创建一幅可用作后续面向对象软件系统构建基础的“蓝图”。
? 演示如何将类似对象模型转换为可用的软件应用程序,特别地,C#应用程序(虽然你将学到的对象建模技术也可用于其他语言)。
如果你已经熟悉C#语言(但不熟悉对象基础),那么,学习C#的面向对象根源,对你成功使用该语言至关重要。另一方面,如果你是C#新手,本书将让你能正确地“起跳”。从这两方面看,对于任何打算成为精通一门类似C#的OO编程语言的人,本书都是必读之作。
本书并不打算做到..
? 让你一夜之间精通对象建模:和其他高级技能一样,完全掌握对象建模技术有两个条件:良好的理论基础和大量的练习!本书只告诉你基础知识,以及让你能应用和实践新学知识的项目/练习的建议。但是,真正精通对象建模技术的必经之路,还是坚持不断地参与OO建模和项目开发。本书给你以技能,希望还给你以信心,让你能开始在一个专业机构中开始应用对象技术,那才是你真正学习的地方,尤其是如果拥有一位OO经验丰富的导师在整个“工业标准”项目中指导你时,更是如此。
? 让你变成某种特定OO术语体系的专家:OO软件开发领域有数十种不同的正式方法,新变种还在不断产生,而且并无优劣之分。例如,UML(即Unified Modeling Language,统一建模语言)符号体系是最新的,而OMT(即Object Modeling Technique,对象建模技术)是最旧的其中之一,然而两者极为相似,因为UML基本上极大地扩展了OMT。在理解了对象建模技术的一般过程和用UML建模的技术后,你就拥有足够的知识,可以自己检阅、评估和选择一种特定的术语体系(或创建你自己的体系——甚至也许有一天你会写一本关于自己发明的术语体系的书,谁知道呢!)
? 教给你所需的全部C#知识:C#是一种非常丰富的语言,在Framework Class Library中包括了数十个核心类、数百个其他类,以及这些类提供的数以千计的操作。假使C#提供了一打实现某种操作的方案,则我们将只介绍其中一、两种最适合解决手边问题的方案,让你明白解决问题的方式。尽管如此,在本书中,你还是一定会看到足够用来构建一个完整应用的C#语言知识。
用从本书学到的基础知识武装好自己后,你将能欣赏关于该领域的更为彻底的阐述,例如坊间有售的C#参考书中的知识,或UML参考书中的描述。
对于想做成功OO程序员的人,为什么理解对象如此要紧?
我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——
这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio .NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。
想象一下,如果你被要求建造一所房屋,而且你也懂得关于建筑的基础知识。实际上,你还是一位抢手的世界知名建筑家!客户告诉你,建材已经运送给你。在开工那天,一辆卡车开到施工现场,卸下一大堆蓝色的、星型的奇怪建材,每块中间还有个洞。于是你只能暂时停工!你曾经使用木材、砖块、石头等建材建造过无数房屋,而且也懂得使用熟悉的材料去施工;但是,你却完全不知道怎样堆叠蓝星公司的建材。
一番苦思冥想后,你拿出一把锤子,想按照以前对付木材那套把蓝星建材钉到一起,但它们却无法严丝合缝。然后你又用砌砖的灰泥填充建材之间的缝隙,不过灰泥似乎无法粘到上面。然而,由于预算和工期都有限(因为你称自己为建筑“专家”,但却不懂如何使用现代建材,把自己推到了绝地),只好勉强上马。最终,你拼凑出一个看起来(至少从外面看起来)像是房子的玩意。
客户来检查工作,并表示了完全的失望。他选择蓝星建材的原因之一是,使用这种建材搭的房屋相当节省能源;但是,由于你使用了钉子和灰泥,蓝星建材失去了大部分隔离能力。为了补偿热量损失,客户要求你把所有窗玻璃换成绝热玻璃。这时你手足无措!换掉所有玻璃比新建一座房屋所耗时间还长,而且替换因为换玻璃导致的墙体损伤所花时间还不计算在内。当你告诉客户这个情况时,他暴跳如雷!客户选择蓝星建材的另一个理由是,该种建材适应性十足,易于迎合设计改变;但是,由于你用极无效率的手段组装它们,就不得不将它们逐个拆开,换掉其中一大批。
本书最初和最重要的关注点,是软件对象:什么是软件对象、为什么它们如此神奇而直白、以及如何正确使用对象去构建一个软件应用。
这也是一本关于C#的书:它并非一本“C#大全”,而是一份对该语言的温文但全面的介绍,还特别强调了如何把对象模型转换到功能完备的C#应用程序——其他图书很少这样编写。
本书的目标
我们撰写本书的目标(希望也是你买它的目的)是
? 让你熟悉基础的面向对象(OO)术语和概念。
? 让你得到对象建模领域的上手实践体验:即,创建一幅可用作后续面向对象软件系统构建基础的“蓝图”。
? 演示如何将类似对象模型转换为可用的软件应用程序,特别地,C#应用程序(虽然你将学到的对象建模技术也可用于其他语言)。
如果你已经熟悉C#语言(但不熟悉对象基础),那么,学习C#的面向对象根源,对你成功使用该语言至关重要。另一方面,如果你是C#新手,本书将让你能正确地“起跳”。从这两方面看,对于任何打算成为精通一门类似C#的OO编程语言的人,本书都是必读之作。
本书并不打算做到..
? 让你一夜之间精通对象建模:和其他高级技能一样,完全掌握对象建模技术有两个条件:良好的理论基础和大量的练习!本书只告诉你基础知识,以及让你能应用和实践新学知识的项目/练习的建议。但是,真正精通对象建模技术的必经之路,还是坚持不断地参与OO建模和项目开发。本书给你以技能,希望还给你以信心,让你能开始在一个专业机构中开始应用对象技术,那才是你真正学习的地方,尤其是如果拥有一位OO经验丰富的导师在整个“工业标准”项目中指导你时,更是如此。
? 让你变成某种特定OO术语体系的专家:OO软件开发领域有数十种不同的正式方法,新变种还在不断产生,而且并无优劣之分。例如,UML(即Unified Modeling Language,统一建模语言)符号体系是最新的,而OMT(即Object Modeling Technique,对象建模技术)是最旧的其中之一,然而两者极为相似,因为UML基本上极大地扩展了OMT。在理解了对象建模技术的一般过程和用UML建模的技术后,你就拥有足够的知识,可以自己检阅、评估和选择一种特定的术语体系(或创建你自己的体系——甚至也许有一天你会写一本关于自己发明的术语体系的书,谁知道呢!)
? 教给你所需的全部C#知识:C#是一种非常丰富的语言,在Framework Class Library中包括了数十个核心类、数百个其他类,以及这些类提供的数以千计的操作。假使C#提供了一打实现某种操作的方案,则我们将只介绍其中一、两种最适合解决手边问题的方案,让你明白解决问题的方式。尽管如此,在本书中,你还是一定会看到足够用来构建一个完整应用的C#语言知识。
用从本书学到的基础知识武装好自己后,你将能欣赏关于该领域的更为彻底的阐述,例如坊间有售的C#参考书中的知识,或UML参考书中的描述。
对于想做成功OO程序员的人,为什么理解对象如此要紧?
我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——
这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio .NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。
想象一下,如果你被要求建造一所房屋,而且你也懂得关于建筑的基础知识。实际上,你还是一位抢手的世界知名建筑家!客户告诉你,建材已经运送给你。在开工那天,一辆卡车开到施工现场,卸下一大堆蓝色的、星型的奇怪建材,每块中间还有个洞。于是你只能暂时停工!你曾经使用木材、砖块、石头等建材建造过无数房屋,而且也懂得使用熟悉的材料去施工;但是,你却完全不知道怎样堆叠蓝星公司的建材。
一番苦思冥想后,你拿出一把锤子,想按照以前对付木材那套把蓝星建材钉到一起,但它们却无法严丝合缝。然后你又用砌砖的灰泥填充建材之间的缝隙,不过灰泥似乎无法粘到上面。然而,由于预算和工期都有限(因为你称自己为建筑“专家”,但却不懂如何使用现代建材,把自己推到了绝地),只好勉强上马。最终,你拼凑出一个看起来(至少从外面看起来)像是房子的玩意。
客户来检查工作,并表示了完全的失望。他选择蓝星建材的原因之一是,使用这种建材搭的房屋相当节省能源;但是,由于你使用了钉子和灰泥,蓝星建材失去了大部分隔离能力。为了补偿热量损失,客户要求你把所有窗玻璃换成绝热玻璃。这时你手足无措!换掉所有玻璃比新建一座房屋所耗时间还长,而且替换因为换玻璃导致的墙体损伤所花时间还不计算在内。当你告诉客户这个情况时,他暴跳如雷!客户选择蓝星建材的另一个理由是,该种建材适应性十足,易于迎合设计改变;但是,由于你用极无效率的手段组装它们,就不得不将它们逐个拆开,换掉其中一大批。
序言回到顶部↑
作为Java开发者和讲师,我撰写了我的第一本书,Beginning Java Objects,表达我关于彻底学习对象技术是掌握一门面向对象编程语言最基础的第一步的狂热信仰。自该书于2000年11月出版以来,我从无数读者处得到了全心全意的认同。
我为B.J.O.所获得的良好反馈而倍感欣悦,所以,当Gray Cornell,Apress的出版人,以及Dominic Shakeshaft,Apress编辑部主任,邀请我撰写本书的C#版本时,我也非常乐意。基本的对象概念是“语言中立”的,这千真万确。你将在本书第一部分学到的对象概念,以及在第二部分学到的对象建模技术,可应用于C#、Java、Visual Basic .NET、C++、Ada或Smalltalk,或者任何尚未发明的面向对象语言。
不过,这本书有双重目的:我们不只是想教给你关于对象和对象建模的概念,还想通过展示如何把这些概念翻译为C#语法,让你正确地开始掌握C#编程语言。这样,Beginning C# Objects诞生了!
由于在我作为软件工程师的职业生涯中,一直关注Java技术,Apress想找一些对C#较有经验的专业人士帮助我把本书从Java“翻译”为C#。Grant Palmer,本书的另一位作者,以及James Huddleston,我的第一技术审校,都是极好的合作对象。我非常高兴能有机会与他们二位合作编写本书。...
—Jacquie Barker
我为B.J.O.所获得的良好反馈而倍感欣悦,所以,当Gray Cornell,Apress的出版人,以及Dominic Shakeshaft,Apress编辑部主任,邀请我撰写本书的C#版本时,我也非常乐意。基本的对象概念是“语言中立”的,这千真万确。你将在本书第一部分学到的对象概念,以及在第二部分学到的对象建模技术,可应用于C#、Java、Visual Basic .NET、C++、Ada或Smalltalk,或者任何尚未发明的面向对象语言。
不过,这本书有双重目的:我们不只是想教给你关于对象和对象建模的概念,还想通过展示如何把这些概念翻译为C#语法,让你正确地开始掌握C#编程语言。这样,Beginning C# Objects诞生了!
由于在我作为软件工程师的职业生涯中,一直关注Java技术,Apress想找一些对C#较有经验的专业人士帮助我把本书从Java“翻译”为C#。Grant Palmer,本书的另一位作者,以及James Huddleston,我的第一技术审校,都是极好的合作对象。我非常高兴能有机会与他们二位合作编写本书。...
—Jacquie Barker
评论交流
共有81人开贴评论 127人参与评论 79人参与打分 查看
评价等级:







发表于:2006-5-12 13:05:00
由于工作性质的关系,我常常需要为公司面试程序员。通常,我会首先要求应聘者做两件事:第一,口头说明虚方法、抽象方法、接口之间的异同和使用场景;第二,脱离IDE,手写一个简单的WinForm程序(例如包括布局整齐的两个文本框和三个按钮、点击按钮弹出消息框显示文本框内容),然后在命令行编译运行。第一题是考面向对象中的继承和多态概念,第二题则是考C# GUI类和关于委托等C#独有特性的基础知识,以及编译、调试技巧。很遗憾,有一大半的应聘者会在这两个简单考题面前败下阵来。尤其是第二个考题,甚至难倒了一些写代码有年头的程序员。为什么?因为这些程序员不具备基本的面向对象知识,更加不理解C#的面向对象实现手法。
这不能完全归咎于中国计算机教育。实际上,在美国或其他发达国家,真正懂得面向对象开发的程序员也并非随处可见。这也是Beginning C# Objects(及其Java原版本Beginning Java Objects)一书成为畅销书、并在Amazon上获得读者极高评价的原因。作者写道:“我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio .NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。”
翻开市面上任何一本你能找到的C#入门书,看看第一章讲什么,第一个范例是怎么实现的。闭上眼睛你都能告诉我,第一章多半是讲怎么安装VS.NET,第一个例子多半是拖一个按钮控件到窗体,双击后输入一段调用消息框的代码。我们的技术作者们,就是这样把读者引入歧途的。IDE(集成开发环境)能极大地提升生产力,但开发应用程序所需的高度专业的知识和技能,却非IDE所能代替。的确,任何一个菜鸟也许都能利用可视化组件拼凑出“看起来还不错”的应用程序,但这样的程序却将带来高昂的扩展和维护成本。
面向对象编程,绝非一些可视化组件那么简单,它涉及人类思维(抽象)模式、建模符号体系、面向对象方法学等诸多方面,对开发者有较高的要求。功夫过关的开发者,不止是技术高手,同时也一定会是有深度的思想者。把需求从自然语言翻译为对象模型,再把对象模型翻译为特定语言代码,殊非易事。最基础的,到底什么是对象?如果你曾经好好思考过这个问题,就会得到很多启发。例如,现实世界中的一张纸,如何抽象为计算世界中的对象?这个对象将具有那些特性(属性和行为),例如尺寸、颜色、质地、折叠、裁减,卷筒……?综合来看,面向对象的要素是什么?把事物抽象为对象的过程,是做思维体操的过程,也是极富挑战性和乐趣的过程。如果你还还不了解对象和面向对象的概念,或想与作者一起就该话题做更深入的思考,那本书第一部分就是最好的入门手册。
我认识一些优秀的程序员朋友,他们在大学时念的专业是建筑。这些朋友对应用程序架构和/或开发流程,有近乎严苛的要求,因为他们深刻地理解,蓝图、材料、工序……对于建造房屋是多么的重要。对象模型的静态方面(域类、数据结构等)在应用程序中开发相当于建材单元,而动态方面(行为、方法等)则是关于建材之间如何组合的指导书,它们合起来,构成一个应用程序的“蓝图”。越是复杂、大型的应用程序,对蓝图的要求就越高;即便是简单的应用,有蓝图也比较有利于维护、升级和扩展。给你一份需求说明书,你将如何分析它、并且组织出正确的对象模型(蓝图)?如果你对此信心不足,建议好好阅读本书第二部分。
这不能完全归咎于中国计算机教育。实际上,在美国或其他发达国家,真正懂得面向对象开发的程序员也并非随处可见。这也是Beginning C# Objects(及其Java原版本Beginning Java Objects)一书成为畅销书、并在Amazon上获得读者极高评价的原因。作者写道:“我们常常与一些软件开发者会面——在工作场所、在客户办公室、在专业会议上,或在大学校园里——这些开发者都尝试去掌握一门类似C#的OO编程语言,他们参加C#培训、阅读关于C#的书,或是安装和使用像Visual Studio .NET这样的C#集成开发环境(IDE)。然而,这是舍本逐末的做法:他们缺乏对什么是对象的基础认识,更为严重的是,缺乏利用对象从头开始构建软件应用程序的知识。”
翻开市面上任何一本你能找到的C#入门书,看看第一章讲什么,第一个范例是怎么实现的。闭上眼睛你都能告诉我,第一章多半是讲怎么安装VS.NET,第一个例子多半是拖一个按钮控件到窗体,双击后输入一段调用消息框的代码。我们的技术作者们,就是这样把读者引入歧途的。IDE(集成开发环境)能极大地提升生产力,但开发应用程序所需的高度专业的知识和技能,却非IDE所能代替。的确,任何一个菜鸟也许都能利用可视化组件拼凑出“看起来还不错”的应用程序,但这样的程序却将带来高昂的扩展和维护成本。
面向对象编程,绝非一些可视化组件那么简单,它涉及人类思维(抽象)模式、建模符号体系、面向对象方法学等诸多方面,对开发者有较高的要求。功夫过关的开发者,不止是技术高手,同时也一定会是有深度的思想者。把需求从自然语言翻译为对象模型,再把对象模型翻译为特定语言代码,殊非易事。最基础的,到底什么是对象?如果你曾经好好思考过这个问题,就会得到很多启发。例如,现实世界中的一张纸,如何抽象为计算世界中的对象?这个对象将具有那些特性(属性和行为),例如尺寸、颜色、质地、折叠、裁减,卷筒……?综合来看,面向对象的要素是什么?把事物抽象为对象的过程,是做思维体操的过程,也是极富挑战性和乐趣的过程。如果你还还不了解对象和面向对象的概念,或想与作者一起就该话题做更深入的思考,那本书第一部分就是最好的入门手册。
我认识一些优秀的程序员朋友,他们在大学时念的专业是建筑。这些朋友对应用程序架构和/或开发流程,有近乎严苛的要求,因为他们深刻地理解,蓝图、材料、工序……对于建造房屋是多么的重要。对象模型的静态方面(域类、数据结构等)在应用程序中开发相当于建材单元,而动态方面(行为、方法等)则是关于建材之间如何组合的指导书,它们合起来,构成一个应用程序的“蓝图”。越是复杂、大型的应用程序,对蓝图的要求就越高;即便是简单的应用,有蓝图也比较有利于维护、升级和扩展。给你一份需求说明书,你将如何分析它、并且组织出正确的对象模型(蓝图)?如果你对此信心不足,建议好好阅读本书第二部分。
评价等级:







发表于:2006-7-29 17:16:00
几年来对于一般的面向对象的方法论,我一直感到很混乱。我读过关于面向对象特征的句法的书,但是这些书之中没有一本书提到面向对象体系的整体框架. 他们通过第一个步骤吸引你( “这是你如何定义一个类别……”,“这是一个类别如何衔接于另一个……”,等等)但是他们没有安排下个合理的学习阶段:比如,如何在你的软件中“做”对象定位?除那明显的缺陷之外,许多书很难阅读,在少量的理论上讲,在干燥的那边......并且有些完全脱水。
这本书非常令我惊讶。毫无疑问,我所需要的都在这样一本书中。这本书以一种新颖的,非正式的风格编写,从解释C#的句法和强大的特性开始,写的很好。从一开始作者把如何设计和执行的实例研究学习与适度地复杂的内部数据结构(一个大学课程学生登记系统)恰当地结合起来。例子十分清楚,有许多好的建议(你应该习惯做的事情)和最重要的是你为什么应该做这些事情(由简短的,容易理解的代码支持)。
将这本书从头读到尾,然后,再读。它十分容易阅读并且不需要花很多时间,特别是当你熟悉很多面向对象的原理。我想在阅读时,你将发现你自己经常会豁然开朗。你将会成为完全胜任的软件设计师,充满信心地,有准备地承接大的项目。
这本书非常令我惊讶。毫无疑问,我所需要的都在这样一本书中。这本书以一种新颖的,非正式的风格编写,从解释C#的句法和强大的特性开始,写的很好。从一开始作者把如何设计和执行的实例研究学习与适度地复杂的内部数据结构(一个大学课程学生登记系统)恰当地结合起来。例子十分清楚,有许多好的建议(你应该习惯做的事情)和最重要的是你为什么应该做这些事情(由简短的,容易理解的代码支持)。
将这本书从头读到尾,然后,再读。它十分容易阅读并且不需要花很多时间,特别是当你熟悉很多面向对象的原理。我想在阅读时,你将发现你自己经常会豁然开朗。你将会成为完全胜任的软件设计师,充满信心地,有准备地承接大的项目。
该作者发表于:2009-12-16 21:56:00
我是2年前在互动购得此书,该书对我的帮助非常大。
虽然在读本书之前,通过学习.NET语言对面向对象有了较多的了解,但这本书才使我对OO的认识有了个转折。作者对OO的三大支柱的讲解和对象间的交互的讲解都通俗易懂,并在把设计转化为C#实现方面也进行了全面的说明。
这本书不是讲解语言的教材(作者也在序言里说明了该点),是关于面向对象分析、设计和实现的入门教程。书中的例子把基本的面向对象项目开发的各个过程都提到了,从词汇表到概念类,到职责分析,到关联分析,到C#代码实现,最后用支架检测,一一清楚明了。为读者进一步学习面向对象打下正确并坚实的基础。如果先学这本教材,然后在近一步学习面向对象的5大原则,GRASP模式,GOF模式,领域模型,甚至面向对象软件工程时就能减少许多概念不清的状况。
该书对我帮助大的另一方面,就是我在学习新知识时候又以该书的例子作为参考。比如我我学习TDD,就用该书的例子作为我的练习参考。
虽然在读本书之前,通过学习.NET语言对面向对象有了较多的了解,但这本书才使我对OO的认识有了个转折。作者对OO的三大支柱的讲解和对象间的交互的讲解都通俗易懂,并在把设计转化为C#实现方面也进行了全面的说明。
这本书不是讲解语言的教材(作者也在序言里说明了该点),是关于面向对象分析、设计和实现的入门教程。书中的例子把基本的面向对象项目开发的各个过程都提到了,从词汇表到概念类,到职责分析,到关联分析,到C#代码实现,最后用支架检测,一一清楚明了。为读者进一步学习面向对象打下正确并坚实的基础。如果先学这本教材,然后在近一步学习面向对象的5大原则,GRASP模式,GOF模式,领域模型,甚至面向对象软件工程时就能减少许多概念不清的状况。
该书对我帮助大的另一方面,就是我在学习新知识时候又以该书的例子作为参考。比如我我学习TDD,就用该书的例子作为我的练习参考。
| 我要写评论 |
| 查看所有评论交流(共81条) |








点击看大图







加载中...
