实验三 对象(类)设计
实验三:对象模型 - 用例图设计实例:

实验三:建立对象模型创建对象模型时,可以从以下五个层次进行,分别是:类与对象层,属性层,服务层,结构层和主题层。
1、寻找类从用例视图中寻找类,是从用例的事件流开始,查看事件流中的名词以获得类。
在事件流中,名词可以分为4种类型:角色、类、类属性和表达式。
也可以检查序列图中的对象,通过对象的共性来寻找类。
另外,序列图中的每一个对象都要映射到相应的类。
必须指出的是:有些类是无法通过以上方法找到的。
类可以分为3种类型:实体类(entity)、边界类(boundary)和控制类(control)。
实体类保存要放进永久存储体的信息。
在选课系统中,可以抽出学生类(Student),它是实体类的范例。
在事件流和交互图中,实体类通常是对用户最有意义的类,通常采用业务领域术语命名。
边界类位于系统与外界的交接处,包括所有窗体、报表、打印机和扫描仪等硬件的接口以及与其他系统的接口。
要寻找和定义边界类,可以检查用例图。
每个角色和用例交互至少要有一个边界类。
边界类使角色能与系统交互。
控制类负责协调其他类的工作。
每个用例通常都有一个控制类,控制用例中的事件顺序。
在交互图中,控制类具有协调责任。
可能有许多控制类在多个用例间共用的情况。
2、类图的创建步骤:(1)右键点击“Logical View”,在弹出的菜单中选择“New”,再在下一级菜单中选择“Class”,创建一个新的类,然后将该类的名字改为“Course”。
图1. 创建Course类的示意图(2)鼠标右键点击“Course”图标,选择“Open Specification”菜单进入“Class Specification for Course”对话框,该对话框中可以完成对Course类的属性,方法等的设置。
(3)添加继承关系。
在选课系统中,涉及到的用户包括管理员(Registrar)和学生(Student),其主要特征相似,所以可以建立统一基类People,而Registrar和Student则由People派生。
java面向对象实验三 类与对象编程—类与对象基础

}
⒉实验测试结果:
实验结果及分析
实验结果:
(1)成功输出平均成绩和总成绩。
(2)创建四个学生对象,并成功输出学生信息。
教师评阅
System.out.println(name+"的平均成绩"+(java+c+db)/3.0);
}
voidsum(){
System.out.println(name+"的总成绩为"+(java+c+db));
}
}
publicclassTest{
publicstaticvoidmain(String []args){
classUndergraduate {
Stringname;
intcourse;
Stringeducation="本科";
Undergraduate(String _name,int_course) {
name= _name;
course= _course;
}
String getGrade() {
return("良好");
if(course>= 70)
return("一般");
if(course>= 60)
return("及格");
return("不及格");
实验过程及步骤
}
}
publicclassTest {
publicstaticvoidmain(String[] args) {
Underg("张三", 68);
实验三 类与对象

实验三类与对象专业班级网络1201 学号1218064023 姓名汪枭涵实验学时 2 实验类型验证性实验地点数计学院实验中心实验时间指导老师曹记东实验成绩年月日一、实验目的:理解类与对象的定义,理解封装的含义,掌握数据成员的声明与初始化方法,掌握成员方法的定义、返回值、参数传递的方法。
二、实验内容:用面向对象的思想编写一个简单的计算器,能够实现两个数字的加、减、乘、除运算。
三、实验要求:1.根据需求,用面向对象的方式定义一个计算器类(Calculator);2.由于计算器能对两个数字进行各种运算,所以定义两个成员变量表示两个运算数;3.编写4个成员方法,分别实现加(add)、减(minus)、乘(multiple)、除(divide)四类运算。
4.定义构造函数对成员变量赋初值;5.写出实验报告。
四、实验步骤与结果:(由学生按照实验内容完成)public class Calculator {public static double add(double num1, double num2){return num1 + num2;}public static double minus(double num1, double num2){return num1 - num2;}public static double multiple(double num1, double num2){return num1 * num2;}public static double divide(double num1, double num2){if(num2 != 0){return num1/num2;}return -1;//除数为0,错误}public static void main(String args[]){System.out.println("加法:15 + 5 = " + add(15, 5));System.out.println("减法:15 + 5 = " + minus(15, 5));System.out.println("乘法:15 + 5 = " + multiple(15, 5));System.out.println("除法:15 + 5 = " + divide(15, 5));}}实验结果:总结:通过本次实验,了解了java的开发环境,掌握了NetBeans的使用方法,同时对一些简单的基本JA V A语言的有了进一步的了解和掌握,对JA V A的一些基本语法也明白的很多,但是因为一开始在语法上存在一定的应用缺陷所以导致在实验的过程遇到了一些问题,最终通过和同学的讨论顺利解决了问题。
实验三 类与对象(1)——耿祥义

定义Test3_2类,在其中编写一个main方法,在其中创建分别创建三个类的对象,并显示Circle,Lader,Trangle对象的属性信息和面积值。对Trangle对象,还要显示其是否可以构成三角形的信息。
(二)使用修饰符
有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下。public,private,protected,package,static,final,transient,volatile
程序功能:通过两个类StaticDemo、KY2_4说明静态变量/方法与实例变量/方法的区别。
③将class CCircle中的变量double pi; double radius;加上private修饰符,进行编译会出现什么问题,为什么?
④将void setCircle(double r, double p),double getRadius()和double getCircleArea()加上修饰符static,重新编译会出现什么问题?仍用static,怎样修改别的地方来纠正这个错误?在main中引用这些方法时不用创建对象则怎样引用?
程序功能:描述一个圆类,其主要属性为半径,还有一个非常重要的常量是圆周率。该圆可以求出面积,可以设置半径和取得半径大小。
class CCircle
{ double pi;
double radius;
double getRadius()
{ return radius;
}
void setCircle(double r, double p)
void aaa()
实验报告三(完整版)

实验报告三实验三、对象和类(一)1.实验目的(1)结合面向对象思想掌握类的定义以及类中成员的定义,学会设计自己的类。
(2)掌握方法重载、尤其是构造方法的重载,深入理解构造函数的作用与调用时机。
(3)理解this关键字同static关键字的意义,掌握成员变量的具体隐藏实现。
(4)理解对象同对象引用间的区别,掌握创建对象与调用对象成员的方法,以及对象作为参数与基本数据类型变量做参数的区别。
2.实验内容和步骤上机输入程序并调试运行程序。
编译并运行附件1和附件2,观察结果分析其原因。
附录1 ClassLoadTest.javapackage ch3;public class ClassLoadTest{static{System.out.println("class loding");}public static void main(String [] args) {}}结果:原因:附录2 PassValueTest.javapackage ch3;public class PassValueTest {private int i = -100;public void test1(int b) {b = 100;}public void test2(PassValueTest b) {b.i = 100;}public void test3(PassValueTest b) {b = this;}public static void main(String[] args) {PassValueTest obj = new PassValueTest();int temp = 100;obj.test1(temp);System.out.println(temp);obj.test2(obj);System.out.println(obj.i);obj.i=100;PassValueTest newobj = new PassValueTest();obj.test3(newobj);System.out.println(newobj.i);}}结果:原因:(2)编译附件3,分析结果;将“注释这行”所在的行注释,再将注释的call2方法去掉注释,再次编译,观察结果分析其原因。
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个正整数中的最大数。
实验报告实例

上海理工大学光电信息与计算机工程学院《面向对象程序设计实验》实验报告专业姓名学号年级指导教师成绩:教师签字:目录实验一面向对象开发环境C++基础实验二C++语言进阶实验三面向对象高级特性实验成绩细化表实验一面向对象开发环境基础一、实验目的(1)了解C++的开发环境,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个C++程序。
(3)通过运行简单的C++程序,初步了解C++源程序的基本组成。
.(4)掌握C++中基本数据类型。
(5)掌握C++中各种运算符的作用、优先级和结合性,能熟练运用各种表达式。
(6)掌握不同数据类型的输入输出。
(7)掌握简单的语法错误的查找和改正方法。
二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010三、实验原理配套教材实验一、实验二四、实验源程序//2-35#include <iostream>#include <iomanip>using namespace std;int main(){int x,y,ans;for(x=1;x<10;x++){for(y=1;y<10;y++){ans=x*y;cout<<x<<"*"<<y<<"="<<setw(2)<<ans<<"";}cout<<endl;}system("pause");return 0;}五、自评良好实验二C++语言进阶一、实验目的(1)熟练掌握if语句、switch语句、for语句、while及do-while语句(2)掌握转移控制语句(3)理解编译预处理(4)掌握函数的定义和调用(5)掌握数组的定义和使用(6)掌握结构和枚举类型的定义方法和使用(7)掌握指针的使用方法及应用(8)掌握指针与数组(9)掌握指针传递和引用传递二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010三、实验原理配套教材实验三、实验五、实验六四、实验源程序//3-2#include<iostream>#include<stdlib.h>using namespace std;int Max1(int a,int b){if(a>b)return(a);elsereturn(b);}int Max1(int a, int b,int c){if(a>b){if(a>c)return(a);}else{if(b>c)return(b);elsereturn(c);}}double Max1(double x,double y){if(x>y)return(x);elsereturn(y);}double Max1(double x,double y,double z) {if(x>y){if(x>z)return(x);}else{if(y>z)return(y);elsereturn(z);}}int main(){int a,b,c;double x,y,z;cout<<"请输入两个整数:";cin>>a>>b;cout<<"最大值为:"<<Max1(a,b)<<endl; cout<<"请输入三个整数:";cin>>a>>b>>c;cout<<"最大值为:"<<Max1(a,b,c)<<endl; cout<<"请输入两个双精度数:";cin>>x>>y;cout<<"最大值为:"<<Max1(x,y)<<endl; cout<<"请输入三个双精度数:";cin>>x>>y>>z;cout<<"最大值为:"<<Max1(x,y,z)<<endl;system("pause");return 0;}//5-14#include<iostream>usingnamespace std;class Boat;class Car{private:int weight;public:Car(int j){ weight=j;}friendint getTotalWeight(Car &aCar,Boat &aBoat);};class Boat{private:int weight;public:Boat(int j){ weight=j;}friendint getTotalWeight(Car &aCar,Boat &aBoat);};int getTotalWeight(Car &aCar,Boat &aBoat){ return aCar.weight+aBoat.weight;}int main(){Car c(10);Boat b(7);cout<<"The total weight is : "<<getTotalWeight(c,b)<<endl; system("pause");return 0;}//6-6#include<iostream>#include<string>usingnamespace std;class Employee{private:char name[30];char stree[30];char city[30];char zip[6];public:Employee();void change_name();void display();};Employee::Employee(){strcpy(name,"lianmeng");strcpy(stree,"piamganjie3hao");strcpy(city,"shanghai");strcpy(zip,"900000");}void Employee::change_name(){cout<<"Enter a name:";cin>>name;}void Employee::display(){cout<<"\n"<<name<<"\t"<<stree<<"\t"<<city<<"\t"<<zip<<"\t"; }int main(){int i;Employee *p=new Employee[5];for(i=0;i<5;i++){p[i].display();}for(i=0;i<5;i++){cout<<"\nnumber"<<i+1<<" : "<<endl;p[i].change_name();}for(i=0;i<5;i++){ p[i].display(); }delete p;system("pause");return 0;}五、自评良好实验三面向对象高级特性一、实验目的(1)掌握类与对象的定义(2)掌握对象成员的访问、构造函数和析构函数(3)理解基类和派生类(4)掌握单一继承和多重继承的定义和使用方法(5)掌握运算符重载程序的编写(6)掌握虚函数的编写和使用(7)掌握流类库与输入/输出;异常处理二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010 三、实验原理配套教材实验四、七、八、十一四、实验源程序//4-8#include<iostream>usingnamespace std;class Dog{public:Dog(int nage=0,int nweight=0){age=nage;weight=nweight;}Dog(Dog &d);inlinevoid showstatus();void setstatus();private:int age,weight;};Dog::Dog(Dog &d){age=d.age;weight=d.weight;}inlinevoid Dog::showstatus(){cout<<"His status is:"<<endl<<"age:"<<age<<"\tweight:"<<weight<<"kg"<<endl; }void Dog::setstatus(){int na,nw;cout<<"Please set age and weight:";cin>>na>>nw;age=na;weight=nw;}int main(){Dog Zangming(19,60);cout<<"Here is a dong Zangming!!"<<endl;Zangming.showstatus();cout<<"Please reset his status!"<<endl;Zangming.setstatus();cout<<"\n\nNow:"<<endl;Zangming.showstatus();system("pause");}//7-6#include<iostream>usingnamespace std;class Mammal{public:Mammal(int a,int w):age(a),weight(w){cout<<"Mammal Constructor called..."<<endl;}~Mammal(){cout<<"Mammal Destructor called..."<<endl;}private:int age;int weight;};class Dog:public Mammal{public:Dog(int a,int w):Mammal(a,w){cout<<"Dog Constructor called..."<<endl;}~Dog(){cout<<"Dog Destructor called..."<<endl;}};int main(){{cout<<"Constructing a Mammal..."<<endl;Mammal mammal(8,12);cout<<endl<<"Constructing a Dog..."<<endl;Dog dog(3,9);cout<<endl<<"Destructing......"<<endl;}system("pause");return 0;}//8-5#include<iostream>usingnamespace std;class Mammal{public:Mammal(){cout<<"Mammal Constructor..."<<endl;} ~Mammal(){cout<<"Mammal Destructor..."<<endl;} virtualvoid speak()=0;};class Dog:public Mammal{public:Dog(){cout<<"Dog Constructor..."<<endl;}~Dog(){cout<<"Dog Destructor..."<<endl;}virtualvoid speak();};void Dog::speak(){cout<<"Dog's sound...."<<endl;}int main(){Dog *pdog=new Dog;pdog->speak();delete pdog;system("pause");return 0;}//11-5#include<fstream>#include<iostream>usingnamespace std;int main(){ofstream file1("test.txt",ios::app);file1<<"已成功添加字符!";file1.close();char ch;ifstream file2("test.txt");while(file2.get(ch))cout<<ch;file2.close();system("pause");return 0;}五、自评良好实验成绩细化表。
c++程序设计类和对象实验总结

一、实验目的在本次C++程序设计实验中,主要目的是通过对类和对象的学习和掌握,进一步加深对C++程序设计语言的理解和应用。
通过具体的实验操作,提高学生的编程能力和解决问题的能力,培养学生的动手能力和团队协作精神。
二、实验内容1. 掌握类的概念和基本语法,包括类的定义、成员变量、成员函数等;2. 熟悉对象的概念和使用方法,了解对象的初始化和销毁;3. 学习类的继承和派生的知识,掌握继承与派生的语法和使用;4. 能够独立编写包含类和对象的程序,实现各种功能;5. 通过实践项目,提高自己的编程水平,锻炼解决问题的能力。
三、实验过程在实验过程中,首先我们需要了解类和对象的概念,理解类的定义和对象的创建方法。
编写简单的程序进行练习,例如创建一个包含学生信息的类,并实例化对象,调用成员函数来输出学生信息。
也需要深入学习类的继承和派生的知识,理解基类和派生类的关系,掌握虚函数的概念和使用方法。
在实验中,我们编写了多个实例程序来练习类的继承和派生,加深了对这一知识点的理解。
在实验过程中,我们还遇到了一些问题,例如在使用多重继承时需要特别注意类的构造和析构顺序,以及在使用虚函数时需要注意动态绑定的原理等。
通过解决这些问题,我们不断提高了自己的编程水平,加深了对C++语言的理解。
四、实验总结通过本次实验,我们深刻理解了类和对象的概念,掌握了类的定义和对象的创建方法。
在实验中,我们编写了多个功能丰富的程序,包括学生信息管理系统、图形类的继承等。
这些程序不仅巩固了所学的知识,也让我们感受到了编程的乐趣。
通过与同学的讨论和交流,我们也学到了很多新的知识和技巧。
本次实验对我们的帮助很大,让我们更深入地理解了C++程序设计语言,提高了我们的编程水平。
希望在以后的学习和实践中,能够进一步加深对类和对象的理解,不断提高自己的编程能力。
在本次的C++程序设计实验中,我们深入学习了类和对象的概念,并通过实际的编程练习加深了对C++程序设计语言的理解和应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大理学院课程教案
(实验教学)
课程名称:软件工程
课程类型:( 1 )1、专业必修;2、专业选修;3、其它
授课对象:计算机科学与技术专业(本、专科) 2012 级1,2班
授课时间: 2014 至 20145 学年第 3 学期
计划学时: 64 学时(其中:理论 48 ,实验: 16 )任课教师:杜英国
所属学院:数学与计算机学院
课程管理部门(教研室):软件教研室
大理学院教务处制
课程名称:软件工程
教材:面向对象软件工程-使用UML、模式与Java
清华大学出版社出版(出版社),Bernd Bruegge Allen H. Dutoit编著,第3版
授课人1:杜英国专业技术职务:讲师
学历:研究生学位:硕士
授课人2:专业技术职务:
学历:学位:
实验题目:实验三对象设计计划学时:3学时
实验类型:(4 )1、演示性2、验证性3、综合性4、设计性
每组实验的学生人数:20 人
教学目的和要求:
(1)掌握系统中类的确定,标识遗漏的属性和操作,说明操作的返回值类型、签名和可见性。
(2)熟悉确定类的属性和操作的可继承性;正确分析类之间的关系;熟练使用软件创建出完整的类图。
(3)了解说明类操作的前置条件、后置条件和不变式。
实验方法(包括实验中需要注意的问题等):
在实验2的基础上确定系统的类,标识类的遗漏的属性和操作,并对属性的取值范围进行说明及说明操作的返回值类型、签名和可见性,正确分析类之间的关系,最后画出完整的类图。
实验重点(主要解决的问题和达到的目的):
重点掌握时序图的概念,创建方法;关联的标注;初始分析对象的标注;实体对象和边界对象。
实验难点(预计实验过程中会遇到的问题和解决方案):
教学方法(实验前的教学和实验过程中的指导方法):
实验前理论课上讲解UML基本原理,在实验过程中结合实验环境(Rational Rose工作环境)演示实验内容,再由学生自己练习。
实验仪器和材料:
计算机,Windows XP,IBM Rational Rose企业版
实验报告要求和思考题:
实验完提交实验报告。
参考资料:
1.《UML实践教程—面向.NET开发人员》(美)Martin L. Shoemaker著清华大学出版社
2.《UML和模式应用》(美)Craig Larman著李洋郑龚译机械工业出版社3.《SOFTWAREENGINEERING》A PRACTITIONER’S APPROACH ROGER S. PRESSMAN 清华大学出版社
大理学院课程教案(教学总结)。