https://github.com/Centurybbx/sp18-century/tree/master/proj0

proj0的具体实现在上面的Github中。

在proj0中我明显感受到国外大学对于教学课程的严谨性和权威性,之前只是听说过测试(刚学习的小白),没想到在CS61B中老师为了方便测试学生所写代码的准确性,提前写好了不少测试类,直接运行即可。并且它的教程完全是保姆式的,完全是在手把手的教课,对于新手程序员来说简直是不要太好。

下面主要谈一下它的设计方面:

这个项目里面其实自己并没有写多少高大上的代码,感觉它的实现还是挺简单的,主要是基于牛顿定律和一些物理公式的推导得出来的。但是它的设计却让我感觉非常巧妙,例如在Planet中它先是循序渐进的让我们写出一个calcDistance(Planet p)方法来计算两个天体之间的距离,随后根据这个写calcForceExertedBy(Planet p)方法,用来计算两个天体之间的引力作用。随后又引出calcForceExertedByX(Planet p)和calcForceExertedByY(Planet p)两个方法来计算X和Y轴上力的分量,最后再写出calcNetForceExertedByX(Planet[] ps)/calcNetForceExertedByY(Planet[] ps)引用上面的方法来计算出多个引力作用的结果,感觉很妙!

总体来说这个项目还是挺简单的,因为好多轮子已经造好了,比如StdDraw/In这些工具类已经封装好了很多方法,直接看着API文档调用就好了。

-------------------------------------------------------------------------------------------------------

刚刚用gradescope评估了一下评分,发现它提示我有一点小问题——原来是变量作用域的问题,我用public修饰的G(一个系数)要改为private.....这真的好严谨,爱了爱了!这课不好好学完全是浪费啊!

proj0的具体实现 #CS61B-sp18的更多相关文章

  1. CS61B sp2018笔记 | Lists

    Lists csdn同作者原创地址 1. IntLists   下面我们来一步一步的实现List类,首先你可以实现一个最简单的版本: public class IntList { public int ...

  2. CS61B HW0

    The Enhanced For Loop public class EnhancedForBreakDemo { public static void main(String[] args) { S ...

  3. CS61b proj1a

    得分46.25有一个点的bug不会修(希望大佬带我),style没有注意.1.LinkedListDeque.java public class LinkedListDeque <T>{ ...

  4. diff and patch

    A patch captures the changes of two different files (oldfile and newfile). Given the oldfile and the ...

  5. 麻省理工18年春软件构造课程阅读02“Java基础”

    本文内容来自MIT_6.031_sp18: Software Construction课程的Readings部分,采用CC BY-SA 4.0协议. 由于我们学校(哈工大)大二软件构造课程的大部分素材 ...

  6. Java学习资源整理(超级全面)

    这里整理一些自己平常搜集的比较好的关于Java的学习资源,主要包括博客站点.书籍.课程等. 了解Java最新资讯 这部分主要是了解与Java相关的动态以及信息,能够拓展我们的视野以及寻找一些好的ide ...

  7. Java中的Iterable与Iterator详解

    在Java中,我们可以对List集合进行如下几种方式的遍历: List<Integer> list = new ArrayList<>(); list.add(5); list ...

  8. CS61A hw01

    前不久在知乎上看到CS61A 和CS61B spring18 开课的消息.上去看了一眼,发现真的不错,所有proj hw都可以本地测试!也就是说除了没有课程成绩和官方讨论区和TA解答外,这个课完全可以 ...

  9. 1732157 - Collecting diagnosis information for SAP HANA [VIDEO]

    Symptom SAP Support asked you to provide a collection of the relevant diagnosis files (also known as ...

随机推荐

  1. [CF1216E] Numerical Sequence hard version

    题目 The only difference between the easy and the hard versions is the maximum value of k. You are giv ...

  2. STL初步学习(vector)

    前文 初三下学期进入新的学习,对于前两年的学习内容因为各种原因 上课打游戏,睡觉,看视频 已经遗忘,忘记如何使用,算是重新学习一次信息学,希望能尽快将以前的内容弥补上来,争取能在CSP-2020取得一 ...

  3. 【python爬虫实战】使用Selenium webdriver采集山东招考数据

    目录 1.目标 2.Selenium webdriver说明 2.1 为什么使用webdriver 2.2 webdriver支持浏览器 2.3 配置与使用说明 3.采集 3.1 分析网站 3.2 遍 ...

  4. 并发工具CyclicBarrier源码分析及应用

      本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天呢!灯塔君跟大家讲: 并发工具CyclicBarrier源码分析及应用 一.CyclicBarrier简介 1.简介 CyclicBarri ...

  5. css使用rgba()或hsla()设置半透明或完全透明边框border

    在css中我们想实现透明颜色,首先就会想到rgba()和hsla()这2个属性.这篇文章就简单介绍下使用这2种方式来实现半透明边框. 1.使用rgba方式: border: 10px solid rg ...

  6. 显示IP地址的命令

    显示IP地址的命令   Centos7默认显示IP地址的命令       #获取所有网卡的IP地址 [root@clf ~]# ip  a1: lo: <LOOPBACK,UP,LOWER_UP ...

  7. HTTP前世今生

    HTTP 是浏览器中最重要且使用最多的协议,是浏览器和服务器之间的通信语言.随着浏览器的发展,HTTP 为了能适应新的形式也在持续进化.已经历经0.9,1.0,1.1,2.0等几个阶段, 以及未来的3 ...

  8. iOS刨根问底-深入理解GCD

    概述 做过iOS开发的同学相信对于GCD(Grand Central Dispatch)并不陌生,因为在平时多线程开发过程中GCD应该是使用最多的技术甚至它要比它的上层封装NSOperation还要常 ...

  9. 数据可视化之DAX篇(十五)Power BI按表筛选的思路

    https://zhuanlan.zhihu.com/p/121773967 ​数据分析就是筛选.分组.聚合的过程,关于筛选,可以按一个维度来筛选,也可以按多个维度筛选,还有种常见的方式是,利用几个特 ...

  10. Python读取文件基本方法

    在日常开发过程中,经常遇到需要读取配置文件,这边就涉及到一个文本读取的方法. 这篇文章主要以Python读取文本的基础方法为本,添加读取整篇文本返回字符串,读取键值对返回字典,以及读取各个项返回列表的 ...