四、实验内容
编写程序,读入esri系列软件导出的asc文件(DEM对外交换文件),并进行一些处理,能够对结果进行保存。
1、定义一个类CDem,将数据读入该类的一个对象中,输出该Dem的平均高度,可以根据自己的兴趣,对Dem 进行其他的相关处理。
2、若学生的个数不确定,个数通过用户屏幕输入,实现以上功能,并将学生的所有信息保存二进制的文件中。,将学生的信息再从文件里边读出,显示在屏然后幕上。
能够编写简单的矢量绘图系统:能够画点和直线,课后可以尝试实现图形的放大、缩小和漫游操作及保存等功能。
图10-1 程序运行界面
1、基于类向导生成图元基类(CFigure)、点类
(CMapPoint)和直线类(CLine)。
A 建立单文档应用程序。
B 在Insert菜单下有一个新建类向导。在其中选择Class type为Generic Class,Name为你要建立的类的名字,Derived From下边写基类的名字。图中建立了一个CFigure类,从CObject类派生。
修改生成两个文件,内容如下:
// Figure.h: interface for the CFigure class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_FIGURE_H__4DBE20D7_A090_443 7_8FA5_579EE35F9B55__INCLUDED_)
#define
AFX_FIGURE_H__4DBE20D7_A090_4437_8FA5_579 EE35F9B55__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CFigure:public CObject
{
protected:
int m_id_only;
public:
CFigure();
CFigure(int id_only)
{
m_id_only=id_only;
}
int GetID();
virtual void Draw(CDC*pDC)=0;
virtual ~CFigure();
};
// Figure.cpp: implementation of the CFigure class.
//
////////////////////////////////////////////// ////////////////////////
#include "stdafx.h"
#include "test.h"
#include "Figure.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CFigure::CFigure()
{
}
CFigure::~CFigure()
{
}
int CFigure::GetID()
{
return m_id_only;
}
#endif
// !defined(AFX_FIGURE_H__4DBE20D7_A090_4437 _8FA5_579EE35F9B55__INCLUDED_)
C 按照这样的方式,建立CMapPoint类和Cline类,源程序如下修改。
CMapPoint类的定义文件
// MapPoint.h: interface for the CMapPoint class.
//
//////////////////////////////////////////////////////////////////////
#include"figure.h"
#if !defined(AFX_MAPPOINT_H__7A0D7F22_260E_4 709_849E_A105FE50BBE6__INCLUDED_)
#define
AFX_MAPPOINT_H__7A0D7F22_260E_4709_849E_ A105FE50BBE6__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CMapPoint:public CFigure
{
public:
float m_x,m_y;
public:
CMapPoint();
CMapPoint(int id_only,float x,float
y):CFigure(id_only)
{
m_x=x;
m_y=y;
}
void Draw(CDC* pDC)
{
pDC->Ellipse(CRect(m_x-5,m_y-5,m_x+5,m_y+5));
}
virtual ~CMapPoint();
};
#endif
// !defined(AFX_MAPPOINT_H__7A0D7F22_260E_47 09_849E_A105FE50BBE6__INCLUDED_)
CMapPoint类的实现文件
// MapPoint.cpp: implementation of the CMapPoint class.
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "test.h"
#include "MapPoint.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
////////////////////////////////////////////////////////////////////// // Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMapPoint::CMapPoint()
{
}
CMapPoint::~CMapPoint()
{
}
CLine类的定义文件
// Line.h: interface for the CLine class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_LINE_H__6D15869E_8FC2_455B_9 4F0_E99153418EE2__INCLUDED_)
#define
AFX_LINE_H__6D15869E_8FC2_455B_94F0_E99153 418EE2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "figure.h"
class CLine : public CFigure
{
protected:
float m_X1,m_X2,m_Y1,m_Y2;
public:
CLine();
CLine(int id_only,float x1,float y1,float x2,float y2):CFigure(id_only)
{
m_X1=x1;
m_Y1=y1;
m_X2=x2;
m_Y2=y2;
}
void Draw(CDC* pDC)
{
pDC->MoveTo(m_X1,m_Y1);
pDC->LineTo(m_X2,m_Y2);
}
virtual ~CLine();
};
#endif
// !defined(AFX_LINE_H__6D15869E_8FC2_455B_94 F0_E99153418EE2__INCLUDED_)
CLine类的实现文件
// Line.cpp: implementation of the CLine class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "test.h"
#include "Line.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
////////////////////////////////////////////////////////////////////// // Construction/Destruction
////////////////////////////////////////////////////////////////////// CLine::CLine()
{
}
CLine::~CLine()
{
}
D 在工具栏上添加两个按钮,如下图。
双击第一个按钮,将其ID改为ID_POINT,如下图。
以同样的方式将第二个按钮的ID改为:ID_LINE。
在视图类中添加两个按钮的消息处理函数,方法如下:启动类向导(在查看菜单下的建立类向导或者按
CTRL+W),如下图,在Object IDs中找到ID_POINT,
选择Messages下的COMMAND,然后点击Add Function按钮,添加处理函数。以同样的方式完成ID_LINE的消息的添加。这样在视图类中就多了两个函数,如下,并修改其函数体,如下。
void CTestView::OnPoint()
{
// TODO: Add your command handler code here
m_DrawCurrent=1;
}
void CTestView::OnLine()
{
// TODO: Add your command handler code here m_DrawCurrent=2;
PushNum=0;
}
E 在文档类中,加入以下定义。
public:
CTypedPtrArray
m_FigureArray;
private:
int* m_Index;
public:
int GetFigureID();
在文档类的实现文件中,定义函数。
修改构造函数和析构函数
CTestDoc::CTestDoc()
{
// TODO: add one-time construction code here m_Index=new int[20000];
}
CTestDoc::~CTestDoc()
{
delete m_Index;
}
实现函数GetFigureID
int CTestDoc::GetFigureID()
{
int nFigureNum=m_FigureArray.GetSize();
for(int i=0;i<20000;i++)
m_Index[i]=0;
for(i=0;i { m_Index[m_FigureArray[i]->GetID()]=1; } for(i=0;i<20000;i++) { if(m_Index[i]==0) { return i; } } return -1; } 在文档类的头文件开头,加入: #include #include"figure.h" F、修改视图类 在类中定义如下变量 private: int m_DrawCurrent; int PushNum; CPoint mPointOrign,mPointOld; 重写视图的左键单击消息处理函数,通过类向导(在查看菜单下的建立类向导或者按CTRL+W),找到视图类的WM_LBUTTONDOWN消息添加该消息的处理函数,如下,并修改里边的代码。 void CTestView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CTestDoc *pDoc=GetDocument(); CClientDC client(this); switch(m_DrawCurrent) { case 1: { CMapPoint *pPt=new CMapPoint(pDoc->GetFigureID(),point.x,point.y); pDoc->m_FigureArray.Add(pPt); pPt->Draw(&client); break; } case 2: { if(PushNum==0) { PushNum++; mPointOrign=point; mPointOld=point; SetCapture(); } else if(PushNum==1) { Cline *pLine=new CLine(1,mPointOrign.x,mPointOrign.y,mPointOld.x,mP ointOld.y); pDoc->m_FigureArray.Add(pLine); pLine->Draw(&client); PushNum=0; ReleaseCapture(); } } case 0: break; } CView::OnLButtonDown(nFlags, point); 面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include 《面向对象程序设计》课程实验指导书 实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.wendangku.net/doc/ab12778127.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序) 实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。 资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月 第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11) 第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如 Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include Java面向对象程序设计实验课的心得体会经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到能够自主运用。通过对Java的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好Java语言是很重要的,所以在实验的过程中我都尽力理解java编程思想、掌握基本技巧,尽量学到最多的知识。 学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能,Java面向对象程序设计是一门实践性比较强的课程,在实际中,我们必须把理论和实践结合起来。在实验中,我们理解理论课上的知识,然后运用到实际的操作中,我们必须在现有的理论的基础上,进行实践。多次实验后,也让我看到了现在学习的一个很大弱点:只听不练,永远不会熟练运用;空记技巧,忽略思想,会在多变的习题中十分无奈。 Java思想:Java是一门面向对向语言,他定义一切都是对象面向对象,就是面对现实; 现实中的一切都是对象,他们有分类,就产生了“类”; 他们有不同,类和类之间的不同,使用类来区分; 同一个类中不同的对象的区别,使用成员区分。 所以,面向对象的内部逻辑是分类。 面向对象编程思想就象数学上的一些概念,如:空间、群、环、域等 原始的编程思想就象古典数学,人们只在一个集合上探讨问题,没有系统的方法(即运算)定义,于是仁者见仁、智者见智,这样在一定程度上造成了理论的一种混乱局面,不利于科学的发展。于是近代数学向公理化发展,这是什么意思呢?就是说,人们除了在限定论域(即上面的集合,面向对象也有此概念)外,还在此论域上加进了一套通用的、公认的运算(方法);集合加上集合上定义的运算就构成了数学上的空间、群等,在计算机领域里,就变成为“类”。这种集合上定义了操作的东西利用起来就方便多了,这使得人们讨论问题时都在给定集合的运算能力上下工夫,即有通用性可事半功倍。 面向对象的编程思想就要想近世代数的分析思想,首先要确定“论域”,即工程所涉及到的所有的“对象”,然后要分类处理,把隶属同一类别的对象集合在一起(做成一个集合),定义他们之间的运算性质及可以进行的操作,这样就构建了一个类,当然以后用到这个类的对象时都要通过已经定义了的操作来完成各项功能,这就是常要求的类的“类的成员变量要通过共有函数来操作”。 我想真正的面向对象编程思想不应该是编程思想,应该是面向对象的分析方法才对! 我的理解: 1、将分析过程为抽象的过程:简言之:分成多个小问题(组成部分), 面向对象分析与设计实验报告 题目:宿舍管理系统 学号:200*********** 姓名:****** 班级:09软件*****04 完成时间:2011.11.09 目录 1 系统功能需求 (3) 1.1管理系统模块 (3) 1.2查询学生模块 (3) 1.3学生管理模块 (4) 1.4资料修改模块 (5) 1.5楼栋管理模块 (6) 1.6出入登陆模块 (6) 2 建立需求模型 (7) 2.1 划分子系统 (7) 2.2 识别参与者 (8) 2.3 识别用况 (8) 2.4 对需求进行捕获与描述 (9) 3 系统分析 (11) 3.1 寻找类 (11) 3.2 建立状态机图 (12) 3.3 建立类图 (12) 3.4 建立顺序图 (13) 4 系统设计........................................................................... 1错误!未定义书签。 4.1 问题域部分设计 (14) 4.2 人机界面部分设计 (14) 5 总结 (16) 参考文献 (17) 1.系统的功能需求 我校学生公寓现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力,物力,财力。故设计一个学生公寓管理系统,管理学生住宿情况,员工情况,处理学生离校,管理人员来访情况等功能。通过此系统,后勤人员可以对学生公寓的各项情况实行电脑化管理,以提高工作效率,也使得公寓管理所需的各项信息能方便快速进行录入,查询,删除和更新。 面对学生公寓管理工作的特点以及该管理工作的具体问题, 本系统可以解决以下问题: (1)录入公寓各学生的基本情况。 (2)全面查询学生的基本情况。 (3)对学生离校进行处理。 (4)每学期对学生住宿进行注册。 (5)对来访人员进行出入管理。 (6)对学生的财务进行登记管理。 (7)对楼栋物资和楼栋的管理。 (8)对各项情况进行修改,删除,更新。 (9)友好的操作界面, 以及简单快速的操作. (10)多种查询方式。 本系统针对学生公寓管理日常的工作程式, 对学生公寓的各项情况例如:学生信息,学生个人财产信息,来访人员信息等进行有效管理,并能通过各方法进行快速方便的查询。使学生公寓管理工作运作简明、清晰,各状况一目了然,使学生公寓管理工作更加科学化、规范化。 1.1管理系统模块:实现用户退出功能。 1.2查询学生模块:该模块包括五个子模块 1.按学号查询——实现按学号查询学生信息 2.按姓名查询——实现按姓名查询学生信息 3.按学生班级查询——实现按学生班级查询学生信息 4.按家庭住址查询——实现按家庭住址查询学生信息 5.混合查询——实现按混合查询学生信息 C++面向对象程序设计实验报告 学院:信息科学与技术学院 班级:卓越电子1201 姓名:刘强 学号:120910115 实验二 C++面向过程程序设计 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 实验内容 1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; 能检查输入数据的合法性,要求n>=1并且n>=r; 能得到正确结果。 输入:5 3输出:10 输入:10 20;输出:Input Invalid !; 输入:-1 4;输出:Input Invalid!; 步骤: 利用一个函数fn(int n)计算n!, 利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(), 程序代码: #include int Cnr(int n,int r) { cout<<"Please input two numbers:"< 实验一C++基础1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉C++中简单的标准输入输出函数的使用方法; 3.理解const修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用new和delete来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include { int x1 = 0; int x2 = 0; double d1 = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); d1 = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8);-----------------------------------------------------①cout<<"x1="< 实验报告 课程名称Java程序设计 实验项目实验一类、对象与构造函数 实验二派生类与继承 系别___________理学院_____________ 专业/班级_________电技1302____________姓名______蔡超月____________ 实验日期_______________________ 成绩_______________________ 指导教师夏红科 一、实验题目:实验一类、对象与构造函数 实验二派生类与继承 二、实验内容: (1)创建一个雇员类,该类中有数据成员有姓名、家庭住址和邮政编码等,其功能有修改姓名、显示数据信息。 要求:雇员类的定义作为.h保存 雇员类功能函数的实现放在.cpp中。 雇员类的使用放在单独的.cpp文件中,该文件使用#include编译预处理命令包含类定义的头文件,在main()函数中使用雇员类创建几个对象并显示信息。 (2)定义一个哺乳动物类,再由此派生出人类、狗类和猫类,这些类中均有speak()函数,请设计相应的类层次结构并加以实现,观察在调用过程中,到底使用了哪个类的speak()函数。 (3)设计一个能细分为矩形、三角形、圆形和椭圆形的图形类,使用继承将这些图形分类,找出能作为基类部分的共同特征(如宽,高,中心点等)和方法(如初始化、求面积等),并设计多种继承模式来测试继承的属性。 三、程序清单及结果:(需要标明实现程序对应的实验内容,并给出合理的程序注释及运行结果) 1)程序清单及注释 内容1: #include 实验名称:实验4设计模型实验2 学期:2017-2018学年第二学期 一、实验目的 1 ?熟练使用面向对象设计原则对系统进行重构; 2 ?熟练使用面向对象编程语言(JAVA或C++)实现几种常见的设计模式,包括单例模式、策略模式、装饰模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。 二、实验要求 1. 选择合适的面向对象设计原则对系统进行重构,正确无误地绘制重构之后的类图; 2. 结合实例,正确无误地绘制单例模式、策略模式、装饰模式和适配器模式的结构图; 3. 实现单例模式、策略模式、装饰模式和适配器模式,代码运行正确无误。 三、实验内容 1. 现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第 一次申请身份证时将号码分配给居民,如果之后因为遗失等原因补办时,还是使用原来的身份证号码,不会产生新号码,现使用单例模式模拟该场景。 办理轴证.4tE?r号码!身滞证号为No6000654321 ■■办理身漁E,萩駅旧号码| JKfiE号硏■否一融?true 第一次号均 ■二次号匕NO6000654321 卉容華否翊拝:true 斤否孑相曰対It: true 1)类图 2)实现代码: public class IdClie nt { package Refaetoringl; public class Ide ntityCardNo { private static Ide ntityCardNo private String no; private Ide ntityCardNo() { } public static Ide ntityCardNo getI nsta nce() { if (instanee ==null ) { System. out .println ( ”第一次办理身份证,分配新号码 ”); in sta nee =new Ide ntityCardNo(); in sta nee .setNo( "NO6000654321"); System. out .println( ” 身份证号码为:” + instanee .getNo()); } else { } System. out .println ( ”重复办理身份证,获取旧号码! ”); return in sta nee public Stri ng getNo() { return no; } public void setNo(String this .no = no; 2. 每一麻将局都有两个骰子,因此骰子就应当是双例类。现使用多例模式模拟该场景。 public static void Ide ntityCardNo. Ide ntityCardNo. } main( Stri ng[] getl nsta nee getI nsta nee args ) { () ; () in sta nee no) { . , 面向对象程序设计实验报告 班级:计算机科学与技术11-5 学号:0505 ( 姓名:高冉冉 日期:2012/7/2 \ 题目3: 1.问题描述: 假设有图书类Book,包括书名、出版社名称、作者姓名、图书定价等数据成员。编程序完成Book类的设计,从键盘读入10本图书的各项数据,并将这10本图书的相关数据写入磁盘文件中,然后从中读出各图书数据,计算所有图书的总价值,并显示每本图书的详细信息,每本图书的信息显示在一行上。 2.实现代码: #include https://www.wendangku.net/doc/ab12778127.html,面向对象分析方法1/2 面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。 OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。 OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。 OOA在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。 OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。OOD模型由4个部分组成。它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。 一、OOA的主要原则。 (1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。 抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。 抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。 过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。 数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。 (2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。 (3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。 在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。 (4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。 (5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。 (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。 实验7 面向对象分析与设计—活动图姓名:学号:日期: 7.1 实验目的 ?熟悉熟悉UML活动图的功能和组成元素 ?理解活动图的语义 ?学会构思活动图 ?掌握活动图的绘制方法 7.2 实验类型及学时 ?验证型 ?2学时 7.3 实验设备 ?PC机一套,要求安装Windows操作系统、Office软件 ?安装Visio分析建模工具 7.4 实验要求 ?要求能够熟练运用Visio软件所提供的菜单、工具、模型等制作图形或图 表;能用Visio软件所提供的专业图形模板,自行绘制出专业化、高质量的图形或图表 ?结合案例1,根据给定系统(案例2)的业务需求,构思网上书店的活动 图,且绘制活动图 ?攥写实验报告,请以“学号+姓名”命名实验报告文档,并在规定时间内 提交 7.5实验内容 1、案例1——图书管理系统之用户管理模块 2、案例2——网上书店系统 7.6 实验结果 1、案例2——网上书店系统 请将“网上书店系统的活动图”放置于实验报告7。 (1)客户购书的活动图 (2)订单处理的活动图 7.7 心得体会 (请大家根据自己的实际情况,如实填写) 不过如此,我觉得简单的小菜一碟,就和那个什么一样,和上次实验报告三一样,这几个案列通过之前的几次操作都是剖析的较为详细了,所以实际上画活动图和前面的几张图片没有太大差别。就是把已经剖析好的每个部分用着活动图的规则来进行摆放,尽管可能因为时间不够,然后导致有些地方出错,或者会看不出来,所以我百度了一下下,发现没有别人做的,所以就先这样上交了。非要说问题的话就是感觉有很多地方有缺漏,而且说明分析可能不够,而且图画的不是很漂亮,但是时间不够我就不改了。 《面向对象分析与设计》 实验报告 班级:计科09-4班 姓名:郑翼 学号:08093435 实验一用例图 一、实验目的 1.学会分析系统中的参与者和用例 2.掌握用例图的绘制方法 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 画出A TM系统的用例图 四、实验截图 五、实验体会 通过这次实验,理解了用例图的基本用法,并且初步掌握了Rational Rose软件的使用。对以后面向对象的学习都是十分重要的。 实验二交互图 一、实验目的 1.学会用协作图实现用例 2.掌握顺序图的绘制方法以及顺序图和协作图的相互转换。 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 画出A TM取款的顺序图,并转换为协作图。 四、实验截图 顺序图 协作图 五、实验体会 通过实验,学会了用协作图实现用例,掌握了顺序图的绘制方法以及顺序图和协作图相互转换的方法,进一步的加深了对软件的使用。 实验三类图 一、实验目的 1.理解类的基本概念 2.理解类间的关系 3.掌握类图的绘制方法 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 分析选课系统中的类及关系,然后画出它们的类图。 四、实验步骤 1.分析 在选课系统中,通过分析可抽象出如下几个类: 1.学生类 2.管理员类 3.课程类 学生类和管理员类的属性较容易分析,这里只列出课程类的属性和方法:(1)课程名称 (2)开课教室 (3)课程号 (4)授课教师 (5)选课的学生 (6)开课起始时间 (7)允许选课的学生人数 (8)设置课程号 (9)设置课程名称 (10)查询课程号 第三章补充案例 案例3-1 定义学生类 一、案例描述 1、考核知识点 编号:00103002 名称:类和对象 2、练习目标 掌握类定义的方式 掌握如何在类中定义成员变量和成员方法 3、需求分析 在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。 4、设计思路(实现原理) 1)使用class关键字定义一个表示学生类型的类,类名为Student。 2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。其中,name的数据类型为String,变量age的数据类型为int。 3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。二、案例实现 class Student{ String name; int age; void speak() { "我的名字是 "+name+",今年 "+age+"岁"); } } 三、案例总结 1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字 2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解 3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示 public class Phone { String brand; double price; void call(){ "hi,how are you doing"); } } 案例3-2 同一对象被多个变量引用 一、案例描述 1、考核知识点 编号:00103003 名称:对象创建与使用 2、练习目标 掌握如何创建类的对象 掌握如何使用两个或者多个变量引用同一个实例对象。 3、需求分析 在程序中,一个对象可能在多处使用,这样就可能需要有多个变量来引用这个对象。为了让初学者更好地掌握对象的创建和使用,本案例将基于案例3-1,创建三个学生对象,它们的引用变量分别是s1、s2和s3,首先分别使用s1和s2引用,为name和age赋值,然后调用speak()方法,最后将s2变量赋值给s3, s3也调用speak()方法。 4、设计思路(实现原理) 1)编写Example01类 2)在main()方法中,创建Student类的第一个对象,其引用变量为s1,使用s1调用name和age 变量分别为它们赋值为“张三”和“19”,然后调用speak()方法。 3)创建Student类的第二个对象,其引用变量为s2,使用s2分别为name和age赋值为“李四” 和“20”,然后调用speak()方法。 4)创建Student类的第三个对象,其引用变量为s3,将s2的值赋给s3,然后使用s3调用speak()方法。 二、案例实现 public class Example01 { public static void main(String [] args) { Student s1 = new Student(); ="张三"; =19; (); Student s2 = new Student(); 安徽工业大学 面向对象程序设计实验报告 实验课程:《C++语言程序设计》 学生姓名: 学号: 专业班级: 2011年 12 月 18 日 目录 实验1熟悉C++开发环境及简单程序设计和应用 (3) 实验2基本控制结构程序设计 (6) 实验3 类与对象 (10) 实验4友元函数与友元类 (13) 实验5数组与指针 (16) 实验6静态成员 (20) 实验7类的继承 (22) 实验8多态 (24) 安徽工业大学实验报告 学生姓名:张虹学号:6100409033 专业班级:网络工程091 实验类型:□验证□综合□设计□创新实验日期:实验成绩: 实验1熟悉C++开发环境及简单程序设计和应用 一、实验目的 1.初步了解C++程序的编译、连接和运行的过程。 2.掌握和理解C++程序的结构。 二、实验内容 1.使用VC 2.运行一个简单的C++程序 3.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数 三、实验步骤 1.启动VC 或 2.建立工程并输入以下程序 #include 3.保存文件、运行程序、退出VC程序、打开已经存在的文件 4.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数编写以下代码: #include 图书馆信息系统面向对象分析实例。 总体问题的陈述:本项目的目的是创建一个用于对图书馆的图书进行管理的图书管理系统。 该项目的用户:该项目的用户是一个某大学的图书馆,它负责对其顾客提供图书借阅服务。 该项目的目标:总体上来说,项目的目标是提高图书管理的自动化水平,为图书业务过程提供更快捷的、更好的和更准确的服务。具体来讲,系统的目标包括:为借书者提供快速借书的服务;进行快速准确的图书和借书者的信息维护;图书管理和查询的自动化。 该系统的功能:系统功能是系统应该做的事情,例如系统提供的预定功能。应该识别出这些功能并把它们列入到逻辑相关联的功能组中。 注意:要验证某一个描述是否真是一个系统的功能,如下的判断语句应该成立: 系统应该做某一个描述 例如,系统应该做图书的预定。 然而,系统的属性是系统的非功能性的特性,这些非功能性特性和系统功能经常被混淆。例如,“易于使用”就是一个非功能性的特性。它是不符合我们上述的验证语句:“系统应该做易于使用”。系统属性不应该是功能规格说明书中的一部分,而应该是一个单独的系统属性规格说明文档。 对于系统的功能,我们应该对其分类,以便区分开各类功能的优先次序和识别出哪些是理所当然应该具备的系统功能。功能的分类包括: 明显的:应该履行的功能,并且用户应该知道这个功能是否已经被履行。 隐藏的:应该履行的功能,但功能的履行对用户不可见。很多使用底层技术的服务确实符合这种情况,例如,将数据保存到一个持久化存储机构中。隐藏的功能经常在采集需求的过程中被遗漏。 修饰性的:可选的,增加这些功能不会对成本和其它系统造成重要影响。 为此,我们给出该系统的借书基本功能如下: F1.1记录借出的图书----借阅事件明显的 F1.2 查找书库中是否存在这种图书明显的 F1.3 从借书卡中读取借书者信息,并校验该信息明显的 F1.4 查找书库中这本书是否还有副本隐藏的 F1.5 当一次借阅完成后,削减该书的副本存书数量隐藏的 F1.6 管理员要使用系统,必须输入ID号和密码才行明显的 F1.7 查询显示借书信息明显的 F1.8 提供一个持久化存储机制隐藏的 F1.9 提供过程间的和系统间的通信机制隐藏的 系统属性:系统属性是系统的特性,它们并不是系统的功能,例如:易用、容错、响应时间、界面形式、平台等。系统属性具有一组可能的属性细节,这些属性细节往往是属性的一些离散的、表达模糊的符号值,例如: 响应时间=(生理上能够接受的时间段) 界面形式=(图形化的,基于表的,彩色比较平淡的) 在我们的案例中,要求借书查找时间小于1秒。 我们结合上面的图书馆管理系统的案例,来给出图书管理系统的问题域模型。我们首先看问题域中的图书、借阅、书目和借书者这四个类。 系统将通过计算机来处理图书、副本、借书者和借阅。借书者要求借书,给出要借图书的名称,出示借书证。系统查找所借的图书是否存在,若存在,同时还要查看该图书是否还有副本,如果有,再查询该借书者提供的借书证是否合法的注册用户,如果是,则办理借阅手续(登记借阅信息)。 图书是存放在图书馆中的一个书的名称,副本是一个图书的具体实例。一个图书可能有多 实验 1 类和对象 1.1实验目的和要求 (1) 理解类和对象的概念, 掌握声明类和定义对象的方法。 (2) 掌握构造函数和析构函数的实现方法。 (3) 初步掌握使用类和对象编制C++程序。 (4) 掌握对象数组、对象指针和string类的使用方法。 (5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。 (6) 掌握类对象作为成员的使用方法。 (7) 掌握静态数据成员和静态成员函数的使用方法。 (8) 理解友元的概念和掌握友元的使用方法。 1.2实验内容和步骤 1.输入下列程序 //test4-1.cpp #include Coordinate(Coordinate &p); ~Coordinate() { cout<<”Destructor is calleded\n”;} int getx() {return x;} int gety() {return y;} private: int x,y; }; Coordinate::Coordinate(Coordinate &p) { x=p.x; y=p.y; cout<<”copy-initialization Constructou is called\n”; } int main() { Coordinate p1(3,4); Coordinate p2(p1); Coordinate p3=p2; . 计算机科学与工程学院《面向对象程序设计》实验报告[一]专业班级2017数字媒体技术01实验地点J411 学生学号1705121411 指导教师陈艳 学生姓名黄浩博实验时间 实验项目结构化程序设计(4学时) 实验类别基础性()设计性(√)综合性()其它() 实验目的及要求1.熟悉VC++集成开发环境; 2.熟练应用C++的输入/输出、流程控制、函数、结构等; 3.熟练应用STL常用算法及常见容器; 4.综合应用结构化程序设计思想和方法解决常见问题; 5.完成实验内容,调试通过后将完整代码及运行截图粘贴到实验结果对应的题号下面; 6.对本次实验进行总结(遇到的问题,可行的解决方案,收获,体会等等) 7.完成实验报告后,以学号+姓名+实验1(.doc或.docx)为名上传到ftp://218.199.185.223/student/上传作业/陈艳/面向对象程序设计下对应班级及实验项目文件夹中 成绩评定表 类别评分标准分值得分合计上机表现 积极出勤、遵守纪律 主动完成设计任务 30分 题目一: #include面向对象程序设计实验指导书讲解
《面向对象程序设计》实验指导书
面向对象程序设计实验报告完整版
完成Java面向对象程序设计实验课的心得体会范文
面向对象分析与设计实验报告
C++面向对象程序设计实验报告
面向对象程序设计实验
面向对象技术-实验报告
面向对象系统分析和设计综合实验报告4
面向对象程序设计实验报告
面向对象分析方法
实验7 面向对象分析与设计—活动图
《面向对象分析与设计》实验报告
第3章面向对象(上)_补充案例
面向对象程序设计,实验报告
#图书馆信息系统面向对象分析实例
面向对象程序设计(C++) 实验指导书
《面向对象程序设计》实验报告[一]