2048 字
10 分钟
- 次浏览
把每周 C# 作业汇总为学习路线
读前导览

回文、数组、三角形、公民类、Time 类、复数类、员工工资和异常练习这些小题,连起来能看到从语法到对象建模的过程。

正文
2048 字
阅读
10 分钟
结构
9 节

C-sharp 这个公开仓库很朴素,里面是一组按周整理的面向对象程序设计作业。

目录里能看到判断回文数、平均数和最值、一维数组、三角形类、公民类、Time 类、点和直线、复数类、员工工资、宠物类、异常练习等题目。

公开仓库在这里:

https://github.com/GitLaughs/C-sharp

这类仓库看起来很零散,但放在一起看,能看出这门课是怎么一周一周加难度的:先是输入输出和条件判断,再到数组、循环、类、对象、静态字段、重载、继承、多态和异常。

课程作业如果只按“第几周交什么”保存,很快就会变成硬盘里的历史文件。换个角度看,它也能串成一张学习路线图。

小题目不小#

刚开始学 C# 或面向对象时,最容易低估小题目。

判断回文数、计算平均数、字符串输入输出,看起来只是语法练习。不过这些题目训练的是最基本的程序控制能力:

  • 数据从哪里来。
  • 类型如何转换。
  • 分支条件怎么写。
  • 循环什么时候停止。
  • 输出结果如何被验证。

这些能力没有打牢,后面写类和对象时会更乱。因为面向对象并不会替你解决基础流程问题,它只是提供另一种组织程序的方式。

所以基础题也在练语法之外的东西:把一段程序从输入、处理到输出完整跑通。

从数组开始理解数据集合#

第五周一类题目通常会进入数组、循环应用、天数计算、三角形类、公民类。这里开始出现一个变化:程序不再只处理一个数字或一行文本,而是处理一组数据,或者一个带有多个属性的对象。

数组题会让人意识到,很多问题不是“算一个值”就结束,还要遍历一组值并维护状态。比如最大值、最小值、平均数,背后都有同一套模式:

初始化状态 -> 遍历数据 -> 更新状态 -> 输出结果

类题则让人开始区分“数据本身”和“围绕数据的操作”。三角形不能一直当成三个散落的数字处理,公民信息也不能只写成几行字符串。写成类以后,属性、构造、校验和行为才有地方放在一起。

到这里,面向对象课程才开始有感觉。

类不是语法包装#

很多初学者第一次写类时,只是把变量搬进 class 里,再写几个 get/set。这样虽然满足形式要求,但还没有理解对象建模。

像 Time 类、点和直线、复数类这些题目更适合练“对象应该承担什么责任”。

Time 类要处理小时、分钟、秒的范围和格式化输出;点和直线要处理坐标、距离或斜率;复数类要处理实部、虚部以及加减乘除。它们共同的问题是:

  • 构造时要不要校验?
  • 属性能不能被随意改?
  • 方法应该返回新对象还是修改自己?
  • 输出字符串是否应该和内部表示分开?
  • 范围条件应该在哪里处理?

这些问题处理清楚了,class 才像是在建模,而不是单纯装变量。

如果课程作业能在 README 或注释里记录这些取舍,后面回看时就不会只剩题解,还能看出当时怎么练对象建模。

重载和静态字段是设计信号#

方法重载和静态字段经常被当成语法点讲,但它们背后有设计含义。

重载说明同一个概念可以接受不同输入形式。比如构造一个对象时,可以从默认设置开始,也可以从完整参数开始。它让接口更贴近调用者,但也要求不同重载之间行为一致,不能每个重载都像独立函数。

静态字段则说明某些信息属于类型本身,不归某个实例独占。比如对象计数、共享配置、统一常量,都可能用到静态成员。它方便,但也容易让状态变得隐蔽。

课程小题里练这些特性,比在大项目里第一次遇到问题要温和得多。小题目允许你犯错,也方便重写。

继承题要先问关系是否成立#

第九周一类题目通常会有员工工资、优秀教师学生、宠物类、汽车、包裹投递等对象关系题。

这时最容易出现一个误区:看到多个类,就想立刻继承。

继承要先看它们是不是同一类东西,字段重复只能算一个提醒,不能直接当理由。学生、教师、员工、宠物、汽车这些题目都可以练这个判断:

  • 哪些属性是共同抽象?
  • 哪些行为可以放在基类?
  • 哪些只是组合关系?
  • 子类是否真的能替代父类使用?
  • 多态调用时会不会让逻辑更清楚?

刚学的时候,最容易把名词都写成类,或者一看到重复字段就抽父类。后来回头看,这反而是继承题最该练的地方。

异常练习是工程意识的入口#

异常练习通常出现在后面,因为它要求你承认程序会失败。

输入可能不合法,文件可能打不开,计算可能越界,对象状态可能不完整。基础题里这些问题可以被忽略,但真实程序里不行。

异常处理要先明确几件事:

  • 哪些错误应该提前校验。
  • 哪些错误应该抛给调用者。
  • 哪些错误可以恢复。
  • 错误信息应该如何帮助定位问题。
  • 测试里是否覆盖失败路径。

这也是课程作业从“能跑”走向“可靠”的一步。

仓库可以比作业本更有用#

如果一个课程仓库只是把每周文件丢进去,课程结束以后很快就没人再看。更好的整理方式是把它变成学习路线:

  • README 列出每周主题和对应知识点。
  • 每个题目说明训练目标,别只写题目名。
  • 对典型 bug 记录修复思路。
  • 对重写过的题目保留前后差异。
  • 把相似题目串成概念线,例如“类封装线”“继承线”“异常线”。

这样整理不是给作业硬套一个大项目外壳。它更像一份索引,方便以后翻回来时,马上知道自己当时学到哪一步。

为什么它适合写进博客#

很多学习记录不需要等到项目很大才需要记录。

像这个 C# 作业仓库,单个题目可能很小,但组合起来就是一条学习曲线。把它写成博客,可以记录三个层面的东西:

  • 当时学了哪些语法和概念。
  • 哪些题目第一次迫使自己做对象建模。
  • 哪些错误暴露了工程意识不足。

只把代码放到 GitHub 上,后来再看往往只知道自己写过这些题。多写几句回看,至少能记住当时为什么那样写,下一次哪里可以改。

小作业也能看出学习路线#

课程作业最容易被低估,因为它们看起来太普通。不过普通题目恰好适合记录学习过程:语法、数组、类、静态成员、重载、继承、多态、异常,一步一步都能在小题里看见。

整理这些作业,不用证明当时写得多好。更实际的用处,是以后还能顺着这条线找回自己的学习过程。

对我来说,这类仓库最有用的地方是:它把“我学过这门课”变成了“我能回看自己当时怎么理解编程”。

把每周 C# 作业汇总为学习路线
https://blog.sunmmyapi.xyz/posts/oop-homework-as-learning-map/
作者
Sun
发布于
2026-05-29
许可协议
CC BY-NC-SA 4.0

继续读

相关内容