面向对象程序设计课程实验报告

合集下载

《 面向对象程序设计》课程设计实验报告

《 面向对象程序设计》课程设计实验报告

《面向对象程序设计》课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间:2011-2012(一)目录1.任务1 (2)1.1 任务介绍 (2)1.2 小组成员任务分配 (2)1.3.1设计思想及主要流程图 (2)1.3.1主要程序清单 (2)1.3.1 运行结果及分析 (4)1.3.2设计思想及主要流程图 (2)1.3.2主要程序清单 (2)1.3.2 运行结果及分析 (4)1.3.3设计思想及主要流程图 (2)1.3.3主要程序清单 (2)1.3.3 运行结果及分析 (4)2.任务2 (2)2.1 任务介绍 (2)2.2 小组成员任务分配 (2)2.3设计思想及主要流程图 (2)2.3主要程序清单 (2)2.3 运行结果及分析 (4)3收获、体会和建议 (4)任务1.按照要求设计类 1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。

有如下测试程序和测试程序的输出结果,要求设计类Welcome 。

void main() { Welcome we; Welcome you(we); you.Display();you.Set(“Thank you.”);cout<<you.Get()<<endl; you.talk(); you.Display();}测试程序的输出结果如右: 设计类Welcome 的原则 1)在头文件Cpp1.h 中声明类 2)在Cpp1.cpp 中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程02=++c bx ax 的根的程序,用三个函数分别求当ac b 42+大于零、等于零和小于零时方程的根。

要求从主函数输入a 、b 、c 的值并输出结果。

使用面向过程的解法一般是把变量设为double 型,适用库函数cmath 进行计算。

请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。

面向对象程序设计实验报告

面向对象程序设计实验报告

课程编号:面向对象程序设计实验报告实验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()。

面向对象设计_实验报告

面向对象设计_实验报告

一、实验目的1. 理解面向对象设计的基本概念和原则;2. 掌握面向对象设计的常用方法和技术;3. 学会运用面向对象设计方法进行软件系统设计和实现;4. 提高软件设计能力和编程能力。

二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse IDE3. 编程语言:Java三、实验内容本次实验主要围绕面向对象设计进行,包括以下内容:1. 面向对象设计的基本概念和原则;2. 类的设计与实现;3. 继承与多态的应用;4. 设计模式的应用;5. 软件系统设计与实现。

四、实验步骤1. 面向对象设计的基本概念和原则(1)面向对象设计的基本概念:面向对象设计是一种软件开发方法,它将问题域中的对象作为设计的基本单元,以对象为核心进行系统设计。

(2)面向对象设计的基本原则:封装、继承、多态。

2. 类的设计与实现(1)定义类:根据问题域中的对象,定义相应的类。

(2)实现类:为类添加属性和方法,实现类的功能。

3. 继承与多态的应用(1)继承:通过继承,可以复用已有的类的设计和实现,提高代码的复用性。

(2)多态:多态是面向对象设计的一个重要特性,它可以实现代码的灵活性和扩展性。

4. 设计模式的应用(1)单例模式:确保一个类只有一个实例,并提供一个全局访问点。

(2)工厂模式:用于创建对象,而不直接指定对象的具体类型。

(3)观察者模式:当一个对象的状态发生变化时,其他依赖于该对象的对象会得到通知。

5. 软件系统设计与实现(1)需求分析:分析问题域,确定软件系统的功能和性能要求。

(2)系统设计:根据需求分析,设计软件系统的架构和模块。

(3)编码实现:根据系统设计,实现软件系统的功能。

(4)测试与调试:对软件系统进行测试,确保其功能符合预期。

五、实验结果与分析1. 实验结果本次实验完成了面向对象设计的基本概念、类的设计与实现、继承与多态的应用、设计模式的应用以及软件系统设计与实现等内容。

通过实验,掌握了面向对象设计的方法和技术,提高了软件设计能力和编程能力。

面向对象程序设计实验报告1

面向对象程序设计实验报告1
看看这些字符的10进制ascii码哦ascii码一样同一种字符字符怎么参加了数学运算哦是字符对应的ascii码整数2006年级20061719号姓名同组姓名实验日期2010看看这个字符是什么
实验一
实验名称:实验一Visual C++环境
实验目的:
⒈熟悉VC++的集成开发环境,学习运行一个C++程序的步骤。
y=fun(x);
if(y==0)
cout<<"they input num is sushu"<<endl;
else
cout<<"they input num is not sushu"<iostream.h>
#include<math.h>
float fun(float a,float b,float c,float d)
return 0;
3. #include<iostream.h>
void main()
{inta,b,c,d,e;
double score;
a=b=c=d=0;
cin>>score;
while(score>=0)
{
if(score>=90)
a++;
else
if(score>=80)
b++;
else
if(score>=70)
do{
*p=*(--p);
}while( p>s+n);
(*p)=c;
}
return s;
}
int main()

C++面向对象程序设计》实验报告

C++面向对象程序设计》实验报告

《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个正整数中的最大数。

面向对象设计实验报告

面向对象设计实验报告

一、实验目的1. 理解面向对象设计的核心概念,如封装、继承、多态等。

2. 掌握面向对象设计的方法和步骤。

3. 通过实际案例分析,提高面向对象设计的实践能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 面向对象设计的基本概念2. 类与对象3. 继承与多态4. 实际案例分析四、实验步骤1. 面向对象设计的基本概念(1)定义:面向对象设计(Object-Oriented Design,OOD)是一种以对象为中心的设计方法,通过将现实世界中的实体抽象为对象,以对象及其相互关系来描述系统的结构和行为。

(2)核心概念:a. 封装:将对象的属性(数据)和行为(方法)封装在一起,对外提供接口。

b. 继承:允许一个类继承另一个类的属性和方法,实现代码复用。

c. 多态:允许不同类的对象对同一消息作出响应,实现行为的变化。

2. 类与对象(1)定义:类是具有相同属性和行为的对象的抽象,对象是类的实例。

(2)步骤:a. 定义类:创建一个新的类,定义属性(成员变量)和方法(成员函数)。

b. 创建对象:使用new关键字创建类的实例。

c. 访问对象属性和方法:使用点号(.)操作符访问对象的属性和方法。

3. 继承与多态(1)继承:定义一个新的类(子类)继承自另一个类(父类),子类继承父类的属性和方法。

(2)多态:允许不同类的对象对同一消息作出响应,实现行为的变化。

(3)步骤:a. 定义父类:创建一个父类,定义属性和方法。

b. 定义子类:创建一个子类,继承自父类,并添加新的属性和方法。

c. 实现多态:使用子类对象调用父类方法,实现不同对象对同一消息的不同响应。

4. 实际案例分析(1)案例分析:设计一个简单的图书管理系统。

(2)设计步骤:a. 分析需求:图书管理系统需要管理图书的增删改查等功能。

b. 设计类:设计图书类(Book)、借阅者类(Borrower)和管理员类(Admin)。

面向对象程序设计(C++)实验报告

面向对象程序设计(C++)实验报告

面向对象程序设计(C++)实验报告姓名:刘九州学院:数学与计算机学院班级:10级计算机大类三班学号:100511314实验5 单继承一、实验目的1.掌握派生的类别与方式;2.了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制;3. 掌握继承中构造函数和析构函数的调用过程。

二、实验内容及步骤1.给出一个Document类,从Document派生出Book类,增加PageCount变量。

在主函数中进行测试,创建Book类对象并进行初始化,输出书名和页数。

2.设计一个单基继承的类层次程序,利用Person类派生出Student类,增加属性xh(学号),Person类中至少有姓名、年龄等数据成员,成员函数中构造函数对其初始化,析构函数释放相应存储单元,输出函数输出其数据成员的值,其它成员函数根据需要添加,在主函数中进行测试。

3.设计一个人员类person和一个日期类date,由人员类派生出学生类student和教师类professor,学生类和教师类的数据成员birthday为日期类。

在主函数中进行测试。

三、实验源程序和运行结果实验(一)源程序:#include<iostream>#include<string>using namespace std;class Document{public:Document(){};~Document();Document(char*name);char *Name;void PrintNameOf();};Document::Document(char*name){Name=new char[strlen(name+1)];strcpy(Name,name);}Document::~Document(){delete []Name;}void Document::PrintNameOf(){cout<<Name<<endl;}class Book:public Document{public:int PageCount;Book(char *a,int b):Document(a){PageCount=b;}};void main(){char BookName[20];int n;cout<<"请输入书名:"<<endl;cin>>BookName;cout<<"请输入书的页数:"<<endl;cin>>n;Book b(BookName,n);cout<<"书名为:"<<<<endl;cout<<"页数为:"<<b.PageCount<<endl;}运行结果:实验(二)源程序:#include<iostream>#include<string>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class student:public person{public:student(){xh=0;}student(int d){xh=d;}student(string c,int a,int d):person(c,a){xh=d;}~student(){}void setxh(int d){xh=d;}int getxh(){return xh;}private:int xh;};void main(){string c;cout<<"请输入学生的姓名:\n";cin>>c;cout<<"请输入学生的年龄:\n";int a;cin>>a;cout<<"请输入学生的学号:\n";int d;cin>>d;student n(c,a,d);cout<<"请输入学生的姓名为:"<<n.getname()<<endl;cout<<"请输入学生的年龄为:"<<n.getage()<<endl;cout<<"请输入学生的学号为:"<<n.getxh()<<endl; }运行结果:实验(三)源程序:#include<iostream>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class date{public:date(){year=2011;month=12;day=17;}~date(){}date(int y,int m,int d){year=y;month=m;day=d;}int getyear(){return year;}int getmonth(){return month;}int getday(){return day;}private:int year;int month;int day;};class student:public person{public:student(){// birthday.date();}student(int y,int m,int d):birthday(y,m,d){}~student(){}void getbirthday(){cout<<"学生的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};class teacher:public person{public:teacher(){// birthday.date();}teacher(int y,int m,int d):birthday(y,m,d){//birthday.date(y,m,d);}~teacher(){}void getbirthday(){cout<<"老师的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};void main(){cout<<"请输入学生的生日:"<<endl;int y,m,d;cin>>y>>m>>d;student s(y,m,d);cout<<"请输入老师的生日:"<<endl;cin>>y>>m>>d;teacher t(y,m,d);s.getbirthday();t.getbirthday();}运行结果:实验6 多继承一、实验目的1.掌握多基继承的使用,访问方法;2.理解类层次中访问规则;3.掌握虚基类的定义及使用。

面向对象程序设计实验报告十一

面向对象程序设计实验报告十一

面向对象程序设计实验报告十一《面向对象程序设计》试验汇报试验十一绘制图形【试验目标】掌握使用图形类Graphics画出不一样图形方法。

【试验内容】(选做一题)1.编写绘制圆形程序DrawOval.java。

点击“确定”按钮时,在画布指定位置画圆。

2.编写移动方块程序MoveSquare.java。

程序由二个类组成:窗体主类(表现层)负责控制,确定全部组件位置,处理用户对方块操作。

画布MoveCanvas类(逻辑层)负责绘图,其paint负责绘制方块,其方法moveUp(),moveDown(),moveLeft(),moveRight()分别响应窗体主类actionPerformed()方法对应按钮事件,再调用repaint方法来刷新图像。

【试验汇报】实习时间:实习地点:实习机号:具体实验内容1.编写绘制圆形程序DrawOval.java。

点击“确定”按钮时,在画布指定位置画圆。

运行成功程序为:importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.*;importjavax.swing.*;publicclassDrawOvalextendsJFrameimplementsActionListener{Ovalcanvascanvas;JTextFieldin_R,in_X,in_Y;JButtonbtn;publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubDrawOvalDrawOval=newDrawOval();}publicDrawOval(){super("画布上绘制圆");setSize(600,300);setVisible(true);canvas=newOvalcanvas();in_R=newJTextField(6);in_X=newJTextField(6);in_Y=newJTextField(6);setLayout(newFlowLayout());add(newJLabel("输入圆位置坐标:"));add(in_X);add(in_Y);add(newJLabel("输入圆半径:"));add(in_R);btn=newJButton("确定");btn.addActionListener(this);add(btn);add(canvas);validate();setDefaultCloseOperation(EXIT_ON_CLOSE); }classOvalcanvasextendsCanvas{intx,y,r;voidOvalcanvas(){setSize(200,200);setBackground(Color.cyan);}publicvoidsetOval(intx,inty,intr){this.x=x;this.y=y;this.r=r;}publicvoidpaint(Graphicsg){g.drawOval(x,y,2*r,2*r);}}publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstubintx,y,r;try{x=Integer.parseInt(in_X.getText());y=Integer.parseInt(in_Y.getText());r=Integer.parseInt(in_R.getText());canvas.setOval(x,y,r);canvas.repaint();}catch(NumberFormatExceptionee){x=0;y=0;r=0;}}}结果截图:下面为具体试验过程:(1)运行,出现错误,关键是“cannotberesolvedtoatype”错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
入口参数:const STACK&s
出口参数:无
功能:用s初始化p指空栈
int size (const STACK *const p)
入口参数:无
出口参数:int max
功能:返回p指的栈的最大元素个数max
int howMany (const STACK *const p)
入口参数:无
出口参数:int pos
int size (const STACK *const p);//返回p指的栈的最大元素个数max
int howMany (const STACK *const p);//返回p指的栈的实际元素个数pos
int getelem (const STACK *const p, int x);//取下标x处的栈元素
void initSTACK(STACK *const p, const STACK&s); //用栈s初始化p指向的栈
int size (const STACK *const p);//返回p指向的栈的最大元素个数max
int howMany (const STACK *const p);//返回p指向的栈的实际元素个数pos
功能:返回p指的栈的实际元素个数pos
int getelem (const STACK *const p, int x)
入口参数:int x
出口参数:elem[m]
功能:取下标x处的栈元素
STACK *const push(STACK *const p, int e)
入口参数:int e
出口参数:(*this)
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指空栈
功能:将e入栈,并返回p
STACK *const pop(STACK *const p, int &e)
入口参数:int &e
出口参数:(*this)
功能:出栈到e,并返回p
STACK *const assign(STACK*const p, const STACK&s)
入口参数:STACK&s
出口参数:(*this)
4.软件测试
测试结果见图1.3
图1.3
5.特点与不足
5.1技术特点
完成了实验的所有要求,没有错误的地方。
5.2不足和ห้องสมุดไป่ตู้进的建议
没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的人可能需要花费更多时间去了解。
6.过程和体会
6.1遇到的主要问题和解决方法
输出结果数字与预计不同,检查后发现原因是变量初始值未设置。
7.3源代码
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct STACK
{
int *elems;//申请内存用于存放栈的元素
int max;//栈能存放的最大元素个数
int pos;//栈实际已有元素个数,栈空时pos=0;
};
void initSTACK(STACK *const p, int m);//初始化p指向的栈:最多m个元素
功能:赋s给p指栈,返回p
void print(const STACK*const p)
入口参数:无
出口参数:无
功能:打印p指向的栈元素
void destroySTACK(STACK*const p)
入口参数:
出口参数:
功能:销毁p指向的栈,释放
3.软件开发
在Codeblocks编译环境下,使用C++语言编写。
int getelem (const STACK *const p, int x);//取下标x处的栈元素
STACK *const push(STACK *const p, int e);//将e入栈,并返回p
STACK *const pop(STACK *const p, int &e);//出栈到e,并返回p
void print(const STACK*const p);//打印p指向的栈元素
void destroySTACK(STACK*const p);//销毁p指向的栈,释放
1.2需求分析
本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。
6.2课程设计的体会
本次实验主要还是通过回顾C语言中栈的知识完成在C++上的编程,所以总体过程没有出现太大的问题;同时也对const变量有了进一步的认识。
7.源码和说明
7.1文件清单及其功能说明
experiment1.cpp源码
experiment1.exe可执行文件。
7.2用户使用说明书
experiment1.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。
课程实验报告
课程名称:面向对象程序设计
院系:
专业班级:
学号:
姓名:
指导教师:
实验一.面向过程的整型栈编程
1.需求分析
1.1题目要求
整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用面向过程的方法编程,然后写一个main函数对栈的所有操作函数进行测试。
2.系统设计
2.1概要设计
函数结构图见图1.1
图1.1
总体流程图见图1.2
图1.2
2.2详细设计
void initSTACK(STACK *const p, int m)
入口参数:int m
出口参数:无
功能:初始化栈,可存m个元素
void initSTACK(STACK *const p, const STACK&s)
STACK *const push(STACK *const p, int e);//将e入栈,并返回p
STACK *const pop(STACK *const p, int &e);//出栈到e,并返回p
STACK *const assign(STACK*const p, const STACK&s);//赋给p指栈,返回p
相关文档
最新文档