大白话TCG彩票讲清面向对象的分析与设计

  新闻资讯     |      2023-06-20 11:10

  TCG彩票官方网站面向对象的分析与设计,难点不在于分析,而在于设计,因此需要正确把握两项工作之间的工具和衔接方法。通过本篇文章,能让你更加细致的了解面向对象的分析与设计,希望能对你有所帮助。

  这次备考过程,我对面向对象有些补充理解,今天写的内容,会部分推翻之前的内容。但如果你能两篇文章对照着看,相信你可以对比、了解下结构化分析与设计 VS 面向对象分析与设计。

  面向对象技术出现在 1980 年左右,比豆芽君出生的还早TCG彩票。可目前大多数的 2B 产品分析与设计,都是行面向对象之名,行结构化之事。

  开发语言的发展是先有结构化语言 C 语言等,后面才出现了面向对象语言 JAVA 等。

  所以早期的开发人员,虽然现在在用面向对象的语言,但仍然习惯使用结构化设计、开发的思路。

  说实话,很多产品经理都不是计算机专业科班出身,他们可以做好需求调研、原型设计等表层的工作,但基本上无法去做系统设计这类里层的工作。

  这些工作最终还是回到了负责开发管理的开发经理的身上。这群人的问题也就是第一点提到的。

  相信你认真看完今天的内容对常见的 UML 工具不再陌生,也能更好地理解分析与设计的工作如何衔接?这可以让系统分析师 / 产品经理与开发经理更好地分工与协作。

  先看下教材上的一段定义:面向对象的分析是解决【做什么】的问题,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间形成的关系。

  PS : 说实话,如果这段话看不下书去,大学计科的书更看不下去。这样你就大概知道我们的多数教材有多么劝退人了。

  面向对象分析也是基于需求调研进行分析TCG彩票,只是它采用的方法是对现实世界客观存在的对象进行分析。

  举个例子:银行客户去 ATM 机取款,我们分析出来的对象有银行客户、ATM 机等。这种分析方法,采用的是需求单位习惯的方式,大家更容易同频沟通。

  在需求分析阶段,主要用到 UML 工具,包括用例图、类图(概念类)、时序图等。

  用于以分析对象为维度,去找出它希望在系统里能做什么?还以前面的取款为例,银行客户的用例活动包括:登录、查询余额、取款等。这里每一个用例活动,都是用户们耳熟能详的内容。

  之前的文章,我们当时提到产品经理不要参与类的设计,这个可能误导实际开发的人。

  但实际上类还分为概念类、设计类、实现类,为了向后面的开发环节传递你的分析、设计的思想,产品经理们还是有必要再往前走一、两步。

  每个用例图对应一个概念类图。概念类图通过属性和方法进一步描述它的信息和行为。

  src=先分析出概念类有银行客户、银行卡、ATM 机、凭条等(如何分析?这里提供一个简单办法TCG彩票,先从用例图表的文字描述找出名词和名词短语,再分析它是不是一个独立的对象)。

  再以银行客户这个概念类为例,我们分析出它的属性含:姓名、性别TCG彩票、身份证号、银行卡号等;方法含:插入银行卡、退出银行卡。

  如果你看过之前的推文,豆芽君在用例图后是讲了 ER 图,这是一种结构化分析的方法。ER 图就是我们上一篇讲到的数据流程图的进一步细化,它同样只保留了数据有关的内容。

  而面向对象分析采用的概念类图,它相对来说更加具象、易理解。从上面取款的事件的概念类图,我们看到的信息有业务领域的具体对象(银行客户、ATM 机等),对象间的关系(如银行客户和 ATM 机维修人员都是 ATM 机使用者),对象所含的信息和能执行的行为。

  类图比 ER 图提供了更丰富的信息。类图同时呈现信息与行为,而 ER 图只能呈现数据信息,无法体现行为。

  前面讲到的类图是一种静态模型图,无法反映对象间的交互过程,而时序图等动态模型可以补充说明消息传递的次序TCG彩票。

  这就像我们做菜时,除了需要有食材、调味料,还得知道每样食材的蒸煮炒炸的顺序,最终才可能做出一道美味的佳肴。时序图的具体内容,在去年 7 月的推文已讲到,不再赘述。

  注意:很多 2B 产品经理是跳过了类图 /ER 图的分析环节TCG彩票,直接进入了原型图设计。这样其实只解决了前端开发的设计问题,而对后端开发没有起到实质性的指导作用。这也会给后端开发人员带来二次的分析与设计工作。

  到了这里,我们讲完面向对象分析的主要工作与工具。我们一起来稍微做下总结:面向对象区别于结构化的特点是,它以业务领域的对象为调研对象,更容易与需求方讨论需求;在分析阶段依然保持以领域对象为分析对象,分析对象与调研对象可对应。

  相比之下,结构化分析一味强调数据与数据流,这种产出物一般只有 IT 同行可理解,难以与需求单位沟通。

  同样先看教材的一段定义:系统设计解决【怎么做】的问题,又称为物理设计阶段。

  根据系统规格说明书规定的功能要求,考虑实际条件,具体设计实现逻辑的技术方案,为下一步系统开发工作做准备。

  从这段对系统设计阶段的目标描述,我们可以看出分析与设计应该是相互紧密衔接的。接下来,我们要讲的重点也将放在两者的衔接上。

  前面分析阶段的概念类图,是设计阶段的设计类图的工作依据。设计类图进一步分为实体类、控制类、边界类。设计类是直接可用于后面的程序设计的,我们这里不会讲如何去设计这些类。

  概念类图是以业务领域的对象为维度来描述系统的类,而设计类图则进一步拆分出实体类、控制类、边界类,并定义了类之间的 6 种关系(关联、依赖、泛化、聚合、组合TCG彩票、实现)。

  我猜大部分非科班的人是看不下去的,这里豆芽君建议设计类的工作,还是交给开发经理这类岗位的人TCG彩票。

  对象持久化:面向对象既然是以对象为维度,而不像结构化以数据为维度。但是它们的背后都还是要用到数据库,所以面向对象就多了一个如何与数据库进行对象 / 关系映射的过程。

  说实话,之前豆芽君也一直犯程序与数据库是绑定在一起的错。后面和一些 java 开发的同学一聊TCG彩票,才发现很多 java 开发人员并不需要懂数据库,也可以做好后端开发。

  原来在 java 开发中,可以由 DBA 这类角色专门负责数据库设计与开发TCG彩票,java 开发人员只需做好对象 / 关系的映射(ORM)就可以。

  好了,关于面向对象设计的工具就讲到这。最后我们再补充说下面向对象分析与设计的衔接。

  从分工来看,面向对象分析主要由系统分析师 / 产品经理来完成,面向对象设计建议还是交由开发经理类的岗位来完成。

  从工作内容来看,面向对象分析的产出物应该可以直接用于面向对象设计,不应该让开发经理们再进行二次的分析工作。

  从方法差异来看,面向对象相比结构化方法,在调研、分析环节更容易邀请需求单位参与,在设计、开发阶段也更容易修改和维护代码。

  以上。希望不会写代码的你,看完今天的内容,能更好地与会写代码的同学撕逼。