# 学期2024-2025-1 学号(20241405) 《计算机基础与程序设计》第8周学习总结

news/2024/11/17 11:50:44/文章来源:https://www.cnblogs.com/sztheihei/p/18550389

作业信息

|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|
|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08|
|这个作业的目标|功能设计与面向对象设计,面向对象设计过程,面向对象语言三要素,汇编、编译、解释、执行|
|作业正文| https://i.cnblogs.com/posts/edit;postId=18550389|

教材学习内容总结

1.功能设计
功能设计主要关注软件应该具备哪些功能,即软件应该能够做什么。在这个阶段,开发者会基于需求分析的结果,定义软件需要实现的具体功能,并规划这些功能如何组合以满足用户的整体需求。功能设计通常包括以下几个方面:
‌功能定义‌:明确软件需要实现的具体功能点。
‌流程规划‌:设计实现这些功能的流程,包括用户如何与软件交互、软件内部如何处理数据等。
‌接口设计‌:定义软件对外提供的接口,包括用户接口(UI)和与其他系统交互的接口。
功能设计的目标是确保软件能够满足用户的需求,并提供清晰、直观的操作体验。
2.面向对象设计
面向对象设计则是在功能设计的基础上,进一步关注如何实现这些功能。它采用面向对象的思想和方法,将软件分解成一系列相互协作的对象,并通过这些对象之间的交互来实现软件的功能。面向对象设计主要包括以下几个方面:
‌识别类和对象‌:根据功能设计的结果,识别出软件中需要使用的类和对象,以及它们之间的关系。
‌定义属性和方法‌:为每个类定义属性和方法,属性用于存储对象的状态信息,方法用于描述对象的行为。
‌设计类之间的关系‌:包括继承、组合、关联等关系,以确保对象之间能够正确地协作。
‌接口设计‌:定义类之间的接口,以确保对象之间的交互能够顺利进行。
面向对象设计的目标是提高软件的可维护性、可扩展性和可重用性。通过将软件分解成一系列相对独立的对象,并定义它们之间的交互方式,可以使得软件更加模块化、易于理解和维护。
3.面向对象设计(Object-Oriented Design, OOD)是一个迭代和逐步精化的过程,旨在将需求分析阶段得到的需求转化为具体的软件设计。这个过程通常包括以下几个关键步骤:
‌需求分析‌:
虽然需求分析不是面向对象设计的直接部分,但它是设计过程的基础。在这个阶段,需要明确软件需要解决的问题、用户的需求以及软件的运行环境。
‌系统建模‌
使用面向对象的技术对系统进行建模,包括识别系统中的对象(类)和它们之间的关系。这通常涉及创建UML(统一建模语言)类图来可视化类、接口以及它们之间的关系。
‌识别类和对象‌:
在系统建模的基础上,进一步识别出具体的类和对象。这包括确定类的属性(描述对象状态的数据)和方法(对象可以执行的操作)。
‌定义类结构和层次‌:
设计类的层次结构,包括基类(父类)和派生类(子类)。使用继承机制来复用代码和建立类之间的逻辑关系。
‌建立对象之间的交互‌:
定义对象之间如何交互,包括消息传递、方法调用和协作模式。这可以通过UML序列图、活动图或协作图来表示。
‌接口设计‌:
定义类之间的接口,以确保对象之间的交互能够顺利进行。接口应该清晰、简洁,并且遵循面向对象的设计原则,如单一职责原则、开闭原则等。
‌设计模式应用‌:
在计中应用设计模式,以解决常见的设计问题。设计模式是经过验证的解决特定问题的方法模板,可以提高设计的质量和可维护性。
‌迭代和精化‌:
面向对象设计是一个迭代的过程。在设计过程中,需要不断地回顾和精化设计,以确保它满足需求,并且是可行的和高效的。
‌文档化‌:
将设计结果文档化,以便与团队成员和其他利益相关者共享。设计文档应该清晰、准确地描述设计决策、类结构、对象交互和接口定义。
‌验证和测试‌:
在设计完成后,需要进行验证和测试,以确保设计满足需求,并且是可实现的。这包括通过代码审查、单元测试、集成测试和系统测试来验证设计的正确性和有效性。
面向对象设计的目标是创建一个清晰、模块化、可扩展和可维护的软件系统。通过遵循面向对象的设计原则和最佳实践,可以开发出高质量的软件产品,满足用户的需求,并适应未来的变化和发展。
4.面向对象语言的三要素通常指的是‌封装性(Encapsulation)、继承性(Inheritance)和多态性(Polymorphism)‌。这三个要素是面向对象编程语言区别于传统结构化编程语言的重要标志,也是面向对象编程思想的核心。
‌封装性(Encapsulation)‌:
封装是指将对象的属性(数据)和行为(方法)结合在一起,形成一个独立的小单元,并对对象的数据进行隐藏和保护。
通过封装,可以实现对象内部数据的私有化和对外部访问的控制,从而增强程序的安全性和可维护性。
封装性使得对象内部的实现细节对外部不可见,外部只能通过对象提供的接口来访问和操作对象的数据和行为。
‌继承性(Inheritance)‌:
继承是指子类(派生类)能够继承父类(基类)的属性和方法,从而实现代码的重用和扩展。
通过继承,可以建立类之间的层次关系,使得子类能够复用父类的代码,并在父类的基础上添加新的属性和方法。
继承性还支持多态性,即允许子类重写父类的方法,以实现不同的行为。
‌多态性(Polymorphism)‌:
多态性是指允许不同类的对象对同一消息作出响应,或者说,允许一个接口使用不同的实例而执行不同操作。
多态性可以通过方法重载(Overloading)和方法重写(Overriding)来实现。
方法重载是指在同一类中,允许有多个同名方法,但它们的参数列表不同;方法重写是指在子类中,允许重写父类的方法,以实现不同的行为。
多态性使得程序具有更高的灵活性和可扩展性,能够处理更加复杂的情况和需求。
5.汇编‌:
汇编通常指的是将汇编语言(一种低级编程语言,接近机器码)转换为机器码的过程。
汇编语言由助记符(代表机器指令的符号)和操作数(指令操作的对象)组成。
汇编器(Assembler)是执行汇编过程的工具,它将汇编语言代码转换为机器码,以便计算机能够直接执行。
‌6.编译‌:
编译是将高级编程语言(如C、C++、Java等)的源代码转换为机器码或中间代码的过程。
编译器(Compiler)是执行编译过程的工具,它分析源代码的语法和语义,生成目标代码(机器码或中间代码)。
编译过程通常包括词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化等步骤。
编译后的代码通常被保存为可执行文件,可以独立运行,不需要源代码或编译器。
‌7.解释‌:
解释是逐行读取源代码,并立即执行每行代码的过程。
解释器(Interpreter)是执行解释过程的工具,它不需要将源代码转换为机器码,而是直接执行源代码中的指令。
解释过程通常较慢,因为每次运行程序时都需要逐行解释源代码。
解释语言(如Python、JavaScript等)通常用于快速开发和交互式编程环境。
8‌.执行‌:
执行是指计算机运行编译后的机器码或解释后的指令的过程。
执行过程由计算机的中央处理器(CPU)控制,它按照指令的顺序执行操作,并处理数据。
执行结果可能包括输出到屏幕、保存到文件或改变程序状态等。

教材学习中的问题和解决过程

C语言中函数void和int 有什么区别 什么时候使用
在C语言中,voidint 是用来声明函数返回类型的关键字,它们分别有不同的用途和含义:

void 关键字

  • 含义void 表示函数不返回任何值。
  • 使用场景
    • 当函数执行完毕后不需要返回任何值给调用者时,可以使用 void
    • 例如,一个用于打印信息的函数,它执行完毕后不需要返回任何数据,就可以声明为 void 类型。
void printHello() {printf("Hello, World!\n");
}

int 关键字

  • 含义int 表示函数返回一个整数类型的值。
  • 使用场景
    • 当函数需要返回一个整数值给调用者时,可以使用 int
    • 例如,一个计算两个数之和的函数,可以声明为 int 类型,并返回计算结果。
int add(int a, int b) {return a + b;
}

选择使用时机

  • 返回值需求:如果你的函数需要返回一个值,那么应该使用 int 或其他具体的数据类型来声明这个返回值的类型。
  • 无返回值:如果你的函数不需要返回任何值,那么应该使用 void
  • 类型安全:使用正确的返回类型可以保证类型安全,避免类型不匹配的问题。
  • 函数指针:在定义函数指针或者数组时,也需要指定函数的返回类型,这会影响如何正确地调用这些函数。

总的来说,voidint 的选择取决于你的函数是否需要返回值以及返回值的类型。正确地使用它们可以帮助你编写更清晰、更安全的代码。

基于AI的学习



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835267.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python岭迹图绘制函数

一.岭迹图是什么?岭迹图(Ridge Trace Plot)是一种可视化工具,用于展示岭回归中正则化参数($\alpha$)对回归系数的影响。它能帮助我们理解特征的稳定性和正则化在控制模型复杂度中的作用。 二.什么时候需要看岭迹图?存在共线性特征时当特征间高度相关,普通最小二乘法(O…

探索训练人工智能模型的词汇大小与模型的维度

前一篇:《人工智能同样也会读死书----“过拟合”》 序言:你看,人工智能领域的专家都在做什么?他们其实只是在不断试错,因为并没有一种“万能药”——一种万能的算法可以一次性设计出任何人工智能大模型来实现客户的需求。所有的模型在设计和训练过程中都是——验证结构——…

北美竞赛-加拿大计算机竞赛CCC-收获滑铁卢

给定一个 RCRC 的方格矩阵。 矩阵左上角方格坐标为 (0,0)(0,0),右下角方格坐标为 (R−1,C−1)(R−1,C−1)。 每个方格中要么有南瓜,要么有干草。 南瓜分为大、中、小三种。 初始时,一个农民位于方格 (A,B)(A,B)。 他可以朝上下左右四个方向自由移动,但是他不能走出矩阵,也…

BUU CODE REVIEW 1 1

BUU CODE REVIEW 1 1 打开实例发现php代码,代码审计一波看到unserialize(),初步判断这题存在php反序列化 分析代码:需要GET传参传入pleaseget=1 需要POST传参传入pleasepost=2 需要POST传入md51和md52,使得md51的md5加密后的MD5值弱相等,参数值不相等 需要POST传入obj,用来…

25 个值得关注的检索增强生成 (RAG) 模型和框架

大型语言模型 (LLM) 如 GPT-4 彻底革新了自然语言处理 (NLP) 领域,在生成类人文本、回答问题和执行各种语言相关任务方面展现出卓越的能力。然而,这些模型也存在一些固有的局限性:知识截止:LLM 的训练数据通常截止于特定时间点,使其无法获取训练后发生的事件或信息。 静态…

IDEA不使用lombok,如何快速生成get和set方法

前言 大家好,我是小徐啊。我们在开发Java应用的时候,对于实体类,一般是entity或者pojo类,需要设置好属性的get和set方法。这是比较普通的操作。当然,现在已经有lombok这个插件和依赖来帮助我们不用写get和set方法了。不过,对于一些老系统,我还是习惯于手写get和set方法。…

爱玛单车队-冲刺日志第一天

会议记录:今天是整个冲刺计划最关键的一天,我们需要制定好整个计划并且安排好分工任务,为每个分工任务制定好负责人,来督促每个环节的任务。 本次冲刺确定了以下分工:成员姓名 职责曾庆徽 组长,分配协调组织林传昊 代码审查翁林靖 AI接回查找与测试毛震 软件测试(性能、…

达梦数据库数据类型的变更无效错误,如此解决妙啊

前言 大家好,我是小徐啊。之前在做国产化改造,用到了达梦数据库。其中的一项工作就是将旧数据库里面的数据和结构迁移到达梦数据库。达梦提供了迁移的的工具,大部分时间是挺好用的。 但是这里也有问题,比如我原来的数据库是postgresql,将它迁移到达梦数据库之后,在运行程…

域名选购操作指南

一、前言 在这个互联网时代, 域名已成为网站的数字身份证和品牌象征。它不仅是访问网站的便捷入口, 更一、前言 在这个互联网时代, 域名已成为网站的数字身份证和品牌象征。它不仅是访问网站的便捷入口, 更是树立网络品牌形象的重要资产。2024 年双十一期间, 我在腾讯云平台购置…

2024-2025-1 学号20241315《计算机基础与程序设计》第八周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 <作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08这个作业目标 功能设计与面向对象设计 面向对象设计过程 面向对象语言三要素 汇编、编译、解释、执行作业正文…

2024六安市第二届网络安全大赛-misc

六安市第二届网络安全大赛复现misc听说你也喜欢俄罗斯方块?ppt拼接之后缺三个角补上flag{qfnh_wergh_wqef}流量分析流量包分离出来一个压缩包出来一张图片黑色代表0白色代表11010101000rab反的压缩包转一下密码:拾叁拾陆叁拾贰陆拾肆密文:4p4n575851324332474r324753574o594…