实验4 类和对象(3)
C++语言程序设计实验4(类和对象)
是:用初始对象的每个数据成员的值,初始化将要建立的对象的对应数据成员。
构造函数和拷贝构造函数的声明格式如下:
class 类名
{
public: 类名(形参); 类名(类名 &对象名);
//构造函数 //拷贝构造函数
... ...
}; 类名::类名()
//构造函数的实现
{ 函数体;
} 类名::类名(类名 &对象名)
6. 本章小结
本章主要介绍了面向对象的基本概念、类和对象的声明、构造函数、析构函数、内联成 员函数、拷贝构造函数、类的组合。
类是面向对象程序设计中最重要、最基本的概念,也是学习面向对象方法时遇到的第 1 个难点。类是对逻辑上相关的函数和数据的封装,是对问题的抽象描述。
要理解类与对象,必须要结合实例来学习,读者可以思考:除了书中列出的例子,现实 世 界 中 还 有 哪 些 有 形 或 无 形 的 事 务 可 以 被 抽 象 为 程 序 中 的 类 ,每 个 类 又 存 在 哪 些 对 象( 实 体 )。 这样可以对类的概念了解的快一些。
本章开始的每章的最后有一个实例——人员信息管理程序,这个例子贯穿后续各章,利 用每章介绍的只是不断丰富程序的功能,建议课后仔细阅读、体会,并尝试修改、补充程序 的功能。
另外,本章中还介绍了利用 UML 语言表示类与对象的方法,以后各章还将进一步介绍 用 UML 语言表示类之间的关系,但这远不是 UML 语言的全部,这方面的内容也不是初学者 学习的重点,读者可以不必深究,了解一下就可以了。如果有需要,可以另外学习软件工程 的课程。
面向对象的程序设计目的是:实现软件设计的产业化。主要观点是认为自然界是由实体 (对象)所组成。程序设计的出发点是:使用面向对象的观点来描述模仿并处理现实问题。 他要求:高度概括、分类、抽象。
面向对象程序设计上机
面向对象程序设计实验指导书实验一:C++开发环境、简单程序设计的实验(一)C++开发环境应用入门(1学时)1、实验目的(1)了解C++开发工具的特点(2)熟悉C++开发环境(3)学习用C++编写标准的C++程序2、实验任务使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序:#include <iostream.h>void main(void){cout<<”Hello!\n”;cout<<”Welcome to C++!\n”;}3、实验步骤(1)启动Visual C++开发环境(2)创建一个项目A)单击File菜单中的New选项,显示示新建对话框B)选择Win32 Console Application(VC++)。
C)选择项目所在路径及输入项目的名称D)依次按‘下一步’直至完成为止。
(3)至此,C++已经建立好工程相关的文件(请不要随意更改其自动生成的文件),在生成的main 函数中写入必要的内容即可。
(4)对于VC,请继续下面的步骤:A)建立C++源程序文件a)选选菜单命令Project|Add to Project|New,弹出New对话框b)在New对话框的Files选项卡中选择C++ Source File,并填入文件名称,单击OK按钮,完成新建C++源程序文件B)编辑C++源程序文件a)在文件编辑窗口中输入代码b)完成后,选择菜单File|Save保存这个文件C)建立并运行可执行程序a)选择菜单命令Build,建立可执行程序如果你正确输入了源程序,此时便成功地生成了可执行程序。
如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源程序进行修改后,重新选择菜单命令Build建立可执行程序。
b)选择菜单命令Run,运行程序,观察屏幕显示内容。
D)关闭工作空间选择菜单命令File|Colse WorkSpace关闭工作空间。
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. 定义类:在实验开始前,我们首先需要定义一个类。
类是对象的抽象描述,包含了对象的属性和方法。
以汽车为例,我们可以定义一个Car类,其中包含品牌、颜色和速度等属性,以及启动、加速和刹车等方法。
2. 创建对象:在定义了Car类之后,我们可以通过创建对象来实例化该类。
通过使用new关键字,我们可以创建多个汽车对象,每个对象都拥有独立的属性和方法。
例如,我们可以创建一个名为myCar的对象,它是Car类的一个实例。
3. 访问对象的属性和方法:创建了对象之后,我们可以通过点运算符来访问对象的属性和方法。
例如,通过myCar.brand可以获取myCar对象的品牌属性,通过myCar.start()可以调用myCar对象的启动方法。
这样,我们可以通过对象来操作和管理数据,使代码更加清晰和可读。
4. 对象之间的交互:在实际编程中,对象之间经常需要进行交互。
通过在类中定义方法,我们可以实现对象之间的数据传递和信息交流。
例如,我们可以定义一个方法来获取其他汽车对象的速度,并根据这些速度进行比较和判断。
实验结果:通过实验,我们深入了解了类与对象的概念和用法。
通过定义类和创建对象,我们可以更好地组织和管理代码,提高程序的可维护性和可扩展性。
通过访问对象的属性和方法,我们可以实现对数据和行为的封装,使代码更加模块化和易于理解。
通过对象之间的交互,我们可以实现数据的共享和协作,提高程序的效率和灵活性。
实验总结:类与对象是面向对象编程的核心概念,掌握了类与对象的基本用法对于开发高质量的程序至关重要。
通过本次实验,我们加深了对类与对象的理解,并通过实际操作掌握了其基本用法。
在以后的编程过程中,我们可以更加灵活地运用类与对象,提高代码的可读性和可维护性。
java类与对象实验报告
java类与对象实验报告Java类与对象实验报告一、引言Java是一种面向对象的编程语言,类和对象是Java编程的基本概念。
在本次实验中,我们将学习和掌握Java类和对象的概念、定义和使用方法,并通过实际的编程实验来加深对这些概念的理解。
二、实验目的1. 理解Java类和对象的概念;2. 学会定义和使用Java类;3. 掌握创建和操作Java对象的方法;4. 熟悉Java类和对象的相关语法和规范。
三、实验过程1. 类的定义在Java中,类是对象的模板,用于描述对象的属性和行为。
我们首先需要定义一个类,以便创建对象。
类的定义包括类名、属性和方法。
属性即对象的特征,方法即对象的行为。
2. 对象的创建通过使用关键字"new",我们可以创建一个类的对象。
对象是类的实例化,每个对象都有自己的属性和方法。
3. 对象的属性和方法对象的属性和方法可以通过对象名加点操作符来访问。
属性可以是基本类型或其他类的对象,方法可以是对象的行为或功能。
4. 构造方法构造方法是一种特殊的方法,用于创建对象时进行初始化操作。
构造方法的名称必须与类名相同,没有返回类型,可以有参数。
5. 封装性封装性是面向对象编程的重要特性之一,它将数据和方法封装在类中,对外部隐藏内部实现细节。
通过使用访问修饰符(private, public, protected)来控制属性和方法的访问权限。
6. 继承继承是面向对象编程的另一个重要特性,它允许我们创建一个新类,并从现有类中继承属性和方法。
通过使用关键字"extends"来实现继承。
7. 多态性多态性是面向对象编程的核心概念之一,它允许我们使用一个父类类型的引用来引用子类的对象。
通过方法的重写和重载来实现多态性。
四、实验结果通过本次实验,我们成功定义了一个Java类,并创建了多个对象。
我们可以通过对象名来访问对象的属性和方法,并对其进行操作。
我们还学习了构造方法的使用,以及封装性、继承和多态性的相关概念。
java面向对象 实验四 类和对象编程(面向对象特征)
学号姓名实验序号实验四实验名称类和对象编程—面向对象特征实验地点实验日期实验内容1.设计3个类,分别学生类Student,本科生类Undergaduate,研究生类Postgraduate,学生类包含一些基本属性,如姓名、所学课程、课程成绩等,具有一个空方法getGrade();本科生类Undergaduate与研究生类Postgraduate继承学生类Student,都覆盖了父类的getGrade()方法,用于通过分数计算成绩的等级,计算方法不同,研究生的标准要比本科生的标准高一些,如下表所示。
要求对属性进行适当封装,通过方法来访问。
表课程成绩等级本科生标准研究生标准80--100优秀90—100优秀70--80良好80—90良好60--70一般70—80一般50--60及格60—70及格50以下不及格60以下不及格编写测试类,在测试类里创建Undergaduate与Postgraduate对象,计算他们的成绩,并输出他们的个人信息。
实验过程及步骤根据实验要求编写程序如下:class Student {private String name;private String course;private int score;public String getName() {return name;}public void setName(String name) { = name;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}public int getScore() {return score;}public void setScore(int score) { this.score = score;}public String getGrade() {return"";}}class Undergaduate extends Student { Undergaduate(String _name, String_course, int _score) {setName(_name);setCourse(_course);setScore(_score);实验过程及步骤}public String getGrade() {int grade = getScore();if (grade >= 80)return ("优秀");if (grade >= 70)return ("良好");if (grade >= 60)return ("一般");if (grade >= 50)return ("及格");return ("不及格");}}class Postgraduate extends Student { Postgraduate(String _name, String _course, int _score) {setName(_name);setCourse(_course);setScore(_score);}public String getGrade() {int grade = getScore();if (grade >= 90)return ("优秀");if (grade >= 80)return ("良好");if (grade >= 70)return ("一般");if (grade >= 60)return ("及格");return ("不及格");}}public class Test {public static void main(String[] args) {Undergaduate a1 = new Undergaduate("张三", "JAVA", 80);Undergaduate a2 = new实验过程及步骤Undergaduate("李四", "JAVA", 60);Postgraduate b1 = newPostgraduate("王五", "JAVA", 90);System.out.println(a1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(b1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(a2.getName() + "的" + a2.getCourse() + "成绩为"+ a2.getGrade());}}得到结果:实验结果及分析教师评阅。
实验题目
实验一 Java语言概述【实验目的】1.掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。
2.熟悉Java应用程序的基本结构,并能联合编译应用程序所需要的类。
文件保存要求:在D:盘新建文件夹“学号”,在“D:\ 学号”下新建文件夹“timu1”。
题目1的文件保存在“timu1”中,以下依次类推。
【题目1】1、实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
2、程序模板:请按模板要求,将【代码】替换为Java程序代码。
3、实验后的练习a.编译器怎样提示丢失大括号的错误。
b.编译器怎样提示语句丢失分号的错误。
c.编译器怎样提示将System写成system这一错误。
d.编译器怎样提示将String写成string这一错误。
【题目2】1、实验要求:编写3个源文件:、、,每个源文件只有一个类。
含有应用程序的主类(含有main方法),并使用了Teacher和Student类。
将3个源文件保存到同一目录,D:\timu2,然后编译。
2、程序模板:请按模板要求,将【代码】替换为Java程序代码。
3、实验后的练习a.将编译通过后,不断地修改源文件中的【代码2】。
比如,在命令行窗口输出“我是语文老师”或“我是数学老师”。
要求每次修改源文件后,单独编译,然后直接运行应用程序(不要再编译)。
b.如果需要编译某个目录下的全部Java源文件,如D:\1001目录,可以使用如下命令:D:\1001>javac *.java请练习上述命令。
【题目3】1、实验要求:课本第15页习题2、实验后的练习习题8.(4)实验四类与对象【实验目的】1.掌握使用类来封装对象的属性和行为。
2.掌握对象的组合以及参数传递。
3.掌握类变量与实例变量,以及类方法与实例方法的区别。
文件保存要求:在D:盘新建文件夹“shiyan04”,在“D:\ 20120shiyan04”下新建文件夹“timu1”。
C++面向对象程序设计实验指导
C++面向对象程序设计实验指导书(第三版)(适用于理工科)学号:姓名:班级:指导老师:计算机系2019年7月实验1 C++程序的运行环境和运行C++程序的方法一、实验目的和要求1.熟悉VS2015的集成开发环境;2.学会使用VS2015编辑、编译、连接和运行C++程序;3.通过运行简单的C++程序,初步了解C++源程序的结构和特点;4.学会使用简单的输入输出操作。
二、实验内容1.编辑、编译、连接和运行以下的C++程序#include<iostream>using namespace std;int main(){cout<<"Hello!\n";cout<<"This is a program."<<endl;return 0;}2.编译下列程序,改正所出现的错误信息,并写出输出结果。
(1)#include<iostream>using namespace std;int main(){cin>>a;int b=3*a;cout<<"b=<<b<<\n";return 0;}(2)int main(){cout<<"Hello!\n";cout<<"Welcome to C++!";}(3)#include<iostream>using namespace std;int main(){int x,y;x=5;y=6;int z=x*y;cout<<"x*y="<<z<<endl;return 0;}3.请填空完成以下程序,并上机调试正确,写出运行结果。
#include<iostream>using namespace std;int add(int a,int b);int main(){int x,y,sum;cout<<"Enter two numbers:”<<’\n’;//在下划线处填上语句,完成用cin读入x和y__________________________________________sum=add(x,y);cout<<”The sum is:”<<sum<<’\n’;return 0;}int add(int a,int b){//在下划线处填上语句,完成计算a与b的和并返回之_________________________}实验2 C++简单程序设计练习一、实验目的和要求1.进一步熟悉VS2015的集成开发环境。
java类和对象的应用实验总结
Java类和对象的应用实验总结在Java编程语言中,类(Class)和对象(Object)是两个核心的概念。
类是对象的模板或蓝图,而对象则是类的实例。
通过使用类和对象,我们可以创建具有共享属性和方法的实体,也可以创建具有独特属性和行为的实体。
以下是我对Java类和对象应用实验的一些总结:类的定义和使用:在Java中,我们使用class关键字来定义一个类。
例如,我们可以创建一个名为Person的类,该类具有name、age 和height等属性,以及eat()和sleep()等方法。
我们可以通过创建类的实例(即对象)来使用类。
对象的创建和使用:我们使用new关键字来创建一个类的实例,这个实例就是一个对象。
例如,我们可以创建一个Person类的对象,并通过调用对象的方法来执行特定的行为。
我们也可以通过访问对象的属性来获取或修改对象的状态。
继承:Java中的类可以继承其他类的属性和方法。
通过继承,我们可以创建一个新的类,该类继承了父类的所有属性和方法,并可以添加自己的属性和方法。
这个过程被称为类的扩展或继承。
多态:在Java中,一个对象可以被引用为多种类型。
例如,我们可以有一个父类类型的引用指向一个子类对象。
当调用这个对象的方法时,会根据对象的实际类型来调用相应的方法。
这就是多态性的体现。
封装:封装是Java中一个重要的面向对象编程概念。
通过封装,我们可以将数据(属性)和处理数据的方法(方法)绑定在一起,形成一个独立的实体。
封装的目的是增加安全性和简化性,用户只知道对象提供哪些方法,至于内部的具体实现细节则一概不知。
通过这些实验,我深入理解了Java的类和对象的概念,以及它们在面向对象编程中的重要性。
这些实验也帮助我理解了如何使用类和对象来设计和实现复杂的系统。
JAVA实验报告
学生实验报告课程名称:面向对象程序语言(Java)年级:专业:学号:姓名:指导教师:实验地点:学年至学年度第学期1.目录实验一初识Java——“一个简单的应用程序”实验二基本数据类型与数组——“输出希腊字母表”实验三分支与循环语句——“猜数字游戏”实验四类与对象——“机动车”实验五类与对象——“家中的电视”实验六类与对象——“共饮同井水”实验七类与对象——“求方程的根”实验八子类与继承——“中国人、北京人和美国人”实验九子类与继承——“银行计算利息”实验十子类与继承——“公司支出的总薪水”实验十一接口与实现——“评价成绩”实验十二内部类与异常类——“检查危险品”实验十三常用实用类——“检索简历”实验十四组件及时间处理——“计算三角形的面积”实验十五实验十六实验(一)初识Java——“一个简单的应用程序”实验时间:2017年02月21日实验目的本实验的目的是让学生掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序实验要求编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,欢迎学习Java”和“We are students”。
实验内容public class Hello {public static void main (String args[ ]) {System.out.println("你好,很高兴学习Java"); //命令行窗口输出"你好,很高兴学习Java"A a=new A();a.fA();}}class A {void fA() {System.out.println("We are students"); //命令行窗口输出"We are students"}}实验结果分析通过本次实验,在老师的指导下我学会了基本的JAVA编译原理,能够自行改变环境变量,能够成功编译出一个简单的应用程序,而且通过实验后的练习知道了一些基础的错误在JAVA中出现时编译器的提示信息是怎样的。
实验四 Java语言面向对象基础编程
实验四 Java语言面向对象基础编程一、实验目的1.理解Java语言是如何体现面向对象编程基本思想,2.了解类的封装方法,以及如何创建类和对象,3.了解成员变量和成员方法的特性。
二、实验内容1.类的定义、封装和对象创建的使用。
编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
具体要求如下:(1)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean 型的属性,该属性用来判断三个属能否构成一个三角形。
(2)Lader类具有类型double的上底、下底、高、面积属性,具有求面积的功能。
(3)Circle类具有类型为double的半径、周长和面积属性,具有求周长、面积的功能。
package exercise;class Trangle{double sideA,sideB,sideC,area,length;boolean boo;//带三个参数的构造函数public Trangle(double a,double b,double c) {sideA=a;//参数a,b,c 分别赋值给sideA,sideB,sideCsideB=b;sideC=c;if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){//a,b,c 构成三角形的条件表达式boo=true;//给boo 赋值。
}else{boo=false;//给boo 赋值。
}}double getLength(){return sideA+sideB+sideC;//方法体,要求计算出length 的值并返回}//计算三角形的面积publicdouble getArea(){if(boo){double p=(sideA+sideB+sideC)/2.0;area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));return area;}else{System.out.println("不是一个三角形,不能计算面积");return 0;}}publicvoid setABC(double a,double b,double c){sideA=a;//参数a,b,c 分别赋值给sideA,sideB,sideCsideB=b;sideC=c;if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){//a,b ,c 构成三角形的条件表达式boo=true;//给boo 赋值。
JAVA实验4-1答案
广东海洋大学学生实验报告书(学生用表)实验名称实验四(1). 类与对象(第1部分)课程名称Java程序设计与开发技术课程号16232204学院(系) 信息学院专业计算机科学与技术班级计科1131学生姓名彭德权学号201311621124 实验地点钟海楼04019实验日期2015年9月24日一、实验目的(1)学习使用Java中的类来封装对象的属性和功能;(2)学习掌握Java中对象的组合及参数传递。
二、实验任务完成实验三指导上实验1、实验2的实验任务。
三、实验仪器设备和材料安装有J2SE开发工具的PC机。
四、实验内容和步骤实验1 机动车编写一个Java应用程序,改程序中有两个类:Vehicle(用于刻画机动车)和User (主类)。
具体要求如实验指导所示。
代码如下:Vehicle.javapublic class Vehicle{private double speed;private int power;void speedUp(int s){this.speed=this.speed+s;}void speedDown(int s){this.speed=this.speed-s;}void setPower(int p){this.power=p;}int getPower(){return this.power;}double getSpeed(){return this.speed;}}User.javapublic class User{public static void main(String args[]){Vehicle car1,car2;GDOU-B-11-112car1=new Vehicle();car2=new Vehicle();car1.setPower(128);car2.setPower(76);System.out.println("car1的功率是:"+car1.getPower());System.out.println("car2的功率是:"+car2.getPower());car1.speedUp(80);car2.speedUp(80);System.out.println("car1目前的速度:"+car1.getSpeed());System.out.println("car2目前的速度:"+car2.getSpeed());car1.speedDown(10);car2.speedDown(20);System.out.println("car1目前的速度:"+car1.getSpeed());System.out.println("car2目前的速度:"+car2.getSpeed());}}运行结果:课后的练习(1)改进speedUp()方法,使得Vehicle类的对象加速时不能将speed值超过200。
Delphi的类和对象(三)-使用数组属性和属性的索引
Delphi的类和对象(三)-使⽤数组属性和属性的索引类中使⽤数组属性,声明⽅式如下:property属性名[参数列表]:属性类型 Read ⽅法名 Write ⽅法名;声明数组属性时要注意:(1)参数表与过程或函数参数表⾮常相似,只是⽤⽅括号,参数表中的参数类型可以是任何类型。
(2)声明数组属性时,访问说明中在Read 或Write 后⾯的必须是⽅法名,不能出现数据成员。
(3)Read 后⾯的⽅法参数表的参数类型和顺序必须与属性参数表相同,Write 后得过程⽅法的参数表中必须列出属性的参数表且与该列表的顺序与属性参数表相同。
在该过程⽅法的最后,是⼀个与属性类型相同的值或常数参数。
(4)数组属性可以通过它的下标访问,下表是传递给读或写⽅法的参数。
(5)在数组属性的⽣命中,不能进⾏存储声明。
但可以使⽤Default 指令符,这时该指令符不是对存储的说明,⽽是指定当前的属性为类中的默认属性。
⽰例:unit Unit4;interfacetypeTmyclass = classprivateFNumber: array[0..100] of String; //读写⽅法私有化(get set)function GetNuber(x: Integer): String;procedure SetNumber(x: Integer; const Value: String);publicproperty Numbers[x: Integer]:String read GetNuber write SetNumber;//数组属性 publicend;implementation{ Tmyclass }function Tmyclass.GetNuber(x: Integer): String;beginResult:= FNumber[x];end;procedure Tmyclass.SetNumber(x: Integer; const Value: String);beginFNumber[x]:= Value;end;end.属性的索引:索引说明⽤来使多个属性共⽤⼀个访问⽅法来设置属性的值。
《面向对象程序设计_C++》实验报告
《⾯向对象程序设计_C++》实验报告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-x3/3+x5/5-x7/7+…求π=?(1)源代码和说明:#includeusing 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="<return 0;}2)运⾏结果:1实验⼆ C++简单程序设计实验(验证性实验4学时)1.⽬的要求:会编写简单的C++程序;复习基本数据类型变量和常量的应⽤;复习运算符与表达式的应⽤;复习结构化程序设计基本控制结构的应⽤;复习⾃定义数据类型的应⽤;练习使⽤简单的输⼊输出;观察头⽂件的作⽤;学会使⽤VC6.0开发环境中的debug调试功能;熟练程序设计中的技巧;2.实验内容:1)给定⼀个字符变量输出其⼆进制形式。
例如char a=’a’;其⼆进制为00100001。
1)源代码和说明#includeusing namespace std;int main(){char ch;int j,k[8]={0};cout<<"请输⼊⼀个字符:"<cin>>ch;for(j=0;j<=7;j++){if(ch){if(ch%2==0)k[j]=0;elsek[j]=1;ch=(ch-(ch%2))/2;}}for(j=7;j>=0;j--){cout<}cout<}2)运⾏结果:2)给定⼀个字符变量输出其⼆进制反转形式。
《可视化建模与UML》实验1-5指导教案
可视化建模与UML实验指导井大电信学院2015.03目录实验一常用建模软件 (3)实验二需求定义与陈述 (4)实验三用例建模 (8)实验四类图(与对象图)建模 (10)实验五 UML静态模型分析 (11)实验六交互建模(顺序图与协作图) (14)实验七行为建模(状态图和活动图) (16)实验八* 构件图和部署图建模 (20)实验九* 交互概述图 (22)实验十* 设计建模实例与分析 (27)实验十一* 数据库建模实例与分析 (29)实验一常用建模软件的使用【实验目的】1.熟悉常用UML建模工具。
2.熟练掌握Rational Rose的基本操作3.掌握UML规则和相关机制。
4.掌握UML的可见性规则和构造型的作用。
【实验性质】验证性实验【实验环境要求】Pentium II以上微机,Windows2000以上操作系统,Rational Rose2003,Microsoft Visio,网络。
【实验内容和步骤】一、安装Rational Rose2003或其它任意一种UML建模工具。
本项内容实验者根据情况选择并在实验课外完成。
二、练习使用建模工具建立各种UML图形,并对图形进行相应编辑和修改。
认识各种UML关系及可见性符号,并用工具表示出来。
【分析与讨论】1.总结UML在软件工程中的作用以及使用UML建模的必要性。
2.比较不同建模工具。
【实验导读】关于Rational Rose2003的安装。
Rational Rose的安装比较麻烦,通过安装Rational Rose2003,并在安装过程中,发现一些问题,解决和理解它。
Rational Rose的建模环境:Rose是个菜单驱动应用程序,用工具栏帮助使用常用特性。
Rose支持九种不同类型的UML图:User Case图,CLASS图,Activity图,Sequence图,Collaboration图,Class图,Statechart图.Component图和Deployment图。
实验4 类的定义
实验4 类的定义一、实验目的1.掌握类的定义2.了解如何根据描述发现类及其成员,具备初步的面向对象分析与设计能力二、实验概述现在有一个奥特曼打怪兽的角色扮演游戏。
请你根据下面的描述,定义两个类:奥特曼类和怪兽类。
在奥特曼的世界,打怪兽就是全部。
现在人人都有机会成为奥特曼,加入到与怪兽无止境的战斗中。
可惜,并非人人生来就是英雄,革命尚未成功,同志仍需努力啊。
每一个奥特曼都要从零开始,辛勤劳动,打怪升级,最终才能成为举世瞩目的大英雄。
奥特曼的等级(rank)从第一级开始,随着它打怪兽经验(exp)的增加,等级将不断攀升。
随着等级的升高,奥特曼的生命值(hp)上限和攻击力(damage)也将大大增强。
在与怪兽的战斗中,奥特曼收获的不仅仅是经验。
有时,运气好的话,还能从怪兽身上弄到点小钱(money)。
不要小看这些钱,关键时刻,它能给奥特曼买药补血呀。
奥特曼没有金刚不坏之身,在与怪兽的战斗中,奥特曼会受到伤害。
一旦奥特曼的生命值降到0,它英雄的一生就结束了。
好了,了解了奥特曼的基本情况,现在可以开始战斗了。
首先,我们需要一位全新的奥特曼,我们给它赋予一定的初始实力(initial)。
让它投入战斗吧!在与怪兽的战斗中要讲究策略。
所谓知己知彼,百战不殆,一旦碰到怪兽,我们首先要查看自己和对方的实力(display),包括双方的等级、生命值、攻击力、经验和所拥有的钱财。
所谓打得赢就打,打不赢就跑。
如果对手太强大,逃跑吧(escape)!偶尔逃跑无伤颜面,但会耗费一点生命值。
如果总是逃跑,生命被虚耗,那英雄就当不成了。
所以该出手时就出手,勇敢地战斗(attack)吧!每一回合的战斗中,怪兽会受到攻击(attacked),怪兽也会反击(fightback),让奥特曼受到攻击(attacked)。
每一回合结束,只要奥特曼还活着(isalive),而且怪兽也还活着,战斗就要继续。
如果奥特曼的生命值太低,也许抵挡不了下一轮的进攻,那么别财迷了,掏钱出来给它补血(restore)吧。
[09_10(2)]09本④⑤班《面向对象程序设计C++》教学进度表(程细柱)
实验4:类与对象(二)
实验5:继承和派生
实验6:多态性与虚函数
实验7:函数模板和类模板
实验8:输入输出的格式控制
实验9:文件的输入与输出
复习
考试
介绍面向对象程序设计的基本概念、基本特征、主要优点
使学生了解C++语言的特点、C++源程序的构成
使学生掌握类与对象的构成与定义
使学生掌握对象数组、静态成员与友元的特点与使用
使学生掌握if和switch选择结构、while和for循环结构及实现循环的方法
使学生掌握类和对象的定义及类成员的访问控制方式
使学生掌握对象数组与对象指针的定义与使用方法
使学生理解继承的含义,掌握派生类的定义方法和实现
使学生理解多态性的基本概念,掌握虚函数和纯虚函数的概念
使学生掌握C++中函数模板和类模板的使用方法
韶关学院09—10学年第二学期《面向对象程序设计C++》教学进度表
院(系):计算机科学系年级(班):09本④⑤班人数:113学时:72学分:4
课程编号011204700选用教材《C++面向对象程序设计》陈维兴中国铁道出版社
填表日期10年2月26日
周次
起止日期
章节
教学目标
教学形式
备注
1
2
3
4、5
6、7
使学生能用C++预定义的I/O类进行流处理
使学生掌握文件的输入输出方法
成绩评定,考试成绩质量分析
讲授
讲授
讲授
讲授
讲授
讲授
讲授
讲授
讲授
自学
辅导
辅导
《面向对象程序设计》答案
实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。
2、掌握如何编辑、编译、连接和运行一个C++程序。
3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。
二、实验要求1、分析下列程序运行的结果。
程序一:#include <iostream.h>int add(int x,int y=8);void main(){ int x=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}int add(int x,int y){ return x+y;}//12,28程序二:#include <iostream.h>void main(){ int *p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}//i=15程序三:#include <iostream.h>void main(void){ int i=10;int &r=i;r++;cout<<"i="<<i<<", r="<<r<<'\n';i=88;cout<<"i="<<i<<", r="<<r<<'\n';}//i=11,r=11i=88,r=88程序四:#include <iostream.h>int f(int i){ static int k=1;for(;i>0;i--)k +=i;return k;}void main(){ int i;for(i=0;i<5;i++)cout<<f(i)<<" ";}// 1 2 5 11 21程序五:#include <iostream.h>void func();int n=1;void main(){ static int a;int b= -9;cout <<"a:"<<a<<" b:"<<b<<" n:" <<n<<endl;b+=4;func();cout <<"a:"<<a<<" b:"<<b<<" n:"<<n<<endl;n+=10;func();}void func(){ static int a=2; int b=5;a+=2;n+=12;b+=5;cout <<"a:" <<a<<" b:" <<b<<" n:" <<n <<endl;}// a:0 b:-9 n:1a:4 b:10 n:13a:0 b:-5 n:13a:6 b:10 n:35实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。
实验四 类图参考答案
实验四类图【实验目的】1.掌握类的定义,类的3要素,UML中类的表示方法。
2.掌握类与类之间的各种关系代表的含义及表示方法。
3.掌握实体类、边界类、控制类的概念和表示方法。
4.接口和抽象类的概念和表示方法,类的多重性关系。
【实验性质】设计性实验。
【实验要求】1.通过网上选课系统学习识别类和类之间关系的方法;2.学习使用Rational Rose绘制类图的方法;3.掌握类图中属性和操作的添加方法。
【实验内容】设计绘制选课系统中的类图和对象图。
【实验步骤】1.分析实验三中选课用例的顺序图,除了角色之外,有以下名词:课程,界面和控制对象。
从而抽象出三个类:课程类Course、界面类FormObject和控制对象类ControlObject。
2.课程类Course应具有的属性有:课程名称、开课教室、授课教师、选课的学生、开课起始时间、允许选课的学生人数,操作有设置课程名称、设置开课教师、设置课程号、设置授课教师信息、设置开课起始时间、设置允许选课的学生人数、查询课程名称、查询开课教师、查询授课教师信息、查询开课起始时间、查询允许选课的学生人数。
根据以上分析,绘制课程类Course的类图。
3.类似的,自己分析建立界面类FormObject和控制对象类ControlObject的类图。
4.在选课系统中,涉及到的用户包括Student(学生)和Registrar(管理员),其主要特性相似,所以可以建立统一基类People,Student和Registrar由People派生。
如下图所示:PeopleStudent (from Use Case View)Registrar (from Use Case View)5.在选课系统中涉及到的角色包括:(1)学生Student;(2)管理员Registrar;(3)学生和管理员的父类People;(4)数据库Database。
这些类和角色之间的关系如下:(1)角色Student和Register从People派生;(2)学生、管理员在与系统交互时,都有一个界面与之对应;(3)一个界面可能和课程相关(0-多门);(4)控制对象负责课程的处理,处理结果显示在界面上;(5)控制对象完成对数据库的操作;(6)界面请求控制对象的服务。
Java程序设计实验指导书(答案)
第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 类和对象(3)1.实验目的熟悉UML类图的描述方法。
掌握类中数据成员和成员函数的说明方法;掌握成员函数的调用方法。
2.实验环境PC机一台,安装windows 2003或windows XP或windows 7操作系统,安装Eclipse平台的C++开发环境。
3.相关知识点(一)UML简介UML(Unified Modeling Language)即统一建模语言,是OMG(Object Management Group)发表的图标式软件设计语言。
UML是针对面向对象软件开发的,而C++正是这样的一种语言,UML在设计中被越来越多的使用着。
UML主要由一系列视图组成,其中包括静态视图(Static view),用例视图(Use case view)活动视图(Activity view)等,不同的图用处自然也不一样,而对开发人员来讲,更重要的应该是静态视图中的类图(class diagram)和交互视图(Interaction view)中的顺序图(Sequence diagram)。
UML可以使用图表的形式来表现业务关系或者物理关系,可以促进对问题的理解和解决。
它提供了一种通用的、精通的、没有歧义的通信机制进行。
同时,UML还可以通过自己的语法规则使得可以通过使用建模工具软件将设计模式映射到一种语言上,继而可以产生系统设计文档。
UML包括如下几种图:用例图(Use case diagrams)类图(Class diagrams)序列图(Sequence diagrams)合作图(Collaboration diagrams)状态图(Statechart diagrams)活动图(Activity diagrams)构件图(Component diagrams)部署图(Deployment diagrams)类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
这里我们简单介绍一下类图的设计方法。
静态视图说明了对象的结构,其中最常用的就是类图,类图可以帮助我们更直观的了解一个系统的体系结构,有时侯,描述系统快照的对象图(Object diagram)也是很有用的。
在这里,我们主要介绍类图,下面的图4-1就是一个简单的类图。
图4-1 UML例图在类图中,类由矩形框来表示,如图4-1中,定义了4个类,分别为Base、A、B、C,类之间的关系通过各种线条和其他符号来表示,在上图中,空心的三角表示继承关系,在UML的术语中,这种关系被称为泛化(Generalization),所以上面的类用等价代码表示为:class Base{…};class A:public Base{…};cla ss B:public Base{…};class C:public Base{…};一个类中一般包含3个组成部分。
第一个是类名;第二个是属性(attributes);第三个是该类提供的方法(类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分)。
类名部分是不能省略的,其他组成部分可以省略。
类名书写规范:正体字说明类是可被实例化的,斜体字说明类为抽象类。
属性和方法书写规范:修饰符[描述信息] 属性、方法名称[参数] [:返回类型|类型] 属性和方法之前可附加的可见性修饰符:加号(+)表示public;减号(-)表示private;#号表示protected;省略这些修饰符表示具有package(包)级别的可见性。
如果属性或方法具有下划线,则说明它是静态的。
描述信息使用<< 开头和使用>> 结尾。
类的性质是由一个属性、一个赋值方法和一个取值方法组成。
书写方式和方法类似。
我们再来看一个例子。
如图4-2所示。
图4-2 UML例图对应的代码如下:class TaxCalculator{private long taxRate ;private int salary ;public TaxCalculator(long taxRate){this.taxRate = taxRate ;}public long countTax(){return taxRate*salary;}public int getSalary(){return salary;}public void setSalary(int salary){this.salary = salary;}}4.实验内容与实验步骤1、在程序中按照如图4-3 UML类图定义Animal类。
Animal类的所有成员变量的访问权限为private。
所有成员函数的访问权限都为public。
其中Animal类的成员函数move()功能是输出一个字符串“animal moving”,setXXX()函数设置该类的成员变量,getXXX()函数返回类的成员变量的值,display()函数分行输出类的3个成员变量,输出格式:“变量名:变量值”。
并定义main函数实例化一个对象,然后调用相应的函数测试相应的功能。
图4-3 Animal类的UML类图解题思路:UML图是程序设计中常见的一种示意图,书写代码时应注意各属性的访问权限,以及属性命名方式对应的功能。
部分代码如下://类的声明class animal{private:string name; //姓名int age; //年龄string color; //颜色public:animal(string n,int a,string c);animal(){}void setName(string n);string getName() ;void setAge(int a) ;int getAge() ;void setColor( string c) ;string getColor() ;void display() ;void move() ;~animal(){}};//成员函数的类外实现//…………..//类的应用int main (void){animal an1("贝贝",1,"白色");animal an2;an2.setName("狗狗");cout<< an2.getName()<<endl;an2.setAge(2);cout<< an2.getAge()<<endl;an2.setColor("黄色");cout<< an2.getColor()<<endl;an1.display();an2.display();an1.move();an2.move();return 0;}2、构建一个类Book,其中含有2个成员quantity和price,为每个数据成员书写设置函数。
为类增加构造函数,数据成员初始化为0。
在主函数中定义对象数组,为各个对象的quantity成员赋值为1~6,成员price的值由用户输入,在主函数中求出对象数组中每个元素的quantity*price值。
解题思路:本题是类的简单应用,为Book创建类并实例化对象计算总额。
相对简单,在创建类的时候注意数据成员的访问权限。
部分代码如下://类的声明class Book{private:int quantity;float price;public:Book():quantity (0),price(0.0){ cout<<"constructor"<<endl; }void setprice(){ //补充代码}void set quantity (int q){ quantity =q; }int getqu(){ return qu; }int getprice(){ return price; }};//类的应用int main (){Book book[6];for(int i=0; i<6; i++)book[i].setqu(i+1);for( i=0; i<6; i++)book[i].setprice();for( i=0; i<6; i++)cout<<"第"<<i+1<<"本书"<<book[i].getprice()*book[i].getqu()<<endl;return 0;}3、定义一个银行帐户类bankAccount,银行帐户具有银行帐号(AccountNo),密码(password),帐户余额(balance),并具有从帐户取钱(withDraw)和向帐户存钱(deposit)的等功能。
编写main(),创建一个银行帐户,同时模拟存钱取钱操作。
然后为类bankAccount 增加构造函数,构造函数要求有3个参数,分别为账号,密码,余额赋初值。
解题思路:本题是一个相对综合的题目,基本要求是创建一个银行账户类,实现简单操作,扩展部分可以将代码扩充为一个银行信息管理系统。
实验步骤:(1)确定类中的数据成员的数据类型,这里银行账户AccountNo有几种选择,例如整形,字符串等,一般来说选取字符串是比较好的选择,如果选用整形,则第一位不能为零;密码一般为字符数组或者字符串类型;账户余额一般来说就是长整型就可以了。
int AccountNo; //帐号id设置为6位char Password [8]; //密码为6位double Balance; //余额(2)确定类中的成员函数,题目要求中的从帐户取钱(withDraw)和向帐户存钱(deposit)两个函数。
在函数中需要另外还需要修改数据成员的函数等,特别注意各个函数的函数参数和函数类型。
此外还需要书写构造函数,为数据成员初始化。
可以参考如下代码进行设计:void setId(int i);void setPwd(char p[]);void setBalance (double m);double getBalance ();int getId();char * getPwd();int withDraw(double m);void deposit(double m);void display();(3)在此基础上,分别完成各个函数的定义。
从帐户取钱withDraw函数,在定义时注意要保证账户余额足够的情况下才能完成取钱操作,而向帐户存钱deposit函数一般不需要检查余额,具体见如下代码。
其他成员函数请大家自行完成定义。