包邮易学 C
1星价
¥22.1
(4.9折)
2星价¥22.1
定价¥45.0
温馨提示:5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>
图文详情
- ISBN:9787115211989
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16
- 页数:410 页
- 出版时间:2009-10-01
- 条形码:9787115211989 ; 978-7-115-21198-9
本书特色
《易学C#》:提供全书示例代码下载每多学一点知识,就少写一行代码《易学C#》循序渐进地向读者阐述了C#语言的编程基础知识与高级特性。以及如何利用UML图形来进行面向对象分析与设计。从而帮助读者在较短的时间内获得对C#与UML全面深刻的理解与认识,为读者以后的软件设计生涯打下坚实的基础。
内容简介
C#语言是微软公司近几年推出的一种新型的完全面向对象的程序设计语言,到目前为止,它已经成为了应用软件开发的主流语言,尤其是在Web开发方面更是无与伦比。UML则是面向对象软件的标准化建模语言,无论是企业信息系统、基于Web的分布式系统还是实时系统等都适合于使用UML来进行建模分析。本书正是C#与UML融合的产物,书中不仅向读者阐述了C#语言的编程基础知识与高级特性,而且还阐述了如何利用UML图形来进行面向对象的分析与设计。本书旨在帮助读者在较短的时间里对C#语言与UML得到全面深刻的理解与认识,从而使读者将C#与UML融合到一起,为读者以后的软件设计生涯打下坚实的基础。另外,本书还配备了许多经典的习题,这些习题全部是从各大软件公司的面试题中所提取的。认真地练习这些习题,能够让你在以后的职业面试中信心与成功率倍增。
本书文字简洁生动,并辅之以大量的图表和代码示例,对于希望学习C#语言的学员具有自学指导的作用。本书既可作为大专、本科院校相关专业的教材,又可作为软件开发人员的技术参考手册。
目录
预备课:学习从这里开始 11.软件=程序+文档 12.程序起什么作用 23.为何要面向对象 24.什么是UML 35..NET与C# 4谈微软公司的.NET战略 4C#的产生与特点 5C#与.NET的关系 66.开启C#的钥匙——兴趣与正确的学习方法 77.习题练习 8第1部分 C#与UML基础第1章 开篇经典——“Hello,World” 111.1 Hello,World 111.2 程序的结构分析 131.2.1 命名空间 131.2.2 类和类的方法 131.2.3 程序的输入输出 141.3 程序的执行起点——Main函数 141.4 控制台的输入和输出 141.4.1 控制台的输入:Read和ReadLine 151.4.2 控制台的输出:Write和WriteLine 151.5 程序的注释 151.5.1 模块(类)注释规范 161.5.2 类属性注释规范 161.5.3 方法注释规范 161.5.4 代码间注释规范 161.6 习题练习 17第2章 数据类型和表达式 182.1 数据类型简介 182.2 值类型 192.2.1 简单类型 192.2.2 结构类型 222.2.3 枚举类型 232.3 引用类型 242.4 null和void 242.4.1 null 242.4.2 void 242.5 变量和常量 252.5.1 变量 252.5.2 常量 292.6 运算处理 292.6.1 算术运算 302.6.2 赋值运算 322.6.3 关系运算 322.6.4 逻辑运算 332.6.5 位运算 332.6.6 条件运算 352.6.7 其他运算符 362.6.8 运算符的优先级别 362.7 指针类型 372.7.1 指针的定义与声明 372.7.2 指针的内容 372.7.3 指针的运算 382.7.4 指针的使用 402.8 习题练习 41第3章 数据类型转换 433.1 装箱和拆箱 433.1.1 装箱(Boxing) 433.1.2 拆箱(Unboxing) 443.2 隐式数据类型转换 453.2.1 隐式数值类型转换 453.2.2 隐式枚举类型转换 463.2.3 隐式引用类型转换 473.3 显式数据类型转换 483.3.1 显式数值类型转换 483.3.2 显式枚举类型转换 503.3.3 显式引用类型转换 503.4 习题练习 51第4章 计算控制——结构化程序设计 534.1 如果——条件语句 534.1.1 如果,那么——if 534.1.2 如果,那么;否则——if,else 554.1.3 如果中的如果——嵌套if,else 564.1.4 如果,那么;否则的另一种表达方式——?: 574.1.5 多条件选择——switch 584.2 会转圈的语句——循环语句 604.2.1 for循环 604.2.2 while循环 634.2.3 do/while循环 654.2.4 foreach循环 664.3 跳出循环——跳转语句 674.3.1 使用break和continue语句的区别 674.3.2 饱受争议的goto语句 684.3.3 return语句的使用 704.4 C#预处理器指令 704.4.1 使用预处理指令——#define和#undef 704.4.2 条件编译——#if、#elif、#else和#endif 714.4.3 警告与错误信息——#warning和# error 724.4.4 可视编辑器提示——#region和#endregion 724.4.5 指定行号——#line 724.4.6 关闭警告消息——#pragma 724.5 程序员加油站——递归法 734.5.1 递归法概述 734.5.2 递归的精髓——求解汉诺塔问题 734.6 习题练习 75第5章 字符串、数组与集合 775.1 理解字符串 775.1.1 字符串类型定义 775.1.2 字符串类型应用实例 795.1.3 string与String的区别 825.2 存储盒子的“仓库”——数组 825.2.1 数组的定义 825.2.2 二维数组 855.2.3 多维数组和交错数组 875.3 程序员加油站——数组的应用 885.3.1 把数组作为参数传递给方法 885.3.2 使用数组模拟栈操作 895.3.3 数据的排序与冒泡排序算法 915.4 一个与数组相似的新类型——集合 925.4.1 集合的概述 935.4.2 集合类的使用实例 935.4.3 集合与数组的区别 975.5 习题练习 97第6章 C#程序员UML建模基础 1006.1 为什么要建模 1006.2 UML概述 1016.3 用例建模 1016.3.1 用例图 1016.3.2 用例描述 1026.3.3 用例建模实例 1026.4 类图 1036.4.1 绘制类图 1046.4.2 类图中的各种关系 1056.5 活动图 1076.6 状态图 1076.7 序列图 1086.8 习题练习 109第2部分 C#与面向对象程序设计第7章 初识面向对象程序设计 1137.1 万物皆为对象 1137.2 初识封装 1147.3 类和对象 1147.3.1 类的声明 1147.3.2 类的成员 1157.3.3 类的成员的可见性 1167.3.4 对象的创建与使用 1177.3.5 静态成员与非静态成员 1187.3.6 this关键字 1187.4 对象的创建与销毁 1197.4.1 构造函数 1207.4.2 静态构造函数 1227.4.3 析构函数 1247.5 类的执行工具——方法 1247.5.1 方法的声明 1257.5.2 方法的返回值 1257.5.3 方法的参数 1267.5.4 方法的重载 1277.6 域、属性和索引指示器 1287.6.1 域 1287.6.2 属性 1317.6.3 索引指示器 1337.7 再论封装 1347.7.1 用传统的读、写方法封装 1347.7.2 用属性来实现封装 1357.8 命名空间 1357.8.1 命名空间的声明 1367.8.2 成员与类型声明 1377.8.3 使用指示符 1377.9 习题练习 140第8章 复用现有的代码——继承与多重继承 1428.1 继承的意义 1428.1.1 继承的引入 1428.1.2 为何要使用继承 1438.2 用UML图描述继承 1448.3 父与子——类的继承 1458.3.1 基类与派生类 1458.3.2 继承中的构造函数 1518.3.3 访问和隐藏基类方法 1528.3.4 虚方法与重写方法 1538.3.5 抽象类和抽象方法 1548.3.6 密封类和密封方法 1558.4 继承与访问修饰符 1568.4.1 可见性访问修饰符 1568.4.2 其他访问修饰符 1578.5 双亲与子——多重继承 1578.5.1 水陆两用汽车的类图设计 1578.5.2 用接口实现多重继承 1588.5.3 用扩展方法实现多重继承 1608.6 C#的继承规则 1618.7 再论继承与封装的关系 1618.8 程序员加油站——又论冒泡排序算法 1628.9 习题练习 166第9章 改写对象的行为——多态 1699.1 笔与其派生类的写方法 1699.2 多态的类型 1709.2.1 编译时的多态性 1709.2.2 运行时的多态性 1709.3 多态的实现 1729.3.1 通过接口实现的多态性 1729.3.2 通过继承实现的多态性 1749.3.3 通过抽象类实现的多态性 1749.4 程序员加油站——经典的图形游戏 1769.4.1 类图分析 1769.4.2 代码实现与分析 1779.4.3 游戏的客户端 1819.5 习题练习 183第10章 多功能的运算符——运算符重载 18410.1 引入运算符重载 18410.2 运算符重载的规则 18510.3 一元运算符的重载 18610.4 二元运算符的重载 18810.5 比较运算符的重载 19010.6 习题练习 191第11章 软件模块之间的协定——接口 19211.1 打印机程序的困惑 19211.2 接口的意义 19311.2.1 软件的多层设计思考 19311.2.2 组件与接口 19311.2.3 组件化程序设计思考 19411.3 接口的定义 19511.4 接口的成员 19511.5 在UML中对接口的描述 19711.6 接口的继承与多重继承 19811.7 接口成员访问 19911.8 接口的实现 20011.8.1 在类中实现接口 20111.8.2 显式实现接口成员 20311.8.3 显式与隐式实现接口成员的区别 20511.8.4 接口映射 20511.8.5 接口的重实现 20911.9 抽象类与接口 21011.9.1 在抽象类中实现接口 21011.9.2 抽象与接口的区别 21011.9.3 抽象与接口的使用 21111.10 接口作为返回值与参数 21111.11 程序员加油站——打印机程序的设计 21411.12 习题练习 216第12章 面向对象设计原则与UML描述 21812.1 腐化的软件设计 21812.1.1 设计的臭味 21812.1.2 软件为何会腐化 22012.2 简单就是美——单一职责原则(SRP) 22012.2.1 从Communication类的设计来看待单一职责原则 22112.2.2 分离耦合的职责 22212.3 修改封闭扩展开放——开放—封闭原则(OCP) 22212.3.1 开封—封闭原则概述 22212.3.2 银行储蓄业务的分析与设计 22312.4 子类型替换基类型——Liskov替换原则(LSP) 22612.4.1 Liskov替换原则概述 22612.4.2 违反Liskov替换原则的场景 22612.4.3 用提取公共部分的方法来代替继承 22812.5 依赖于抽象——依赖倒置原则(DIP) 22912.5.1 依赖倒置原则概述 22912.5.2 再论银行储蓄业务的设计 23012.6 分离接口——接口隔离原则(ISP) 23212.6.1 接口污染 23212.6.2 分离客户就是分离接口 23412.6.3 使用委托分离接口 23512.6.4 使用多重继承分离接口 23512.7 习题练习 236第3部分 C#语言高级特性第13章 程序的体检医生——异常处理 23913.1 异常处理概述 23913.2 C#异常处理类 24013.3 try、catch和finally 24113.3.1 try和catch的用法 24113.3.2 finally的用法 24413.4 把异常传给调用者 24513.4.1 调用者处理 24513.4.2 抛出异常 24513.4.3 重发异常 24613.4.4 添加异常信息 24713.5 用户自定义异常 24813.5.1 定义自己的异常类 24813.5.2 从自己的代码中抛出异常 24813.6 细说异常使用 24913.6.1 何时考虑抛出异常 24913.6.2 在异常处理程序中做什么 24913.6.3 在何处放置异常处理程序 25013.6.4 异常与返回错误代码的对比 25013.6.5 永远不要预测bug造成的后果能够被异常处理程序所捕获 25013.7 习题练习 250第14章 房屋中介与租房——委托与事件 25214.1 从房屋中介与租房看待委托与事件 25214.2 又论“Hello,World” 25314.3 委托的概述 25414.3.1 委托的声明 25414.3.2 将方法绑定到委托 25614.4 事件 25714.4.1 引入事件 25814.4.2 声明事件 26014.4.3 使用事件 26014.4.4 访问器形式的事件 26114.4.5 在接口中声明事件 26314.5 多播委托 26414.6 委托中的协变和逆变 26614.7 匿名方法 26814.7.1 什么是匿名方法 26814.7.2 匿名方法的参数与返回值 26814.7.3 匿名方法块规则 26914.7.4 匿名方法的外部变量 26914.8 习题练习 272第15章 程序集与反射 27415.1 再论“Hello, World” 27415.1.1 创建“Hello, World”的业务逻辑类库 27415.1.2 详解C#程序集版本控制文件 27515.1.3 创建“Hello, World”应用层 27715.2 反射的概述 27815.2.1 什么是反射 27815.2.2 反射的作用 27915.3 反射的实际使用 28015.3.1 反射AppDomain的程序集 28015.3.2 利用反射获取类型信息 28115.3.3 通过反射创建类型的实例 28215.3.4 利用反射动态调用类成员 28415.4 反射的性能 28615.5 习题练习 286第16章 序列化与反序列化 28716.1 序列化的概述 28716.1.1 从权限系统来看待序列化和反序列化 28716.1.2 序列化的作用 28816.1.3 为序列化配置对象 28916.2 序列化和反序列化方式 29016.3 使用BinaryFormatter进行序列化 29116.4 使用SoapFormatter进行序列化 29316.5 使用XmlSerializer进行序列化 29516.6 自定义序列化 29716.6.1 使用ISerializable自定义序列化 29816.6.2 使用特性自定义序列化 30116.7 序列化过程中的步骤 30216.8 序列化准则 30316.9 习题练习 303第17章 项目小组和程序员——进程和线程 30417.1 进程与线程概述 30417.1.1 从打印工资报表看待进程与线程 30417.1.2 进程与线程的关系 30617.2 .NET平台下与进程进行交互 30617.2.1 Process类简介 30617.2.2 简单的进程操作实例 30717.3 初识多线程操作 31017.3.1 System.Threading概述 31017.3.2 一个简单的线程例子 31217.3.3 ThreadStart的使用 31317.3.4 线程的并行操作 31417.3.5 终止线程 31617.3.6 前台线程与后台线程 31817.3.7 线程的优先级 31917.4 线程中存在的问题 32117.4.1 竞争条件 32117.4.2 锁定 32317.5 线程同步 32517.5.1 没有同步的情况 32517.5.2 lock语句 32617.5.3 Monitor类 32817.5.4 使用lock与Monitor来解决生产者与消费者的问题 33017.5.5 Events类 33317.5.6 互斥对象 33617.6 多线程的自动管理 33617.6.1 线程池 33717.6.2 定时器 34017.7 习题练习 343第18章 万能模板——泛型 34518.1 泛型的引入 34518.1.1 为什么要使用泛型 34518.1.2 创建和使用泛型 34718.1.3 命名规则 34818.2 泛型类 34818.2.1 声明泛型类 34818.2.2 类型参数 34918.2.3 泛型类的继承 35018.2.4 泛型类的成员 35018.2.5 泛型类中的静态变量 35118.2.6 泛型类中的静态构造函数 35118.2.7 访问受保护的成员 35218.2.8 泛型类中的方法重载 35218.2.9 创建泛型类的注意事项 35318.3 泛型接口 35318.3.1 实现接口的惟一性 35318.3.2 显式接口成员实现 35418.4 泛型委托 35518.5 泛型方法 35518.5.1 创建和使用泛型方法 35518.5.2 abstract、virtual和override泛型方法 35618.5.3 泛型静态方法 35718.5.4 类型实参推断 35818.6 参数约束 35818.7 习题练习 360第19章 C# 3.0语言新特性 36419.1 隐式类型 36419.1.1 隐式类型局部变量的声明与使用 36419.1.2 隐式类型数组 36519.1.3 隐式类型局部变量的使用限制 36619.1.4 隐式类型局部变量的使用注意事项 36619.2 匿名类型 36719.2.1 引入匿名类型 36719.2.2 创建和使用匿名类型 36819.2.3 匿名类型与隐式类型变量的区别 36919.3 扩展方法 36919.3.1 定义扩展方法 36919.3.2 导入扩展方法 37019.3.3 调用扩展方法 37019.3.4 扩展方法使用注意事项 37219.4 对象和集合初始化器 37219.4.1 引入对象初始化器 37219.4.2 在初始化语法中调用自定义构造函数 37419.4.3 初始化内部类型 37519.4.4 集合初始化器 37619.5 Lambda表达式 37719.5.1 创建Lambda表达式 37719.5.2 Lambda表达式转换 37819.5.3 类型推断 37919.5.4 重载抉择 38119.5.5 表达式树 38119.6 习题练习 382第4部分 基于UML的面向对象分析与设计过程第20章 基于UML的面向对象分析与设计过程 38420.1 细说需求分析 38420.1.1 需求分析流程 38520.1.2 基于Web通用框架的需求描述 38720.2 构造业务用例图 38720.2.1 确定系统的参与者 38720.2.2 确定系统的业务用例 38820.2.3 绘制业务用例图 38920.3 使用活动图来描述业务用例 38920.3.1 绘制操作子系统插件菜单的活动图 38920.3.2 绘制管理用户权限的活动图 39020.4 构造系统用例图 39020.5 用例规约 39120.5.1 基本流 39220.5.2 备选流 39320.5.3 特殊需求 39320.5.4 前置条件与后置条件 39320.5.5 描述用例规约实例 39320.6 绘制业务领域类图 39620.7 系统架构设计 39720.8 数据库设计 39820.8.1 数据库表设计 39820.8.2 表关系设计 39920.9 总体类图设计 40020.10 模块详细设计与编码 40120.10.1 数据库通用操作组件:IBHDataAccess 40120.10.2 用户权限管理接口:IBHPowerMangageInterface 40220.10.3 用户权限管理业务逻辑操作层:IBHPowerManageClass 40420.10.4 用户权限管理页面表示层:IBHPowerManage 40520.10.5 Web通用框架:IBHWebFramework 40620.11 Web通用框架的部署与测试 40820.12 习题练习 410
展开全部
节选
《易学C#》正是C#与UML融合的产物,书中不仅向读者阐述了C#语言的编程基础知识与高级特性,而且还阐述了如何利用UML图形来进行面向对象的分析与设计。《易学C#》旨在帮助读者在较短的时间里对C#语言与UML得到全面深刻的理解与认识,从而使读者将C#与UML融合到一起,为读者以后的软件设计生涯打下坚实的基础。另外,《易学C#》还配备了许多经典的习题,这些习题全部是从各大软件公司的面试题中所提取的。认真地练习这些习题,能够让你在以后的职业面试中信心与成功率倍增。C#语言是微软公司近几年推出的一种新型的完全面向对象的程序设计语言,到目前为止,它已经成为了应用软件开发的主流语言,尤其是在Web开发方面更是无与伦比。UML则是面向对象软件的标准化建模语言,无论是企业信息系统、基于Web的分布式系统还是实时系统等都适合于使用UML来进行建模分析。《易学C#》文字简洁生动,并辅之以大量的图表和代码示例,对于希望学习C#语言的学员具有自学指导的作用。《易学C#》既可作为大专、本科院校相关专业的教材,又可作为软件开发人员的技术参考手册。
作者简介
马伟,微软公司*有影响力的开发者之一,软件研发工程师与系统分析师。在其以往的程序岁月中,曾经负责过远程视频监控系统、视频营销平台、企业管理应用系统、南方电网四分统计平台等项目的架构设计与开发。擅长系统分析、架构设计、数据库设计与实现、设计模式、SOA等技术,尤其对C#与UML、C++与UML的架构设计与编程有独到的见解。
预估到手价 ×
预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。
确定