4. Phöông thöùc aûo vaø tính ña<br />
hình<br />
<br />
1<br />
<br />
Noäi dung<br />
1 Baøi toaùn quaûn lyù moät danh<br />
saùch caùc ñoái töôïng khaùc kieåu<br />
3 Phöông thöùc aûo<br />
4 Phöông thöùc aûo thuaàn tuyù<br />
<br />
2<br />
<br />
1 B.toaùn q.lyù caùc ñ.töôïng khaùc kieåu<br />
- Giaû söû ta caàn quaûn lyù moät danh saùch caùc ñoái töôïng coù kieåu<br />
coù theå khaùc nhau, ta caàn giaûi quyeát hai vaán ñeà: Caùch löu<br />
tröõ vaø thao taùc xöû lyù.<br />
- Xeùt tröôøng hôïp cuï theå, caùc ñoái töôïng coù theå laø ngöôøi, sinh<br />
vieân hoaëc coâng nhaân.<br />
- Veà löu tröõ: Ta coù theå duøng union, trong tröôøng hôïp naøy moãi<br />
ñoái töôïng phaûi coù kích thöôùc chöùa ñöôïc ñoái töôïng coù kích<br />
thöôùc lôùn nhaát. Ñieàu naøy gaây laõng phí khoâng gian löu tröõ.<br />
Moät caùch thay theá laø löu tröõ ñoái töôïng baèng ñuùng kích<br />
thöôùc cuûa noù vaø duøng moät danh saùch (maûng, dslk,...) caùc<br />
con troû ñeå quaûn lyù caùc ñoái töôïng.<br />
- Veà thao taùc, phaûi thoaû yeâu caàu ña hình: Thao taùc coù hoaït<br />
ñoäng khaùc nhau öùng vôùi caùc loaïi ñoái töôïng khaùc nhau. Coù<br />
hai caùch giaûi quyeát laø vuøng choïn kieåu vaø phöông thöùc aûo.<br />
3<br />
<br />
Duøng vuøng choïn kieåu<br />
Veà löu tröõ: Ta seõ duøng moät maûng caùc con troû ñeán lôùp cô sôû<br />
ñeå coù theå troû ñeán caùc ñoái töôïng thuoäc lôùp con.<br />
Xeùt lôùp Ngöôøi vaø caùc lôùp keá thöøa sinh vieân vaø coâng nhaân.<br />
Thao taùc ta quan taâm laø xuat. Ta caàn baûo ñaûm thao taùc xuaát<br />
aùp duïng cho lôùp sinh vieân vaø lôùp coâng nhaân khaùc nhau.<br />
<br />
4<br />
<br />
Ví duï minh hoaï<br />
class Nguoi<br />
{<br />
protected:<br />
char *HoTen;<br />
int NamSinh;<br />
public:<br />
Nguoi(char *ht, int ns):NamSinh(ns) {HoTen =<br />
strdup(ht);}<br />
~Nguoi() {delete [] HoTen;}<br />
void An() const { cout