C++|継承と組合せ|A 2実験五

3103 ワード

  • クラスの組合せ
  • プログラムを作成して学生の基本情報を出力する.
    要件:
    (1)専門クラスSpecialtyを定義し、2つのプライベートデータメンバー:専門名snameと単位scoreを含むようにします.クラスのパラメータ付きコンストラクション関数と共通メンバー関数(専門名と単位を表示する関数showSp)を定義し、実装します.
    (2)名前name、年齢age、専門spの3つのプライベートデータメンバーを含む学生クラスStudentを定義し、クラスの構築関数および共通メンバー関数(名前、年齢、専門の関数showStuを表示する)を定義し、実現する. 
    (3)main関数で上記設計をテストする.
    #include 
    #include//    + = += >   ,  
    using namespace std;
    class Student;
    class Specialty
    {
    public:
    	Specialty(string sn="   ", int sc=1);//          ,      
    	
    	void showSp() { cout << "    : " << sname << "   " << "  :" << score<> age;
    		cin >> name;
    	}
    
    private:
    	int age;
    	string name;
    	Specialty spe1;//※              ,     
    
    
    };
    Specialty::Specialty(string sn, int sc)
    {
    	cin >> sn;
    	sname = sn;
    	cin >> sc;
    	score = sc;
    }
    
    
    int main()
    {
    	Student t1;
    	t1.showStu();
    	system("pause");
    	return 0;
    }
    

    ps:
    1.speciallyクラスにパラメータが必要でない場合、コードはより簡単にできます.
    2.組合せ:あるクラスのオブジェクトが別のクラスのデータメンバーになる
    3.一般的な低レベルエラーに注意:
    メンバー関数の忘れ();
    構造関数はpublic宣言の下に書かれていない.
    ================================================================================================
    2.クラスの継承
    作成プログラムは、球、円柱、円錐の表面積と体積を計算します.要件:(1)ベースクラスの円を定義し、少なくとも1つのデータメンバーを含む:半径;(2)ベースクラスの派生クラスを定義する:球、円柱、円錐、いずれも表面積と体積を求めるメンバー関数と出力関数を含む.(3)主関数を定義し、球、円柱、円錐の和体積を求める.
    #include 
    using namespace std;
    
    class Circle
    {
    public:
    	Circle(double r = 0) {};//  {}     ,  
    protected:
    	double r;
    	const double PI = 3.14;
    };
    
    class Qiu:public Circle
    {	
    public:
    	
    	Qiu()  
    	{
    		cout << "      "<> r;
    	}
    	double volume() { return(4.0/3)*PI*pow(r, 3); }
    	double area() { return (4.0) * PI*r*r; }
    	void show() { cout << "      :" << volume() << "   " << "    :" << area() << endl; }
    	
    
    };
    
    class Zui :public Circle
    {
    public:
    	Zui()
    	{
    		cout << "             "<> r;
    		cin >> l;//  
    	}
    	double volume() { return (PI*r*r*l)/3 ; }
    	double area() { return PI*r*l+PI*r*r; }
    	void show() { cout << "       :" << volume() << "   " << "    :" << area() << endl; }
    
    private:
    	double l;
    
    };
    
    class Zhu : public Circle
    {
    public:
    	Zhu()
    	{
    		cout << "            "<> r;
    		cin >> h;
    	}
    	double volume() { return h*PI*pow(r, 2); }
    	double area()	{ return 2*PI*r*(h+ r); }
    	void show() { cout << "       :" << volume() << "   " << "    :" << area() << endl; }
    
    private:
    	double h;//  
    };
    
    int main()
    {
    	Qiu qiu1;
    	Zui zui1;
    	Zhu zhu1;
    	qiu1.show();
    	zui1.show();
    	zhu1.show();
    	
    	system("pause");
    	return 0;
    }