# 学期2024-2025-1 学号(20241405) 《计算机基础与程序设计》第8周学习总结
作业信息
|这个作业属于哪个课程|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语言中,void
和 int
是用来声明函数返回类型的关键字,它们分别有不同的用途和含义:
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
。 - 类型安全:使用正确的返回类型可以保证类型安全,避免类型不匹配的问题。
- 函数指针:在定义函数指针或者数组时,也需要指定函数的返回类型,这会影响如何正确地调用这些函数。
总的来说,void
和 int
的选择取决于你的函数是否需要返回值以及返回值的类型。正确地使用它们可以帮助你编写更清晰、更安全的代码。
基于AI的学习