Download presentation
Presentation is loading. Please wait.
1
第七章 檔案處理
2
7.1 檔案I/O函式群 檔案I/O與作業系統: 檔案I/O與字元I/O都屬C的標準函式庫
OS均有提供但使用不易(DOS-ASM) 檔案I/O各自不同 ANSI提供標準函式庫 I/O與OS由編譯器提供介面
3
7.1 檔案I/O函式群 檔案I/O與作業系統:
4
7.1 檔案I/O函式群 UNIX作業系統: UNIX由C撰寫 可以直接以System Call呼叫I/O
5
7.1 檔案I/O函式群 UNIX作業系統:
6
7.1 檔案I/O函式群 DOS作業系統: DOS由ASM撰寫 需透過函式呼叫DOS
7
7.1 檔案I/O函式群 DOS作業系統:
8
7.1 檔案I/O函式群 UNIX移植到DOS: 由編譯器提供“模擬UNIX系統的呼叫函式”
9
7.1 檔案I/O函式群 UNIX移植到DOS:
10
7.1 檔案的觀念 C的檔案觀念:
11
7.1 檔案的觀念 C的檔案觀念: #include<stdio.h> void main( ) { FILE *fp1;
char c; fp1=fopen(“text.txt”,”w”); while ((c=getchar( ))!=‘\n’) put(c,fp1); fclose(fp1); }
12
7.1 檔案的觀念 C的檔案觀念:
13
7.1 檔案的觀念 C的檔案觀念: #include<stdio.h> void main( ) { FILE *fp1;
char c; fp1=fopen(“text.txt”,”r”); while ((c=getchar( ))!=EOF) printf(c,fp1); fclose(fp1); } stream (pointer)
14
7.1 檔案的觀念 C的檔案觀念: 由fp1讀出一個字元: c=fgetc(fp1); 將c寫入fp1中:
fputc(c,fp1);
15
第八章 繼承
16
8.1 什麼是繼承 繼承的特質: 遺傳,包括特性,習慣…等 減少程式的重復撰寫
17
8.1 什麼是繼承 家族族譜: 姓相同 有些器官長的相 住址相同 電話一樣
18
8.1 什麼是繼承 生物: 相同的分類有共同的特色
19
8.1 什麼是繼承 幾何圖形:
20
8.1 什麼是繼承 幾何圖形: 四邊行的求面積公式可以被延用至後代 四邊形 : L1L2L3L4 矩形 : 長寬
矩形 : 長寬 正方形 : 長寬 (長=寬)
21
8.2 用C++描述繼承 族譜: class GrandFather { 姓,名,血型,住址,電話, … }
class Father : public GrandFather { … } class Son : public Father { … }
22
8.2 用C++描述繼承 生物: class Animal { … }
class Mammal : public Animal { … } class Human : public Mammal { … }
23
8.2 用C++描述繼承 幾何圖形: class Shape { … }
class Rectangle : public Shape { … } class Square : public Rectangle { … }
24
8.2 用C++描述繼承 繼承的方式: class Animal { public : int Life; int canMove();
}; class Mammal : public Animal int Milk;
25
8.2 用C++描述繼承 繼承的方式: #include <iostream.h> // 矩形
// 矩形 class Rectangle { public : int nLength; int nWidth; int Area() { return nLength * nWidth; } }; // 正方形 class Square : public Rectangle { return nLength * nLength; }
26
8.2 用C++描述繼承 繼承的方式: // 主程式 void main() { Square a; a.nLength = 5;
// 主程式 void main() { Square a; a.nLength = 5; cout << a.Area() << endl; }
27
8.2 用C++描述繼承 繼承的權限: #include <iostream.h> // 矩形
// 矩形 class Rectangle { private : int nLength; int nWidth; public : Rectangle (int len=0, int wid=0) { nLength=len; nWidth=wid; } int Area () { return nLength * nWidth; } }; // 正方形 class Square : public Rectangle { public : Sequare (int len=0) { nLength=len; // 錯誤 } Area() { return nLength * nLength; }
28
8.2 用C++描述繼承 繼承的權限: protected 對繼承下來的class為public 其他的為private
#include <iostream.h> // 矩形 class Rectangle { protected : int nLength; int nWidth; public : Rectangle (int len=0, int wid=0) { nLength=len; nWidth=wid; } int Area () { return nLength * nWidth; } }; // 正方形 class Square : public Rectangle { public : Sequare (int len=0) { nLength=len; // 正確 } Area() { return nLength * nLength; } 對繼承下來的class為public 其他的為private
29
8.2 用C++描述繼承 繼承的等級: #include <iostream.h> // 矩形
// 矩形 class Rectangle { protected : int nLength; int nWidth; public : Rectangle (int len=0, int wid=0) { nLength=len; nWidth=wid; } int Area () { return nLength * nWidth; } }; // 正方形 class Square : public Rectangle { public : Sequare (int len=0) { nLength=len; // 正確 } Area() { return nLength * nLength; }
30
8.2 用C++描述繼承 繼承的等級: public class A { private : int nPrivate;
protected : int nProtected; public : int nPublic; } class B : public A class C : public C
31
8.2 用C++描述繼承 繼承的等級: protected class A { private : int nPrivate;
int nProtected; public : int nPublic; } class B : protected A class C : protected C
32
8.2 用C++描述繼承 繼承的等級: class A { private : int nPrivate; protected :
int nProtected; public : int nPublic; } class B : private A class C : private C
33
8.2 多重繼承 族譜:
34
8.2 多重繼承 幾何圖形:
35
8.2 多重繼承 範例:baby.cpp 結果: Father的建構元一 Mother的建構元 Child的建構元一 爸爸的老婆
結果: Father的建構元一 Mother的建構元 Child的建構元一 爸爸的老婆 媽媽的老公 住址
36
8.2 多重繼承 範例:baby.cpp Child Baby(“寶寶的小女友”,“寶寶的姓”,“寶寶的地址”,10);
假如在main( )中,baby的宣告為: Child Baby(“寶寶的小女友”,“寶寶的姓”,“寶寶的地址”,10); 衍生物件不會上傳參數 故呼叫沒有參數的建構元 結果: Father的建構元一 Mother的建構元 Child的建構元二 爸爸的老婆 媽媽的老公 住址
37
8.2 多重繼承 修正: 結果: Father的建構元二 Mother的建構元 Child的建構元二 爸爸的老婆 媽媽的老公 住址
Child( char *wife, char *surname, char *address, long money ): Father( wife, surname, address, money ) { cout << "Child 的建構元二" << endl; strcpy( , ); } 結果: Father的建構元二 Mother的建構元 Child的建構元二 爸爸的老婆 媽媽的老公 住址
38
8.2 多重繼承 範例:baby.cpp Cout<<Mother::GetMoney( )<<endl;
cout<<Father::Father::Surname<<endl; GetMoney GetMoney surname surname
39
8.2 多重繼承 範例:baby.cpp Long Child :: GetMoney ( ) {
return Father::GetMoney+Mother::GetMoney( ); } GetMoney GetMoney surname surname
Similar presentations