《面向对象的分析和设计》课程笔记1

preview
需积分: 0 0 下载量 85 浏览量 更新于2022-08-03 1 收藏 5.62MB PDF 举报
面向对象的分析和设计是软件开发中的核心环节,它涵盖了从需求理解到系统构建的整个过程。本课程笔记主要探讨了这一领域的基本概念和实践方法,特别提到了Kotlin编程语言的应用。 课程介绍了软件开发的历史背景,指出Simula是第一个面向对象的语言,而No Silver bullet的概念强调在软件工程中并不存在一种万能的解决方案。同时,课程鼓励学生阅读《Head First 设计模式》以深化对设计原则的理解,并提及Bjarne Stroustrup作为C++的发明者对于面向对象编程的重要贡献。 在课程评估方面,学习者需要完成5次作业、一个项目,以及网络应用相关的3次演示和报告,考试和课堂参与也占一定比例。这表明课程不仅注重理论知识的学习,也强调实践操作和团队合作。 UML(统一建模语言)是课程中的重要工具,但其在处理大量数据和复杂关系时可能显得力不从心,因其可视化的特性可能导致空间占用过多。UML允许一定程度的主观选择,涵盖了如类图、包图、组件图、组合结构图、部署图等在内的多种静态建模方式。其中,类图是被广泛使用的,它定义了类的可见性(公有、私有、保护、包内可见),以及类之间的各种关系。 行为建模则用于描述系统的动态行为,包括交互图(序列图、通信图、交互概述图、定时图)、协作图和活动图。这些图表能够清晰地描绘出元素间的交互和流程。此外,用例图通过包含、扩展和泛化来描述基础用例的附加功能,而状态机图则用于展现对象生命周期中的状态变化。 在类之间的关系中,依赖是最弱的关系,表现为类A使用类B;关联则描述了类A与类B之间的结构关系,可以是单向或双向,并可以通过数量标注来表达多态性。聚合和组合是关联的加强形式,前者表示类B可以独立存在,后者则表示类B是类A不可分割的一部分。通用化关系(Generalization)相当于Java中的继承,而实现关系(Realization)则对应于Java中的接口实现。 课程还强调了信息隐藏(Information Hiding)的重要性,它是软件设计的关键原则。设计工作虽然初期看似耗时,但长远来看,良好的设计能够提高效率,减少重复工作。设计过程中,抽象起着至关重要的作用,包括数据抽象和过程抽象,遵循DRY(Don't Repeat Yourself)原则,避免代码冗余,以及YAGNI(You Aren't Gonna Need It)原则,避免过早预设功能。 《面向对象的分析和设计》课程深入浅出地介绍了面向对象方法论,包括UML的使用、类与对象的关系、设计原则以及软件开发流程。通过学习,开发者能更好地理解和应用面向对象的思维方式,提升软件开发的质量和效率。