2024-2025 20241323 第八周学子任务总结

这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
这个作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01
• 这个作业的目标了解功能设计与面向对象设计
• 面向对象设计过程
• 面向对象语言三要素
• 汇编、编译、解释、执行
作业正文https://www.cnblogs.com/gly03/p/18548809

教材学习内容总结
计算机科学概论
功能设计与面向对象设计
功能设计是按照产品定位的初步要求,在对用户需求及现有产品进行功能调查分析的基础上,对所定位产品应具备的目标功能系统进行概念性构建的创造活动。而面向对象设计(Object-Oriented Design,OOD)则是一种软件设计方法,它采用与结构化设计不一样的视角,将世界抽象成一系列具有一定职责的自由数据个体(即对象),这些对象之间相互协作,共同完成高级的行为。
面向对象设计过程
面向对象设计过程是一个抽象的过程,它根据业务需求,关注与业务相关的属性和行为,忽略不必要的属性和行为,由现实世界中的“对象”抽象出软件开发中的“对象”。这一过程通常包括以下几个步骤:

  1. 发现类:通过在需求中找出名词的方式确定类。
  2. 发现类的属性:进一步细化类的特征,明确每个类所包含的属性和数据。
  3. 发现类的方法:通过找出动词的方式确定方法,即类能够执行的操作或行为。
    此外,面向对象设计还需要关注对象之间的关系,如组合、继承、分类、扩展等,并使用这些关系来描述对象之间的交互。
    面向对象语言三要素

面向对象语言通常包含以下三个基本要素:

  1. 封装(Encapsulation):封装把数据和动作集中在一起,使数据和动作的逻辑属性与他们的实现细节分离。它实现了信息隐蔽,使得类的内部状态只能通过类提供的方法进行访问和修改,从而提高了代码的安全性和可维护性。
  2. 继承(Inheritance):继承是指类获取其他类的属性(数据字段和方法)的机制。通过继承,新的类(派生类或子类)可以继承已有类(超类或基类)的属性和方法,从而实现代码的重用和扩展。
  3. 多态(Polymorphism):多态是语言在运行时确定给定调用将执行哪些可能的方法的能力。它允许一个接口或父类引用指向子类对象,并在运行时根据对象的实际类型调用相应的方法。多态性提高了代码的灵活性和可扩展性。
    需要注意的是,有些资料将“共享性”也列为面向对象语言的一个要素,但“封装性(信息隐蔽)”是更为核心和普遍接受的一个要素。
    汇编、编译、解释、执行
  4. 汇编:汇编语言是一种低级编程语言,它用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。汇编语言需要通过汇编器翻译成机器码才能执行。汇编语言与特定的机器语言指令集一一对应,因此不同平台之间不可直接移植。
  5. 编译:编译是将高级编程语言(如C、C++、Java等)编写的源代码转换为可执行的机器语言的过程。编译过程通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。编译后的程序可以直接在目标机器上运行。
  6. 解释:解释是在程序运行时将源代码逐条翻译成机器语言并执行的过程。解释型语言(如Python、JavaScript等)不需要预先编译成机器语言,而是由解释器在运行时逐条解释并执行源代码。解释型语言通常具有较好的灵活性和跨平台性,但执行效率相对较低。
  7. 执行:执行是程序在机器上运行的过程。无论是编译后的程序还是解释执行的程序,最终都需要在目标机器上执行以完成特定的任务。执行过程涉及指令的读取、解码、执行和结果存储等步骤。
    C语言
    在C语言中,数组和指针是两个非常重要的概念,它们各自有独特的用途,但也存在紧密的联系。下面将分别介绍数组和指针,并探讨它们之间的关系。
    数组
    数组是一组具有相同类型的变量的集合,这些变量在内存中连续存储。数组通过下标来访问其元素,下标从0开始。在C语言中,数组名代表数组首元素的地址(即数组首地址)。
    数组的定义方式如下:
    c复制代码
    int arr[10]; // 定义一个包含10个整数的数组
    可以通过下标来访问数组中的元素,例如:
    c复制代码
    arr[0] = 1; // 设置数组第一个元素为1
    int value = arr[1]; // 获取数组第二个元素的值
    指针
    指针是C语言中的一个重要概念,它用于存储变量的地址。指针变量本身也占用内存,但其存储的是另一个变量的地址,而不是数据值。
    指针的定义方式如下:
    c复制代码
    int *ptr; // 定义一个指向整数的指针
    可以将一个变量的地址赋值给指针,例如:
    c复制代码
    int x = 10;
    ptr = &x; // 将变量x的地址赋值给指针ptr
    通过指针可以间接访问和修改它所指向的变量的值,例如:
    c复制代码
    *ptr = 20; // 修改指针ptr所指向的变量的值为20
    int y = *ptr; // 获取指针ptr所指向的变量的值
    数组与指针的关系
    在C语言中,数组名在大多数情况下都会被编译器处理为指向数组首元素的指针。这意味着,当我们把数组名传递给函数时,实际上传递的是数组首元素的地址,而不是整个数组。
    例如,以下函数接受一个整数数组和一个数组大小作为参数:
    c复制代码
    void printArray(int *arr, int size) {
    for (int i = 0; i < size; i++) {
    printf("%d ", arr[i]); // 或者使用 *(arr + i)
    }
    printf("\n");
    }
    在调用这个函数时,我们可以传递数组名和数组的大小:
    c复制代码
    int main() {
    int myArray[5] = {1, 2, 3, 4, 5};
    printArray(myArray, 5); // 传递数组名和大小
    return 0;
    }
    在这个例子中,myArray作为数组名被传递给了printArray函数,它实际上被处理为指向数组首元素的指针(即&myArray[0])。
    注意事项
  8. 数组的大小在编译时是固定的,而指针可以指向任何类型的变量,并且可以在运行时改变其指向。
  9. 当数组作为函数参数传递时,数组名会退化为指向数组首元素的指针,因此函数内部无法获取数组的大小(除非通过额外的参数传递)。
  10. 指针操作需要谨慎,以避免野指针(未初始化或已释放的指针)和指针越界等问题。
    综上所述,数组和指针在C语言中各自扮演着重要的角色,它们之间既有区别又有联系。理解它们的概念和用法对于掌握C语言至关重要。
posted @ 2024-11-15 22:51  小苟不是狗  阅读(4)  评论(0编辑  收藏  举报