Основы языка программирования C++ с применением объектно-ориентированного программирования. Чернышов М.К. - 51 стр.

UptoLike

Составители: 

public:
int getCount(){return count;};
TBase(int s,int m,int d);
TBase();
TBase(TBase&);
~TBase();
virtual void print()=0; // ɑɢɫɬɚɹ ɜɢɪɬɭɚɥɶɧɚɹ ɮɭɧɤɰɢɹ
};
Ɍɨɝɞɚ ɜ ɩɪɨɢɡɜɨɞɧɵɯ ɤɥɚɫɫɚɯ ɞɨɥɠɧɚ ɛɵɬɶ ɨɛɴɹɜɥɟɧɚ ɡɚɦɟɳɚɸɳɚɹ ɟɟ
ɮɭɧɤɰɢɹ
print, ɜɵɩɨɥɧɹɸɳɚɹ ɪɟɚɥɶɧɵɟ ɞɟɣɫɬɜɢɹ:
class TIntArray:public TBase
{
/* Ⱦɪɭɝɢɟ ɦɟɬɨɞɵ */
virtual void print();
}
class TRealArray:public TBase
{
/* Ⱦɪɭɝɢɟ ɦɟɬɨɞɵ */
virtual void print();
}
ȼ ɩɪɨɝɪɚɦɦɟ, ɢɫɩɨɥɶɡɭɸɳɟɣ ɨɛɴɟɤɬɵ ɤɥɚɫɫɨɜ TIntArray ɢ
TRealArray, ɦɨɝɭɬ ɫɨɡɞɚɜɚɬɶɫɹ ɷɤɡɟɦɩɥɹɪɵ ɷɬɢɯ ɤɥɚɫɫɨɜ ɫ ɜɨɡɦɨɠɧɨɫɬɶɸ
ɨɛɪɚɳɟɧɢɹ ɤ ɧɢɦ ɱɟɪɟɡ ɭɤɚɡɚɬɟɥɶ ɧɚ ɛɚɡɨɜɵɣ ɤɥɚɫɫ:
TBase *pb;
TIntArray aint(5,3);
TRealArray areal(4,2);
Ɍɨɝɞɚ ɞɥɹ ɩɟɱɚɬɢ ɦɚɫɫɢɜɨɜ ɦɨɝɭɬ ɩɪɢɦɟɧɹɬɶɫɹ ɨɩɟɪɚɬɨɪɵ
pb=&aint; pb->print(); //ɉɟɱɚɬɶ ɦɚɫɫɢɜɚ aint
pb=&areal; pb->print(); // ɉɟɱɚɬɶ ɦɚɫɫɢɜɚ areal
ɉɪɢɜɟɞɟɦ ɟɳɟ ɨɞɢɧ ɩɪɢɦɟɪ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɜɢɪɬɭɚɥɶɧɵɯ ɮɭɧɤɰɢɣ.
ɉɭɫɬɶ ɧɟɤɨɬɨɪɵɣ ɥɸɛɢɬɟɥɶ ɞɨɦɚɲɧɢɯ ɠɢɜɨɬɧɵɯ ɪɟɲɢɥ ɡɚɜɟɫɬɢ ɤɚɬɚɥɨɝ
ɫɜɨɢɯ ɥɸɛɢɦɰɟɜ ɢ ɞɥɹ ɤɚɠɞɨɝɨ ɜɢɞɚ ɠɢɜɨɬɧɵɯ ɨɩɪɟɞɟɥɢɥ ɫɜɨɣ ɤɥɚɫɫ ɫ ɨɛ-
ɳɢɦ ɛɚɡɨɜɵɦ ɤɥɚɫɫɨɦ
Pet. Ⱦɥɹ ɤɪɚɬɤɨɫɬɢ ɨɝɪɚɧɢɱɢɦɫɹ ɜ ɨɩɢɫɚɧɢɢ ɤɚɠɞɨ-
ɝɨ ɠɢɜɨɬɧɨɝɨ ɟɝɨ ɤɥɢɱɤɨɣ ɢ ɬɢɩɨɜɵɦ ɢɡɞɚɜɚɟɦɵɦ ɠɢɜɨɬɧɵɦ ɡɜɭɤɨɦ ɫ ɜɨɡ-
ɦɨɠɧɨɫɬɶɸ ɜɵɜɨɞɚ ɧɚ ɷɤɪɚɧ ɫɩɢɫɤɚ ɤɥɢɱɟɤ ɢ ɩɪɟɞɫɬɚɜɥɟɧɢɹ ɢɡɞɚɜɚɟɦɵɯ
ɢɦɢ ɡɜɭɤɨɜ.
ɉɪɨɝɪɚɦɦɚ:
#include <iostream.h>
struct Pet // Ȼɚɡɨɜɵɣ ɤɥɚɫɫ
{
char *name;
virtual void speak()=0;
Pet( char *nm){name=nm;}
}
struct Dog:public Pet
{
virtual void speak()
{cout<<name<<“ ɝɨɜɨɪɢɬ “”<<“ Ⱥɜ-ɚɜ”<<endl;};
51
         public:
          int getCount(){return count;};
          TBase(int s,int m,int d);
          TBase();
          TBase(TBase&);
          ~TBase();
          virtual void print()=0; // ɑɢɫɬɚɹ ɜɢɪɬɭɚɥɶɧɚɹ ɮɭɧɤɰɢɹ
         };
Ɍɨɝɞɚ ɜ ɩɪɨɢɡɜɨɞɧɵɯ ɤɥɚɫɫɚɯ ɞɨɥɠɧɚ ɛɵɬɶ ɨɛɴɹɜɥɟɧɚ ɡɚɦɟɳɚɸɳɚɹ ɟɟ
ɮɭɧɤɰɢɹ print, ɜɵɩɨɥɧɹɸɳɚɹ ɪɟɚɥɶɧɵɟ ɞɟɣɫɬɜɢɹ:
     class TIntArray:public TBase
        {
        /* Ⱦɪɭɝɢɟ ɦɟɬɨɞɵ */
        virtual void print();
        }
     class TRealArray:public TBase
        {
        /* Ⱦɪɭɝɢɟ ɦɟɬɨɞɵ */
        virtual void print();
        }
    ȼ ɩɪɨɝɪɚɦɦɟ, ɢɫɩɨɥɶɡɭɸɳɟɣ ɨɛɴɟɤɬɵ ɤɥɚɫɫɨɜ TIntArray ɢ
TRealArray, ɦɨɝɭɬ ɫɨɡɞɚɜɚɬɶɫɹ ɷɤɡɟɦɩɥɹɪɵ ɷɬɢɯ ɤɥɚɫɫɨɜ ɫ ɜɨɡɦɨɠɧɨɫɬɶɸ
ɨɛɪɚɳɟɧɢɹ ɤ ɧɢɦ ɱɟɪɟɡ ɭɤɚɡɚɬɟɥɶ ɧɚ ɛɚɡɨɜɵɣ ɤɥɚɫɫ:
     TBase *pb;
     TIntArray aint(5,3);
     TRealArray areal(4,2);
Ɍɨɝɞɚ ɞɥɹ ɩɟɱɚɬɢ ɦɚɫɫɢɜɨɜ ɦɨɝɭɬ ɩɪɢɦɟɧɹɬɶɫɹ ɨɩɟɪɚɬɨɪɵ
     pb=&aint; pb->print();                    //ɉɟɱɚɬɶ ɦɚɫɫɢɜɚ aint
     pb=&areal; pb->print();                 // ɉɟɱɚɬɶ ɦɚɫɫɢɜɚ areal
    ɉɪɢɜɟɞɟɦ ɟɳɟ ɨɞɢɧ ɩɪɢɦɟɪ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɜɢɪɬɭɚɥɶɧɵɯ ɮɭɧɤɰɢɣ.
ɉɭɫɬɶ ɧɟɤɨɬɨɪɵɣ ɥɸɛɢɬɟɥɶ ɞɨɦɚɲɧɢɯ ɠɢɜɨɬɧɵɯ ɪɟɲɢɥ ɡɚɜɟɫɬɢ ɤɚɬɚɥɨɝ
ɫɜɨɢɯ ɥɸɛɢɦɰɟɜ ɢ ɞɥɹ ɤɚɠɞɨɝɨ ɜɢɞɚ ɠɢɜɨɬɧɵɯ ɨɩɪɟɞɟɥɢɥ ɫɜɨɣ ɤɥɚɫɫ ɫ ɨɛ-
ɳɢɦ ɛɚɡɨɜɵɦ ɤɥɚɫɫɨɦ Pet. Ⱦɥɹ ɤɪɚɬɤɨɫɬɢ ɨɝɪɚɧɢɱɢɦɫɹ ɜ ɨɩɢɫɚɧɢɢ ɤɚɠɞɨ-
ɝɨ ɠɢɜɨɬɧɨɝɨ ɟɝɨ ɤɥɢɱɤɨɣ ɢ ɬɢɩɨɜɵɦ ɢɡɞɚɜɚɟɦɵɦ ɠɢɜɨɬɧɵɦ ɡɜɭɤɨɦ ɫ ɜɨɡ-
ɦɨɠɧɨɫɬɶɸ ɜɵɜɨɞɚ ɧɚ ɷɤɪɚɧ ɫɩɢɫɤɚ ɤɥɢɱɟɤ ɢ ɩɪɟɞɫɬɚɜɥɟɧɢɹ ɢɡɞɚɜɚɟɦɵɯ
ɢɦɢ ɡɜɭɤɨɜ.
    ɉɪɨɝɪɚɦɦɚ:
     #include 
     struct Pet                                // Ȼɚɡɨɜɵɣ ɤɥɚɫɫ
        {
        char *name;
        virtual void speak()=0;
        Pet( char *nm){name=nm;}
        }
     struct Dog:public Pet
        {
        virtual void speak()
           {cout<