面向对象程序设计实验报告1
- 格式:doc
- 大小:376.00 KB
- 文档页数:35
《面向对象程序设计》实验一、实验内容1.定义接口ITowD,IThreeD。
然后由ITowD派生出圆类;由圆类和IThreeD派生长圆锥类。
结构如下,请实现没有实现的方法,并在Main方法中演示。
interface ITowD{double GetCirCle();//平面图形周长double GetArea();//平面图形面积}interface IThreeD{double GetArea();//立体图形表面积double GetV olume();//体积}class Circle : ITowD{double r;public Circle(double r){this.r = r;}double ITowD.GetCirCle(){//求周长}double ITowD.GetArea(){//求面积}}class Y uanZhui : Circle, IThreeD{double h;public Y uanZhui(double r, double h): base(r){this.h = h;}double IThreeD.GetArea(){//求表面积}double IThreeD.GetV olume(){//求体积}}二、实验目的掌握接口的隐式实现和显示实现。
三、实验环境安装有Visual Studio2005的PC一台。
四、实验数据及结果1·2·五、结论及思考本次试验,学习的是定义接口ITowD,IThreeD。
然后由ITowD派生出圆类;由圆类和IThreeD 派生长圆锥类。
总的来说,类只有在支持接口中的方法时,才能实现隐式实现和显示实现,隐式实现可以解决多继承的二义性,具有多态性。
六、附程序代码1·using System;using System.Collections.Generic;using System.Text;namespace p8_1{class Program{static void Main(string[] args){Circle p1 = new Circle(5);ITowD s1 = p1;Console.WriteLine("圆的周长为:{0}", s1.GetCirCle());Console.WriteLine("圆的面积为:{0}", s1.GetArea());YuanZhui p2 = new YuanZhui(10, 15);IThreeD s2 = p2;ITowD s3 = (Circle)p2;Console.WriteLine("圆锥的周长为:{0}", s3.GetCirCle());Console.WriteLine("圆锥的面积为:{0}", s2.GetArea());Console.WriteLine("圆锥的体积为:{0}", s2.GetVolume());Console.Read();}}public interface ITowD{double GetCirCle();//平面图形周长double GetArea();//平面图形面积}public interface IThreeD{double GetArea();//立体图形表面积double GetVolume();//体积}class Circle : ITowD{public double r;public Circle(double r){this.r = r;}double ITowD.GetCirCle(){return 2 * 3.14 * r; //求周长}double ITowD.GetArea(){return 3.14 * r * r; //求面积}}class YuanZhui : Circle, IThreeD{double h;public YuanZhui(double r, double h): base(r){this.h = h;}double IThreeD.GetArea(){return 3.14 * r * r + 3.14 * r * h;//求表面积}double IThreeD.GetVolume(){return 3.14 * r * r * h / 3; //求体积}}}2·using System;using System.Collections.Generic;using System.Text;namespace p8_2{class Program{static void Main(string[] args){Circle p1 = new Circle(5);ITowD s1 = p1;Console.WriteLine("圆的周长为:{0}",s1.GetCirCle());Console.WriteLine("圆的面积为:{0}",s1.GetArea());YuanZhui p2 = new YuanZhui(10,15);IThreeD s2 = p2;ITowD s3 = p2;Console.WriteLine("圆锥的周长为:{0}", s3.GetCirCle());Console.WriteLine("圆锥的面积为:{0}",s2.GetArea());Console.WriteLine("圆锥的体积为:{0}", s2.GetVolume());Console.Read();}}public interface ITowD{double GetCirCle();//平面图形周长double GetArea();//平面图形面积}public interface IThreeD{double GetArea();//立体图形表面积double GetVolume();//体积}class Circle : ITowD{public double r;public Circle(double r){this.r = r;}public double GetCirCle(){return 2 * 3.14 * r; //求周长}public virtual double GetArea(){return 3.14 * r * r; //求面积}}class YuanZhui : Circle, IThreeD{double h;public YuanZhui(double r, double h): base(r){this.h = h;}public override double GetArea(){return 3.14 * r * r + 3.14 * r * h;//求表面积}public double GetVolume(){return 3.14 * r * r * h / 3; //求体积 }}}。
课程编号:面向对象程序设计实验报告实验1一.实验目的:加强我自己使用继承来实现Java类的能力二.实验内容:1.首先根据要求实现超类Product类。
以利于以后商品Coffee类,CoffeeBrewer类,Orderitem类的继承。
2.根据要求实现Coffee类,CoffeeBrewer类,Orderitem类。
3.实现如下类图:4.三.实验步骤:1.首先根据要求设计出一下的类图。
5.不同的类的具体要求如下(都要继承超类Product类)。
(1)C lass Producta.含有的变量:code;description;price;b.含有的方法:.public Product(String code,Stringdescription,double price)public String getCode().返回实例变量的code.∙public String getDescription().返回实例变量的variable description.∙public double getPrice().返回实例变量的 price.∙boolean equals(Object object). 重写方法 equals i在类Object里,如果他们的code是相等的,则产品对象是相等的。
∙String toString(). 重写方法toString 在类Object里.返回的格式如下:∙code_description_pricec.写完具体如下:publicclass Product {private String code;private String description;privatedouble price;public Product(String code,String description,double price) {this.code=code;this.description=description;this.price=price;}public String getCode() {return code;}public String getDescription() {return description;}publicdouble getPrice() {return price;}@Overridepublicboolean equals(Object a) {if (a instanceof Product) {if (((Product) a).code==this.getCode()) {returntrue;}else {returnfalse;}}returnfalse;}@Overridepublic String toString() {return (this.getCode()+"_"+this.getDescription()+"_"+this.getPrice());}}(2)c lass Coffeea.含有的变量:∙origin.∙roast.∙flavor.∙aroma.∙acidity.∙body.b.含有的方法:public Coffee(String code,String description,Doubleprice,String origin,String roast,String flavor,String aroma,String acidity,String body);∙public String getOrigin().返回实例变量的origin.∙public String getRoast().返回实例变量的roast.∙public String getFlavor().返回实例变量的flavor.∙public String getAroma().返回实例变量的aroma.∙public String getAcidity().返回实例变量的acidity.∙public String getBody().返回实例变量的body.∙String toString(). 重写方法 toString 在类Object里. 返回如下格式::code_description_price_origin_roast_flavor_aroma_acidi ty_bodyc.写完具体如下:publicclass Coffee extends Product {private String origin;private String roast;private String flavor;private String aroma;private String acidity;private String body;public Coffee(String code,String description,Double price,Stringorigin,String roast,String flavor,String aroma,String acidity,String body){ super(code, description, price);this.origin=origin;this.roast=roast;this.flavor=flavor;this.aroma=aroma;this.acidity=acidity;this.body=body;}public String getOrigin() {return origin;}public String getRoast() {return roast;}public String getFlavor() {return flavor;}public String getAroma() {return aroma;}public String getAcidity() {return acidity;}public String getBody() {return body;}@Overridepublic String toString() {returnthis.getCode()+"_"+this.getDescription()+"_"+this.getPrice()+"_"+thi s.getOrigin()+"_"+this.getRoast()+"_"+this.getFlavor()+"_"+this.getAroma()+"_"+ this.getAcidity()+"_"+this.getBody();}}(3)c lass CoffeeBrewera.含有的变量:model.∙waterSupply.∙numberOfCups.b.含有的方法:∙public CoffeeBrewer(String initialCode,∙ String initialDescription,∙ double initialPrice,∙ String initialModel,∙ String initialWaterSupply,∙ int initialNumberOfCups)∙public String getModel()。
《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。
(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。
(3)掌握简单C++程序的编写和调试方法。
(4)掌握重载函数的定义方法。
(5)能正确使用引用型变量。
2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。
②在自己指定的子目录中建立一个名为test.cpp的新文件。
③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。
观察和分析编译信息。
⑤根据编译信息指出的错误, 修改程序。
再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。
⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。
⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。
观察屏幕的变化。
在输出窗口应显示程序运行结果。
⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。
改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。
面向对象程序设计实验报告学号:4100118姓名:邢启晖提交日期:2012-10-13成绩:东北大学秦皇岛分校实验一类与对象一、实验目的1.掌握类的声明。
2.掌握对象的创建。
3.掌握方法的定义和调用。
4.掌握构造函数的使用。
二、实验内容1.编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。
创建一个对象,求给定尺寸的立方体的体积。
代码:package shiyan1;public class Main {public static void main(String args[]){Box box=new Box();box.setDemo(122,132, 142);System.out.print("立方体的体积:");System.out.println(box.getArea());}}class Box{int length;int width;int heigth;Box(){}void setDemo(int length,int width,int heigth){this.length=length;this.width=width;this.heigth=heigth;}float getArea(){return length*width*heigth;}2.将上题的方法setDemo改用构造函数实现初始化。
代码:package shiyan1;public class Main {public static void main(String args[]){Box box=new Box(123,133,143);System.out.println(box.getArea());}}class Box{int length;int width;int heigth;Box(int length,int width,int heigth){this.length=length;this.width=width;this.heigth=heigth;}float getArea(){return length*width*heigth;}}三、思考题1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?答:不可以。
《面向对象程序设计》实验一实验报告1 实验目的:(1)了解在VC++、C-free中如何编辑、编译、连接和运行一个C++程序;(2)掌握声明类的方法,类和类的成员的概念以及定义对象的方法(3)了解多文件的C++程序结构2 实验任务(1)输入两个整数,将它们按由大到小的顺序输出。
要求使用变量的引用;(2)编写一个程序,将两个字符串连接起来,结果取代第一个字符串;(3)声明Animal 类,数据成员有age,成员函数有SetAge()等。
首先把数据成员声明为公有的,在main()函数中访问,再把它改为私有的,指出在main()函数中访问会出现怎样的情况,如何避免?该程序需要在同一个文件中分别给出类的声明、类的实现、类的演示每部分的代码。
(4)声明日期类,数据成员有year、month、day,成员函数有输出日期、加一天等。
练习使用多文件结构来组织程序。
3 程序清单实验一:#include"iostream"using namespace std;int main(){int i,j;cout<<"input two number"<<endl;cin>>i>>j;swap(i,j);cout<<i<<","<<j<<endl;return 0;}void swap(int &a,int &b){int temp;temp=a;a=b;b=temp;}实验二:#include"iostream"#include"string"using namespace std;int main(){string string1,string2;cout<<"please input two string:";cin>>string1>>string2;string1=string1+string2;cout<<string1<<endl;return 0;}实验三:4 运行结果图1.1 任务一运行结果图2.1任务二运行结果5 总结或感悟(对运行结果所作的分析以及本次调试程序所取得的经验。
《面向对象程序设计》实习报告班级:学号:姓名:指导教师:实习时间:一.实习目的1. 学习怎样启动和退出VB,熟悉VB的工作环境2.掌握基本控件的重要属性、事件;3.熟练掌握在窗体上建立上述控件的操作方法;4.熟练掌握事件过程代码的编写;5.掌握建立基于图形界面的应用程序的过程6. 学习用属性窗口设置对象属性及用代码设置对象属性的方法。
7. 学习如何用对象(窗体和控件)建立界面及在代码编辑器中输入程序代码的基本操作。
8 .基本掌握用VB开发应用程序的一般步骤。
二.程序设计实验1 基本算法练习1.编写程序求“自己学号后3位到500”以内的所有素数及自然数对。
2.编写程序“计算最大公约数和最小公倍数”实验:计算3个数的最大公约数和最小公倍数,并以最小公倍数作为总金额,计算人民币各种票额的张数3.编写程序“歌德巴赫猜想及守形数”4.编写程序“百钱百鸡问题”实验:编写程序解决百钱买百鸡问题:公鸡5元/只,母鸡3元/只,小鸡一元买3只,用100元买100只鸡,问有哪些购买方案?实验2 常用统计练习1.成绩统计实验:利用文本框作为数据的输入和输出,产生数学、语文、英语、计算机等4门课程的成绩2.字符统计实验:随机产生200个“32到自己学号后3位”且小于128的随机数,将其转换成相应字符,形成一段统计字符。
统计字符中各个字母、各数字、空格、其它字符的个数。
实验3 常用排序方法1. 选择法排序实验:随机产生10个“学号后3位到500之间”的数,用选择法进行递增序。
2.冒泡法排序实验: 随机产生10个“50到学号后3位之间”的数,然后用冒泡法按递增的顺序进行排序。
3.二维数组排序实验:随机产生“10到学号后3位之间”的数,形成一个4*5 的二维数组,按升序排列。
4.从有序数组中删除一个元素实验要求:随机产生“1到学号后3位之间”的10个数,然后产生1-10间的随机数,确定删除元素,最后得出删除后的结果实验4 加密解密与数制转换1.数据加密与解密根据产生的后移位数,将输入的字符进行加密和解密。
课程实验报告课程名称:面向对象程序设计实验名称:面向过程的整型栈编程院系:计算机科学与技术专业班级:CS1203学号:U201214884姓名:肖双指导教师:马光志2015 年 1 月 6 日一、需求分析1.题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。
整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯C语言编程,然后写一个main函数对栈的所有操作函数进行测试。
struct STACK{int *elems; //申请内存用于存放栈的元素int max; //栈能存放的最大元素个数int pos; //栈实际已有元素个数,栈空时pos=0;};void initSTACK(STACK *const p, int m); //初始化p指向的栈:最多m个元素void initSTACK(STACK *const p, const STACK&s); //用栈s初始化p指向的栈int howMany (const STACK *const p); //返回p指向的栈的实际元素个数posSTACK *const push(STACK *const p, int e); //将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); //出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); //赋s给p指的栈,并返回p void print(const STACK*const p); //打印p指向的栈void destroySTACK(STACK*const p); //销毁p指向的栈2.需求分析按题目要求定义一个栈,并完成对栈的各种操作。
二、系统设计1.概要设计1)定义一个整型栈2)完成下列函数:void initSTACK(STACK *const p, int m); //初始化p指向的栈:最多m个元素void initSTACK(STACK *const p, const STACK&s); //用栈s初始化p指向的栈int howMany (const STACK *const p); //返回p指向的栈的实际元素个数posSTACK *const push(STACK *const p, int e); //将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); //出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); //赋s给p指的栈,并返回p void print(const STACK*const p); //打印p指向的栈void destroySTACK(STACK*const p); //销毁p指向的栈3)创建主函数,测试上述函数。
《面向对象程序设计实验》实验一、Java实验环境的建立(2学时)1、目的要求(1)掌握Java编程环境的搭建过程;(2)掌握Jcreator pro软件的使用方法;(3)能使用Java doc文档。
2、实验内容(1)下载并安装JDK1.6,配置JDK环境变量;(2)下载Javadoc压缩包并解压在JDK安装路径下;(3)下载Jcreator pro 4.0并安装和配置使用环境;(4)使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。
①Java application程序代码如下:public class HelloJava{public static void main(String args[]){ System.out.println("Hello Java!"); }}②Java applet程序代码如下:import java.awt.*;public class Hello extends java.applet.Applet{public void paint(Graphics g){ g.drawString("Hello!",30,30); }}3、仪器与材料:计算机实验二、Java语言程序设计训练(2学时)1、目的要求(1)输入、输出操作实现原理和方法;(2)掌握程序流程控制的实现方法;(3)掌握数组的定义和操作方法。
2、实验内容(1)计算Result=1!+2!+3!+...+10!。
public class Test3 {public static void main(String[] args) {int sum = 0, fact, n, i;for (n = 1; n <= 10; n++) {fact = 1;for (i = 1; i <= n; i++)fact *= i;sum += fact;}System.out.println("sum=" + sum);}}(2)计算1---50之间所有素数的和。
C++实验报告实验一 Visual C++6.0开发环境应用入门(验证性实验2学时)1.目的要求:了解Visual C++6.0的特点,熟悉了解Visual C++6.0的开发环境,学习使用Visual C++6.0编写标准的C++控制台应用程序。
2.实验内容:使用Visual C++来建立一个非图形化的标准C++程序,编译、运行教材中的例3-3,用公式法求解PI的数值,并尝试利用其他方法求解并获得相同的结果。
π=16arctan(1/5)-4arctan(1/239)arctan(x)=x-x³/3+x5/5-x7/7+…求π=?(1)源代码和说明:#include<iostream>using namespace std;double arctan(double x){double sqr=x*x;double e=x;double r=0;int i;while(e/i>1e-15){double f=e/i;r=(i%4==1)?r+f:r-f;e=e*sqr;i+=2;}return r;}int main(){double a=16.0*arctan(1/5.0);double b=4.0*arctan(1/239.0);cout<<"PI="<<a-b<<endl;return 0;}2)运行结果:1实验二 C++简单程序设计实验(验证性实验4学时)1.目的要求:会编写简单的C++程序;复习基本数据类型变量和常量的应用;复习运算符与表达式的应用;复习结构化程序设计基本控制结构的应用;复习自定义数据类型的应用;练习使用简单的输入输出;观察头文件的作用;学会使用VC6.0开发环境中的debug调试功能;熟练程序设计中的技巧;2.实验内容:1)给定一个字符变量输出其二进制形式。
例如char a=’a’;其二进制为00100001。
面向对象程序设计实验报告实验报告(1)2015.6【实验作者】学号:姓名:班级:教学站:【实验名称】实验一:熟悉C++程序的风格和C++程序的上机全过程【实验目的】1.熟悉C++程序的风格,熟悉实验环境。
2.练习C++程序的输入、修改、编译、连接与运行的全过程。
3.本实验有4个程序【实验内容】1. 习题2.2下面是一个C程序,改写它,使它采用C++风格的I/O语句。
(1)该程序做什么工作?输入两个整数,求两个整数的大于1 的最小公约数[(另外请教下毛老师:如果最小公约数与最小数相等时,我觉得也有可能这个数是两个数的大于1 的最小公约数)即7与14的公约数为1,7按题意的话,要大于1,那么7也是这两个数的最小公约数,但程序不认为它们具有公约数]。
(2)该程序中那几个数是由键盘输入的?那几个数是输出的?那几个数是临时变量?a与b 由键盘输入;d 是输出的;a,b,d,min 都是临时变量。
(3)用C++风格的I/O语句是什么?#include <iostream.h> cout<<与cin>>(4)写出该程序的算法(用流程图表示)框图1:(5)该程序你有否上机编译、连接、运行通过。
有上机编译连接并运行通过,但有些疑问!2. 习题 2.20分析下面程序的输出结果:(1)该程序做什么工作?利用引用函数改变一个变量的值。
(2)该程序有几个函数?其中f函数是什么函数?其功能是什么?一个函数,F函数是一个引用返回值的函数,并且该函数参数也为一个引用,函数功能是送入一个对变量引用,将变量+10后送回。
成为对返回值的引用。
(3)写出该程序的算法(用流程图表示)框图2:(4)该程序你有否上机编译、连接、运行通过。
该程序有上机编译并连接运行通过。
3. 习题2.23 建立一个被称为sroot( )的函数,返回其参数的二次根。
重载sroot( )三次,让它分别返回整数、长整数与双精度数的二次根(为了实际计算二次根,可以使用标准库函数sqrt( ))。