
106年公務人員特種考試警察人員、一般警察
人員考試及106年特種考試交通事業鐵路
人員、退除役軍人轉任公務人員考試試題 代號:30570 全一張
(背面)
考試別: 一般警察人員考試
等別: 三等考試
類科別: 警察資訊管理人員
科目: 物件導向程式設計
二、繪製 UML 類別圖(Class Diagram),表示關於排球聯盟(league)以下之資訊元件:
聯盟(league)由至少 4個球隊(team)組成。每個球隊(team)由 6至12 名球員
(player)組成,且皆有 1名球員擔任隊長(captain)。每個球隊(team)皆有其隊名
(name)及記錄(record)。每名球員(player)皆有號碼(number)及其位置(position)。
球隊(team)倆倆相互(play)比賽(game)。每場比賽(game)都有比數(score)
及比賽地點(location)。各球隊(team)可能有教練(coach)指導,但也可能沒有。
每名教練(coach)皆有認證等級(accreditation level )及年資(year experience)。每
名教練(coach)可以指導(lead)多個球隊(team)。教練(coach)及球員(player)
皆是人員(person),人員皆有名字(name)及地址(address)。類別圖中必須使用適
當的標籤標記所有關聯(Association)。(20 分)
三、請寫出下列 C++程式執行後之輸出。(10 分)
#include
using namespace std;
class AA {
public:
int x;
AA(int x=0){this->x=x;}
virtual void g()=0;
void h(){
x=6;
cout << endl << "AA h:x= " << x ;
}
} ;
class BB : public AA {
public:
int x;
BB(int x1=0,int x2=0):AA(x2){
this->x=x1;
}
void g(){
x=10;
cout<< endl<< "BB g:x= "<< x ;
}
void h(){
x=20;
cout<"BB h:x= " << x ;
}
};
int main(){
AA *ap = new BB(-7,-9) ;
ap->g();
ap->h();
BB *bp= static_cast(ap);
cout<"bp-> x= "<< bp->x;
bp->g();
bp->h();
四、請建立 C++程式,可首先寫入 2字串"第一列文字"及"第二列文字"至檔案"example.txt"
中成為 2列文字。再由檔案"example.txt"中讀出此 2列文字,將之顯示於螢幕。(10 分)
五、可寫為 a+bi 之數稱為複數(Complex Number),其中 a與b均為實數,i表示虛數,
亦即 i2=
-
1。a稱為複數的實部(real part),b稱為複數的虛部(imaginary part)。
複數四則運算如下:
‧加法: idbcadicbia )()()()( +++=+++
‧減法: idbcadicbia )()()()( −−−=+−+
‧乘法: )( bia +‧ibcadbdacdic )()()( ++−=+
‧除法: i
dc
adbd
dc
bdac
dicdic dicbia
dic bia 2222
)()( )()(
+
−
+
+
+
=
−+
−+
=
+
+
請以 C++語言,
宣告 complex(複數)class,包含宣告為 float 型式之成員變數:實部(real)與虛部
(imag);將實部與虛部皆預設為 0.0 之建構子(constructor);可進行四則運算之成
員運算符(operator):+、
-
、*、/;將實部與虛部各乘以
-
1之成員運算符
-
。(10 分)
寫出於複數 class 外部,定義成員 operator *之程式碼。(5分)
寫出於複數 class 外部,定義成員 operator /之程式碼。加入例外處理(exception
handle)避免分母為 0。(10 分)
寫出定義 operator <<之程式碼,使得於主函式中可直接使用 cout<<將複數顯示於
螢幕為(real+imag i),例如:(2+3i)。(5分)