学习笔记10

一、实验目的
1.掌握Scala 语言的基本语法、数据结构和控制结构;
2.掌握面向对象编程的基础知识,能够编写自定义类和特质;
3.掌握函数式编程的基础知识,能够熟练定义匿名函数。熟悉Scala 的容器类库的基本
层次结构,熟练使用常用的容器类进行数据;
4.熟练掌握Scala 的REPL 运行模式和编译运行方法。
二、实验平台
已经配置完成的Scala 开发环境。Scala 版本为2.11.8.
三、实验内容和要求
1. 计算级数
请用脚本的方式编程计算并输出下列级数的前n 项之和Sn,直到Sn 刚好大于或等于q
为止,其中q 为大于0 的整数,其值通过键盘输入。
例如, 若q 的值为50.0 , 则输出应为: Sn=50.416695 。请将源文件保存为
exercise2-1.scala,在REPL 模式下测试运行,测试样例:q=1 时,Sn=2;q=30 时,Sn=30.891459;
q=50 时,Sn=50.416695。
2. 模拟图形绘制
对于一个图形绘制程序,用下面的层次对各种实体进行抽象。定义一个Drawable 的特
质,其包括一个draw 方法,默认实现为输出对象的字符串表示。定义一个Point 类表示点,
其混入了Drawable 特质,并包含一个shift 方法,用于移动点。所有图形实体的抽象类为
Shape,其构造函数包括一个Point类型,表示图形的具体位置(具体意义对不同的具体图形不一样)。Shape类有一个具体方法moveTo和一个抽象方法zoom,其中moveTo将图形从当前位置移动到新的位置, 各种具体图形的moveTo可能会有不一样的地方。zoom方法实现对图形的放缩,接受一个浮点型的放缩倍数参数,不同具体图形放缩实现不一样。继承Shape类的具体图形类型包括直线类Line和圆类Circle。Line类的第一个参数表示其位置,第二个参数表示另一个端点,Line放缩的时候,其中点位置不变,长度按倍数放缩(注意,缩放时,其两个端点信息也改变了),另外,Line的move行为影响了另一个端点,需要对move方法进行重载。Circle类第一个参数表示其圆心,也是其位置,另一个参数表示其半径,Circle缩放的时候,位置参数不变,半径按倍数缩放。另外直线类Line和圆类Circle都混入了Drawable特质,要求对draw进行重载实现,其中类Line的draw输出的信息样式为“Line:第一个端点的坐标--第二个端点的坐标)”,类Circle的draw输出的信息样式为“Circle center:圆心坐标,R=半径”。如下的代码已经给出了Drawable和Point的定义,同时也给出了程序入口main函数的实现,请完成Shape类、Line类和Circle类的定义。

posted @   lcz111  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示