不积跬步无以至千里(四)

来源:互联网 发布:养老金亏空 知乎 编辑:程序博客网 时间:2024/04/29 00:19

1.请你简述面向对象程序设计的基本思想
     答:用面向对象程序设计语言中的对象和类直接模拟现实世界中的对象,将问题空间直接映射到软件

空间。从而设计出尽可能直接,自然地表示问题求解方法的软件。面向对象方法按照对象来划分系统,以对

象为模块,分而治之、
2我们应该如何使用类库?
如要利用类库,程序员必须知道类库的组织情况。  我们可以通过联机帮助或类库参考手册(类库工作手册

)了解
      答:1.软件开发系统提供的类库层次结构。
   2.可能需要用到的类及其父类的属性和方法。
   3.通过联机文档提供的列子学习有关类的使用方法
3.什么是模板?在C++语言中有几种模板?模板有什么用处?
       答:模板是一种使用类型作为参数产生一系列函数或者类的机制。或者说,模板是模式,她使我们

在不关心数据类型的情况下能够实现各种算法。在C++语言中有两种模板:函数模板和类模板。函数模板可

以用来创建适应多种数据类型的通用函数;类模板可以用来创建适应多种数据类型的通用类
4.面向对象程序设计中的分装性有什么好处?
      答:封装性降低了程序设计的复杂度:封装性实现接口和实现的分离,从而将操作对象的内部复杂性

与应用程序的其他部分隔离开来,这样能够降低程序设计的复杂性。
          提高了数据的安全性和代码的可靠性
           封装改善了软件的可维护性
           封装性改善了程序木块可重用性

 

5.继承机制在面向对象程序方法中的优点?
    答:继承性很好实现了代码的重用
        能改进软件系统的可维护性
        继承性使已有的程序库具有清晰的层次结构关系

 

5.多态性及其优点?
     答:当不同的对象接受到相同的消息产生不同的动作,这种称为多态性。
         降低了程序设计时的复杂性
  多态性支持程序猿的知识重用
  增强了软件的灵活性

6.面向对象程序设计中的继承性有何益处?在C++语言中如何实现继承性?
     答:面向对象程序设计中的继承性的主要益处是很好地实现了软件重用,有利于降低软件的开发和维

护成本。并且有利于软件扩充,改进软件的可维护性。在C++语言中主要通过派生类来实现继承性。也可以

在新类中创建已有类的对象作为成员来实现。


将绝对值函数abs( )重载三次。请在主函数中演示这三个函数,求出并输出整型数168,长整型数+1000000

,双精度数 -2.781828的绝对值。
[参考答案]#include"iostream"
using std::cout;
using std::endl;
 
int abs(int a)
{
if(a<0) a=-a;
       return(a);
}
long abs(long a)
{
       if(a<0) a=-a;
       return(a);
}
double abs(double a)
{
       if(a<0) a=-a;
       return(a);
}
int main()
{
       int x1=168;
       long x2=+1000000;
       double x3=-2.781828;
       cout<<"x1="<<abs(x1)<<endl;
       cout<<"x2="<<abs(x2)<<endl;
       cout<<"x3="<<abs(x3)<<endl;
    return 0;
}
下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同

形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的

求面积函数。请在main( )函数中创建一个三角形对象(高=3,底=4)和一个矩形对象(长=4,宽=5),并

使用total( )求它们的面积之和。(10分)
[参考答案]class shape{
   public:
   virtual float area( )=0;
   };
  float total(shape *s[ ],int n)
   {
   float sum=0.0;
   for(int i=0;i<n;i++)
   sum+=s[i]->area( );
   return sum;
  }
 class Triangle:public Shape
 {
 public:
  Triangle(double h,double w){H=h;W=w;}
  double Area() const{return H*W*0.5;}
private:
  double H,W;
 };
class Rectangle:public Shape
 {
 public:
  Rectangle(double h,double w){H=h;W=w;}
  double Area()const{return H*W;}
 private:
  double H,W;
 };
}
int main( )
{
Triangle tri(3,4); Rectangle rect(4,5);
Shape *s[2];
s[0]=&tri;  s[1]=&rect;
cout<<"Sum of area is: "<<total(s,2)<<endl;
return 0;
}

创建一个函数模板max( ),该模板返回两个参数中的最大值,例如:max(3,4)
返回4,  max('c','a')返回'c',并在主函数中演示这个模板。
[参考答案]#include <iostream.h>
template <class T>
T max(T x, T y)
{
       return (x>y) ? x:y;
}
int main( )
{
       cout<<max(3,4)<<endl;
       cout<<max('c','a')<<endl;
      return 0;
}
从键盘输入若干个同学的姓名(使用拼音表示),按字典顺序排序后输出。
要求利用C++标准模板库STL或者你熟悉的其他类库编程实现。
[参考答案]#include <iostream>
#include <list>
#include <string>
#include <cstdlib>
 
using namespace std;
 
int main( )
{
       list <string> lst;
       int i;
       char classmates_name[20];
     
       for( i = 0; i < 6; i++)
       {
              cout<<"Please input a classmate's name:"<<endl;
              cin.getline(classmates_name,'\n');
              lst.push_back(classmates_name);
       }
            
       cout << "Original contents: ";
     
       list <string>::iterator p = lst.begin();
     
       while( p != lst.end()){
              cout << *p<<"; ";
              p++;
       }
cout << endl << endl;
lst.sort();
       cout << "Sorted contents: "<<endl;
       p = lst.begin();
       while( p != lst.end()){
              cout << *p<<endl;
              p++;
       }
       cout << endl;
     
       return 0;
}
设计一个简单的电话本软件。当用户从键盘输入联系人的姓名,能够查找到对应的电话号码。要求利用C++

标准模板库或者你熟悉的其他类库编程实现。
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main( )
{
       map<string,int>m;
       int i;
       m.insert(pair<string,int>("WangGang",88168898));
    m.insert(pair<string,int>("LiNa",88168558));
    m.insert(pair<string,int>("LiTing",88163798));
m.insert(pair<string,int>("FengGang",88144368));
string s;
       cout<<"Enter the name:"<<endl;
       cin>>s;
       map<string,int>::iterator p;
       p=m.find(s);
       if( p != m.end())
              cout <<s<< "'s phone number is: " << p->second << endl;
       else
              cout <<s<< "'s phone number is not in the phonebook.\n";
       return 0;
}

0 0
原创粉丝点击