面向对象程序设计B说明书.docx
- 文档编号:24987058
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:23
- 大小:30.81KB
面向对象程序设计B说明书.docx
《面向对象程序设计B说明书.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计B说明书.docx(23页珍藏版)》请在冰豆网上搜索。
面向对象程序设计B说明书
面向对象程序设计B说明书
学院:
机电工程学院
专业:
机械电子工程
姓名:
周堂
学号:
0800160129
指导教师:
唐麟
2010年10月21日
目录
题目1:
面向对象基础知识1
1.1面向对象技术进行程序设计的优势1
1.2对象的概念,对象和类的区别1
1.3面向对象程序设计的基本特征1
题目2:
MyString类的设计与实现1
2.1代码设计1
2.2功能讲解3
题目3:
简易校园信息管理系统的设计与实现4
3.1代码设计4
3.2功能讲解13
题目1:
面向对象基础知识
1.1面向对象技术进行程序设计的优势
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。
面向对象程序设计具有封装性、继承重用性、多态性等特征,类和继承是是适应人们一般思维方式的描述范式,因而使用过程中便可实现重用性、灵活性和扩展性,使得编程更加简便、快捷,更易实现复杂程序的编写。
1.2对象的概念,对象和类的区别
对象具有唯一的标识符,对象包括属性和方法,属性就是需要记忆的信息,方法就是对象能够提供的服务。
在面向对象的软件中,对象是某一个类的实例。
类定义了一件事物的抽象特点。
通常来说,类定义了事物的属性和它可以做到的(它的行为)。
对象是用类来定义的,是类的实例,具有的类的方法和属性。
1.3面向对象程序设计的基本特征
1.抽象
抽象包括两个方面:
过程抽象和数据抽象。
过程抽象把一个系统按功能划分成若干个子系统,进行"自顶向下逐步求精"的程序设计。
数据抽象以数据为中心,把数据类型和施加在该类型对象上的操作作为一个整体(对象)来进行描述,形成抽象数据类型ADT。
2.封装
封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件。
外部无法直接访问这些封装了的数据,从而保证了这些数据的正确性。
如果这些数据发生了差错,也很容易定位错误是由哪个操作引起的。
3.继承
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
4.多态性
多态性是指允许不同类的对象对同一消息作出响应。
题目2:
MyString类的设计与实现
2.1代码设计
//MyString.h
#ifndefMYSTRING_H
#defineMYSTRING_H
#include
usingnamespacestd;
classMyString
{
public:
MyString(constchar*str=0);
MyString(constMyString&other);
MyString&operator=(constMyString&other);
~MyString();
MyStringoperator+(constMyString&other);
booloperator!
=(constMyString&other);
booloperator==(constMyString&other);
friendstd:
:
ostream&operator<<(std:
:
ostream&output,MyString&myString);
private:
char*m_data;
};
#endif
//myString.cpp
#include"Mystring.h"
#include
#include
usingnamespacestd;
MyString:
:
MyString(constchar*str)
{
if(str==NULL)
{
m_data=newchar[1];
*m_data='\0';
}
else
{
intlen=strlen(str);
m_data=newchar[len+1];
strcpy(m_data,str);
}
}
MyString:
:
MyString(constMyString&other)
{
intlen=strlen(other.m_data);
m_data=newchar[len+1];
strcpy(m_data,other.m_data);
}
MyString&MyString:
:
operator=(constMyString&other)
{
if(this==&other)
return*this;
delete[]m_data;
intlength=strlen(other.m_data);
m_data=newchar[length+1];
strcpy(m_data,other.m_data);
return*this;
}
MyString:
:
~MyString()
{
delete[]m_data;
}
MyStringMyString:
:
operator+(constMyString&other)
{
intlength1=strlen(other.m_data);
intlength2=strlen(m_data);
MyStringstr;
str.m_data=newchar[length1+length2+2];
strcpy(str.m_data,m_data);
strcat(str.m_data,other.m_data);
returnstr;
}
boolMyString:
:
operator!
=(constMyString&other)
{
if(strcmp(m_data,other.m_data))
returntrue;
else
returnfalse;
}
boolMyString:
:
operator==(constMyString&other)
{
if(strcmp(m_data,other.m_data))
returnfalse;
else
returntrue;
}
std:
:
ostream&operator<<(std:
:
ostream&output,MyString&myString)
{
output< : endl; returnoutput; } //UseMyString.cpp #include"Mystring.h" #include usingnamespacestd; voidmain() { MyStringmystring1; MyStringmystring2("123"); MyStringmystring3(mystring2); MyStringmystring4; mystring4=mystring2+"456"; if(mystring3==mystring2) cout<<"mystring2与mystring3相等! "< if(mystring3! =mystring1) cout<<"mystring1与mystring3不相等! "< cout<<"mystring1: "< cout<<"mystring2: "< cout<<"mytring3: "< "< } 2.2功能讲解 MyString(constchar*str=0); 构造函数,在定义对象时系统自动调动,函数将为对象分配空间。 MyString(constMyString&other); 赋值构造函数,因为MyString中存在是有指针成员,因此不能使用系统自动生成的赋值构造函数,因为系统自动生成的构造函数是按位拷贝的,因此需要重新定义一个不按位拷贝的赋值构造函数。 ~MyString(); 析构函数,在对象使用完成时系统自动调用,用于释放空间。 MyStringoperator+(constMyString&other); 以成员函数的方式重载“+”运算符,实现MyString类的加法运算。 booloperator! =(constMyString&other); booloperator==(constMyString&other); 以成员函数的方式重载关系运算“==”、“! =”,实现MyString类对象的关系比较。 friendstd: : ostream&operator<<(std: : ostream&output,MyString&myString); 以友元方式重载输出运算“<<”,实现MyString类对象的直接输出。 以上函数共同实现一个MyString类,使用MyString类对象时,可以直接进行赋值、相加、判断是否相等、输出等运算。 题目3: 简易校园信息管理系统的设计与实现 3.1代码设计 //Person.h #ifndefPERSON_H #definePERSON_H structdate { intyear; intmonth; intday; date() { year=2010; month=10; day=10; } }; classPerson { public: Person(); virtualvoidShow(void); virtualvoidRead(void); private: charname[10]; charsex[10]; charaddress[50]; datebirthday; }; #endif //Person.cpp #include"Person.h" #include usingnamespacestd; Person: : Person() { strcpy(name,"zhangsan"); strcpy(sex,"male"); strcpy(address,"guilinyaoshan"); } voidPerson: : Show(void) { cout<<"name: "< cout<<"sex: "< cout<<"address: "< cout<<"birthday: "< } voidPerson: : Read(void) { cout<<"name: "; cin>>name; cout<<"sex: "; cin>>sex; cout<<"address: "; cin>>address; cout<<"birthday: "< cout<<"year: "; cin>>birthday.year; cout<<"month: "; cin>>birthday.month; cout<<"day: "; cin>>birthday.day; } //Student.h #ifndefSTUDENT_H #defineSTUDENT_H #include"Person.h" #include"Teacher.h" classStudent: publicPerson { public: Student(); voidShow(); voidRead(); private: charmajor[20]; coursecourses[20]; datetregister; }; #endif //Student.cpp #include"Student.h" #include #include usingnamespacestd; Student: : Student() { strcpy(major,"Jixiedianzi"); } voidStudent: : Show() { inti; cout<<"------------------------------------------"< Person: : Show(); cout<<"major: "; cout< cout<<"courses: "< cout<<"namexueqikeshi"< for(i=0;i<20;i++) cout< cout<<"tregister: "< cout<<"------------------------------------------"< } voidStudent: : Read() { inti; Person: : Read(); cout<<"major: "; cin>>major; cout<<"courses: "< for(i=0;i<20;i++) { cout<<"course"<<(i+1)<<": "< cout<<"name: "; cin>>courses[i].name; cout<<"xueqi: "; cin>>courses[i].xueqi; cout<<"keshi: "; cin>>courses[i].keshi; } cout<<"tregister: "< cout<<"year: "; cin>>tregister.year; cout<<"month: "; cin>>tregister.month; cout<<"day"; cin>>tregister.day; cout<<"------------------------------------------"< } //Teacher.h #ifndefTEACHER_H #defineTEACHER_H #include"Person.h" #include usingnamespacestd; structcourse { intxueqi; intkeshi; charname[50]; course() { xueqi=2010; keshi=72; strcpy(name,"Chinese"); } }; classTeacher: publicPerson { public: voidShow(); voidRead(); private: coursecourses[10]; datetregister; }; #endif //Teacher.cpp #include"Teacher.h" #include"iostream" #include usingnamespacestd; voidTeacher: : Show() { inti; cout<<"------------------------------------------"< Person: : Show(); cout<<"courses: "< cout<<"namexueqikeshi"< for(i=0;i<10;i++) cout< cout<<"tregister: "< cout<<"------------------------------------------"< } voidTeacher: : Read() { inti; Person: : Read(); cout<<"courses: "< for(i=0;i<10;i++) { cout<<"course"<<(i+1)<<": "< cout<<"name: "; cin>>courses[i].name; cout<<"xueqi: "; cin>>courses[i].xueqi; cout<<"keshi: "; cin>>courses[i].keshi; } cout<<"tregister: "< cout<<"year: "; cin>>tregister.year; cout<<"month: "; cin>>tregister.month; cout<<"day: "; cin>>tregister.day; cout<<"------------------------------------------"< } //main.cpp #include"Teacher.h" #include"Person.h" #include"Student.h" #include usingnamespacestd; #definestudentmax2 #defineteachermax2 voidShowAll(Person*p) { p->Show(); } voidmain() { cout<<"#######################################################"< cout<<"#校园信息管理系统#"< cout<<"#######################################################"< cout<<"~~~~~~~~~~~~欢迎观临! ~~~~~~~~~~~~~~"< cout<<"系统多态测试: "< Students; s.Show(); s.Read(); Teachert; t.Show(); t.Read(); ShowAll(&s); ShowAll(&t); cout<<"****************************************"< "< inti; charj; Studentstudent[studentmax]; Teacherteacher[teachermax]; loop: cout<<"$$$$$$$$$$$$$$$$菜? 单Ì£¤$$$$$$$$$$$$$$$$"< cout<<"______________________________________"< cout<<"|请输入你需要的选项: |"< cout<<"--------------------------------------"< cin>>j; if(j=='a') gotoloop1; if(j=='b') gotoloop2; if(j=='c') gotoloop3; if(j=='d') gotoloop4; if(j=='e') gotoloop5; if(j=='f') gotoloop6; if(j=='g') gotoloop7; cout<<"请输入正确的选项! "< gotoloop; loop1: cout<<"InputInformationofStudents"< for(i=0;i { cout<<"Inputtheinformationofstudent"< ‘y’;不输入: 任意键"< cin>>j; if(j=='y') { cout<<"student"< "< student[i].Read(); } else continue; } cout<<"------------------------------------------------"< gotoloop; loop3: cout<<"ShowofStudents'Information"< for(i=0;i { cout<<"student"< "< student[i].Show(); } cout<<"--------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 说明书