Week 1–Part 2&3
解密 Caesar cipher
解密原理:
1) 【已知key】可以解密即使一行字,就用encrypt by 26-key
2) 【未知key】在文本有大量单词的情况下,根据该语言出现频率最高的字母和该文本出现频率最高的字母匹配,列出原始字母表和加密的字母表,就可以找到加密的key是什么。
- frequency analysis 字母频率分析
- 已知的 在英语中,字母e出现的频率最高。列出之后就会发现 encryt key = max Index - 4(这个是e的位置)。 如果max index 小于4的话 , encryt key = 26- (4-max index)
知识点
-
主函数main()【再看一下和test的区别!】
- 任何应用程序的主要入口点,class中第一个被读取的方法。
- 写法:public static void main(String[] args){…}
- static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。
- 参数String[] args目前还没用到
-
如何读取输入的内容
- 1) 互动环境中用Scanner class:可以按行,按整数,按小数依次读取下一个
2) 其他办法: https://www.geeksforgeeks.org/ways-to-read-input-from-console-in-java/
—如果不是在互动环境中,读取密码用console class比较好
- 1) 互动环境中用Scanner class:可以按行,按整数,按小数依次读取下一个
Part 3 Object Oriented Programming面向对象编程设计
三大特征:
封装: 我写了一个求绝对值的函数,现在要给别人用,但是别人不需要知道我到底是用什么方法求的,直接用就可以。
继承:增加代码的可重用性,拓展,修改。在想要拓展功能的时候不必重写整个对象,只需继承了然后在写新的属性,方法就好了
多态:能够去重写继承对象的方法,被利用的最多的例子莫过于ToString()方法
常见语言:C#,java,C++,Python
知识点:
- instant variables/fields
以前是在encrypt的时候,再传加密的密码。但是按道理来说,每一个对象都应该是有自己的密码。所以在创建的时候就把密码传入这个对象。 - public vs private
public:any code can access public fields or methods.
private: only code inside this class can access private fields or methods.
有一些方法是另一个方法过程中的一步,这些方法就可以设置为private - constructor
三个特征:和class同名,没有return type,可以没有参数。