77. struct point
{
int x;
int y;
}
void drawLine(int startX, int startY, int endX, int endY){};
void drawLine(point start, point end){};
傳物件好?還是傳值好?
struct point
{
int x;
int y;
int z;
}
void drawLine(int startX, int startY, int startZ, int endX, int endY, int endZ){};
void drawLine(point start, point end){};
78. struct point
{
int x;
int y;
}
void drawLine(int startX, int startY, int endX, int endY){};
void drawLine(point start, point end){};
傳物件好?還是傳值好?
struct point
{
int x;
int y;
int z;
}
void drawLine(int startX, int startY, int startZ, int endX, int endY, int endZ){};
void drawLine(point start, point end){};
傳參數
傳參數
A做法:function( obj.getMem1(), obj.getMem2(), obj.getMem3() );
優點:
維持最少的常式間聯結數
減少藕合,常式易於重覆使用
缺點:
公開常式使用的成員項目→有違封裝
79. struct point
{
int x;
int y;
}
void drawLine(int startX, int startY, int endX, int endY){};
void drawLine(point start, point end){};
傳物件好?還是傳值好?
struct point
{
int x;
int y;
int z;
}
void drawLine(int startX, int startY, int startZ, int endX, int endY, int endZ){};
void drawLine(point start, point end){};
傳物件
傳物件
B做法:function( obj );
優點:
增加使用額外物件成員的彈性
(因為介面穩定)
缺點:
十個公開的存取常式,在函式內有存取的可能性→有違封裝
86. R
G
B
Y
U
V
R
G
B
maxPixel
minPixel
R
G
B
Gray
void encode(char iR, char iG, char iB, char* oY, char* oU, char* oV)
void encode(char iR, char iG, char iB, char* maxSubPixel, char* minSubPixel)
char encode(char iR, char iG, char iB)
void encode(char iR, char iG, char iB, char* Gray)
編碼RGB
有幾種編法?
87. ?
R
G
B
Y
U
V
R
G
B
maxPixel
minPixel
R
G
B
Gray
void encode(char iR, char iG, char iB, char* oY, char* oU, char* oV)
void encode(char iR, char iG, char iB, char* maxSubPixel, char* minSubPixel)
char encode(char iR, char iG, char iB)
void encode(char iR, char iG, char iB, char* Gray)
唯一輸出
有兩種寫法
88. char encode(char iR, char iG, char iB)
void encode(char iR, char iG, char iB, char* oGray)
char R=255, G=255, B=255, Gray;
if (encode(R, G, B) > 128)
;
宣告
編碼?
編什麼碼?