当前位置:文档之家› 《面向对象程序设计》答案

《面向对象程序设计》答案

《面向对象程序设计》答案
《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境

一、实验目的

1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。

2、掌握如何编辑、编译、连接和运行一个C++程序。

3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。

二、实验要求

1、分析下列程序运行的结果。

程序一:

#include

int add(int x,int y=8);

void main()

{ int x=4;

cout<

cout<

}

int add(int x,int y)

{ return x+y;

}

//12,28

程序二:

#include

void main()

{ int *p,i;

i=5;

p=&i;

i=*p+10;

cout<<"i="<

}

//i=15

程序三:

#include

void main(void)

{ int i=10;

int &r=i;

r++;

cout<<"i="<

}

// 1 2 5 11 21

程序五:

#include

void func();

int n=1;

void main()

{ static int a;

int b= -9;

cout <<"a:"<

b+=4;

func();

cout <<"a:"<

n+=10;

func();

}

void func()

{ static int a=2; int b=5;

a+=2;

n+=12;

b+=5;

cout <<"a:" <

}

// a:0 b:-9 n:1

a:4 b:10 n:13

a:0 b:-5 n:13

a:6 b:10 n:35

实验二C++对C的扩充一、实验目的

1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。

2、进一步熟悉编辑、编译、连接和运行C++程序的方法。

3、进一步熟悉C++程序的结构和编程方法。

二、实验要求

1、分析下列程序运行的结果。

#include

int amount=123;

void main()

{ int amount=456;

cout<<::amount<<',';

cout<

::amount=789;

cout<<::amount<<',';

cout<

}

// 123,456,789,456

2、编写一个程序,用来求2个或3个正整数中的最大数。

①用不带默认参数的函数实现。

include

using namespace std;

int max(int a,int b,int c) //求3个整数中的最大者

{if (b>a) a=b;

if (c>a) a=c;

return a;

}

int max(int a, int b) //求两个整数中的最大者

{if (a>b) return a;

else return b;

}

int main( )

{int a=7,b=-4,c=9;

cout<

cout<

return 0;

}

②用带默认参数的函数实现。

#include

using namespace std;

int main()

{int max(int a,int b,int c=0);

int a,b,c;

cin>>a>>b>>c;

cout<<"max(a,b,c)="<

cout<<"max(a,b)="<

return 0;

}

int max(int a,int b,int c)

{if(b>a) a=b;

if(c>a) a=c;

return a;

}

3、有5个字符串,要求对它们按由小到大顺序排列,用string方法。

#include

#include

using namespace std;

int main()

{ int i;

string str[5]={"BASIC","C","FORTRAN","C++","PASCAL"};

void sort(string []);

sort(str);

cout<<"the sorted strings :"<

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

cout<

cout<

return 0;

}

void sort(string s[])

{int i,j;

string t;

for (j=0;j<5;j++)

for(i=0;i<5-j;i++)

if (s[i]>s[i+1])

{t=s[i];s[i]=s[i+1];s[i+1]=t;}

}

4、定义一个求两个数中较小值的函数模板min( ),要求在main( )函数中进行调用求两个浮点型数据和两个整型数据中较小的数。

#include "iostream"

#include "string"

using namespace std;

template

T min(T a,T b)

{

return a

}

int main()

{

int a=1, b=9;

float c=1.23471,d=32.431564;

cout<<"The min of "<

return 0;

}

实验三类和对象(一)

一、实验目的

1、掌握声明类的方法,类和类的成员的概念以及定义对象的方法。

2、掌握类的构造函数与析构函数的概念和使用方法。

3、初步掌握用类和对象编制基于对象的程序。

二、实验要求

1、分析下面的程序,写出其运行时的输出结果。

#include

using namespace std;

class Date

{public:

Date(int,int,int);

Date(int,int);

Date(int);

Date( );

void display( );

private:

int month;

int day;

int year;

};

Date∷Date(int m,int d,int y):month(m),day(d),year(y){ }

Date∷Date(int m,int d):month(m),day(d) {year=2005;}

Date∷Date(int m):month(m)

{ day=1;

year=2005;

}

Date∷Date( )

{ month=1;

day=1;

year=2005;

}

void Date∷display( )

{cout<

int main( )

{ Date d1(10,13,2005);

Date d2(12,30);

Date d3(10);

Date d4;

d1.display( );

d2.display( );

d3.display( );

d4.display( );

return 0;

}

// 10/13/2005

12/30/2005

10/1/2005

1/1/2005

2、建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员变量:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。

#include "iostream"

#include "string"

using namespace std;

class student

{

public:

student();

void display();

private:

string sName,sNum;

char chSex;

int iAge;

};

student::student(string na,string num,char s,int a):sName(na),sNum(num),

chSex(s),iAge(a){}

void student::display()

{

cout << "----------THE INFORMA TION OF STUDENT----------\n";

cout << "name: "<< sName << endl << "number: "<< sNum<

<< "sex: "<< chSex << endl << "age: "<< iAge <

}

int main()

{

student s("WangFang","0811045263",'w',20);

s.display();

return 0;

}

3、类Person的定义如下,请实现该类,并在主函数中创建对象obj,然后使用构造函数为obj 赋予初始值(内容自定)。

class Person

{ private:

char name[10];

int age;

int salary;

char tel[8];

public:

Person(char *xname,int xage,int xsalary,char *xtel);

void disp();

};

解:

#include

#include

Person::person(char *Xname,int Xage,int Xsalary,char *Xtel)

{ strcpy ( name, xname);

age=xage;

salary=xsalary;

strcpy (tel,xtel);}

void Person::disp()

{ cout<<“姓名:”<

cout<<“年龄”:<

cout<<“工资”:<

cout<<“电话”:<

}

void main()

{ Person obj (“张三”,25,850,“45678912”);

obj.disp()

}

实验四类和对象(二)

一、实验目的

1、进一步加深对类和对象的理解。

2、掌握对类的对象数组、对象的指针及其使用方法。

3、掌握友元的概念和使用。

4、了解类模板的使用方法。

二、实验要求

1、分析并比较下列程序运行的结果。

程序一:

#include

#include

class smallone

{public:

smallone(int sma)

{ cout<<"sm constr:"<

};

void fn(int n)

{ smallone sm(n);

cout<<"in function fn with n="<

}

int main()

{ fn(10);

fn(20);

return 0;

}

//sm constr: 10

in function fn with n=10

sm constr: 20

in function fn with n=20

程序二:

#include

#include

class smallone

{public:

smallone(int sma)

{ cout<<"sm constr:"<

};

void fn(int n)

{ static smallone sm(n);

cout<<"in function fn with n="<

}

int main()

{ fn(10);

fn(20);

return 0;

}

//sm constr:10

in function fn with n=10

in function fn with n=20

2、建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

#include

using namespace std;

class Student

{public:

Student(int n,float s):num(n),score(s){}

int num;

float score;

};

void main()

{Student stud[5]={

Student(101,78.5),Student(102,85.5),Student(103,98.5),

Student(104,100.0),Student(105,95.5)};

void max(Student* );

Student *p=&stud[0];

max(p);

reyurn 0;

}

void max(Student *arr)

{float max_score=arr[0].score;

int k=0;

for(int i=1;i<5;i++)

if(arr[i].score>max_score) {max_score=arr[i].score;k=i;}

cout<

}

3、声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。#include

using namespace std;

template

class Compare

{public:

Compare(numtype a,numtype b)

{x=a;y=b;}

numtype max()

{return (x>y)?x:y;}

numtype min()

{return (x

private:

numtype x,y;

};

int main()

{Compare cmp1(3,7);

cout<

cout<

Compare cmp2(45.78,93.6);

cout<

cout<

Compare cmp3('a','A');

cout<

cout<

return 0;

}

实验五运算符重载

一、实验目的

1、进一步了解运算符重载的概念和使用方法。

2、掌握几种常用的运算符重载的方法。

二、实验要求

1、定义一个复数类Complex,重载运算法“+”,使之能用于复数的加法运算。将运算符重载为普通函数(非成员、非友元)、成员函数、友元函数。根据要求修改通过函数来实现复数相加的示例,分别编写程序,求两个复数之和。

#include

using namespace std;

class Complex //定义Complex类

{public:

Complex(float x=0,float y=0){real=x;imag=y;} //构造函数

Complex complex_add(Complex &c2); //声明复数相加函数

void display() { cout<

private:

float real; //实部

float imag; //虚部

};

Complex Complex::complex_add(Complex &c2)

{ Complex c;

c.real = real +c2.real;

c.imag=imag+c2.imag;

return c;

}

int main()

{ Complex complex1(3.34f, 4.8f), complex2(12.8f, 5.2f);

Complex complex; //定义3个复数对象complex=https://www.doczj.com/doc/111281012.html,plex_add(complex2); // 进行两个复数的加运算

complex.display( );

return 0;

}

//16.14+10i

//普通函数(非成员、非友元)

#include

using namespace std;

class Complex

{public:

Complex(){real=0;imag=0;}

Complex(double r,double i){real=r;imag=i;}

double get_real();

double get_imag();

void display();

private:

double real;

double imag;

};

double Complex::get_real()

{return real;}

double Complex::get_imag()

{return imag;}

void Complex::display()

{cout<<"("<

Complex operator + (Complex &c1,Complex &c2)

{

return Complex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag()); }

int main()

{Complex c1(3,4),c2(5,-10),c3;

c3=c1+c2;

cout<<"c3=";

c3.display();

return 0;

}

//运算符重载为成员函数

#include

using namespace std;

class Complex

{public:

Complex(){real=0;imag=0;}

Complex(double r,double i){real=r;imag=i;}

Complex operator + (Complex &c2);

void display();

double real;

double imag;

};

Complex Complex::operator + (Complex &c2) {Complex c;

c.real=real+c2.real;

c.imag=imag+c2.imag;

return c;}

void Complex::display()

{cout<<"("<

int main()

{Complex c1(3,4),c2(5,-10),c3;

c3=c1+c2;

cout<<"c1=";c1.display();

cout<<"c2=";c2.display();

cout<<"c1+c2=";c3.display();

return 0;

}

//将运算符重载为友元函数

#include

using namespace std;

class Complex

{public:

Complex(){real=0;imag=0;}

Complex(double r){real=r;imag=0;}

Complex(double r,double i){real=r;imag=i;}

friend Complex operator+ (Complex &c1,Complex &c2);

void display();

private:

double real;

double imag;

};

Complex operator+ (Complex &c1,Complex &c2)

{return Complex(c1.real+c2.real, c1.imag+c2.imag);}

void Complex::display()

{cout<<"("<

int main()

{Complex c1(3,4),c2(5,-10),c3;

cout<<"c1="; c1.display();

cout<<"c2="; c2.display();

cout<<"c1+c2="; c3.display();

return 0;

}

实验六继承和派生

一、实验目的

1、了解继承在面向对象程序设计中的重要作用。

2、进一步理解继承与派生的概念。

3、掌握通过继承派生出一个新的类的方法。

4、了解虚基类的作用和用法。

二、实验要求

1、运行程序,分析构造函数与析构函数的调用顺序。

程序一:

#include

class A

{ public:

A(){cout<<"A:Constructor"<

~A(){cout<<"A:Destructor" <

};

class B:public A

{ public:

B(){cout<<"B:Constructor" <

~B(){cout<<"B:Destructor"<

};

void main()

{ B b;

}

//A:Constructor

B:Constructor

B:Destructor

A:Destructor

程序二:

#include

class A

{ int a;

public :

A(int aa=0) { a=aa; }

~A() { cout<<”Destructor A!”<

};

class B: public A

{ int b;

public:

B(int aa=0, int bb=0) : A(aa) { b=bb; }

~B() { cout<<”Destructor B!”<

};

void main()

{ B x(5),y(6,7);

}

//Destructor B!7

Destructor A!6

Destructor B!0

Destructor A!5

调用顺序:构造x.A a=5 构造x.B a=5 b=0 构造y.A // 不匹配,不调用A()构造y.B a=6 b=7 析构y.B B!7 析构y.A A!6 析构x.B B!0 析构x.A A!5

2、分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cader类。要求:

①在两个基类种豆包含姓名、年龄、性别、地址、电话等数据成员。

②在Teacher类中还包含数据成员title(职称),在Cader 类中还包含数据成员post(职务)。在Teacher_Cader类中还包含数据成员wages(工资)。

③在对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

④在类体中声明成员函数,在类外定义数据成员。

⑤在派生类Teacher_Cader的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再调用cout语句输出职务和工资。

#include

#include

using namespace std;

class Teacher

{public:

Teacher(string nam,int a,char s,string tit,string ad,string t);

void display();

protected:

string name;

int age;

char sex;

string title;

string addr;

string tel;

};

Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t):

name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){ }

void Teacher::display()

{cout<<"name:"<

cout<<"age"<

cout<<"sex:"<

cout<<"title:"<

cout<<"address:"<

cout<<"tel:"<

}

class Cadre

{public:

Cadre(string nam,int a,char s,string p,string ad,string t);

void display();

protected:

string name;

int age;

char sex;

string post;

string addr;

string tel;

};

Cadre::Cadre(string nam,int a,char s,string p,string ad,string t):

name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}

void Cadre::display()

{cout<<"name:"<

cout<<"age:"<

cout<<"sex:"<

cout<<"post:"<

cout<<"address:"<

cout<<"tel:"<

}

class Teacher_Cadre:public Teacher,public Cadre

{public:

Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w);

void show( );

private:

float wage;

};

Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w):

Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) {}

void Teacher_Cadre::show( )

{Teacher::display();

cout<<"post:"<

cout<<"wages:"<

}

int main( )

{Teacher_Cadre te_ca("Wang-li",50,'f',"prof.","president","135 Beijing Road,Shanghai","(021)61234567",1534.5);

te_ca.show( );

return 0;

}

实验七多态性和虚函数

一、实验目的

1、了解多态性的概念。

2、了解虚函数的作用及其使用方法。

3、了解静态关联和动态关联的概念和用法。

4、了解纯虚函数和抽象类的概念和用法。

二、实验要求

1、分析程序运行结果,掌握虚函数的使用。

程序一:

#include

class ONE

{ public:

virtual void f(){cout<<"l"<

};

class TWO:public ONE

{ public:

TWO(){cout<<"2"<

};

class THREE:public TWO

{ public:

virtual void f(){TWO::f(); cout<<"3";}

};

void main()

{ ONE aa, *p;

TWO bb;

THREE cc;

p = &cc;

p->f();

}

//2

2

1

3

程序二:

#include

class Base

{ public:

virtual void fn() { cout <<"In Base Class\n";}

};

class SubClass :public Base

{ public:

virtual void fn(){ cout <<"In Sub Class\n"; }

};

void main()

{ Base bc,*p;

SubClass sc;

p=&bc; p->fn();

p=≻ p->fn();

}

//In Base Class

In Sub Class

2、实现一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。实现类B从A继承,覆盖geta(),使其返回a的2倍。主函数中声明类B对象,调用类B中的geta()并将结果输出。

#include "iostream"

using namespace std;

class A

{ private:

int a;

int b;

public:

A(int m,int n) {a=m;b=n;}

int geta() {return a;}

int getb() {return b;}

};

class B :public A

{

public:

B(int m,int n):A(m,n){}

int geta() {return A::geta()*2;}

};

void main()

{ B b(2,2);

cout << b.geta() << endl;

return 0;

}

3、声明抽象基类Shape,由它派生出3个派生类:Cirle(圆形)、Rectangle(矩形)、Triangle (三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象是给定。

#include

using namespace std;

//定义抽象基类Shape

class Shape

{public:

virtual double area() const =0; //纯虚函数

};

//定义Circle类

class Circle:public Shape

{public:

Circle(double r):radius(r){} //结构函数

virtual double area() const {return 3.14159*radius*radius;}; //定义虚函数protected:

double radius; //半径

};

//定义Rectangle类

class Rectangle:public Shape

{public:

Rectangle(double w,double h):width(w),height(h){} //结构函数virtual double area() const {return width*height;} //定义虚函数protected:

double width,height; //宽与高

};

class Triangle:public Shape

{public:

Triangle(double w,double h):width(w),height(h){} //结构函数virtual double area() const {return 0.5*width*height;} //定义虚函数protected:

double width,height; //宽与高

};

//输出面积的函数

void printArea(const Shape &s)

{cout<

int main()

{

Circle circle(12.6); //建立Circle类对象circle

cout<<"area of circle =";

printArea(circle); //输出circle的面积

Rectangle rectangle(4.5,8.4); //建立Rectangle类对象rectangle

cout<<"area of rectangle =";

printArea(rectangle); //输出rectangle的面积

Triangle triangle(4.5,8.4); //建立Triangle类对象

cout<<"area of triangle =";

printArea(triangle); //输出triangle 的面积 return 0; }

实验八 输入输出流和C++工具

一、实验目的

1、深入理解C++的输入输出的含义与其实现方法,

2、掌握标准输入输出流的应用,包括格式输入输出。

3、学会使用C++的异常处理机制进行程序的调试。

二、实验要求

1、输入三角形的三边a,b,c ,计算三角形的面积的公式是

area=))()((s c s b s a s ---

s=

2

c

b a ++ 构成三角形的条件是:a+b>c, b+c>a, c+a>b

编写程序,输入a,b,c ,检查a,b,c 是否满足以上条件,如不满足,由cerr 输出有关出错信息。 #include #include using namespace std; int main()

{double a,b,c,s,area;

cout<<"please input a,b,c:"; cin>>a>>b>>c; if (a+b<=c)

cerr<<"a+b<=c,error!"<

cerr<<"b+c<=a,error!"<

cerr<<"c+a<=b,error!"<

{s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c)); cout<<"area="<

2、编程序,在显示屏上显示一个由字母B 组成的三角形。

#include

#include

using namespace std;

int main()

{

for(int n=1;n<8;n++)

cout<

return 0;

}

3、求一元二次方程式ax2+bx+c=0的实根,如果方程没有实根,则输出有关警告信息。#include

#include

using namespace std;

int main()

{float a,b,c,disc;

cout<<"please input a,b,c:";

cin>>a>>b>>c;

if (a==0)

cerr<<"a is equal to zero,error!"<

else

if ((disc=b*b-4*a*c)<0)

cerr<<"disc=b*b-4*a*c<0"<

else

{cout<<"x1="<<(-b+sqrt(disc))/(2*a)<

cout<<"x2="<<(-b-sqrt(disc))/(2*a)<

}

return 0;

}

面向对象程序设计教程 (马石安版)

第1章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性 选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题 (1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为: 程序=对象+消息 在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。

面向对象程序设计考前复习题及答案

简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

面向对象程序设计第12章在线测试

《面向对象程序设计》第12章在线测试剩余时间:59:56 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、面向对象的程序设计语言必须具备的关键要素是( ) A、抽象和封装 B、抽象和多态性 C、抽象、封装、继承和多态性 D、抽象、封装和继承性 2、封装性应具有的条件是() A、有一个清晰的边界 B、有确定的接口 C、受保护的内部实现 D、以上所有 3、OOD的作用是() A、提取需求 B、逻辑建模 C、求解域建模 D、分析用例 4、按钮与电梯按钮的关系是() A、部分与整体 B、一般与特殊 C、实例连接 D、消息连接 5、面向对象模型不包括() A、静态模型 B、对象模型 C、功能模型 D、动态模型 第二题、多项选择题(每题2分,5道题共10分) 1、部分与整体的关系有()方式 A、组合 B、联合 C、聚合 D、整合

2、对象之间存在的关系包括() A、部分与整体 B、一般与特殊 C、实例连接 D、消息连接 3、关于多态的说法正确的是() A、不同类型的对象接收相同的消息产生不同的行为 B、多态的成员函数需要定义为虚函数 C、在C++中通过基类指针调用虚函数实现多态 D、多态是指对象的多种表现形式 4、关于软件生命周期的说法正确的是() A、开发程序就是直接编码 B、在程序设计之前需要先进行软件设计 C、软件投入使用后软件生命周期结束 D、软件维护也是软件生命周期的一个阶段 5、下面关于面向对象的特征说法正确的是() A、每一个对象都具有唯一的标识 B、任何类的划分都是客观的,程序员必须遵守其规定 C、继承性是子类自动共享父类数据结构和方法的机制 D、多态是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的 结果 第三题、判断题(每题1分,5道题共5分) 1、面向对象开发技术分三个阶段:面向对象分析,面向对象设计和面向对象实现。 正确错误 2、面向对象的要素包括抽象、封装。

《卫生微生物学试题及答案》

卫生微生物(一) 一、名词解释 1.指示微生物:就是在常规卫生监测中,用以指示样品卫生状况及安全性的(非致病)微生物(或细菌)。 2.消毒:就是指杀灭或清除传播媒介上病原微生物,使其达到无害化的处理。 3.生物战剂:在战争中用来伤害人、畜与毁坏农作物、植被等的致病微生物及其毒素称为生物战剂。 4.土著微生物:就是指一个给定的生境中能生存、生长繁殖、代谢活跃的微生物,并能与来自她群落的微生物进行有效的竞争。它们已经适应了这个生境。 5.高效消毒剂:可杀灭所有种类微生物(包括细菌芽胞),达到消毒合格要求的消毒剂,如戊二醛、过氧乙酸等。 6.微生物气溶胶:以固体或液体微小颗粒分散于空气中的分散体系称为气溶胶。其中的气体就是分散介质。固体或液体微小颗粒如尘埃、飞沫、飞沫核及其中的微生物称为分散相,分散悬浮于分散介质(空气)中,形成所谓微生物气溶胶。 7.水分活性值:就是指食品在密闭容器内的水蒸气压与相同温度下的纯水蒸气压的比值。 二、填空 1.微生物与环境相互作用的基本规律有限制因子定律、耐受性定律、综合作用定律。P12 2.菌落总数包括细菌菌落总数、霉菌菌落总数与酵母菌菌落总数。P43 3.紫外线消毒的影响因素有照射剂量、照射距离、环境温度。P68 4.生物战剂的生物学特性就是繁殖能力、可传染性、防治困难、稳定性较差。P86 5.生物战剂所致传染病的特点就是流行过程异常、流行特征异常。P90 6.用于食品霉菌、酵母菌计数的培养基为马铃薯-葡萄糖琼脂、孟加拉红与高盐察氏培养基P289 7.按微生物要求,将药品分为规定灭菌药品与非规定灭菌药品两大类。P233 8.我国评价化妆品细菌安全性指标包括、、与特定菌的检验 三、简答题 1、简述水微生物的生态功能。P101 答:水微生物的生态学功能大体可概括为以下几个方面:1)能进行光能与化能自养;2)能降解有机物为无机物,这些无机物可作为生产者的原料;3)能同化可溶性有机物并把它们重新引入食物网;4)能进行无机元素的循环;5)细菌可以作为原生动物的食物;6)土著微生物能攻击外来微生物,使后者很难生存。 2.鲜蛋的抑菌物质及其抑菌作用P181 答:禽蛋含有丰富的营养物质,就是微生物生长繁殖的良好环境。但就是禽蛋又具有良好的防御微生物侵入的结构及各种天然抑菌条菌物质。蛋壳有保护作用,蛋壳表面有壳胶膜,可保护鲜蛋不受微生物侵入。蛋白内含有许多溶菌、杀菌等作用的因子,如溶菌酶,这就是一种碱性蛋白,作用于革兰阳性菌的胞壁肽聚糖,使之裂解而溶菌。此外,在蛋白中还有一种伴清蛋白,它能螯合重金属离子,特别就是铁、铜、锌等离子,结果使这些离子不能被细菌利用,就是一种重要的抑菌物质。 四、问答

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

学号:姓名: 第三章面向对象程序设计作业 一、判断题 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;}

微生物学考试试题及答案

《微生物学》课程期末考试试题解答及评分标准99b 一.判断改错题(判断下列每小题的正错,认为正确的在题后括号内打“√”; 错误的打“×”,并予以改正,每小题1.5分,共15分) 01.真菌典型营养体呈现丝状或管状,叫做菌丝(√) 02.专性寄生菌并不局限利用有生命力的有机物作碳源。(×) 改正:专性寄生菌只利用有生命力的有机物作碳源 03.根据微生物生长温度范围和最适温度,通常把微生物分成高温性、中温性、低温性三 大类。(√) 04.放线菌、细菌生长适宜的pH范围:最宜以中性偏酸;(×) 改正:放线菌,细菌生长适宜中性或中性偏碱。 05.厌气性微生物只能在较高的氧化还原电位(≥0.1伏)生长,常在0.3-0.4V生长。(×) 改正:厌气性微生物只能在较低的氧化还原电位(≤0.1伏)才能生长,常在 0.1V生长; 06.波长200-300nm紫外光都有杀菌效能,一般以250-280nm杀菌力最强。(√) 07.碱性染料有显著的抑菌作用。(√) 08.设计培养能分解纤维素菌的培养基,可以采用合成培养基。(×) 改正:能分解纤维素菌的培养基,培养基中需加有机营养物:纤维素。

09.液体培养基稀释培养测数法,取定量稀释菌液,经培养找出临界级数,可以间接测定 样品活菌数。(√) 10.共生固氮微生物,二种微生物必须紧密地生长在一起才能固定氨态氮,由固氮的共生 菌进行分子态氮的还原作用。(√) 一.多项选择题(在每小题的备选答案中选出二至五个答案,并将正确的答案填在题干的括号内,正确的答案未选全或有选错的,该小题无分,每小题2分,共20分) 11.放线菌是能进行光合作用的原核微生物,其细胞形态(A;B;C;) A.有细胞壁; B.由分支菌丝组成; C.无核仁; D.菌体无鞭毛; E.菌体中有芽孢。 12.支原体[Mycoplasma],介乎于细菌与立克次体之间的原核微生物,其特点是:(A;B;)A.有细胞壁;B.能人工培养; C.有核仁; D.有鞭毛; E.非细胞型微生物。 13.无机化合物的微生物转化中,其硝化作用包括:(C;D;E;) A.硝酸还原成亚硝酸; B.硝酸还原成NH 3;C.NH 3转化成亚硝酸;D.铵盐转化成亚硝酸; E.亚硝酸盐转化成硝酸盐。 14.单细胞微生物一次培养生长曲线中,其对数生长期的特点:(A;D; E;)

面向对象程序设计课后答案(完整版)

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

面向对象程序设计复习题及参考答案

网络教育课程考试复习题及参考答案 面向对象程序设计 一、填空题: 1.创建类的对象时,使用运算符___________给对象分配内存空间。 2.Java通过来区分重载函数。 3.在子类中使用保留字_ _可调用被子类覆盖的父类中的方法。 4.使用保留字可以从一个构造方法中调用同一个类的另一个构造方法。 5.抽象类用修饰符定义。 6.类的数据成员的访问权限修饰符一般为 7.访问权限修饰符按照访问权限的大小从大到小分别为、、 、。 8.定义类的构造方法不能有,其名称与名相同。 9.抽象方法是的特征是。 10.Java中的所有异常都是从继承来的。 11.对象引用中存储的内容是。 12.下列程序段执行后, String str1 = new String("Java"); String str2 = new String("Java"); if (str1.equals(str2)) { System.out.println("They are equal"); } else { System.out.println("They are not equal"); } 输出结果为:。 13.下面循环执行后的sun值为 int count =0, sum = 0; while ( count <10 ) { sum += count; count ++; } 14.Java语言中关键字_ _表示双精度类型。 15.保留字_ _用于导入包中的类到程序中,供程序中使用。 16.Java语言中继承是用保留字表示。 17.面向对象程序设计中,类是指。 18.对象包含和。 19.若有类定义: class B extends A{ … } 则类B是类A的_ 。 20.Java语言中, 通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_ 块来捕 获和处理异常。 21.多态是指。 22.声明常量时使用修饰符。 23.Java中异常抛出使用保留字。 24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名 来访问和调用。

微生物学试卷4及答案

微生物学试卷四 一.选择题1、在下列两本古籍中记载了我国古代劳动人民创造的制曲工艺: A.梦溪笔谈和天工开物; B.天工开物和齐民要术; C.齐民要术和水经注; D.梦溪笔谈和水经注。 2、至今人类已知道的微生物种数达 万种;万种;万种;万种。答:() 3、在人体肠道中数量最多的微生物是: A.大肠杆菌; B.拟杆菌; C.双歧杆菌; D.粪链球菌。答:() 4、在微生物5大共性中,最基本的一个共性是: A.体积小,面积大, B.吸收多,转化快; C.生长旺,繁殖快; D.适应强,易变异。 5、量度细菌个体大小最常用的方法是下面的哪一种 A.采用显微镜测微尺; B.通过摄影法; C.通过照相制成图片,再按放大倍数测算; D.测定分子量大小。 6、蓝细菌的“色素天线”是指: A.藻青素和藻红素; B.-胡萝卜素; C.叶绿素a; D.氧化胡萝卜素。答:() 7、出芽繁殖的酵母菌细胞,当子细胞离开母细胞时,在母细胞上留下一个 A.蒂痕; B.微体; C.芽痕; D.膜边体。答:() 8、霉菌菌丝成熟区细胞壁内层、中层和外层的化学组分分别是: A.几丁质层、蛋白质层、葡聚糖蛋白质层; B.几丁质层、蛋白质层、纤维素层; C.纤维素层、蛋白质层、葡聚糖层; D.几丁质层、葡聚糖层、葡聚糖蛋白质层。 答:() 9、在霉菌菌丝顶端区,细胞壁内层和外层的成分分别是: A.几丁质层、蛋白质层; B.几丁质层、葡聚糖层; C.蛋白质层、葡聚糖层; D.蛋白质层、几丁质层。 10、一步生长曲线主要可分: A.隐晦期、裂解期、平稳期; B.潜伏期、裂解期、平稳期; C.延迟期、裂解期、平稳期; D.胞内积累期、裂解期、平稳期。 11、生活在低营养环境下的微生物欲获得无机离子、有机离子和一些糖类等浓缩形式的营养物,通常采用的运输方式是: A.主动运输; B.基团移位; C.单纯扩散; D.促进扩散。 12、在下列四类微生物中,不利用卡尔文循环固定二氧化碳的一类细菌是: A.蓝细菌; B.光合细菌; C.化能自养菌; D.化能异养菌。 13、青霉素可抑制细菌细胞壁肽聚糖合成中的: A.转氨酶; B.转肽酶; C.转糖基酶;-丙氨酸消旋酶。 14、酶活性的调节属于酶分子水平上的代谢调节,它包括酶活性的 A.激活; B.抑制; C.阻遏; D.激活和抑制。 二填空题(将正确答案填写在横线上方。)(本大题共12 小题,每小题2分,总计24 分) 1、在微生物的连续生长过程中向培养基中不断流加____________液或_________液,以稳定培养基的_______值,称为pH的_________调节。 2、______________组合培养基可用于培养细菌;________________组合培养基可用于培养放线菌。

面向对象程序设计笔记

undeclared identifier “未声明的标识符” (1) 十进制整数:在一个整型常量后面加一个字母 l 或 L,则认为是 long int 型常量? (2) 八进制整数?在常数的开头加一个数字 0,就表示这是以八进制数形 式表示的常数? (3)十六进制整数?在常数的开头加一个数字0和一个英文字母X(或x), 就表示这是以十六进制数形式表示的常数? 2. 浮点数的表示方法 如果在实数的数字之后加字母 F 或f,表示此数为单精度浮点数,如1234F,-43f,占 4 个字节?如果加字母 L 或 l,表示此数为长双精度数(long double), 在Visual C++ 6.0 中占 8 个字节. (2) 指数形式(即浮点形式):用字母 e 表示其后的数是以 10 为底的幂,如 e12 表示 1012? 1.普通的字符常量:用单撇号括起来的一个字符就是字符型常量如′a′,′ #′,′%′,′D′都是合法的字符常量,在内存中占一个字节?“cout<<′\n′; ”将输出一个换行,其作用与“cout<

面向对象程序设计完整版

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的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

微生物学试题库及答案

微生物学练习题 0绪论 五,问答题 1.微生物根据大小,结构,化学组成分为哪三大类微生物各大类微生物有何特点包括哪些种类的微生物 1细菌的形态与结构 一,填空题 1.测量细菌大小用以表示的单位是___________. 2.细菌按其外形分为_________,___________,___________三种类型. 3.细菌的基本结构有___________,____________,____________三种. 4.某些细菌具有的特殊结构是_______,_______,________,________四种. 5.细菌细胞壁最基本的化学组成是____________. 6.革兰阳性菌细胞壁的化学组成除了有肽聚糖外,还有____________. 7.革兰阴性菌细胞壁的化学组成主要有___________和___________. 8.菌毛分为____________和___________两种. 9.在消毒灭菌时应以杀死___________作为判断灭菌效果的指标. 10.细菌的形态鉴别染色法最常用的是___________,其次是_________. 三,选择题 【A型题】 1.保护菌体,维持细菌的固有形态的结构是 A.细胞壁 B.细胞膜 C.细胞质 D.细胞浆 E.包膜 2.革兰阳性菌细胞壁中的磷壁酸的作用是 A.抗吞噬作用 B.溶血作用 C.毒素作用 D.侵袭酶作用 E.粘附作用 3.细菌核糖体的分子沉降系数为 A.30S B.40S C.60S D.70S E.80S 4.普通光学显微镜用油镜不能观察到的结构为 A.菌毛 B.荚膜 C.鞭毛 D.芽胞 E.包涵体 5.下列哪类微生物属于非细胞型微生物 A.霉菌 B.腮腺炎病毒 C.放线菌 D.支原体 E.立克次体 6.下列中不是细菌的基本结构的是 A.细胞壁 B.细胞膜 C.细胞质 D.核质 E.荚膜 7.革兰阴性菌细胞壁中与致病性密切相关的重要成分是 A.特异性多糖 B.脂蛋白 C.肽聚糖 D.脂多糖 E. 微孔蛋白 8.普通菌毛主要与细菌的 A.运动有关 B.致病性有关

面向对象程序设计期末复习分析

一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( C )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. (D )是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. (C ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作 图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.(D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对 象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.(D )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示 系统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( B ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的(B )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 20. UML的动态建模表示包含(C )种图。 A. 9 B. 5 C. 4 D. 2 二、填空题( 每空1 分,共20 分) 1. 面向对象开发方法一改过去传统的以_功能分析,面向过程_为基础的_对象_的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为

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

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (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 )放在一起,作为一个相互依存、不可分割的整体来处理。

《面向对象程序设计C 》期末试卷及标准答案(A)

一、选择题(每小题2分,共40分) 1、C++是()。 A. 面向对象的程序设计语言 B. 面向过程的程序设计语言 C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言 D. 非结构化的程序设计语言 2、面向对象程序设计思想的主要特征中不包括()。 A. 封装性 B. 多态性 C. 继承性 D. 功能分解,逐步求精 3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入: Microsoft Visual Studio 6.0! 所得的结果是str=()。 A. Microsoft Visual Studio 6.0! B. Microsoft C. Microsoft Visual D. Microsoft Visual Studio 6.0 4、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A. testDefaulParam(5); B. testDefaulParam(5,8); C. testDefaulParam(5,'#'); D. testDefaulParam(0,0,'*'); 5、下列语句中,将函数int sum(int x, int y)正确重载的是()。 A. float sum(int x, int y); B. int sum(int a, int b); C. float sum(float x, float y); D. double sum(int y, int x); 6、下列表示引用的方法中,()是正确的。 已知:int a=1000; A. int &x=a; B. char &y; C. int &z=1000; D. float &t=&a; 7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()。 A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用 8、下列有关C++类的说法中,不正确的是()。 A. 类是一种用户自定义的数据类型 B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员 C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的 D. 在类中,如果不做特别说明,所有成员的访问权限均为公用的 9、已知X类,则当程序执行到语句:X array[3];时,调用了()次构造函数。 A. 0 B. 1 C. 2 D. 3 10、下面说法中,正确的是() A. 一个类只能定义一个构造函数,但可以定义多个析构函数 B. 一个类只能定义一个析构函数,但可以定义多个构造函数 C. 构造函数与析构函数同名,只要名字前加了一个求反符号(~) D. 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以 11、已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。

相关主题
文本预览
相关文档 最新文档