第1章  面向对象的方法学
1.什么是面向对象方法学
解:面向对象方法学就是尽量模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间(即问题域)与实现解法的解空间(即求解域)在结构上尽可能一致。
2.什么是对象它与传统的数据有何关系有什么不同
解:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。它与传统数据有本质的不同,传统数据是被动地等待对它进行处理,对象是进行处理的主体。
3.什么是封装性和继承性
解:封装是面向对象方法的一个重要特点,即将对象的属性和行为封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
4.什么是多态性
解:多态性是面向对象方法的重要特征。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
5.试写出学生管理系统中所涉及的类(属性和方法)。学生管理系统中学生信息有:姓名、学号、年龄、成绩;学生管理系统完成学生信息输入、学生信息输出、插入学生信息、删除学生信息、查学生信息。
解:
class Student   
{
private:
    char cName[12];    ET Framework之上的高级程序设计语言。C#集C语言的简洁强大、C++的面向对象、VB的图形化设计方法、Java的编译与执行机制等优点于一身。C#是创新
性的新式编程语言,它巧妙地结合了最常用的行业语言和研究语言中的功能,并引入了多种潜在的新功能,提高了开发人员在语言构造方面的效率,将快速的应用程序开发与对底层平台各种功能的访问紧密结合在一起,使得程序员能够在.NET平台上快速开发各种应用程序。
7.C++支持多态性主要表现在哪些方面
解:C++支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过重载来实现的,运行时的多态性是通过虚函数来实现的。
思考题
1.设计一个栈类,实现的操作有初始化栈、入栈、出栈、判栈空。
解:
class Stack   
{
private:
实例化类和实例化对象        int top;
        int s[100];
public:
    void Ini_Stack();          3    o <<"  "<<data[i].name <<"  "<<data[i].score <<endl;
}
2.定义一个图书类,图书信息有图书名称、作者、出版社、价格。要求利用栈实现图书的入库、出库和显示等功能。
const int MAXSIZE=5;  ame<<"  "<<data[i].author<<"  "<<data[i].publish<<"  "<<data[i].price<<endl;
                   
}
3.有Distance类和Point类,将Distance类定义为Point类的友元类来实现计算两点之间距离。
第5章  静态与命名控制
1.下列静态数据成员的特性中,错误的是(  D  )。
    A.说明静态数据成员时,前边要加关键字static 
    B.静态数据成员在类外进行初始化
    C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
    D.静态数据成员不是所有对象所共有的
2.下列关于静态数据成员的叙述,错误的是(  A  )。
    A.静态数据成员在对象调用析构函数后,从内存中撤销
    B.即使没有实例化类,静态数据成员也可以通过类名进行访问
    C.类的静态数据成员是该类所有对象所共享
    D.类的静态数据成员需要初始化
3.下列关于静态成员的叙述中,错误的是(  B  )。
    A.类的外部可以直接调用类的静态数据成员和静态成员函数
    B.与一般成员一样,只有通过对象才能访问类的静态成员
    C.类的静态数据成员不能在构造函数中初始化
    D.类的一般成员函数可以调用类的静态成员
4.声明类的成员为静态成员,必须在其前面加上关键字(  B  )。
    A.const        B.static        C.public        D.virtual
5.静态成员为该类的所有(  B  )共享。
    A.成员        B.对象        C.this指针    D.友元
6.程序运行结果:
1
2
3
7.程序运行结果:CStatic::val=10
思考题
1.利用静态数据成员的概念,编写一个类,统计目前存在多少个该类的对象。
class A
{
private:
    static int n;
public:
    A()
    {
        n++;
    }
    void Print()
    {
        cout<<n<<endl;
    }
};
int A::n=0;
int main()
{
    A a1;
    ();
    A a[5],a2;
    ();
    return 0;   
}
2.利用静态数据成员的概念,编写一个学生类,学生信息包括姓名、学号、成绩;统计学生的总人数及总成绩,并输出。
#include "iostream"
#include"iomanip"
using namespace std;
class Student
{
private:
    char *name;
    int stu_no;
    float score;
    static int total_num;
    static float total_score;
public:
    Student(char *na,int no,float sco);
    void Print();
};
int Student::total_num =0;
float Student::total_score =0;
int main()
{
    Student s1("张明",1,90);
    ();
    Student s2("王兰",2,95);
    ();
    Student s3("于敏",3,87);   
    ();
    return 0;   
}
Student::Student(char *na,int no,float sco)
{
    name=new char[strlen(na)+1];
    strcpy(name,na);
    stu_no=no;
    score=sco;
    total_num++;
    total_score=total_score+score;
}
void Student::Print()
{
    cout<<"第"<<total_num<<"个学生:"<<name<<setw(4)<<stu_no<<setw(4)<<score
    <<endl;
    cout<<"总人数是:"<<total_num<<endl;
    cout<<"总分数是:"<<total_score<<endl;
}
3.利用静态的概念,编写一个小猫类,统计并输出每个小猫的重量、小猫的总数量及总重量。
class small_cat    绑定。在运行时确定函数调用称为  动态  绑定。
2.如果A是从B继承而来,则A叫  子  类,B叫  父  类。
3.在多重派生过程中,如果想使公共的基类在派生时只有一个副本,则可以将这个基类声明为  虚基类     
二、选择题
1.在类的继承与派生过程中,关于派生类不正确的说法是( B  )。
    A.派生类可以继承基类的所有特性        B.派生类只能继承基类的部分特性
    C.派生类可以重新定义已有的成员        D.派生类可以改变现有成员的属性
2.派生类对象对它的基类成员,(A )是可以访问的。
    A.公有继承的公有成员                    B.公有继承的私有成员
    C.公有继承的保护成员                    D.私有继承的共有成员
3.下列叙述中不正确的是( C )。
    A.含纯虚函数的类称为抽象类            B.不能直接由抽象类建立对象
    C.抽象类不能作为派生类的基类            D.纯虚函数没有其函数的实现部分
4.当定义派生类的对象时,调用构造函数的正确顺序是(A )。
    A.先调用基类的构造函数,再调用派生类的构造函数
    B.先调用派生类的构造函数,再调用基类的构造函数
    C.调用基类的构造函数和派生类的构造函数的顺序无法确定

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。