1. 程式人生 > >第十一週上機實踐專案 專案1-點-圓-圓柱類的設計(3)

第十一週上機實踐專案 專案1-點-圓-圓柱類的設計(3)

問題及程式碼:

【專案 - 點-圓-圓柱類族的設計】 
按以下的提示,由基類的設計和測試開始,逐漸地完成各個類的設計,求出圓格柱體的表面積、體積並輸出並且完成要求的計算任務: 
(1)先建立一個Point(點)類,包含資料成員x,y(座標點),實現需要的成員函式,並設計main函式完成測試; 
(2)以Point為基類,派生出一個Circle(圓)類,增加資料成員r(半徑),以及求面積的成員函式area,實現其他需要的成員函式,設計main函式完成測試; 
(3)再以Circle類為直接基類,派生出一個Cylinder(圓柱體)類,再增加資料成員h(高),,以及求圓柱表面積的成員函式area和求圓柱體積的成員函式volume,實現需要的成員函式,並設計main函式完成測試。 


要求編寫程式,設計出各類中“需要的成員函式”,包括建構函式、解構函式、修改資料成員和獲取資料成員的公共介面、用於輸出的過載運算子“<<”函式等。 

/*
 Copyright(c)2016,煙臺大學計算機與控制工程學院
  All rights reserced
 檔名稱:test.cpp
 作    者:蔡汝佳
 完成日期:2016年5月18日
 版 本 號:v1.0
 問題描述:
 輸入描述:
 程式輸出:
*/
#include <iostream>
using namespace std;
class Point
{
public:
    Point(double xx=0,double yy=0)
    {
        x=xx;
        y=yy;
    }
    void setpoint(double ,double);
    double getx(){return x;}
    double gety(){return y;}
    void Point_show();
protected:
    double x,y;
};
void Point::setpoint(double xx,double yy)
{
    x=xx;
    y=yy;
}
void Point::Point_show()
{
    cout<<"x="<<x<<"   y="<<y<<endl;
}
class Circle:public Point
{
public:
    Circle(double xx=0,double yy=0,double rr=0);
    void setRaidus(double rr);
    double getradius(){return radius;}
    double area() const;
    void show();
protected:
    double radius;
};
Circle::Circle(double xx,double yy,double rr):Point(xx,yy),radius(rr){}
void Circle::setRaidus(double rr)
{
        radius=rr;
}
double Circle::area() const
{
    return 3.14159*radius*radius;
}
void Circle::show()
{
    cout<<"圓心為:("<<x<<","<<y<<")  radius="<<radius<<"  area="<<area()<<endl;
}
class Cylinder :public Circle
{
public:
    Cylinder(double xx=0,double yy=0,double rr=0,double hh=0);
    void seth(double hh);
    double geth(){return h;}
    double area() const;
    double volume();
    void show();
protected:
    double h;
};
Cylinder::Cylinder(double xx,double yy,double rr,double hh):Circle(xx,yy,rr),h(hh){}
void Cylinder::seth(double hh)
{
    h=hh;
}
double Cylinder::area()const
{
    return 2*3.14159*radius*radius+2*3.14159*radius*h;
}
double Cylinder::volume()
{
    return 3.14159*radius*radius*h;
}
void Cylinder::show()
{
    cout<<"Center=["<<x<<","<<y<<"], r="<<radius<<", h="<<h
        <<"\narea="<<area( )<<", volume="<<volume( )<<endl;
}
int main()
{
    Cylinder cy1(3.5,6.4,5.2,10);
    cout<<"\noriginal cylinder:\nx=";
    cy1.show();
    cy1.seth(15);
    cy1.setRaidus(7.5);
    cy1.setpoint(5,5);
    cout<<"\nnew cylinder:\n";
    cy1.show();
    return 0;
}


執行結果:


知識點總結:

學習心得:

跟著老師的節奏一點點的做下來,發現也挺有收穫的,自己也慢慢了解了繼承的函式的實現。

相關推薦

上機實踐專案 專案4-教師兼職幹部類

問題及程式碼: 【專案 - 教師兼幹部類】分別定義Teacher(教師)類和Cadre(幹部)類,採用多重繼承方式由這兩個類派生出新類Teacher_Cadre(教師兼幹部)。要求: (1)在兩個基類中都包含姓名、年齡、性別、地址、電話等資料成員。 (2)在Teacher類

上機實踐專案——正三角形

01./* 02.*程式的版權和版本宣告部分: 03.*Copyright(c)2013,煙臺大學計算機學院學生 04.*All ri

上機實踐專案——派生直線

/* *程式的版權和版本宣告部分: *Copyright(c)2013,煙臺大學計算機學院學生 *All rights reserved. *檔名稱:點類派生直線類 *作者:劉中林 *完成日期:20

上機實踐專案-專案4-教師兼幹部類

/*copyright(c)2016.煙臺大學計算機學院 * All rights reserved, * 檔名稱:text.Cpp * 作者:劉濤 * 完成日期:2016年5月9日 * 版本號:vc++6.0 * 問題描述:分別定義Teacher(教師)類和C

上機實踐專案 專案1---圓柱設計3

問題及程式碼: 【專案 - 點-圓-圓柱類族的設計】 按以下的提示,由基類的設計和測試開始,逐漸地完成各個類的設計,求出圓格柱體的表面積、體積並輸出並且完成要求的計算任務: (1)先建立一個Point(點)類,包含資料成員x,y(座標點),實現需要的成員函式,並設計main

上機實踐專案4——族的設計3

(3)再以Circle類為直接基類,派生出一個Cylinder(圓柱體)類,再增加資料成員h(高),,以及求圓柱表面積的成員函式area和求圓柱體積的成員函式volume,實現需要的成員函式,並設計ma

上機實踐專案——職員有薪水了拓展

/* *程式的版權和版本宣告部分: *Copyright(c)2013,煙臺大學計算機學院學生 *All rights reserved. *檔名稱:職員有薪水了 *作者:劉中林 *完成日期:2014年5月11日 *版本號:v0.1 *對任務及求解方法的描述部分: *輸入

上機實踐專案——儲存班長資訊的學生

/* *程式的版權和版本宣告部分: *Copyright(c)2013,煙臺大學計算機學院學生 *All rights reserved. *檔名稱:儲存班長資訊的學生類 *作者:劉中林 *完成日期

上機實踐專案——專案3-警察和廚師-2

/* *Copyright (c)2016,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:main.cpp *作 者:郭永恆 *完成日期:2016

上機實踐專案4——族的設計2

(2)以Point為基類,派生出一個Circle(圓)類,增加資料成員r(半徑),以及求面積的成員函式area,實現其他需要的成員函式,設計main函式完成測試; 程式碼 #include<i

上機實踐專案——求兩個數的最大公約數

01./* 02.*程式的版權和版本宣告部分: 03.*Copyright(c)2013,煙臺大學計算機學院學生 04.*All

上機實踐專案2——職員有薪水了2

(2)字串除了用C++擴充的string型別外,按C語言的傳統,還可以用char 表示。請將類宣告中的string全部改為char 後,重新寫一遍程式(此時的區別是,類中有指標成員,構造和解構函式需要考

上機專案派生直線

/* *程式的版權和版本宣告部分: *Copyright(c)2013,煙臺大學計算機學院學生 . *All rights reserved. *作者:李家豪 *完成日期:2014年5月13點. *版本號:v0.1。 *問題描述:字串除了用C++擴充的string型別外,按

上機專案4派生直線

/* *Copyright (c) 2015, 煙臺大學計算機學院 *All rights reserved. *檔名稱:text.cpp *作者:陳棟樑 *完成日期:2015年 5月 20日 *版本號:v1.0 * */ #include<iostr

上機專案3 派生直線

定義點類Point,並以點類為基類,派生出直線類Line,從基類中繼承的點的資訊表示直線的中點。請閱讀下面的程式碼,並將缺少的部分寫出來。#include<iostream> #include<Cmath> using namespace s

上機實踐專案——銀行系統

/* * Copyright (c) 2013, 煙臺大學計算機學院 * All rights reserved. * 作 者: 劉中林 * 完成日期:2013 年 12月 19 日 * 版 本 號:v1.0 * 問題描述:無 * 輸出:無 */

上機實踐專案——楊輝三角

/* * 程式的版權和版本宣告部分 * Copyright (c)2013, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱: array.cpp * 作 者:劉

上機實踐專案 專案1-實現複數中的運算子過載 (2)

問題及程式碼: 【專案-實現複數類中的運算子過載】 (1)請用類的成員函式,定義複數類過載運算子+、-、*、/,使之能用於複數的加減乘除 class Complex { public: Complex(){real=0;imag=0;} Complex(d

課後實踐專案二——摩托車繼承自行車和機動車

問題及程式碼: /* * Copyright (c) 2014, 煙臺大學計算機學院 * All rights reserved. * 檔名稱:Project4.cpp * 作 者:陳旭 * 完成日期:2015年6月 4日 * 版 本 號:v1.0 * * 問題描述:

實踐專案5——a

問題及程式碼: /*copyright(c)2016.煙臺大學計算機學院 * All rights reserved, * 檔名稱:text.Cpp * 作者:吳敬超 * 完成日期:2016年5月10