最初看面向对象方面的知识是因为看到很多不好的代码,包括我自己的,然后看《重构》,《HeadFirst面向对象开发》,《设计模式》,看了部分《敏捷开发:原则,实践,模式》,然后是《设计原本》,《建筑的永恒之道》,coolshell上的关于面向对象设计的批判。
重构——在函数级别提高了我的认识
然后想看看流行的设计模式,据说掌握了这个就能设计出好程序,很牛逼。然后找了些资源,
发现这些讲的是各种设计模式,是什么,在什么情况下用。但看不懂,因为完全找不出应用场景,也不知道为什么要用。浆糊中
后来我想应该先看基础,于是看到head first系列的面向对象设计,感觉思想是对的。
第一步找出需求,不单是客户提出的,还有隐含的。
第二步设计出基本的实现
第三步用各种设计原则和设计模式来做。
只是在分析阶段的例子,比如创建什么对象让我有点不太好理解,就是找名词,确定类,再建立联系。有点反直觉。不太适应,然后放下了。
后来找到了敏捷那本书,很早就买了,但之前看不懂,再看一下,发现设计模式的背后是设计原则,如DRY,IOC等
再看到coolshell上的面向对象的反讽例子,感觉到设计原则和设计模式,就是为了让程序更易读,更易修改。如果没有变化或复杂性,就不必要引入复杂性的东西。设计模式本身是有些复杂度的,如果能准确预知未来的变化或当前已经存在复杂性,那就用设计模式分离变化。如果当前情况很简单,就不用那么复杂了。平衡之道。
设计原本和建筑的永恒之道还不太懂
相关推荐
面向对象设计是在分析的基础上进行的,它关注于如何将需求转化为软件系统的内部结构。设计阶段的输出通常包括更详细的类图、活动图、序列图、状态图和组件图等UML模型。设计过程还会确定系统组件的接口和协作方式。 ...
面向对象设计理论是软件...通过学习这两个文档,开发者可以深入理解面向对象设计的核心理念,提升软件开发的质量和效率。在实际项目中,结合这些理论知识,能更好地应对复杂的需求变化,构建出高效、可维护的软件系统。
4. 继承:继承是面向对象设计中的一个核心机制,它允许创建一个新类来继承现有类的属性和方法。这使得软件设计可以复用和扩展。 5. UML(统一建模语言):UML是一种标准的图形化建模语言,用于软件系统的设计和文档...
面向对象设计UML实践是软件工程领域中一个重要的学习主题,尤其对于理解复杂系统建模至关重要。本书的第二版深入探讨了如何运用统一建模语言(UML)进行面向对象设计,提供了丰富的实例和课后习题以巩固理论知识。...
面向对象设计原则更关注如何在设计阶段就考虑到系统的可变性和扩展性。例如,对于计算员工工资的问题,传统的结构化做法可能会导致大量重复代码,而采用面向对象设计,我们可以通过创建不同的员工类并让它们继承自...
3. **设计阶段**:在此阶段,作者们探讨了如何根据分析阶段得出的结果来设计软件架构,以及如何确保设计的可扩展性和灵活性。 4. **统一建模语言(UML)**:UML是一种用于可视化描述面向对象软件系统的设计工具,书中...
课程设计的要求和规定是为了确保学生在学习过程中能够正确理解和掌握面向对象程序设计和 Java 编程语言。课程设计的要求和规定包括完成指定的课程设计题目、遵守课程设计的纪律、提交相关的资料等。 知识点4:课程...
面向对象分析与设计(OOA&D)课程设计在实际应用中通常是针对具体项目来进行的,例如本案例中...通过利用UML的图形表示法和遵循面向对象设计原则,可以提高软件设计的效率和有效性,为后续的开发和维护工作打下坚实基础。
类的属性、操作、继承、多态性等概念也会被深入探讨,这些是理解面向对象设计的基础。 3. **关系**:探讨关联、聚合和组合之间的区别,以及它们如何表示对象之间的关系。这部分还会讨论依赖关系,它是理解系统动态...
面向对象分析与设计是软件工程领域的一个重要分支,它强调以对象作为基本单元来构建软件系统,从而使得软件具有更好的模块化、复用性和可维护性。在软件开发的实践中,面向对象的思想和技术已成为主流。Grady Booch...
接着,在面向对象设计阶段,我们可以进一步细化这些对象之间的关系,比如用户和书籍之间可能存在借阅关系,管理员则负责管理用户和书籍。 通过这样的分析与设计过程,不仅能够帮助我们更好地理解系统的需求,还能...
它提供了多种功能,包括创建类图、对象图、序列图、协作图、状态图、活动图等,这些都是面向对象设计的关键元素。通过这些图表,开发者可以直观地表示出类的结构、对象之间的关系、系统的行为和流程,从而更好地理解...
- 面向对象设计应始于对问题域的理解,通过对象和关系的识别来构建模型。 4. **面向对象分析(OOA,Chap 4 - Object Oriented Analysis.ppt)** - OOA关注于识别和定义系统的需求,包括用例、类、关联、属性和...
OOA的主要任务是创建一个反映问题域的模型,为后续的面向对象设计(OOD)和实现(OOP)提供基础。一个好的OOA模型应该具备以下特点: - **直观性**:能够直观地模拟问题域,便于需求的表达和理解。 - **稳定性**:...