新进一本书《对象设计:角色、责任和协作》,主讲面向对象的软件设计,很不错,正在看,现在记下一些笔记。
第一章:设计概念:
1·1
-----
这一节主要是讲软件是由对象所组成,而对象个体并不是单一的个体,而是对应相应角色,并与其它对象互动通信以达到软件运作的个体。另一个方面则是对象并不只是对现实世界的模拟,而对象的设计可以是对现实世界不存在的对象,比如说逻辑。
·“软件是由各部份组成,软件的各部份——软件对象——通过发送消息来完成信息和行为上的互动。”:如何发送消息呢?要发送消息,那么就要知道要向谁发送消息,那么如何得知别的对象的存在呢?我这样理解,一种是对象动态生成别的对象,别一种则是把别的对象告诉这个对象,而发送消息的方式就是对别的对象的方法进行调用,让别的对象去实施它的职责,以达到该对象所要完成的行为动作。这里的信息应该是触发信息,比如说一次动作请求,更为确切的就比如要查一个客户的资料,那么就会触发相关的对象进行互动,以得到相关的回答。
·“我们将真实世界中难以理解的对象分解为更小、更易于管理的软件对象,我们还可能创造出真实世界中不存在的新对象。……我们衡量成功的标准确无误是软件满足应用需求的程度,而不是对现实世界的模拟度。”:系统是由众多小对象组成的,那么我们就要分析系统,到底是由哪些对象组成,并且规定这些对象的职责和功能。那么对象就必须是现实世界必然存在的吗?不一定,最简单的数据库存取,我们为了规范化存取过程,我们会设计一个DAO对象,为了显示数据,我们可能要设计一个专门处理显示的对象,而这些都是现实中不存在的。然对象的设计并不是对现实世界的完全模拟,而是针对需求进针对性的模拟,不必要模拟往往会增加系统的复杂性,以至项目最终失败。
·“由于对象具有机械行为,并且能够插接在一起相互工作,因此它们能够组成非常复杂的机器。为了管理这种复杂性,我们将系统行为指派到具有特定角色的对象中。”:亦即把职责和功能分派到各个对象,以简化复杂性。其实按照我的理解,这个设计的过程就是一个更为复杂的过程,相对来说复杂性并没有得到简化。
·
应用系统 = 一组相互作用的对象
对象 = 一个或多个角色的实现
角色 = 一组相关的责任
责任 = 执行一项任务或掌握某种信息的义务
协作 = 对象或角色(或两者)之间的互动
契约 = 描述协作提纲的一种协定
这里对角色和对象有点不明,如若没有学过设计模式的人,会很轻易的认为角色是“类”,而对象就是类的一个实例而已。但是如若有学过设计模式,那么我们就有另一种看法,这里,角色规定的是一组责任,而这里的对象是这个责任的一种实现,而且一个角色可以用多种实现的对象,我们这样看,我们定义了一个接口,指定了要完成这个接口指定责任集的类,那么这些类就是前面所说的对象,这是面向接口编程的要义。那么这本书这里所说的是前面一种情况呢还是后面这种情况呢?不得而知。
---
学习是一种快乐,而且这本书里有很多我一直寻求的正解,希望能解开一直以来的迷惑。
分享到:
相关推荐
可以帮助读者改进设计 提升软件的可靠性和灵活性 此外 本书引导读者针对现实案例进行学习 可以帮助读者理解如何将责任驱动设计的原则和技术运用到现实的软件项目中 ">对象设计常用工具:CRC卡(类别责任协作图 经典...
影印版,清晰完整带标签,设计类pdf
对象设计——角色,职责和协作
面向对象的分析和设计是软件开发过程中的关键步骤,UML(统一建模语言)是实现这一目标的强大工具。本文将深入探讨如何使用UML进行有效的用例设计,以确保软件系统的功能需求得以准确、全面地实现。 首先,用例设计...
- **分析**更关注理想化的、抽象的设计,强调行为和系统结构,而**设计**则更加实际,关注如何实现这些行为和结构,包括性能、对象生命周期和非功能需求。 4. **软件架构**: - 架构是软件系统的骨架,它定义了...
面向对象设计原则是软件工程领域中为了提高代码质量、增强软件系统的可维护性和可扩展性而制定的一系列指导原则。这些原则有助于开发人员更好地理解和应用面向对象编程的核心理念,从而构建出更加灵活、健壮的软件...
- **目的**:本报告旨在提供一个全面且深入的面向对象详细设计框架,为后续的产品开发活动提供明确的技术指导和支持。报告的核心目标是确保所有的设计决策、架构选择以及具体的实现细节能够被清晰地记录下来,以便于...
2. 面向对象设计原则: - SOLID原则:单一职责、开闭原则、里氏替换、接口隔离和依赖倒置。 - 迭代开发:分阶段进行设计和编码,逐步完善系统。 - 模块化设计:将复杂系统分解为相互独立的模块,便于理解和维护。...
面向对象设计模式是软件开发中的重要概念,尤其是在C#这样的面向对象编程语言中。设计模式是一种在特定场景下解决问题的标准化解决方案,它来源于实践中并被广泛验证为有效的。本篇文章将深入探讨C#中面向对象设计...
面向对象设计是软件开发中的一种核心方法,它以对象为中心,通过封装、继承和多态等机制来构建可复用、可维护的软件系统。在本教学内容中,重点是理解面向对象设计的概念和方法,特别是如何利用统一建模语言(UML)...
《设计模式 - 可复用面向对象软件的基础》这本书深入探讨了这一主题,旨在帮助程序员构建更加高效、灵活和可扩展的软件系统。 设计模式的核心思想在于可复用性。在面向对象编程中,设计模式提供了一套通用的解决...
**UML协作图详解** UML(统一建模语言)是一种标准的图形建模语言,...通过以上分析,我们可以看到协作图在软件开发中扮演着重要的角色,它帮助开发者清晰地理解对象间的交互和组织结构,从而提升设计质量并简化沟通。
用例分析是需求分析的关键部分,为后续的类和对象设计提供基础。 3. **设计概述**:这是设计说明书的核心部分,详细阐述了系统的设计策略和架构。简述部分概括了设计的主要思想和原则。系统结构设计则进一步分解为...
在描述设计模式和对象技术时,UML扮演着关键角色: 1. Use Case Diagram(用例图):展示系统的主要参与者和他们与系统的交互,以及系统提供的主要功能。这对于理解系统需求和业务流程非常有用。 2. Class Diagram...
特别是通过宠物救助申请管理系统的设计与实现,不仅提升了技术能力,更重要的是培养了社会责任感和团队协作精神。未来将继续深化理论学习,不断探索新的技术和方法,为解决更多现实世界的问题贡献力量。
面向对象技术引论是软件开发领域中的核心概念,它基于现实世界的抽象,通过对象、类、接口等概念来构建...以上知识点构成了面向对象技术引论的主要框架,理解和掌握这些概念对于进行面向对象的系统设计和开发至关重要。
- **解释:** 这强调了一个良好的面向对象设计应当是低耦合的。类应当通过其公共接口对外提供服务,而不应该了解或依赖于使用它的客户端。 **原则3:** 尽量减少类的协议中的消息。 - **解释:** 类的接口应该简洁...
设计模式的出现与面向对象设计原则密切相关,包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则等。这些原则指导开发者编写更灵活、可扩展的代码,而设计模式是这些原则的具体实现。 五、设计...
面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它强调将数据和处理数据的方法封装在对象中,通过类的概念来实现对象的实例化和操作。面向对象程序设计的原则旨在提高软件的可重用性、可...