编辑推荐
                                      MATLAB面向对象编程—从入门到设计模式(第2版)
  本书是市面上由MATLAB语言开发工程师撰写的MATLAB编程书籍,凝结了作者多年的科研和工作经验以及对MATLAB语言的深刻理解,旨在推动软件工程的手段在MATLAB科学工程计算项目中的应用,帮助科学家和工程师更有效地解决复杂的科研问题。
  第2版较第1版增加了100多页的内容,包括单元测试系统、高级数据结构、APPDesigner等新版本中才有的内容,更全面,更实用。
  本书上一版部分读者评论如下:
  MATLAB大型程序开发必备,比市面上抄Help的书强太多。这本书主要是讲设计模式的,特别适合有用户界面、存储、计算等多个复杂功能模块的大型程序。用MATLAB的面向对象功能,比用c++之类开发速度能快很多,还能利用积累的MATLAB代码。                 
内容简介
     MATLAB面向对象编程—从入门到设计模式(第2版)
  本书分为4 部分:第1 部分是面向对象编程初级篇,主要介绍MATLAB 面向对象编程的基础知识和语法;第2 部分是面向对象编程中级篇,主要介绍面向对象编程的中高级概念,方便读者在编程中遇到问题时查询;第3 部分是设计模式篇,把面向对象的编程方法应用到实际问题中,并从实际问题中抽象出一般的解决方法,即设计模式;第4 部分是框架篇,主要介绍构建在面向对象和设计模式基础之上的MATLAB测试框架,包括单元测试框架和性能测试框架。
  本书既可作为高等院校MATLAB 课程的辅助读物,也可作为从事科学计算、程序设计等工作的科研人员的参考用书。     
作者简介
     徐潇,MathWorks开发部MATLAB架构C++高级软件工程师。计算物理学博士,研究方向为电子结构计算、密度泛函算法开发;计算机硕士,研究方向为图像处理。2004年,开始使用MATLAB,在科研编程中遇到了开发大型程序难以维护的困难,花了很多时间用于改进程序但效果总不尽如人意。2009年,开始使用MATLAB面向对象编程,发现工程进度被迅速加快,于是萌生了写一本介绍MATLAB面向对象编程书的念头。2011年,在美国取得博士学位之后入职MathWorks,从理科科研工作者和多年的MATLAB爱好者,成为一名MATLAB语言的设计开发和实现的软件工程师。2016年,作者在MATLAB中文论坛开辟了技术专栏,和大家分享新的行业应用技术和MATLAB编程理念,旨在推动软件工程中的现代手段在MATLAB科学工程计算项目中的使用,帮助科学家和工程师们更有效地解决复杂的科研问题。本书凝结了作者多年的科研和工作经验以及对MATLAB语言的理解,希望能对各种规模的科学工程计算项目的MATLAB使用者有所启发。
  李远,本、硕毕业于北方交通大学,在美国的维克弗斯特大学取得物理学博士学位。2014年回国创建北醒(北京)光子科技有限公司,专注于固态激光雷达的研发和生产,产品应用于无人驾驶、无人机和机器人等领域。希望这本《MATLAB面向对象编程——从入门到设计模式(第2版)》能够给工程科学领域的工作者带来方便,尤其对于一些需要长期使用而且不断更新的程序。     
内页插图
          精彩书评
     这书思路很好,要成为MATLAB高手,此书必读。
  ——北京网友,京东网书评  
  实用,通俗易懂,强烈推荐,MATLAB5年以上编程经验,强烈推荐这本书。
  不同于市面上其他一些MATLAB书籍基本靠翻译Help文档,这本书的作者确实花了很多精力介绍自己的经验和理解。在作者通俗易懂的案例下,我对于MATLAB面向对象编程技术有了更加深刻的理解,现在已经开始使用面向对象编程技术,强烈推荐,MATLAB高级编程者使用此书。
  ——广东网友,京东网书评  
  通俗易懂,极具实用价值,读得非常畅快。
  ——北京网友,京东网书评  
  本书非常实用,之前一直使用面向过程编程,总是无法合理调节各项参数。看了面向对象才知道什么是高端优雅编程!
  ——江苏网友,京东网书评  
  这本书我买了,以我仅上过一个学期的c++的水平来看,很适合初学者,思路较官方手册更简洁(对于入门足够)。我个人觉得,后边的模式设计又对工程来说给了很多设计思路上的指导。
  ——小木虫网友,程序语言论坛书评  
  作为一名学生,我一直很喜欢北航出的技术类书籍,不仅质量比较好,内容充实,与其他的书籍的不同就是能从初学者学习的角度来阐述问题,是学习时不可多得的好书。本书也一样,由浅入深,逐层剖析,又不局限于编程和实现细节,加入了很多编程思想和方法,这是一般技术书籍不具备的。
  ——全文试读网友书评  
  书很好,对于习惯了面向过程的编程人,转换思路可以获取事半功倍的效果。特别是本书不仅介绍语法,更注重面向对象的思想。
  ——江苏网友,京东网书评  
  这本书等了很久了。math一发朋友圈。就果断买了。
  ——北京网友,京东网书评  
  这本书的阅读对象主要是初级用户。本人的知识结构比较老了,正式学的语言是Fortran,像C++、Java这些时髦语言了解较少,仅知道“面向对象编程”的说法,不了解其内涵。因项目需要,想采用MATLAB做二次开发软件的界面(对直观的图形显示要求较高),开始自学MATLAB。起初也看了许多入门的书籍,包括张志涌老师的那本,感觉知识点很多,通读起来比较困难。这本书出版后买了一本,作者作为MATLAB的资深应用者,通过通俗的例子(非专业)将面向对象的含义解释得很清楚,看完有一种豁然开朗的感觉,而且感觉上升了一个档次(当然仅是意识上,离实战还差得远)。
  其实面向对象是一种思想,一种解决问题的思路和方法,无论做什么项目都用的到。开展项目前规划好其架构无疑是非常重要的。
  ——小木虫网友,程序语言论坛书评  
  关于MATLAB面向对象编程的非常推荐的一本书。
  ——安徽网友,京东网书评  
  后面的介绍面向对象的功能真的很引人入胜。
  ——全文试读网友书评  
  粗略看了一遍,感觉不错,所选“面馆”的例子生动形象,贯穿始终,将面向对象的思想讲得很透彻,原来许多模棱两可的概念现在清楚了,感谢作者的辛勤劳动!
  ——ilovematlab论坛网友     
目录
   第1部分 面向对象编程初级篇
第1章 面向过程编程和面向对象编程
1.1 什么是面向过程编程
1.2 什么是面向对象编程
1.2.1 什么是对象
1.2.2 什么是类
1.2.3 什么是统一建模语言
1.3 面向过程编程有哪些局限性
1.4 面向对象编程有哪些优点
第2章 MATLAB面向对象编程入门
2.1 如何定义一个类
2.2 如何创建一个对象
2.3 类的属性
2.3.1 如何访问对象的属性
2.3.2 什么是属性的默认值
2.3.3 什么是常量属性
2.3.4 什么是非独立属性
2.3.5 什么是隐藏属性
2.4 类的方法
2.4.1 如何定义类的方法
2.4.2 如何调用类的方法
2.4.3 点调用和函数调用类方法的区别
2.4.4 什么是方法的签名
2.4.5 类、对象、属性和方法之间的关系
2.4.6 如何用disp方法定制对象的显示
2.5 类的构造函数
2.5.1 什么是构造函数
2.5.2 如何在构造函数中给属性赋值
2.5.3 如何让构造函数接受不同数目的参数
2.5.4 什么是默认构造函数
2.5.5 用户一定要定义构造函数吗
2.6 类的继承
2.6.1 什么是继承
2.6.2 为什么子类构造函数需要先调用父类构造函数
2.6.3 在子类方法中如何调用父类同名方法
2.6.4 什么是多态
2.7 类之间的基本关系:继承、组合和聚集
2.7.1 如何判断B能否继承A
2.7.2 企鹅和鸟之间是不是继承关系
2.7.3 如何把类组合起来
2.7.4 什么是组合聚集关系
2.8 Handle类的set和get方法
2.8.1 什么是set方法
2.8.2 什么是get方法
2.9 类的属性和方法的访问权限
2.9.1 什么是public、protected和private权限
2.9.2 如何设置类的属性和方法的访问权限
2.9.3 如何更细粒度地控制访问权限
2.9.4 MATLAB对属性访问的控制与C++和Java有什么不同
2.1 0clear classes到底清除了什么
2.1 1对象根据类定义的改变而自动更新
第3章 MATLAB的句柄类和实体值类
3.1 引子:参数是如何传递到函数空间中去的
3.2 MATLAB的Vlalue类和Handle类
3.2.1 什么是Value类和Handle类
3.2.2 Value类对象和Handle类对象复制有什么区别
3.2.3 Value类对象和Handle类对象赋值有什么区别
3.2.4 Value类对象和Handle类对象当作函数参数有什么区别
3.2.5 Value类对象和Handle类对象作为默认值有什么区别
3.2.6 什么情况下使用Value类或Handle类
3.3 类的析构函数(Destructor)
3.3.1 什么是对象的生存周期
3.3.2 什么是析构函数
3.3.3 对Object使用clear会发生什么
3.3.4 对Object使用delete会发生什么
3.3.5 什么情况下delete方法会被自动调用
3.3.6 出现异常时delete函数如何被调用
3.3.7 什么情况下用户需要自己定义一个delete方法
……
第2部分 面向对象编程中级篇
第3部分 设计模式篇
第4部分 框架篇
附录
参考文献
写在最后      
前言/序言
     本书第1 版的编写从2011年4 月开始,2015 年出版之后作者就开始准备第2 版的新内容,并于2016年11 月完稿。本书从理工科研究人员和学生的角度出发,分4 部分介绍MATLAB 面向对象编程。
  编写本书的难点是,不仅需要介绍面向对象编程的思想和技巧,而且要让非计算机专业的读者领会为什么需要面向对象编程,它对我们的科研工作将有什么样的帮助,并且怎样把面向对象的思想应用到科研程序中。
  本书的特点是:技术实用,重点突出,代码简单易读,内容讲解图文并茂。
  一本技术书籍,纯粹的文字叙述是必要的,因为文字叙述是最精确的;一本介绍编程的书,如果尽量提供例子代码,则能够帮助读者更深刻地理解文字概念;“一张图可胜过千言万语”,简洁明了的图表可以直观形象地表达文意。因此,本书不仅尽量使用最通俗的语言和最形象的图表阐述道理,以最典型且简洁易读的代码作为例程,全面讲解MATLAB 面向对象编程从入门到设计模式,而且尽量让内容的编排更具可读性,以便带给读者更佳的阅读体验。
  除此之外,本书还加入了大量的面向对象编程的统一建模图(Unified Modeling Language),与所提供的代码相互对应,以反映代码中类、对象、属性、方法之间的关系。
  为了平衡各专业的需求,书中所列举的例子大多是“通例”,而不是具体到某个专业领域的专题。但是作者也十分清楚,一本好书是要能够“深入骨髓”地解决读者所遇到的最具体的专业问题,最好有对应的范例供参考。所以,在此也希望读者能够将“面向对象编程”的专业问题的程序以及产生的问题发布在MATLAB 中文论坛本书的版块上。日积月累,论坛上一定会有更多的MATLAB 面向对象编程范例可以参考,也会有更多的科研新人受益其中。
  本书第1 版出版以后,读者在MATLAB 论坛中提了很多问题,根据这些问题我们修订了书中的部分内容,把大家都有疑问的地方解释得更详细一些。另外,本书还针对部分读者工作中的中大型工程计算问题提供了设计上的建议和指导。我们的经验是,只要读者愿意积极的思考,保持好奇心,善于探索,再辅以本书设计思想的指导,完全可以使用MATLAB完成工业级别的工程应用。这也是本书第4 部分——框架篇的由来。
  由于作者水平有限,书中存在的错误和疏漏之处恳请广大读者和同行批评指正。
  本书所有内容仅代表个人观点,与MathWorks 无关。
  作者
  2016 年11 月    
				
 
				
				
					MATLAB面向对象编程:从入门到设计模式(第2版)  这是一本深入探索MATLAB面向对象编程(OOP)精髓的权威指南,专为希望系统掌握OOP概念,并将其娴熟应用于复杂项目设计的工程师、科学家和开发者而著。本书在第一版坚实的基础上,进行了全面的更新和扩展,引入了更多先进的设计模式和实际应用案例,确保您能够紧跟MATLAB OOP发展的最新步伐。  您是否曾面临以下挑战?     代码混乱,难以维护? 随着项目规模的增长,零散的函数和脚本开始变得像一团乱麻,每次修改都可能牵一发而动全身,导致bug频出,开发效率低下。    难以复用和扩展? 辛辛苦苦编写的代码,在新的项目中却无法直接套用,需要花费大量时间进行重写和调整,浪费了宝贵的开发资源。    团队协作效率低下? 缺乏统一的代码组织和设计规范,导致团队成员之间沟通成本高昂,代码风格不一致,集成困难重重。    对面向对象编程概念模糊? 听说过类、对象、继承、多态等概念,但不知如何将其转化为实际的MATLAB代码,或者不理解其在实际开发中的价值。    希望构建更健壮、更灵活的软件系统? 渴望掌握更高级的设计思想,能够应对复杂多变的需求,构建出可维护、可扩展、高性能的MATLAB应用程序。  如果您对以上任何一个问题感到共鸣,那么《MATLAB面向对象编程:从入门到设计模式(第2版)》将是您解决这些问题的最佳选择。  本书内容概述:  本书以循序渐进的方式,带领读者从MATLAB OOP的基础概念出发,逐步深入到高级的设计模式和实践应用。我们不仅关注“是什么”,更强调“为什么”和“怎么做”,让您真正理解OOP的思想精髓,并将其内化为解决实际问题的有力武器。  第一部分:MATLAB面向对象编程基础  本部分将为您打下坚实的MATLAB OOP基础。我们将从最核心的概念讲起,确保您能够清晰地理解并动手实践。     类与对象的本质: 深入剖析类(Class)作为蓝图,对象(Object)作为实例的本质区别。您将学习如何定义自己的类,包括属性(Properties)和方法(Methods),理解它们如何封装数据和行为。    构造函数与析构函数: 掌握对象生命周期的管理,学习如何编写构造函数(Constructor)来初始化对象的状态,以及如何利用析构函数(Destructor)来清理资源。    属性的访问控制: 理解`public`、`private`和`protected`属性的区别,学会如何通过访问控制来保护数据的完整性,并规范外部对属性的访问。    方法重载与多态: 探索MATLAB中实现方法重载(Method Overloading)和多态(Polymorphism)的技术,了解它们如何提高代码的灵活性和通用性。    继承: 学习如何利用继承(Inheritance)来构建类之间的层级关系,实现代码的重用,并创建出更通用、更抽象的基类。    MATLAB中的`handle`类与`value`类: 详细讲解MATLAB中两种主要的类类型——`handle`类和`value`类——的区别与适用场景,以及它们在对象传递和复制时的行为差异。    抽象类与抽象方法: 学习如何定义抽象类(Abstract Class)和抽象方法(Abstract Method),它们如何在设计模式中扮演关键角色,强制子类实现特定接口。    事件与监听器: 掌握MATLAB事件(Events)和监听器(Listeners)机制,学习如何构建响应式系统,让对象能够自主地通知其他对象状态的变化。  第二部分:MATLAB面向对象设计模式  在掌握了基础的OOP概念后,本书将重点介绍几种经典且在MATLAB开发中极其实用的设计模式。这些模式是经过前人实践检验的解决常见软件设计问题的方案,能够极大地提升代码的可维护性、可读性和可扩展性。     创建型模式(Creational Patterns):        单例模式(Singleton): 学习如何确保一个类只有一个实例,并提供一个全局访问点,这在配置管理、日志记录等场景中非常有用。        工厂模式(Factory Method / Abstract Factory): 探索如何通过工厂来解耦对象的创建过程,让客户端代码无需关心具体对象的实例化细节,提高系统的灵活性。        建造者模式(Builder): 学习如何一步步构建复杂对象,将对象的构建过程与表示分离,使同一个构建过程可以创建不同的表示。    结构型模式(Structural Patterns):        适配器模式(Adapter): 了解如何将一个类的接口转换成另一个客户端期望的接口,使原本不兼容的类能够协同工作。        装饰器模式(Decorator): 学习如何动态地给一个对象添加额外的职责,而无需改变其原始结构,实现功能的灵活组合。        代理模式(Proxy): 探索如何提供一个对象的替代品或占位符,以控制对该对象的访问,例如用于延迟加载、访问控制等。    行为型模式(Behavioral Patterns):        观察者模式(Observer): 深入理解当一个对象(主题)的状态发生改变时,所有依赖于它的对象(观察者)都会得到通知并自动更新的机制,这是MATLAB事件机制的强大应用。        策略模式(Strategy): 学习如何定义一系列算法,将它们封装起来,并使它们可以互相替换,让算法的变化独立于使用算法的客户端。        命令模式(Command): 探索如何将一个请求封装为一个对象,从而使您能够用不同的请求来参数化客户端,或对请求进行排队、日志记录和撤销。        模板方法模式(Template Method): 学习如何定义一个算法的骨架,将其中一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些特定步骤。  第三部分:MATLAB OOP高级实践与案例分析  本部分将把理论知识与实际开发相结合,通过丰富的案例,展示如何在真实的MATLAB项目中应用OOP和设计模式,帮助您解决更复杂、更实际的问题。     构建可复用的组件库: 演示如何利用OOP来设计和组织可复用的MATLAB类库,提高开发效率和代码质量。    数据处理与可视化的高级封装: 学习如何设计类来封装复杂的数据处理流程和精美的可视化生成逻辑,使代码更加清晰易懂。    GUI应用程序的面向对象设计: 探讨如何运用OOP思想来构建更健壮、更易于维护的MATLAB GUI应用程序。    并行计算与分布式系统的OOP设计: 介绍如何在并行计算和分布式环境中应用OOP概念,提升代码的结构化和可管理性。    性能优化与代码重构的OOP策略: 提供利用OOP原则来优化MATLAB代码性能和进行系统重构的实用建议。    真实项目案例深度剖析: 通过分析多个真实世界的MATLAB项目,详细讲解在该项目的设计和实现过程中,是如何运用到书中所学的OOP概念和设计模式的。每个案例都将深入到具体代码层面,并解释设计决策背后的Rationale。  本书的特色:     MATLAB原生支持: 内容完全基于MATLAB官方提供的面向对象编程特性,不依赖任何第三方工具箱,确保您学习到的知识是原生、高效的。    实战导向: 强调理论与实践的结合,提供大量可运行的代码示例,让您边学边练,快速掌握。    循序渐进: 从基础概念到高级模式,结构清晰,逻辑严谨,适合不同水平的MATLAB开发者。    设计模式的MATLAB化: 针对MATLAB语言的特点,对经典设计模式进行深入讲解和示例演示,使其更贴合MATLAB开发者的实际需求。    丰富的案例研究: 通过对真实项目案例的剖析,帮助读者理解如何在实际工作中应用所学知识,解决复杂问题。    第2版全面更新: 涵盖MATLAB OOP的最新发展,引入了更多现代化的设计思想和更丰富的应用场景。  谁应该阅读本书?     MATLAB初学者: 希望系统学习MATLAB面向对象编程,为后续更复杂的项目开发打下坚实基础。    MATLAB进阶用户: 熟悉MATLAB基础语法,但希望提升代码质量,学习更高级的编程技巧,如设计模式。    软件工程师/科学家: 需要使用MATLAB进行科学计算、数据分析、算法开发、仿真建模等工作,并希望构建更健壮、可维护、可扩展的软件系统。    项目负责人/团队领导: 希望规范团队的开发流程,提高代码质量和团队协作效率。    有志于提升编程能力的MATLAB开发者: 渴望掌握软件设计的通用原则和最佳实践,并将之应用于MATLAB开发中。  通过阅读《MATLAB面向对象编程:从入门到设计模式(第2版)》,您将能够:     写出结构清晰、易于理解和维护的MATLAB代码。    构建高度可复用的代码模块,节省开发时间。    设计出灵活、可扩展的软件系统,轻松应对需求变化。    掌握应对复杂软件设计挑战的经典方法。    提升团队协作效率,统一代码风格。    真正理解面向对象编程的强大之处,并将其转化为您的核心竞争力。  本书不仅仅是一本技术手册,更是一本助您成为更优秀MATLAB开发者的思想启迪之作。立即开始您的MATLAB OOP之旅,解锁更高级的编程智慧!