作业信息
这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)
这个作业的目标 <写上具体方面>
作业正文 ... 本博客链接
教材学习内容总结
《计算机科学概论》第九章
第九章围绕面向对象设计和高级程序设计语言,阐述了核心概念、语言特性、设计原则以及建模语言相关内容,为理解和实践软件开发中的相关工作提供了重要知识基础。
一、面向对象设计基础
类与对象
类:是一种抽象的数据类型,作为对象的模板来定义对象具有的属性(数据成员)和行为(成员方法),规定了同一类对象共有的特征和操作。
对象:是类的具体实例,基于类的定义创建出来,每个对象都拥有各自独立的属性值,可调用类中定义的方法来实现相应行为。例如,定义 “学生” 类包含姓名、年龄等属性和学习、考试等方法,而具体某个叫 “张三” 的学生就是 “学生” 类的一个对象。
封装
将对象的属性和操作这些属性的方法包装在一起,对外隐藏内部实现细节,只通过特定的接口来访问和操作对象内的数据,以此增强数据安全性、提高代码可维护性,防止外部随意篡改数据。比如在银行账户类中,账户余额属性被封装,外部只能通过存款、取款等规定方法来操作余额。
继承
允许一个类(子类)获取另一个类(父类)的属性和方法,子类可以在继承的基础上添加、修改或重写自己特有的属性和方法,能有效减少代码冗余、提高复用性。例如 “哺乳动物” 类作为父类有呼吸、进食等方法,“猫” 类作为子类继承 “哺乳动物” 类后,还可添加如 “抓老鼠” 的特有方法。
多态
不同类的对象对同一消息(方法调用)能做出不同响应,具体表现为同一个方法名在不同类中有着不同的实现内容,增加了代码灵活性与可扩展性。像 “图形” 类有 “绘制” 方法,“圆形”“矩形” 等子类继承 “图形” 类后重写 “绘制” 方法,各自按自身图形特点来绘制。
二、高级程序设计语言特性
自动内存管理
许多高级语言自带自动内存管理机制,常见的如垃圾回收(Garbage Collection)。它能自动检测并回收程序中不再使用的内存空间,程序员无需手动去分配和释放内存,极大降低了因内存管理不当引发的错误,像 Java、Python 等语言都具备该特性。
异常处理
用于妥善处理程序运行期间出现的意外情况(异常),比如输入错误、运行时错误等。通过相应的语法结构(如 Java 中的 try-catch 语句块),程序可以捕获异常,并按设定的方式进行处理,避免因异常导致程序崩溃,保证程序能较为平稳地运行。
泛型编程
能够编写通用代码,使其适用于多种不同的数据类型,而不是局限于某一特定类型,提升了代码复用程度和可维护性。例如 C++ 中的模板(Templates),可以定义函数模板或类模板,能根据传入的不同类型参数进行相应的操作。
三、面向对象设计原则
单一职责原则
一个类应该只专注于完成一项主要职责,让类的功能更纯粹、内聚性更强,这样在后续维护或修改代码时,因职责明确而更容易操作,避免一个类承载过多功能,一处变动影响多处的情况。
开闭原则
要求软件实体(类、模块、函数等)对扩展是开放的,意味着可以方便地添加新功能;而对修改是封闭的,即尽量不改动已有代码就能实现功能扩展,以此保障软件的稳定性,减少因修改旧代码带来的潜在风险。
里氏替换原则
子类对象必须能够替换掉父类对象,并且替换后程序的行为和逻辑依然正确,强调了继承关系下代码的可替换性和兼容性,确保继承体系的合理与稳定。
四、UML(统一建模语言)相关知识
UML 图类型及作用
类图:核心的 UML 图,用于清晰展现系统中的各类、类的属性、方法以及类与类之间的关系(如关联、继承、聚合等),为系统架构设计和代码实现提供直观的参考蓝图。
对象图:是类图的实例化表达,展示特定时刻系统中实际存在的对象以及它们之间的相互关系,帮助理解系统运行时的具体状态。
用例图:着重描述系统的功能需求,体现用户与系统之间的交互关系,明确系统能为用户做什么,辅助进行需求分析和功能界定。
《C语言程序设计》第七章
第七章主要讲解了函数的概念以及函数的使用,递归函数,函数嵌套,以及变量的作用域生存域及其使用,并介绍了模块化程序设计的思维方法
例如递归函数
int factorial(int n) {
if (n == 0) {
return 1;
}
return n * factorial(n - 1);
}
教材学习中的问题和解决过程(先问 AI)
基于AI的学习
对课上不是很懂的知识点通过AI进行复习