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

news/2024/11/15 22:52:56/文章来源:https://www.cnblogs.com/gly03/p/18548809

这个作业属于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语言至关重要。

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

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

相关文章

项目冲刺11.15

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 作业要求这个作业的目标 进行为期七天的项目冲刺并记录前言 本篇博客是项目冲刺的第七篇,七篇博客的汇总如下:博客汇总第一篇博客第二篇博客第三篇博客第四篇博客第五篇博客第六篇博客第七篇博客团队简介队名 拖延是你不…

Latex 安装

使用的开发环境是 VSCode. Latex 在编译时需要用到宏包. 宏包到底是啥? 有啥作用? 从何处下载? Latex 软件的安装:texlive: 一次性下载所有的宏包. 磁盘需求较大, 约 7 ~ 8 G.miktex: 仅下载必要的宏包, 编译时补充下载宏包. 磁盘需求较小, 约几百 M.清华大学开源软件镜像站…

20222424 2024-2025-1 《网络与系统攻防技术》实验五实验报告

20222424 2024-2025-1 《网络与系统攻防技术》实验五实验报告 1.实验内容 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:…

Windows程序设计指南

Windows程序设计指南“到Petzold的书中找找”——仍然是解决Windows程式开发各种疑难杂症时的灵丹妙药。在第五版的《Windows程式开发设计指南》中,作者身为倍受敬重的WindowsPioneerAward(Windows开路先锋奖)得主,依据最新版本Windows作业系统,以可靠的取材资料校定这一本…

Windows高级调试

Windows高级调试中文版文档摘要: 本书《Windows高级调试》主要讲解Windows高级调试技术和工具,包括调试器简介、调试器揭密、符号文件与源文件的管理、栈内存破坏、堆内存破坏、安全、进程间通信、资源泄漏、同步、编写定制的调试扩展、64位调试、事后调试、Windows Vista基础…

iman——冲刺日志(第四天)

又一阉割版 团队成员分工与进度 📝👥组别 成员 完成的任务 完成任务所用时间 (小时) 剩余时间 (小时)前端 阿依娜孜 完成了行程概览地图中标记连线与探索功能的删除与添加。 3 2前端 郭剑敏 实现了地图标点的驾车路线绘制功能。 3 1前端 王梓铭 优化了主页与导航栏布局,提…

1.11--06:月度开销

http://noi.openjudge.cn/ch0111/06/月度开销题目传送门思路 给定连续N天的开销,需要将这些天分成M个财政周期,使得开销最多的财政周期的开销尽可能少。 首先,我们可以确定一个财政周期的长度l,即将N天平均分成M个财政周期。这样每个财政周期的长度就是N/M。 然后,我们需要…

SIM Jacker攻击分析

攻击者使用普通手机发送特殊构造的短信即可远程定位目标,危害较大。sim卡的使用在手机上的使用非常普遍,所以一旦SIM卡上出现什么问题就会造成非常大的影响。在19年的报告纰漏中,在全球估算共有10亿设备的sim卡容易遭受SIMJacker攻击,这篇也是比较浅显的对整个攻击进行分析…

shell动态修改yml配置实例

yq安装https://github.com/mikefarah/yq/tree/master每个yq版本支持的选项参数都不一样修改Dockerfile[root@instance base-tlog-test]# vi Dockerfile FROM 192.168.30.113/library/java:latest ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &am…

『模拟赛』NOIP2024加赛5

Rank 反向挂分大王A. 暴力操作(opt) 签,但是没有人签。 都想到了二分和更新 c 值,但是 c 多多少少没更到最优。 首先还是调和级数预处理,倒序取 min。然后考虑到超过 \(m\) 的也有可能产生更小的代价,因此 \(\mathcal{O(n)}\) 枚举一遍找到最小的 \(j\) 使 \(i\times j\g…

[Moectf2024 ezMaze]

去壳 分析:迷宫分析10 * a2 - 10:Y (a1 - 1) / 8 :X 表示按字节处理迷宫迷宫以十六进制压缩,但迷宫是80 * 56的二进制迷宫 dump下来保存,转二进制,用bin(maze[2:]).zfill(8) 脚本(bfs): from collections import deque maze = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…

有理逼近AAA算法

用于有理逼近的AAA算法,可以有效防止伪极点现象用于有理逼近的AAA算法The AAA Algorithm for Rational Approximation, Yuji Nakatsukasa, Olivier Ste, and Lloyd N. Trefethen, SIAM Journal on Scientific Computing 2018 40:3, A1494-A1522, https://doi.org/10.1137/16M1…