面向对象课程设计心得体会
⑴ c++面向对象程序设计心得
请教通过的前辈,有什么参考书籍或者心得,或者其他的经验发来参考。不求捷径《C 面向对象程序设计》是比较的基础,但学语法并不是最重要的,更重要是
⑵ 中国人民大学网络教育学院 《面向对象程序设计》结课设计
面向对象程序设计内容为三部分:可运行exe文件,源代码,开发文档。
主要采用C+语言编写,基础功能必须实现,其它部分功能为加分项,可根据个人能力自行选择。
运行文件:在制定环境下运行,并实现数据保存,修改,重命名等功能。
源代码:运行文件的代码组成部分。
开发文档:程序运行环境,开发过程,及程序可实现功能详解,最后课程建议等。
注意:1、编写时数据库的连接2、提交文件为压缩文件3、文件小于10M。
⑶ 就如何利用面向对象的软件开发方法来开发软件,谈自己的心得体会,3000字
随着计算机世界的高速发展,软件事业的增强,软件在我们生活中的运用随处都是,但软件业也因此兴起,但作为IT业内人士则考虑的不是这些问题,而是如何用一个好的软件开发方法去开发好一个软件。现在,在众多的软件开发方法中,选择了面向对象的的方法来谈谈我的个人见解。为什么要选它呢,因为这种方法在现在是最常用的一种,大多数的开发商都采用了面向对象的方法。
谈到面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
不论采用哪种方法来开发软件,分析的过程都是提取系统需求的过程。分析工作主要包括3项内容,这就是理解,表达和验证。首先,系统分析员通过用户及领域专家的充分交流,力求完全理解用户需求和该应用邻域中的关键性的背景知识,并用某种无二义性的方式把这种理解表达成文档资料。分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型,动态模型和功能模型组成)。
由于问题复杂,而且人与人之间的交流带有随意性和非形式化的特点,上述理解过程通常不能一次就达到理解的效果。因此,还必须进一步验证软件需求规格说明的正确性,完整性和有效性,如果发现了问题则进行修正。显然,需求分析过程是系统分析员与用户及领域专家反复交流和多次修正的过程。也就是说,理解和验证的过程通常交替进行,反复迭代,而且往往需要利用原型系统作为辅助工具。
面向对象分析(OOA)的关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁,精确,可理解的正确模型。在用面向对象观点建立起的3种模型中,对象模型是最基本,最重要,最核心的。
下面我们来看看面向对象的开发方法。
一 .首相让我们来了解什么是面向对象:
(1)对象:对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
(3)类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构:在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法:对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
二. 下面让我们来认识一下面向对象的特征和几大要素:
(1)对象唯一性。(2)分类性。(3)继承性。(4)多态性(多形性)
面向对象的要素:(1)抽象。 (2)封装性(信息隐藏)。(3)共享性
三. 面向对象和基于对象的区别:
很多人没有区分“面向对象”和“基于对象”两个不同的概念。面向对象的三大特点(封装,继承,多态)却一不可。通常“基于对象”是使用对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说“基于对象”没有继承的特点。而“多态”表示为父类类型的子类对象实例,没有了继承的概念也就无从谈论“多态”。现在的很多流行技术都是基于对象的,它们使用一些封装好的对象,调用对象的方法,设置对象的属性。但是它们无法让程序员派生新对象类型。他们只能使用现有对象的方法和属性。所以当你判断一个新的技术是否是面向对象的时候,通常可以使用后两个特性来加以判断。“面向对象”和“基于对象” 都实现了“封装”的概念,但是面向对象实现了“继承和多态”,而“基于对象”没有实现这些,的确很饶口。
从事面向对象编程的人按照分工来说,可以分为“类库的创建者”和“类库的使用者”。使用类库的人并不都是具备了面向对象思想的人,通常知道如何继承和派生新对象就可以使用类库了,然而我们的思维并没有真正的转过来,使用类库只是在形式上是面向对象,而实质上只是库函数的一种扩展。
面向对象是一种思想,是我们考虑事情的方法,通常表现为我们是将问题的解决按照过程方式来解决呢,还是将问题抽象为一个对象来解决它。很多情况下,我们会不知不觉的按照过程方式来解决它,而不是考虑将要解决问题抽象为对象去解决它。有些人打着面向对象的幌子,干着过程编程的勾当。
在对面向对象方法学有了一定的理解后,我们可以知道,面向对象方法学的出发点和根本原则,是尽量可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解决的解空间(也称为求解域)在结构上尽可能一致。
四 .面向对象方法学和传统方法学较之有了很大的优点:
1.它与人习惯的思维方法一致。
传统的程序设计技术是面向过程的设计方法,这种方法以计算为中心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序代码则用于处理这些数据。而面向对象的方法学是以对象为核心,用这种技术开发出的软件系统由对象组成的。
2.稳定性好。
传统的软件开发方法以计算法为核心,开发过程基于功能分析和功能分解,所以它很不稳定。而面向对象的方法学是基于构造问题邻域的对象模型,以对象为中心构造软件系统,它的基本做法是对象模拟问题邻域中的实体,以对象间的联系刻画实体间的联系。由于现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系统也是比较稳定的。
3.可重用性好。
传统的软件重用技术是利用标准函数库,也就是试图用标准函数库中的函数作为“预制件”来建造新的软件系统,但是,标准函数缺乏必要的“柔性”,不能适应不同应用场合的不同需要,并不时理想的可重用的软件成分。而在实际开发一个新的软件系统时,通常多数函数是开发者自己编写的,甚至绝大多数的函数都是新编的。
面向对象的软件技术在利用可用的软件成分构造新的软件系统时,有很大的灵活性。它有两种方法可以重复使用一个对象类:一种方法是创建该类的实例,从而直接使用它,另一种方法是从它派生出一个满足当前需要的新类。它所实现的重用性是自然的和准确的,不像传统的方法是刻意的。
4.较易开发大型软件产品。
在开发大型软件产品时,组织开发人员的方法不恰当往往是出现问题的主要原因。用面向对象方法学时,构成软件系统的每一个对象就像一个微型程序,有自己的数据,操作,功能和用途,因此,可以把一个大型软件产品分解成一系列本质上相互独立的向产品来处理,故它比较容易开发大型软件。
5.可维护性好。
用传统的方法和面向过程语言开发出来的软件很难维护,然而面向对象的方法由于存在下面几种原因故维护性好。
因素:面向对象的软件稳定性比较好。
面向对象的软件比较容易修改。
面向对象的软件比较容易理解。
面向对象的软件易于测试和调试。
最后:
目前,面向对象开发方法的研究已日趋成熟,国际上已,有不少面向对象产品出现。我相信这种方法在不断地完善下不仅现在适用,就算再将来,它也会被相当多的开发商使用的。
⑷ 面向对象程序设计(教务管理系统开发)实训报告体会与感想,
我只能告诉你题目为“很好,很强大”,希望你见字取意,有感而发。
⑸ 《面向对象程序设计》课程设计
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
friend void main();
};
void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)数据录入"<<endl;
cout<<"(1)增加人员"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按总成绩查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据"<<endl;
cout<<"成绩名词"<<endl;
cout<<"(7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名"<<endl;
cout<<"(9)按数学查询排名"<<endl;
cout<<"(y)按英语查询排名"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do
{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
} 还有一部分。。
⑹ 通过学习c 面向对象程序设计有什么体会学到了哪些东西
不是C++才面向对象的吗?C好像没有面象对象吧~~~