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

UptoLike

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

ɤɥɚɫɫɨɜ ɢ ɪɚɡɪɟɲɚɟɬ ɞɨɫɬɭɩ ɤ ɤɨɦɩɨɧɟɧɬɚɦ ɷɬɨɝɨ ɭɪɨɜɧɹ ɢɡ ɦɟɬɨɞɨɜ ɩɪɨ-
ɢɡɜɨɞɧɨɝɨ ɤɥɚɫɫɚ. ɉɨ ɭɦɨɥɱɚɧɢɸ ɞɥɹ ɜɫɟɯ ɤɨɦɩɨɧɟɧɬ ɤɥɚɫɫɚ ɬɢɩɚ
struct
ɩɪɢɧɢɦɚɟɬɫɹ ɭɪɨɜɟɧɶ ɞɨɫɬɭɩɚ
public, ɧɨ ɦɨɠɧɨ ɹɜɧɨ ɡɚɞɚɜɚɬɶ ɢ ɞɪɭɝɢɟ
ɭɪɨɜɧɢ ɞɨɫɬɭɩɚ, ɭɪɨɜɟɧɶ ɞɨɫɬɭɩɚ ɤ ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɬɢɩɚ
class ɩɨ
ɭɦɨɥɱɚɧɢɸ
private, ɞɥɹ ɤɥɚɫɫɚ ɬɢɩɚ union ɭɪɨɜɟɧɶ ɞɨɫɬɭɩɚ public, ɤɨ-
ɬɨɪɵɣ ɧɟ ɦɨɠɟɬ ɛɵɬɶ ɢɡɦɟɧɟɧ.
ɇɚɩɪɢɦɟɪ, ɩɭɫɬɶ ɩɪɨɝɪɚɦɦɢɫɬ ɪɟɲɢɥ ɜ ɤɥɚɫɫɟ
TPoint (ɬɨɱɤɚ) ɡɚɩɪɟ-
ɬɢɬɶ ɜɧɟɲɧɢɣ ɞɨɫɬɭɩ ɤ ɤɨɨɪɞɢɧɚɬɚɦ ɬɨɱɤɢ ɢ ɪɚɡɪɟɲɢɬɶ ɜɧɟɲɧɢɣ ɞɨɫɬɭɩ ɤ
ɦɟɬɨɞɚɦ ɩɟɪɟɦɟɳɟɧɢɹ ɬɨɱɤɢ ɧɚ ɩɥɨɫɤɨɫɬɢ. Ɉɩɢɫɚɧɢɟ ɤɥɚɫɫɚ
TPoint ɦɨɠɧɨ
ɩɨɫɬɪɨɢɬɶ ɬɚɤ:
class TPoint
{
private:
int x,y;
public:
void movePoint(int newx, int newy); // ɩɟɪɟɧɨɫ ɬɨɱɤɢ
void relmove (int dx, int dy); // ɫɞɜɢɝ ɬɨɱɤɢ
int getx() {return x;};
int gety() {return y;};
};
Ɉɩɢɫɚɧɢɟ ɬɟɥɚ ɤɨɦɩɨɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɦɨɠɟɬ ɛɵɬɶ ɜɤɥɸɱɟɧɨ ɜ ɨɩɢɫɚ-
ɧɢɟ ɤɥɚɫɫɚ, ɤɚɤ ɷɬɨ ɫɞɟɥɚɧɨ ɜ ɩɪɢɦɟɪɟ ɞɥɹ ɮɭɧɤɰɢɣ
getx ɢ gety, ɢɥɢ ɩɨ-
ɦɟɳɟɧɨ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ. Ʉɨɦɩɨɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɩɪɢ ɢɯ ɜɵɡɨɜɟ ɧɟɹɜɧɨ
ɩɨɥɭɱɚɸɬ ɞɨɩɨɥɧɢɬɟɥɶɧɵɣ ɚɪɝɭɦɟɧɬ - ɭɤɚɡɚɬɟɥɶ ɧɚ ɩɟɪɟɦɟɧɧɭɸ ɨɛɴɟɤɬɧɨ-
ɝɨ ɬɢɩɚ, ɞɥɹ ɤɨɬɨɪɨɣ ɜɵɡɜɚɧɚ ɮɭɧɤɰɢɹ, ɢ ɜ ɬɟɥɟ ɮɭɧɤɰɢɢ ɦɨɠɧɨ ɨɛɪɚɳɚɬɶ-
ɫɹ ɤɨ ɜɫɟɦ ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ. ȼ ɫɜɹɡɢ ɫ ɷɬɢɦ ɩɪɢ ɨɩɢɫɚɧɢɢ ɬɟɥɚ ɤɨɦɩɨ-
ɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ ɧɭɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɨɩɟɪɚɰɢɸ ɪɚɡ-
ɪɟɲɟɧɢɹ ɤɨɧɬɟɤɫɬɚ, ɱɬɨɛɵ ɢɧɮɨɪɦɢɪɨɜɚɬɶ ɤɨɦɩɢɥɹɬɨɪ ɨ ɩɪɢɧɚɞɥɟɠɧɨɫɬɢ
ɮɭɧɤɰɢɢ ɤ ɤɥɚɫɫɭ. Ɇɟɬɨɞɵ ɤɥɚɫɫɚ
TPoint ɦɨɠɧɨ ɨɩɢɫɚɬɶ ɬɚɤ:
void TPoint::movePoint(int newx, int newy)
{x=newx; y=newy;}
void TPoint::relmove(int dx, int dy)
{x+=dx; y+=dy;}
ɑɬɨɛɵ ɜɵɩɨɥɧɢɬɶ ɧɚɱɚɥɶɧɭɸ ɢɧɢɰɢɚɥɢɡɚɰɢɸ ɤɨɦɩɨɧɟɧɬ-ɞɚɧɧɵɯ, ɩɪɢ
ɫɨɡɞɚɧɢɢ ɩɟɪɟɦɟɧɧɵɯ ɨɛɴɟɤɬɧɨɝɨ ɬɢɩɚ ɜ ɨɩɢɫɚɧɢɟ ɬɢɩɚ ɜɤɥɸɱɚɸɬɫɹ ɫɩɟ-
ɰɢɚɥɶɧɵɟ ɦɟɬɨɞɵ-ɤɨɧɫɬɪɭɤɬɨɪɵ. ɂɦɹ ɤɨɧɫɬɪɭɤɬɨɪɚ ɫɨɜɩɚɞɚɟɬ ɫ ɢɦɟɧɟɦ
ɬɢɩɚ, ɤɨɧɫɬɪɭɤɬɨɪ ɧɟ ɜɨɡɜɪɚɳɚɟɬ ɧɢɤɚɤɨɝɨ ɡɧɚɱɟɧɢɹ ɢ ɞɥɹ ɧɟɝɨ ɧɟ ɭɤɚɡɵɜɚ-
ɟɬɫɹ ɬɢɩ ɜɨɡɜɪɚɳɚɟɦɨɝɨ ɡɧɚɱɟɧɢɹ. Ⱦɥɹ ɪɚɫɫɦɨɬɪɟɧɧɨɝɨ ɜɵɲɟ ɤɥɚɫɫɚ
TPoint ɦɨɠɧɨ ɛɵɥɨ ɨɛɨɣɬɢɫɶ ɛɟɡ ɤɨɧɫɬɪɭɤɬɨɪɚ ɢ ɢɫɩɨɥɶɡɨɜɚɬɶ ɞɥɹ ɢɧɢ-
ɰɢɚɥɢɡɚɰɢɢ ɦɟɬɨɞ
movePoint. Ɋɚɫɫɦɨɬɪɢɦ ɜ ɤɚɱɟɫɬɜɟ ɩɪɢɦɟɪɚ ɤɥɚɫɫ
TRect, ɨɩɢɫɵɜɚɸɳɢɣ ɩɪɹɦɨɭɝɨɥɶɧɢɤ ɫɨ ɫɬɨɪɨɧɚɦɢ, ɩɚɪɚɥɥɟɥɶɧɵɦɢ ɨɫɹɦ
ɤɨɨɪɞɢɧɚɬ:
enum Boolean {FALSE, TRUE};
class TRect
{
42
ɤɥɚɫɫɨɜ ɢ ɪɚɡɪɟɲɚɟɬ ɞɨɫɬɭɩ ɤ ɤɨɦɩɨɧɟɧɬɚɦ ɷɬɨɝɨ ɭɪɨɜɧɹ ɢɡ ɦɟɬɨɞɨɜ ɩɪɨ-
ɢɡɜɨɞɧɨɝɨ ɤɥɚɫɫɚ. ɉɨ ɭɦɨɥɱɚɧɢɸ ɞɥɹ ɜɫɟɯ ɤɨɦɩɨɧɟɧɬ ɤɥɚɫɫɚ ɬɢɩɚ struct
ɩɪɢɧɢɦɚɟɬɫɹ ɭɪɨɜɟɧɶ ɞɨɫɬɭɩɚ public, ɧɨ ɦɨɠɧɨ ɹɜɧɨ ɡɚɞɚɜɚɬɶ ɢ ɞɪɭɝɢɟ
ɭɪɨɜɧɢ ɞɨɫɬɭɩɚ, ɭɪɨɜɟɧɶ ɞɨɫɬɭɩɚ ɤ ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ ɬɢɩɚ class ɩɨ
ɭɦɨɥɱɚɧɢɸ private, ɞɥɹ ɤɥɚɫɫɚ ɬɢɩɚ union ɭɪɨɜɟɧɶ ɞɨɫɬɭɩɚ public, ɤɨ-
ɬɨɪɵɣ ɧɟ ɦɨɠɟɬ ɛɵɬɶ ɢɡɦɟɧɟɧ.
    ɇɚɩɪɢɦɟɪ, ɩɭɫɬɶ ɩɪɨɝɪɚɦɦɢɫɬ ɪɟɲɢɥ ɜ ɤɥɚɫɫɟ TPoint (ɬɨɱɤɚ) ɡɚɩɪɟ-
ɬɢɬɶ ɜɧɟɲɧɢɣ ɞɨɫɬɭɩ ɤ ɤɨɨɪɞɢɧɚɬɚɦ ɬɨɱɤɢ ɢ ɪɚɡɪɟɲɢɬɶ ɜɧɟɲɧɢɣ ɞɨɫɬɭɩ ɤ
ɦɟɬɨɞɚɦ ɩɟɪɟɦɟɳɟɧɢɹ ɬɨɱɤɢ ɧɚ ɩɥɨɫɤɨɫɬɢ. Ɉɩɢɫɚɧɢɟ ɤɥɚɫɫɚ TPoint ɦɨɠɧɨ
ɩɨɫɬɪɨɢɬɶ ɬɚɤ:
     class TPoint
        {
        private:
         int x,y;
        public:
         void movePoint(int newx, int newy);         // ɩɟɪɟɧɨɫ ɬɨɱɤɢ
         void relmove (int dx, int dy);              // ɫɞɜɢɝ ɬɨɱɤɢ
         int getx() {return x;};
         int gety() {return y;};
        };
     Ɉɩɢɫɚɧɢɟ ɬɟɥɚ ɤɨɦɩɨɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɦɨɠɟɬ ɛɵɬɶ ɜɤɥɸɱɟɧɨ ɜ ɨɩɢɫɚ-
ɧɢɟ ɤɥɚɫɫɚ, ɤɚɤ ɷɬɨ ɫɞɟɥɚɧɨ ɜ ɩɪɢɦɟɪɟ ɞɥɹ ɮɭɧɤɰɢɣ getx ɢ gety, ɢɥɢ ɩɨ-
ɦɟɳɟɧɨ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ. Ʉɨɦɩɨɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɩɪɢ ɢɯ ɜɵɡɨɜɟ ɧɟɹɜɧɨ
ɩɨɥɭɱɚɸɬ ɞɨɩɨɥɧɢɬɟɥɶɧɵɣ ɚɪɝɭɦɟɧɬ - ɭɤɚɡɚɬɟɥɶ ɧɚ ɩɟɪɟɦɟɧɧɭɸ ɨɛɴɟɤɬɧɨ-
ɝɨ ɬɢɩɚ, ɞɥɹ ɤɨɬɨɪɨɣ ɜɵɡɜɚɧɚ ɮɭɧɤɰɢɹ, ɢ ɜ ɬɟɥɟ ɮɭɧɤɰɢɢ ɦɨɠɧɨ ɨɛɪɚɳɚɬɶ-
ɫɹ ɤɨ ɜɫɟɦ ɤɨɦɩɨɧɟɧɬɚɦ ɤɥɚɫɫɚ. ȼ ɫɜɹɡɢ ɫ ɷɬɢɦ ɩɪɢ ɨɩɢɫɚɧɢɢ ɬɟɥɚ ɤɨɦɩɨ-
ɧɟɧɬɵ-ɮɭɧɤɰɢɢ ɜɧɟ ɨɩɢɫɚɧɢɹ ɤɥɚɫɫɚ ɧɭɠɧɨ ɢɫɩɨɥɶɡɨɜɚɬɶ ɨɩɟɪɚɰɢɸ ɪɚɡ-
ɪɟɲɟɧɢɹ ɤɨɧɬɟɤɫɬɚ, ɱɬɨɛɵ ɢɧɮɨɪɦɢɪɨɜɚɬɶ ɤɨɦɩɢɥɹɬɨɪ ɨ ɩɪɢɧɚɞɥɟɠɧɨɫɬɢ
ɮɭɧɤɰɢɢ ɤ ɤɥɚɫɫɭ. Ɇɟɬɨɞɵ ɤɥɚɫɫɚ TPoint ɦɨɠɧɨ ɨɩɢɫɚɬɶ ɬɚɤ:
     void TPoint::movePoint(int newx, int newy)
        {x=newx; y=newy;}
     void TPoint::relmove(int dx, int dy)
        {x+=dx; y+=dy;}
    ɑɬɨɛɵ ɜɵɩɨɥɧɢɬɶ ɧɚɱɚɥɶɧɭɸ ɢɧɢɰɢɚɥɢɡɚɰɢɸ ɤɨɦɩɨɧɟɧɬ-ɞɚɧɧɵɯ, ɩɪɢ
ɫɨɡɞɚɧɢɢ ɩɟɪɟɦɟɧɧɵɯ ɨɛɴɟɤɬɧɨɝɨ ɬɢɩɚ ɜ ɨɩɢɫɚɧɢɟ ɬɢɩɚ ɜɤɥɸɱɚɸɬɫɹ ɫɩɟ-
ɰɢɚɥɶɧɵɟ ɦɟɬɨɞɵ-ɤɨɧɫɬɪɭɤɬɨɪɵ. ɂɦɹ ɤɨɧɫɬɪɭɤɬɨɪɚ ɫɨɜɩɚɞɚɟɬ ɫ ɢɦɟɧɟɦ
ɬɢɩɚ, ɤɨɧɫɬɪɭɤɬɨɪ ɧɟ ɜɨɡɜɪɚɳɚɟɬ ɧɢɤɚɤɨɝɨ ɡɧɚɱɟɧɢɹ ɢ ɞɥɹ ɧɟɝɨ ɧɟ ɭɤɚɡɵɜɚ-
ɟɬɫɹ ɬɢɩ ɜɨɡɜɪɚɳɚɟɦɨɝɨ ɡɧɚɱɟɧɢɹ. Ⱦɥɹ ɪɚɫɫɦɨɬɪɟɧɧɨɝɨ ɜɵɲɟ ɤɥɚɫɫɚ
TPoint ɦɨɠɧɨ ɛɵɥɨ ɨɛɨɣɬɢɫɶ ɛɟɡ ɤɨɧɫɬɪɭɤɬɨɪɚ ɢ ɢɫɩɨɥɶɡɨɜɚɬɶ ɞɥɹ ɢɧɢ-
ɰɢɚɥɢɡɚɰɢɢ ɦɟɬɨɞ movePoint. Ɋɚɫɫɦɨɬɪɢɦ ɜ ɤɚɱɟɫɬɜɟ ɩɪɢɦɟɪɚ ɤɥɚɫɫ
TRect, ɨɩɢɫɵɜɚɸɳɢɣ ɩɪɹɦɨɭɝɨɥɶɧɢɤ ɫɨ ɫɬɨɪɨɧɚɦɢ, ɩɚɪɚɥɥɟɥɶɧɵɦɢ ɨɫɹɦ
ɤɨɨɪɞɢɧɚɬ:
     enum Boolean {FALSE, TRUE};
     class TRect
        {

                                   42