文档库 最新最全的文档下载
当前位置:文档库 › 面向对象程序设计实验

面向对象程序设计实验

面向对象程序设计实验
面向对象程序设计实验

实验一C++ 基础

1.1 实验目的

1.了解并熟悉开发环境,学会调试程序;

2.熟悉 C++ 中简单的标准输入输出函数的使用方法;

3.理解 const 修饰符的作用并学会应用;

4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载;

6.理解并熟练掌握使用 new 和 delete 来分配内存; 7.理解并熟练掌握引用的使用方法。

1.2 实验内容

1.2.1 程序阅读

1.理解下面的程序并运行,然后回答问题。

#include

int max_def(int x, int y)

{

return (x>y?x:y);

}

int max_def(int x, int y, int z)

{

int temp = 0;

return (temp=(x>y?x:y))>z?temp:z;

}

double max_def(double x, double y)

{

return (x>y?x:y);

}

int main()

int x1 = 0;

int x2 = 0;

double di = 0.0;

double d2 = 0.0;

x1 = max_def(5,6);

x2 = max_def(2,3,4);

di = max_def(2.1,5.6);

d2 = max_def(12.3,3.4,7.8); -------------------------------- cout

cout

cout<<"d1="<

cout<<"d2="<

}

问题一:上述程序的输出结果是什么?

问题二:用的是哪个函数?

答:调用的函数是

int max_def(i nt x, int y, int z)

{ _

int temp = 0;

retur n (temp=(x>y?x:y))>z?temp:z; }

问题三:②处的输出结果为什么是d2=12,而不是d2=12.3 ?

答:因为①处调用的是整型函数,d2在此函数中被转换为整型,小数点后面被删除。

2?理解下面的程序并运行,然后回答问题。

#i nclude

int main() {

int *p1

int *p2 = new int; --------------------------------- ①

= new int(0); -------------------------------- ②

char *p3 = new char[10]; ------------------------------------ ③

return 1;

}

问题一:①、②、③处动态申请内存分别代表什么意思?

答:①new动态分配存放一个整数的内存空间,并将其首地址赋给指针变量pl ;②new动态分配存放一个整数的内存空间,并对其初始化赋值为 0,并将其首地址赋给指针变量 p2 ;③new 动态分配存放 10个字符型数组元素的内存空间,并将其首地址赋给指针变量p3。

问题二:该程序存在什么不合理的地方?。

答:程序结束时没有将分配的空间释放,应该使用delete函数释放内存。

3.理解下面的程序并运行,然后回答问题。

#include void s a, int b)

{

int temp = a;

a = b;

b = temp;

}

void s *a, int *b)

{

int temp = *a;

*a = *b;

*b = temp;

}

int main()

{ int i = 5; int j = 10; cout<<"Before swap: i="<

cin>>i>>j>>k>>l;

a=distance(i,j,k,l);

cout<<" 请输入空间两点坐标 "<

cin>>q>>w>>e>>r>>t>>y;

a=distance(q,w,e,r,t,y);

}

2.设计一个函数:exch(),当调用exch (a,b,c)时,将a赋值给b, b赋值给c, c赋值给a,要求采用引用的方式来实现。

#include

#include

using namespace std;

void exch(int &m,int &n,int &p)

{

int temp=p;

p=n;

n=m;

m=temp;

}

int main()

{

int a=1,b=2,c=3;

cout<<"a="<

exch(a,b,c);

cout<<"a="<

return 0;

1.3 思考题

1.自己设计一个程序,测试指向常量的指针,常指针,指向常量的常指针之间的区别。

#include using namespace std;

void main()

{

int a = 10;

int const *p = &a; cout<

int b = 20;

}

我们可以改变指针变量 p 所指向的内容,而不能改变 p 的地址空间,如添加上 p = &b; 我们就会发现编译错误!指向常量的指针 const —— int*p ,特点是指针所保存的地址可以改变,然而指针所指向的值却不可以改变。同理,当添加*p = b 时,会发生编译错误!指向常量的常指针const int const*p 特点是指针所保存的地址不可变,指针所指向的数值也不可变。

2.编写一个函数,实现两个字符串变量的交换。

#include using namespace std;

void Exchg2(char *m,char *n)

{

char tmp = *m;

*m = *n;

*n = tmp;

}

void main()

{

char a = 'q';

char b = 'p';

cout<<"a="<

} 问题一:以上程序存在三个错误,在不改变主函数内容的前提下,试改正该程序。#include #include

using namespace std;

class CPerson

{

public:

void Print();

CPerson(int m,string n)

{

age=m;

name=n;

}

private:

int age;

string name;

};

void CPerson::Print()

{ cout<<"name="<

}

void main()

{

CPerson ps(23,张三"); ps.Print();

}

3.2.2 程序设计

1.设计实现一个 CPoint 类,满足以下要求:

a. 该类包含两个整型成员变量 x (横坐标)和y (纵坐标),以及一个输出函数用来输出横

Print() 坐标和纵坐标,要求不可以在类的外部直接访问成员变量;

b. 可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值0;

c. 可以采用直接输入参数的方式来初始化该类的成员变量;

#in clude

#in cludevioama nip>

using n amespace std;

class CPoi nt{

public:

void prin t();

CPoi nt(){x=O;y=O;}

poi nt(i nt x1,i nt y1);

int GetX() {return x;}

int GetY() {return y;}

private:

int x;

int y;

};

void CPoi nt::pri nt()

{

8山<<乂<<$6上可(6)<<『<<6 ndl;

}

CPoi nt::poi nt(i nt x1, int y1)

{

x=x1;

y=y1;

}

void mai n()

{ CPoi nt p;

CPoi nt();

p.pri nt();

p.poi nt(1,2);

p.pri nt();

p.GetX();

p.GetX();

}

3.3 思考题

1设计一个 CStudent (学生)类,并使 CStudent类具有以下特点:

a. 有学生姓名、学号、程序设计、信号处理、数据结构三门课程的成绩;

b. 全部信息由键盘输入;

c. 通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩;

d. 输出学生的基本信息、各科成绩与平均成绩;

e. 学生对象用链表存储; f .统计不及格学生人数。

#include #include

#include

#define N 3

#define M 3

class CStudent

{

public:

void setstudent(char *name,char *sn,float score[N]);

void showstudent();

private:

char Sname[10];

char Sno[8];

float Score[3];

float Avg;

float Sum;

int count;

};

void CStudent :: setstudent(char *name,char *sn,float score[N]) {

int i;

float Sum=0.0;

int count=0;

strcpy(Sname,name);

strcpy(Sno,sn);

for(i=0;i

{

Score[i]=score[i];

count++;

}

for(i=0;i<3;i++)

{

Sum=Sum+Score[i];

}

Avg=Sum/count;

}

void CStudent ::showstudent()

{

int i;

cout<

for(i=0;i<3;i++) cout<

cout<

}

void main()

{

int i,j,k=0;

char name[10],no[8];

float score[N];

for(j=1;j<=M;j++)

{

cout<<"please input student["<

cin>>name;

cout<<"please input student["<

cin>>no;

cout<<"please input student["<

for(i=0;i

cin>>score[i];

CStudent S1;

cout<<"student["<

cout<

S1.setstudent(name,no,score);

S1.showstudent();

if(score[i]<60)

k++;

cout?"不及格人数:"vvkvvendl;

实验五派生与继承一单基派生5.1实验目的

1.理解继承的概念;

2 ?理解公有派生、私有派生和保护派生;

3?理解单基派生类中构造函数和析构函数的执行顺序。

5.2实验内容

5.2.1程序阅读

1?理解下面的程序并运行,然后回答后面的问题。

#i nclude "iostream.h"

class CBase

{

public:

CBase(int a)

:a(a)

{

} protected:

void print()

{

cout<<"a="<

}

private:

int a;

};

class CDerive : public CBase

{

public:

void print()

{

CBase::print(); cout<<"b="<

} private:

int b;

};

void main()

{

CDerive d;

d.print();

CBase b;

b.print();

} 问题一:以上程序有两个错误,试指出来,并改正之。答:派生类 CDerive 中没有定义 CDerive (),主函数中没有给 d, b 对象赋值。 #include "iostream.h"

class CBase

{

public:

CBase(int a)

:a(a)

{

}

void print()

{

cout<<"a="<

}

private:

int a;

};

class CDerive : public CBase

{

public:

CDerive(int a,int c)

:CBase(a)

{

b=c;

}

void print()

{

CBase::print(); cout<<"b="<

}

private:

int b;

};

void main()

{

CDerive d(1,3);

d. print();

CBase b(2);

b.print();

}

2.理解下面的程序并运行,然后回答后面的问题。#include "iostream.h"

class CBase

{ public:

CBase(int a)

:a(a)

{

cout<<"base structure"<

}

~CBase()

{

cout<<"base destructure"<

}

void print()

{ cout<<"a="<

} protected:

int a;

};

class CDerive : public CBase

{ public:

CDerive(int a, int b,int c) :CBase(a),b(b),c(c)

{

cout<<"derive structure"<

}

~CDerive()

{

cout<<"derive destructure"<

}

void print()

{

CBase::print();

cout<<"b.a="<

cout<<"c="<

}

private:

CBase b; int c; };

void main()

{

CDerive d(1,2,3); -------------------------------- ①

d.print();

} 问题一:以上程序的输出结果是什么,为什么?答:程序错误,不能输出结果。

“ cout<<"b.a="<

问题二:①处语句执行完后, d.b.a的值为多少?

答: b.a=2。

实验七多态性—函数与运算符重载

7.1 实验目的

1.理解静态联编和动态联编的概念; 2.掌握成员函数方式运算符重载; 3.掌握友元函数方式运算符重载; 4.掌握 ++、--、=运算符的重载。

7.2 实验内容

7.2.1 程序阅读

1.理解下面的程序并运行,然后回答后面的问题。

#include "iostream.h"

class CComplex

{

public:

CComplex()

{ real = 0; imag = 0;

}

CComplex(int x,int y)

{ real = x; imag = y;

}

int real;

int imag;

CComplex operator + (CComplex obj1) ------------------------------ ①{

CComplex obj2(real + obj1.real, imag + obj1.imag); return obj2;

} };

void main()

{

CComplex obj1(100,30);

CComplex obj2(20, 30);

CComplex obj;

obj = obj1+obj2; ----------------------------------------- ②

cout << obj.real <

cout << obj.imag << endl;

}

问题一:①处的运算符重载,为什么该函数的返回值要设计成CComplex类型?

答:运算符重载函数的返回值与其操作类的类型相同。

问题二:②处的运算符重载函数调用就相当于" obj=operator+(obj1,obj2); ”,请问 CComplex

类中的运算符重载函数为什么只有一个参数?

答:因为另一个参数是隐含调用,是 CComplex 类的当前对象。它通过 this 指针隐含地进行传递。

2.理解下面的程序并运行,然后回答后面的问题。

#include "iostream.h" class CComplex

{

public:

CComplex()

{

real = 0.0;

imag = 0.0;

}

CComplex(float x, float y)

{

real = x;

imag = y;

}

CComplex operator + (CComplex &obj1, CComplex &obj2)

{

CComplex obj3(obj1.real + obj2.real, obj1.imag + obj2.imag); return

obj3;

}

CComplex &operator++(CComplex &obj)

{

obj.real += 1;

obj.imag +=1;

return obj;

}

void print()

{ cout<

} private:

float real;

float imag;

};

CComplex &operator--(CComplex &x)

{

x.real -= 1;

x.imag -= 1;

return x;

}

void main()

{

CComplex obj1(2.1,3.2);

CComplex obj2(3.6,2.5);

cout<<"obj1=";

obj1.print();

cout<<"obj2=";

obj2.print();

CComplex obj3 = obj1 + obj2;

cout<<"befor++, obj3=";

obj3.print();

++obj3;

cout<<"after++, obj3=";

obj3.print();

--obj3;

cout<<"after--, obj3=";

obj3.print();

CComplex obj4 = ++obj3;

cout<<"obj4=";

obj4.print();

} 问题一:以上程序中的三个运算符重载都有错误,试改正并分析输出结果。 #include "iostream.h"

class CComplex

{

public:

CComplex()

{

real = 0.0;

imag = 0.0;

}

CComplex(float x, float y)

{

real = x;

imag = y;

}

CComplex operator + (CComplex &obj1)

{

CComplex obj2(real + obj1.real, imag + obj1.imag); return obj2;

}

friend CComplex operator++(CComplex &obj)

{

obj.real += 1;

obj.imag += 1;

return obj;

}

CComplex operator--();

void print()

{

cout << real << "+" << imag << "i" << endl;

}

private:

float real;

float imag;

};

CComplex CComplex::operator--()

{

real -= 1;

imag -= 1;

return (*this);

} void main()

CComplex obj1(2.1, 3.2);

CComplex obj2(3.6, 2.5);

cout << "obj1=";

obj1.print();

cout << "obj2=";

obj2.print();

CComplex obj3 = obj1 + obj2;

cout << "befor++, obj3=";

obj3.print();

++obj3;

cout << "after++, obj3=";

obj3.print();

--obj3;

cout << "after--, obj3=";

obj3.print();

CComplex obj4 = ++obj3;

cout << "obj4=";

CComplex obj4.print();

}

结果:

obj1=2.1+3.2;

obj2=3.1+2.5;

obj3=5.7+5.7;

after++obj3=1.7+1.7;

after--obj3=5.7+5.7;

obj4=1.7+1.7;

7.2.2 程序设计

1.把 7.2.1 中第一道题的程序改造成采取友元函数重载方式来实现“+”运算符,并采取友元

函数重载方式增加前置和后置“ ++ ”以及“ --”运算符重载,并设计主函数来验证重载运算符的用法。#include

using namespace std;

{

public:

CComplex()

{

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

面向对象程序设计 复习资料

1.对象 (1)从概念层面讲,对象是某种拥有责任的抽象。 (2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。 (3)从语言实现层面讲,对象封装了代码和数据。 2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。 3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、 迪M特原则、接口隔离原则、单一职责原则。 4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限 编程)。 开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。 OOD——运用面向对象方法进行系统设计。 OOP——运用面向对象方法进行程序设计。 6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。 优点:(1)加强了对问题域和系统责任的理解。(2)改进与分析有关的各类人员之间的交流。(3)对需求的变化具有较强的适应性。(4)支持软件复用。 OOA的三大策略是:属性策略、方法策略、对象策略。 7.(1)封装:是指对象在其操作中隐藏属性。它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。 例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里 面是否有足够的钱。而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。 以表示圆的一个对象作为封装的例子。圆的操作应能计算出半径、直径、周长和面积。假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。如果在软件的后续版本中要存储的是半径,就必须找出系统中直接访问直径的所有代码,并更正它们,有了封装,就不会有问题。 (2)继承:可以指定类从父类中获取一些特性,再添加它自己的独特特性。继承是类间的 基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类的属性和操作,也可以对父类中的操作重新定义其实现方法。 例如:在面向对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的 子类,也可以说家用电器类是这些类的超类。家用电器类具有的属性OnOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用电器,那么就会立即知道它 具有家用电器类的属性和操作,这种关系就是继承。每个家用电器类的子类都继承了家用电器类的特征。同时,每个子类都增加了自己的属性和操作。 (3)多态:是指同一操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如:“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形;作用在“圆”对象上, 则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同对象时,每个对象将根据自1 / 9

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

面向对象程序设计的实训案例的设计

面向对象程序设计的实训案例的设计 一.引言 今天,面向对象编程技能作为应用软件设计人员的基本工作技能在软件业内已经深入人心:任何一个应用软件设计求职者如果敢于声称自己对面向对象编程一无所知,哪怕他其他方面再优秀,也会被公司拒绝;任何一家招聘应用软件设计职位的公司如果在招聘条件中没有列出“熟悉精通面象对象编程”这个条件,该公司一定认为这是默认的条件,没有单独列出的必要。 遗憾的是,应届大学大专毕业生动手能力不强已成为各软件用人单位的另一个共识,而把,等面向对象语言仅仅当作开发网站快速上手的工具的初学者更是大有人在。面对大街上扑天盖地的各类“计算机职业教育广告”,身为一名计算机专业教师,我觉得有必要为提高学生们的面向对象程序设计水平做点什么了。 提高学生的程序设计水平,公认最佳的途径就是多动手实践。在不给学生加负的前提下,精心选择,设计有代表性的实训案例,切实提高实训的效果,就显得尤为重要。 二.案例的评价标准 一个针对初学者的面向对象程序设计的实训案例应由案例的现实原型,案例分析设计和参考代码三个部分组成。其评价标准大致如下: 1.案例的现实原型应是同学们熟悉的题材,规模和复杂度相对较小,初学者容易把握主题。 2.案例的分析应体现出面向对象的思维方式,让同学们感受到“万物皆对象”,用面向对象的方式构建软件是一件自然而然的事情。 3.案例的设计要结构清晰,具备一定的健壮性和扩展性;在不影响结构优雅的前提下,尽可能全面应用到抽象类,接口,继承,多态,重载,覆盖等 面向对象基本特性,体现面向对象编程的特点。 4.案例的参考代码由源码实现,和伪代码相比,初学者对能编译运行的源代码更有好感。 三.案例的现实原型: 根据案例的评价标准,我选择了大家都比较熟悉的餐厅结账作为我们案例的现实原型,其功能要求如下: 1.程序功能: 这是一个餐厅计费的小程序;根据用户提供的消费清单和所应享受的折扣,算出最后用户的账单;根据用户选择,决定是否继续计算; 2.用户界面: 控制台命令行显示输出信息和接受用户输入信息; 3.折扣规定: 餐厅经营普通食品,海鲜,酒水三大类食品,其享受的折扣不同;折扣分为“进餐等待折扣”“折扣”“代金券折扣”三种。 . 进餐等待折扣:普通食品折,酒水折,海鲜不打折; 折扣:菜单总价折; 代金券折扣:总价每消费,可使用代金券,直接从总价中扣除; 补充说明:如果同时满足折扣,折扣,只能享受折扣. .帐单规定: 显示消费的食品的每条记录和单价;显示总共应付费用;显示享受折扣的名称和

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

面向对象程序设计期末综合练习一(单选题)

22. 下列的符号常量定义中,错误的定义是()。 A. const M=10; B. const int M=20; C. const char ch; D. const bool mark=true; 40. 函数重载是指()。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 41. 以下关于函数模板叙述正确的是()。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型 42. 下列()的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参是地址值

43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板 44. 函数原型语句正确的是()。 A. int Function(void a); B.void Function (int); C. int Function(a); D.void int(double a); 45. C++中函数返回值的类型是由()决定的。 A. return语句中表达式的类型 B.该函数定义时的类型 C.调用函数时的调用语句 D.系统根据结果 56. 采用重载函数的目的是()。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 58. 以下叙述中正确的是( )。 A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B. 使用const定义的常量,其值在程序运行时是不可改变的 C. 在程序中使用内联函数使程序的可读性变差 D. 在定义函数时可以在形参表的任何位置给出缺省形参值 70. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。 A. int *p=new a[10]; B. int *p=new float[10];

面向对象程序设计的基本思想

课题:面向对象程序设计的基本思想 (一)教学设计思想与理论依据: 《算法与程序设计》模块的教学强调通过该模块的学习,学生应该体验客 观世界的计算机对象化表征和算法思维,掌握几种基本算法;能运用面向对 象的方法,设计解决简单问题的算法,并能初步使用一种面向对象的程序设 计语言,编制程序实现算法解决该问题。 (二)教学内容分析 教材以广东教育出版社出版的信息技术(选修一)《算法与程序设计》第五章第一节内容为结构框架,本节主要介绍面向对象思想产生的必然性和面向对象思想的机制,以及通过对同一个问题采取面向过程和面向对象两种不同思想解决的区别,让学生感受到面向对象程序设计的优越性。 (三)学生情况分析: 学生已学完教材前四章内容,基本掌握了传统的面向过程结构化程序设计方法,有一定的程序设计基础。 (四)教学策略与模式: 采用讲解、任务驱动、实践和学生自主学习相结合的教学方式 (五)教学资源: 硬件:多媒体电脑教室,投影仪,广播系统 软件:学生机安装vb6.0 (六)教学目标: 知识与技能 1.了解面向对象程序设计的基本思想和面向对象思想的由来,并能够举例说 明现实世界与面向对象系统之间的对应关系。 2.了解面向对象程序设计的优越性并初步理解其实现的机制。 过程与方法 经历分析、调试解决同一问题的两种不同实现思想的程序,初步理解面向对象程序设计的优势及面向过程程序设计的缺陷。 情感态度和价值观 (1)关注传统结构化程序设计存在的问题。 (2)产生学习面向对象程序设计技术的愿望。 (3)关注面向对象技术是当前程序设计的重要发展方向。 (七)重点难点 教学重点 (1)传统结构化程序设计存在的问题 (2)面向对象程序设计所具有的优点。 教学难点 (1)面向对象思想的产生。 (2)传统结构化程序设计与面向对象程序设计的基本点比较。 (3)实现面向对象程序设计的基本机制。 教学过程:

面向对象程序设计实训说明书电影院网上订票系统设计

中北大学 面向对象程序设计实训 说明书 学院、系:软件学院 专业:软件工程 学生班级:13140A01 学生姓名:景贝贝学号:1314011438设计题目:电影院网上订票系统设计 起迄日期:2015年6月29日- 2015年7月10日指导教师:杨秋翔 2015 年7月8 日 实训任务书

实训任务书

一、需求分析 需求分析包括可行性分析、系统流程图和数据流图,数据字典。可行性分析包括技术可行性、经济可行性和操作可行性。 1.1 可行性分析 1.1.1 技术可行性 根据电影院提出的系统功能、性能及实现系统的各种约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术已较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发的。 由以上分析可知,影院售票系统的开发在技术上是可行的。 1.1.2 经济可行性 电影院具有信息化的处理设施,并且拥有支持本系统的应用平台。因此无需再投入资金购买其他设施。 系统的开发基于本人对程序开发的实践学习而来,电影院无需资金投入,并且软件开发过程投入的成本不高,因此开发经费完全可以

接受。 由以上分析可知,影院售票系统在经济上是可行的。 1.1.3 操作可行性 根据系统页面用户可以自动查询影片信息。还可浏览完影片信息以后操作订票、退票等功能。管理员也可以在后台添加、修改并删除影片信息,还可以管理注册用户信息和用户订票信息。 由以上分析可知本系统在操作上也是可行的。 1.2 系统流程图 首先未注册的用户要先注册,注册完了以后输入用户名和密码进入页面。根据网站上的影片信息用户可以选择自己喜欢的电影来订票。然后订票信息会自动存储到后台订票信息数据当中。 本系统的具体流程为如图所示。

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

面向对象程序设计试题

《面向对象程序设计》试题(补考) (闭卷考试) 班级:学号:姓名: 1. 单项选择题(每小题3分,共60分) 1)C++语言对C语言做了很多改进。C++语言相对于C语言的最根本的变化是 ( )。 A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 2)下列描述中,不属于面向对象思想主要特征的是( )。 A.封装性B.跨平台性 C.继承性D.多态性 3)每个C++程序中都必须有且仅有一个( )。 A. 类 B. 预处理命令 C. 主函数 D. 语句 4)sizeof(float)是( )。 A. 一个双精度型表达式 B. 一个整型表达式 C. 一种函数调用 D. 一个不合法的表达式 5)设有int x=11;,则表达式(x++*2/3)的值是( )。 A. 7 B. 8 C. 11 D. 12 6)在下面的二维数组定义中,正确的是( )。 A. int a[5][]; B. int a[][5]; C. int a[][3]={{1,3,5},{2}}; D. int a[](10);

7)设有程序代码: int k=10; while(k=0) k=k-1; 则下面描述中正确的是( )。 A. 循环执行10次 B. 无限循环 C. 循环体语句一次也不执行 D. 循环体语句执行一次 8)对表达式for(表达式1; ; 表达式3)可理解为( )。 A. for(表达式1; 0; 表达式3) B. for(表达式1; 1; 表达式3) C. for(表达式1 ; 表达式3;) D. for( ; ; 表达式3) 9)下面的哪个选项不能作为函数的返回类型? ( )。 A.void B.int C.new D.long 10)有如下说明: int a[ ]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a; 则下面哪一个表达式的值为9 ( )。 A. *p+9 B. *(p+8) C. (*p += 9) D. p+8 11)有如下函数定义: void func(int a, int &b) {a++; b++;} 若执行代码段: int x=0, y=1; func(x, y); 则变量x和y值分别是( )。 A.0和1 B.1和1 C.0和2 D.1和2 12)下列写法正确的是( )。 A. int *p = 15; B. const int a; a=15; C. int& b; D. int b = 15; int* a = &b; 13)下列选项中,与实现运行时多态性无关的是( )。 A.重载函数B.虚函数C.指针D.引用 14)拷贝构造函数的参数一般是( )。 A. 某对象名 B. 某对象成员名 C. 某对象的引用名 D. 指向对象的指针名 15)对类的构造函数和析构函数描述正确的是( )。 A.构造函数可以重载,析构函数不能重载

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级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 using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

面向对象程序设计课程设计

《面向对象程序设计》课程设计 课程代码:*****(采用现行5位数字的课程代码) 课程名称:面向对象程序设计课程设计 设计周数:1周 学分:0.5学分 课程类别:必修课 一、课程设计的目的与任务 面向对象程序设计课程设计是计算机科学与技术、网络工程、信息管理与信息系统等专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。通过课程设计,学生可以将本课程所学知识点融会贯通,举一反三,加深实践与理解,提高学生综合运用所学知识的能力;另一方面,在参与一系列子项目的实践过程中,能使学生获得相关项目管理和团队合作等众多方面的实践经验。其目的在于加深对面向对象程序设计理论和基本知识的理解,通过对所选项目的分析、程序算法的设计、运行与调试过程的分析,使学生掌握基本的信息系统分析方法、设计方法和上机操作的各种技巧,对培养学生的逻辑思维能力、团队合作精神、创新能力、动手操作能力各方面素质有提供了良好的实践平台,为后续课程的学习打下一定的基础。 二、本课程设计的基本理论 本课程设计使用面向对象程序设计的方法解决实际问题,涵概了课程的所有重要知识点,如类与对象、继承与组合、虚函数与多态性等。 三、课程设计的形式与基本要求 形式:召开课程设计动员会,根据学生的学习水平和特长进行分组,每组选择指定课程设计的题目和内容。学生在规定的时间内,经过小组的协同工作和指导教师的辅导,完成所选课题的设计,最后由指导教师进行验收及评定。 基本要求:要求学生做好预习,认真分析设计过程中涉及到的算法,并确定所选课题的功能模块,详细描述各模块的具体内容;用流程图描述实现算法,根据算法进行代码的编写,最后进行反复上机调试修改,直到输出正确结果为止。 认真写好课程设计报告,根据每组学生的分工,各自写出对解决问题的详细分析、模块功能、调试结果,最后将课程设计报告上交给指导教师。 四、课程设计的内容 选题一:员工管理信息系统 (1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、部门、参加工作时间和年龄(必须计算得到)。

《Java面向对象程序设计》实训实验指导书

Java面向对象程序设计 实验指导书 适用专业:计算机网络技术 执笔人:周辉奎 南昌工学院信息学院编 二〇一三年十月

目录 实验项目一 Java开发环境搭建 (1) 实验项目二 Java语言基础 (8) 实验项目三 Java语言面向对象基础 (21) 实验项目四图形用户界面的设计 (39) 实验项目五异常处理 (44)

实验项目一 Java开发环境搭建 一、实验目的和要求: (一)目的: 1、熟悉安装JDK、JRE; 2、熟悉环境变量配置; 3、熟悉Eclipse; 4、掌握命令提示符运行第一个java程序。 (二)要求: 1、认真做好实验前的各项准备工作,熟悉实验内容和机器操作流程。 2、遵守实验室规章制度和实验课堂教学纪律。 3、认真完成实验任务,填写实验报告。 二、实验时数:2学时 三、实验器材: 操作系统:Windows XP操作系统 应用系统:Eclipse 四、实验内容或步骤: 实验1.1 Java开发环境搭建 1、Java JDK安装 单击Java JDK安装包,然后弹出提示框,点击下一步,直到选择安装目录如图1所示,将安装目录放在E:\Java\jdk1.6.0_35\,然后继续下一步。

指定安装目录 图1 设定JDK安装目录 JDK(Java开发工具)安装完成后,系统会自动安装JRE(Java 运行时环境),更改JRE 的安装目录,将其与JDK放在同一目录下,如图2所示。 指定安装目录 图2 设定JRE安装目录

安装完成后,出现如图2所示界面。 图3 Java环境安装结束界面 2、配置环境变量 Java JDK安装完成后,并不能立即使用,还需要配置相关环境变量。右键单击我的电脑→属性弹出如下对话框,选择高级→环境变量。

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

C面向对象程序设计知识点汇集

C#面向对象程序设计知识点汇集 第一章:C#入门 1.namespace关键字 namespace即命名空间,是定义命名空间的关键字,命名空间包含类,是类的组织方式。namespace 命名空间名 { …//类的定义 } 2.using关键字 using关键字用于导入命名空间 using命名空间名; 3.class关键字 class即类,是定义类的关键字。C#中必须用类来组织程序的变量和方法。 4.Main()方法 C#程序必须且只能包含一个Main()方法,它是程序的入口点。 static void Main(string[] args){} static void Main(){} static int Main(string[] args){} static int Main(){} 5.行输出方法 语句“Console.WriteLine("Hello .NET!");”的功能是向显示屏输出双引号之间的字符串。语句“Console.ReadLine();”的功能是输入一个字符串 6.C#程序结构 C#程序的组成要素如下: 1) 命名空间:命名空间包含一个或多个类。 2) 类。 3) 方法:方法必须包含在某一个类中,作为类的一个成员,每个程序有且仅有一个Main()方法。 4) 语句:语句是C#应用程序中执行操作的命令。C#中的语句必须用分号“;”结束。 5) 关键字:关键字也叫保留字,是对C#有特定意义的字符串。 6) 大括号:在C#中,括号“{”和“}”是一种范围标志,表示代码层次的一种方式。7.C#程序书写格式 1)缩进 2) 字母大小写 C#是大小写敏感的语言,它把同一字母的大小写当作两个不同的字符对待。 3) 程序注释 (1) 单行注释,以双斜线“//”开始,一直到本行尾部,均为注释内容。 (2) 多行注释,以“/*”开始,以“*/”结束,可以注释多行,也可以注释一行代码中间的一部分,比较灵活。 (3) 文档注释,使用“///”,若有多行文档注释,每一行都用“///”开头。 8.Console类 Console类是System命名空间中预定义的一个类,用于实现控制台的基本输入输出。

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

面向对象程序设计实验教材

实验1J a v a语言基础 一、实验目的 1.了解J D K的安装与使用、熟悉Ja v a的运行环境。 2.掌握编写与运行Ja va Ap pl ica t io n程序的方法。 3. 掌握编写与运行Ja va Ap ple t程序的方法。 4熟练掌握J ava中的数据类型、运算符、表达式及流程控 制语句。 5掌握数组的定义、建立及其使用方法。 6. 熟悉Ja v a一般程序的结构。 7通过以上内容,掌握Ja va 语言的编程规则。 二、实验要求 1.安装并设置J a va S DK 软件包。 2.编写一个Ja va 应用程序,在屏幕上输出”he ll o,ja v a!”。3.编写一个Ja va 小应用程序,在屏幕上输出”h el lo,ja v a!”。4.掌握运行J av a 程序的步骤。 5.浏览S DK 自带的Ap pl et 应用小程序。 6.编写一个声明J a va 不同数据类型变量的程序。 7.编写一个使用运算符、表达式、变量的程序。 8.编写表达式语句、复合语句的程序。 9.编写使用不同选择结构的程序。 10.编写使用不同循环结构结构的程序。 11.编写一个使用Ja va 数组的程序。 三、实验内容 (一)SDK 的下载与安装 1.机器要求 J a va 对机器运行要求不高。下面给出的是基于Wi nd ow s 平台的机器要求。 硬件要求:CP U P II以上,64M 内存,1O OM 硬盘空间即可。 软件要求:Wi nd ows98/Me/X P/NT/2000,I E 5 以上。2.下载SD K 为了建立基于SD K 的Ja va 运行环境,需要先下载Su n 的免费SD K 软件包。SD K 包含了一整套开发工具,其中包含对编程最有用的是Ja va 编译器、A p pl et 查看器和J a va 解释器。 在浏览器中输入ht t p://ja va.s un.co m/,在页面的 “Do wn lo ad J2S E v 1.4.2_01 ”栏可以选择下载J2SE v 1.4.2_01 SD K 软件包。有两种选择:一种是在线安装“Wi n do ws I n st al la ti on”;一种是离线安装“W i nd ow s Of fl in e I n st al la ti on”。 3.安装SD K 运行下载的“j2sdk-1_4_2_01-w in dow s-i586.ex e”软件

相关文档
相关文档 最新文档