首页 > 编程语言 >实验 2 Scala 编程初级实践

实验 2 Scala 编程初级实践

时间:2024-05-25 11:29:08浏览次数:73  
标签:draw endPoint Unit Point 编程 Scala 初级 location def

一实验目的

二实验平台

三实验内容和要求

1、计算级数

 

 

 

2、模拟图形绘制

trait Drawable {
def draw(): Unit = println(this.toString)
}

case class Point(var x: Double, var y: Double) extends Drawable {
def shift(X: Double, Y: Double): Unit = {
x += X
y += Y
}
}

abstract class Shape(var location: Point) {
def moveTo(newLocation: Point): Unit = {
location = newLocation
}

def zoom(scale: Double): Unit
}

class Line(beginPoint: Point, var endPoint: Point) extends Shape(beginPoint) with Drawable {
override def draw(): Unit = {
println(s"Line:(${location.x},${location.y})--(${endPoint.x},${endPoint.y})")
}

override def moveTo(newLocation: Point): Unit = {
endPoint.shift(newLocation.x - location.x, newLocation.y - location.y)
location = newLocation
}

override def zoom(scale: Double): Unit = {
val midPoint = Point((endPoint.x + location.x) / 2, (endPoint.y + location.y) / 2)
location.x = midPoint.x + scale * (location.x - midPoint.x)
location.y = midPoint.y + scale * (location.y - midPoint.y)
endPoint.x = midPoint.x + scale * (endPoint.x - midPoint.x)
endPoint.y = midPoint.y + scale * (endPoint.y - midPoint.y)
}
}

class Circle(center: Point, var radius: Double) extends Shape(center) with Drawable {
override def draw(): Unit = {
println(s"Circle center:(${location.x},${location.y}),R=$radius")
}

override def zoom(scale: Double): Unit = {
radius = radius * scale
}
}

object MyDraw {
def main(args: Array[String]): Unit = {
val p = Point(10, 30)
p.draw()

val line1 = new Line(Point(0, 0), Point(20, 20))
line1.draw()
line1.moveTo(Point(5, 5))
line1.draw()
line1.zoom(2)
line1.draw()

val circle = new Circle(Point(10, 10), 5)
circle.draw()
circle.moveTo(Point(30, 20))
circle.draw()
circle.zoom(0.5)
circle.draw()
}
}

 

 

3、统计学生成绩

四实验报告

 

标签:draw,endPoint,Unit,Point,编程,Scala,初级,location,def
From: https://www.cnblogs.com/gbrr/p/18030681

相关文章

  • JavaScript入门指南:从零开始你的编程之旅
        JavaScript是现代web开发不可或缺的一部分,作为一种强大且灵活的编程语言,它可以在浏览器中运行,为网页添加互动功能。无论你是完全的初学者,还是有其他编程语言的基础,本文将引导你从零开始学习JavaScript。我们将涵盖基础知识、关键概念和实践技巧,帮助你迅速上手并......
  • 【pyspark速成专家】5_Spark之RDD编程3
    目录​编辑六,共享变量七,分区操作六,共享变量当spark集群在许多节点上运行一个函数时,默认情况下会把这个函数涉及到的对象在每个节点生成一个副本。但是,有时候需要在不同节点或者节点和Driver之间共享变量。Spark提供两种类型的共享变量,广播变量和累加器。广播变量是......
  • Python异步编程之基础概念
    Python异步编程之基础概念在现代编程中,异步编程是一种重要的技术,尤其是在处理I/O密集型任务时,异步编程可以大大提高程序的性能和响应速度。本文将介绍Python异步编程的基础概念,帮助你理解其原理和应用。什么是异步编程?异步编程是一种并发编程模型,它允许程序在等待某些任......
  • 深入解析Python并发的多线程和异步编程
    在Python编程中,多线程是一种常用的并发编程方式,它可以有效地提高程序的执行效率,特别是在处理I/O密集型任务时。Python提供了threading模块,使得多线程编程变得相对简单。本文将深入探讨threading模块的基础知识,并通过实例演示多线程的应用。1.多线程基础概念在开始之前,让我们......
  • python核心编程
    python核心编程一、python函数1.1函数的概念1.2函数的基本使用1.3函数的参数1.3.1单个参数1.3.2多个参数1.3.3不定长参数1.3.4缺省参数1.3.5参数注意1.4函数的返回值1.5函数的使用描述1.6函数的作用域1.7相关函数1.7.1偏函数1.7.2高阶函数1.7.3返回函数1......
  • Shell编程完成用户注册登录
    目录需求1.menu界面welcome(1)注册用户(2)用户登录(3)退出2.注册用户(1)用户名(首字母大写)(2)密码(8位及其以上必须有三个字符其中一个以上如:&$_隐试密码)(3)手机号码(必须以139开头)(4)邮箱邮箱名数字开头@qq.com(5)检测是否重名,重手机号和邮箱(6)不重名、手机号、邮箱写入......
  • 分布式计算编程项目二
    利用RPC技术实现一个学生信息管理系统目录利用RPC技术实现一个学生信息管理系统一、具体要求二、相关理论理论迭代1.单机结构2.集群结构3.微服务结构微服务介绍RPC介绍使用到的相关包MySQL启动方法三、代码架构四、功能实现+界面展示基本功能:技术点:1.查询速度提高2.数据模型和......
  • WinSock 的多线程编程
    目录概述Winsock为什么需要多线程阻塞模式和非阻塞模式单线程和多线程的优缺点Win32系统下的多进程多线程机制进程和线程线程创建线程同步线程通信  VC++对多线程网络编程的支持MFC中的多线程支持ATL中的多线程支持多线程FTP客户端实例头文件包含线......
  • Scala基础(一)从零开始
    Scala是开发Java的核心人员开发的Scala类的编译执行还是使用的Javajdk目录配置Scala安装ScalaSDK 打开IDEA设置安装插件Scala​编辑添加scalaSDKScala基础 变量定义表达式条件表达式 块表达式循环调用方法和函数(所有运算符都是方法) 定义方法和函数(方法......
  • 实验5 C语言指针应用编程
    1.实验任务1task1_1.c1#include<stdio.h>2#defineN534voidinput(intx[],intn);5voidoutput(intx[],intn);6voidfind_min_max(intx[],intn,int*pmin,int*pmax);78intmain()9{10inta[N];11intmin,max;1213......