一、实践目的

1.掌握类的定义,对象的创建。

2.掌握实现封装、继承、多态的方法,掌握各种修饰符的使用。

3.掌握将对象数组作为方法的参数和返回值。

4.掌握抽象类与接口的概念及实现,理解动态绑定机制。

5.掌握通过组合与继承,实现代码可复用。

二、实践要求

综合使用封装、继承、多态、抽象类与接口、组合及继承等面向对象知识,给出所选项目的面向对象设计与实现。

三、项目需求

所选项目名称:矩形类

设计一个名为Rectangle的类表示矩形。这个类包括:

  • 两个名为width和height的double型数据域,分别表示矩形的宽和高。默认值为1.
  • 创建默认矩形的无参构造方法。
  • 一个创建width和height为指定值的矩形的构造方法。
  • 一个名为getArea()的方法,返回这个矩形的面积。
  • 一个名为getPerimeter()的方法,返回这个矩形的周长。

画出该类的UML图。实现这个类。编写一个测试程序,创建两个Rectangle对象---一个矩形的宽为4而高为40,另一个矩形的宽为3.5而高为35.9。显示每个矩形的宽、高、面积和周长。

四、项目设计方案

首先,定义一个矩形类,并定义width和height。并在矩形类中定义getArea()和getPerimeter()方法。再定义一个display()返回方法。主类TestRectangle测试矩形类。

五、核心算法详细设计

1、创建Rectangle

根据试验内容可知,此次做的是矩形类,包括名为width和height的double型数据域,一个名为getArea()的方法,返回这个矩形的面积。一个名为getPerimeter()的方法,返回这个矩形的周长。

class Rectangle//定义一个矩形类

{

double width, length;//定义两个整形变量width,length;

Rectangle(){width=1;length=1;}//无参的构造函数

Rectangle(double z,double w)//z、w表示矩形的长和宽

{

width=z;

length=w;//将z,w分别赋值给width,length

}

public double getArea()//创建getArea()方法

{

return width*length;

}

public double getPerimeter()//创建getPerimeter()方法

{

double p;

p=width*2+length*2;

return p;

}

2、矩形类的输出

另外需要一个方法,输出这些值。注意getArea()和getPerimeter()是方法,不能直接调用,方法中必须有返回值。

如,

void display()//矩形类的display()方法

{

System.out.println("矩形长="+width+"宽="+length+"面积="+this.getArea()+"周长="+p);//输出矩形上一个点的坐标,矩形的长和宽

}就错了。P是局部变量。

应该改为:

void display()//矩形类的display()方法

{

System.out.println("矩形长="+width+"宽="+length+"面积="+this.getArea()+"周长="+this.getPerimeter());//输出矩形上一个点的坐标,矩形的长和宽

}

3、功能测试

剩下的就开始对主函数main()的编写了。

public class TestRectangle {

public static void main(String args[])

{

Rectangle r1= new Rectangle(4,40);//为参数创建了一个矩形的对象,并赋值给引用

r1.display();//对象r1调用display()方法

Rectangle r2= new Rectangle(3.5,35.9);

r2.display();//对象r2调用display()方法

}

}//201303014044计科高职13-2曲承玉

六、完整源码

完整源码:给出完整的源代码。如:

class Rectangle//定义一个矩形类

{

double width, length;//定义两个整形变量width,length;

Rectangle(){width=1;length=1;}//无参的构造函数

Rectangle(double z,double w)//z、w表示矩形的长和宽

{

width=z;

length=w;//将z,w分别赋值给width,length

}

public double getArea()//创建getArea()方法

{

return width*length;

}

public double getPerimeter()//创建getPerimeter()方法

{

double p;

p=width*2+length*2;

return p;

}

void display()//矩形类的display()方法

{

System.out.println("矩形长="+width+"宽="+length+"面积="+this.getArea()+"周长="+this.getPerimeter());//输出矩形上一个点的坐标,矩形的长和宽

}

}

public class TestRectangle {

public static void main(String args[])

{

Rectangle r1= new Rectangle(4,40);//为参数创建了一个矩形的对象,并赋值给引用

r1.display();//对象r1调用display()方法

Rectangle r2= new Rectangle(3.5,35.9);

r2.display();//对象r2调用display()方法

}

}//201303014044计科高职13-2曲承玉

七、实践总结

本次试验,主演了解了方法的创建和调用。并明白局部变量不能直接调用。

个人实验 github地址:https://github.com/quchengyu/cher的更多相关文章

  1. 我的github地址 https://github.com/1010de/Test.git

    构建之法老师叫交下任务学习github,经过一段时间的学习和了解,看介绍.看视频.看博客.初步认识到github的方便与好处.     自己试着去注册和使用github,已经慢慢学会了一些基本操作. ...

  2. 力奋github:https://github.com/birdstudiocn

    我的github地址https://github.com/birdstudiocn

  3. (2016 年) githup 博客地址 : https://github.com/JMWY/MyBlog

    githup 博客地址 : https://github.com/JMWY/MyBlog

  4. ESP-IDF版本更新说明(V2.1版)转自github(https://github.com/espressif/esp-idf/releases/)

    ESP-IDF Release v2.1  igrr 发布了这个 on 29 Jul · 自此发布以来,我承诺要 承诺414 自v2.0以来的变化. 突破变化 版本v2.1旨在大大兼容为ESP-IDF ...

  5. django实战仿慕课网在线视频网站(完成了85%以上的功能已上传github:https://github.com/huwei86/mxonline):

    1. 前台功能模块 基本模块:登录 注册 找回密码 / 全局搜索 / 个人中心, 课程功能:课程管理 / 讲师管理 / 授课机构管理  热门推荐 相关课程推荐 用户操作管理:用户收藏 / 课程评论   ...

  6. 我的GitHub:https://github.com/javaFesh?tab=repositories

    https://github.com/javaFesh?tab=repositories

  7. 我的博客地址和github地址

    博客地址 http://www.cnblogs.com/sjzsjzsjz/ github地址  https://github.com/sjzsjzsjz

  8. 云空调来自 GitHub 的冷气——GitHub 热点速览 v.21.20

    作者:HelloGitHub-小鱼干 万物皆可上云,air-conditioner 是上周火爆小鱼干朋友圈和公众号信息流的云空调项目.第一眼的时候,你会觉得和这个云空调还挺别致的,第二眼,si~~感到 ...

  9. 上半年最中意的 GitHub 更新「GitHub 热点速览 v.22.21」

    2022 年的热点速览加入 GitHub 产品动态之后,这次的图片显示是最得我意的,因为可以提升图片查看人的看片体验.而 GitHub 社区方面,GitHub 官方发布了部分开源项目的新版本.与此同时 ...

  10. android 很多牛叉布局github地址(转)

    原文地址 http://blog.csdn.net/luo15309823081/article/details/41449929 点击可到达github-------https://github.c ...

随机推荐

  1. javascript闭包—围观大神如何解释闭包

    闭包的概念已经出来很长时间了,网上资源一大把,本着拿来主意的方法来看看. 这一篇文章 学习Javascript闭包(Closure) 是大神阮一峰的博文,作者循序渐进,讲的很透彻.下面一一剖析. 1. ...

  2. 17秋 软件工程 团队第五次作业 Alpha Scrum3

    17秋 软件工程 团队第五次作业 Alpha Scrum3 今日完成的任务 杰麟:java后端学习: 世强:Android的部门基础信息模块的信息显示和对接后台: 港晨:后台管理登陆界面ui设计: 树 ...

  3. <20180930>故障解决记录Cisco RV系列低端路由

    故障描述: 今日网络瘫痪 , 浏览器提示报 DNS出错, 故障现象: 网关能正常分配到IP但内网机器却无法上网. 其中一个WiFi设备竟然还可以通讯(聊天工具)! 故障思路和排查: 1.1 怀疑是上次 ...

  4. innerHTML、innerText和outerHTML、outerText的区别

    区别描述如下: innerHTML 设置或获取位于对象起始和结束标签内的 HTML outerHTML 设置或获取对象及其内容的 HTML 形式 innerText 设置或获取位于对象起始和结束标签内 ...

  5. [TJOI2018]教科书般的亵渎

    嘟嘟嘟 题面挺迷的,拿第一个样例说一下: 放第一次亵渎,对答案产生了\(\sum_{i = 1} ^ {10} i ^ {m + 1} - 5 ^ {m + 1}\)的贡献,第二次亵渎产生了\(\su ...

  6. [CQOI2016]密钥破解

    嘟嘟嘟 这题我读了两遍才懂,然后感觉要解什么高次同余方程--然后我又仔细的看了看题,发现只要求得\(p\)和\(q\)就能求出\(r\),继而用exgcd求出\(d\),最后用快速幂求出\(n\). ...

  7. windows下安装ElasticSearch 5

    ElasticSearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用 ...

  8. js == 与 === 的区别[转]

    we文章转自http://blog.sina.com.cn/s/blog_4b32835b01014iv9.html 1.对于string,number等基础类型,==和===是有区别的 1)不同类型 ...

  9. http协议以及get和post请求

    HTTP协议是网络传输信息的一种规范. 就好比两个人之间的交流,甲只会讲英语,乙只会说汉语,结果是他们必然无法开怀畅谈. HTTP协议也类   GET 请求获取 Request-URI 所标识的资源 ...

  10. Android对接微信支付体验

    在写正文之前我不得不吐槽一下:微信支付所提供的参考文档以及技术支持真心太烂了. 微信的坑: 1.在生成prepay_id向微信服务器传递参数时<body>不支持中文.需要对其进行转码,否则 ...