2024-2025-1 20241403 《计算机基础与程序设计》第八周学习总结
学期(如2024-2025-1) 学号(如:20241403) 《计算机基础与程序设计》第八周学习总结
作业信息
这个作业属于哪个课程 | <班级的链接>(如2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(如2024-2025-1计算机基础与程序设计第八周作业) |
这个作业的目标 | 功能设计与面向对象设计 面向对象设计过程 面向对象语言三要素 汇编、编译、解释、执行 |
作业正文 | .https://www.cnblogs.com/chenqiqi/p/18550808 |
教材学习内容总结
1. 功能设计与面向对象设计
• 功能设计侧重于将软件系统看作是一系列功能的组合,重点关注系统要实现的功能模块以及它们之间的信息流动。通常以功能模块为中心进行程序结构的构建,例如一个简单的计算器程序,功能设计会着重实现加、减、乘、除等运算功能的代码模块及其交互。
• 面向对象设计则是围绕对象展开,把现实世界中的事物抽象为对象。对象包含数据(属性)和行为(方法)。比如在一个图形绘制系统中,会有圆形、矩形等对象,每个对象有自己的属性(如圆形的半径、矩形的长和宽)和方法(如计算面积、绘制图形)。它强调对象之间的交互来完成系统功能,具有封装、继承、多态等特性,更符合人类对现实世界的认知方式,使软件系统易于理解、维护和扩展。
2. 面向对象设计过程
• 首先是识别对象,从问题域中找出需要抽象为对象的实体。例如开发一个图书馆管理系统,书籍、读者、管理员都可以抽象为对象。
• 然后定义对象的属性和方法。以书籍对象为例,属性可能包括书名、作者、出版社、馆藏数量等,方法可能有借出、归还、查询库存等。
• 接着确定对象之间的关系,如继承关系(在图书馆系统中,可能有普通书籍和杂志,杂志可以继承书籍的部分属性和方法,并添加自己特有的属性和方法)、关联关系(读者和书籍之间存在借阅关联)等。
• 最后进行细化和完善,包括对对象的访问控制(封装)、异常处理等细节部分,以确保系统的健壮性。
3. 面向对象语言三要素
• 封装:把对象的属性和方法结合成一个独立的单位,并且尽可能隐藏对象的内部细节。就像一个黑盒子,外部只能通过特定的接口(方法)来访问和操作对象内部的数据。例如,用户通过银行账户对象的存款和取款方法来操作账户余额,而不能直接修改余额属性。
• 继承:允许创建新的类(子类)从现有的类(父类)派生,子类继承父类的属性和方法,并且可以添加新的属性和方法或者重写父类的方法。例如,在动物类的基础上可以派生出哺乳动物类和鸟类,哺乳动物类可以继承动物类的属性如体重、寿命等,同时添加自己特有的属性如胎生方式等。
• 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在一个绘图系统中,不同形状(圆形、方形等)对象都有一个“绘制”方法,当调用这个方法时,每个形状对象会根据自己的类型来执行相应的绘制逻辑。
4. 汇编、编译、解释、执行
• 汇编是将汇编语言程序转换为机器语言程序的过程。汇编语言是一种低级语言,与机器语言很接近,每条汇编指令对应特定的机器指令。例如,汇编指令“MOV AX, 10”可能会被转换为对应的机器码,这个过程由汇编器完成。
• 编译是把高级程序设计语言(如C、C++等)编写的源程序一次性地转换为目标机器语言程序的过程。编译器会对源程序进行词法分析、语法分析、语义分析等操作,生成目标代码。例如,将一个C程序编译成可在特定操作系统和硬件平台上运行的二进制文件。
• 解释是指解释器直接执行高级程序设计语言编写的程序,逐行翻译并执行。解释型语言(如Python、JavaScript)不需要事先编译成机器语言,解释器在运行时读取程序代码,边解释边执行。例如,Python解释器会逐行读取Python代码并执行相应的操作。
• 执行是计算机运行程序的过程。对于编译后的程序,计算机的处理器可以直接加载并运行机器语言代码;对于解释型程序,是通过解释器来执行代码。在执行过程中,程序按照指令序列完成各种操作,包括数据处理、控制流程转移等,以实现程序的功能。
通过 AI 工具总结一下内容,自己再补充
通过思维导图形成知识体系
看懂就过,看不懂,学习有心得的记一下
教材学习中的问题和解决过程(先问 AI)
-
问题1:面向对象语言中继承的主要作用是什么?
-
问题1解决方案:继承在面向对象语言中有重要作用。一是实现代码复用,子类能继承父类的属性和方法,避免重复编写代码。比如创建多种交通工具类,汽车、飞机等可继承交通工具类的通用属性(如速度、载客量等)和方法(如启动、停止)。二是便于扩展,子类在继承父类基础上可添加新的属性和方法,增强功能。例如,跑车类继承汽车类后可添加独特属性如最大马力等。三是增强代码的可维护性,当父类代码修改时,子类如果没有重写相关内容,也会受到影响,保证了相关类的一致性,便于统一维护和管理代码结构。
基于AI的学习
代码调试中的问题和解决过程
- 问题1:在算m的n次方的最后三位数这道题时,数据溢出
- 问题1解决方案:使用循环,每循环一次就取1000的余数,这样就不会导致数据过大溢出了
for(i=1;i<n;i++)
{
p=(p*m)%1000;
}
其他(感悟、思考等,可选)
写代码是一个需要不练习的过程,也是一个需要大量思考的工作,尤其是如何把数学问题转化为代码,这需要深入思考和活跃的思维。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |