1. 程式人生 > >第11周C++上機報告(點與直線,繼承與派生)

第11周C++上機報告(點與直線,繼承與派生)

/*
* 程式的版權和版本宣告部分
* Copyright (c)2012, 煙臺大學計算機學院學生
* All rightsreserved.
* 檔名稱: object.cpp
* 作者:王昕彤
* 完成日期: 2013年 5 月 20 日
* 版本號: v1.0
* 輸入描述:定義點類,並以點類為基類,派生出直線類,從基類中繼承的點的資訊表示直線的中點。
* 問題描述:
* 程式輸出:
*/
#include<iostream>
#include<Cmath>
using namespace std;
class Point //定義座標點類
{
public:
    Point():x(0),y(0) {};
    Point(double x0, double y0):x(x0), y(y0) {};
    void PrintPoint(); //輸出點的資訊
    double x,y;   //資料成員,表示點的橫座標和縱座標
};
void Point::PrintPoint()
{
    cout<<"Point:("<<x<<","<<y<<")";    //輸出點
}

class Line: public Point   //利用座標點類定義直線類, 其基類的資料成員表示直線的中點
{
public:
    Line(Point pt1, Point pt2);  //建構函式,初始化直線的兩個端點及由基類資料成員描述的中點
    double Length();    //計算並返回直線的長度
    void PrintLine();//輸出直線的兩個端點和直線長度
private:
    class Point pts,pte;   //直線的兩個端點
};
//下面定義Line類的成員函式
Line::Line(Point pt1, Point pt2):Point((pt1.x+pt2.x)/2,(pt1.y+pt2.y)/2)
{
    pts=pt1;
    pte=pt2;
}

double Line::Length()
{
    return sqrt((pts.x-pte.x)*(pts.x-pte.x)+(pts.y-pte.y)*(pts.y-pte.y));

}
void Line::PrintLine()
{
    cout<<"線的兩端點為:("<<pts.x<<","<<pts.y<<") ("<<pte.x<<","<<pte.y<<")"<<endl;
    cout<<"線的長度為:"<<Length();
}

int main()
{
    Point pt1(-2,5),pt2(7,9);
    Line l(pt1,pt2);
    l.PrintLine();//輸出直線l的資訊(請補全程式碼)
    cout<<"\n The middle point of Line: ";
    l.PrintPoint();//輸出直線l中點的資訊(請補全程式碼)
    return 0;
}


執行結果: