Объектно-ориентированный язык программирования С++ в примерах. Сивохин А.В. - 15 стр.

UptoLike

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

эти поля.Открытая часть класса определяется после защищенной
(закрытой) части и начинается с ключевого слова public,за ко-
торым следует двоеточие.Обычно в открытой части записываются
только функции доступа.Порожденный класс получает доступ к
открытой части базового класса только после указания в его
определении слова public перед именем базового класса.Други-
ми словами,если это слово не задано,то порожденный класс ли-
шается какой бы то ни было возможности обращаться к полям
данных или использовать функции доступа базового класса.В
этом случае,доступ к полям и функциям базового класса обеспе-
чивается специальной идентификацией,когда к основному имени
добавляется префикс - имя базового класса и два двоеточия.
В рассмотренном примере был еще один недостаток,нарушающий
дисциплину объектно-ориентированного программирования:конст-
руктор порожденного класса Point производил инициализацию по-
лей базового класса.В языке C++ имеется для этих целей специ-
альный вызов конструктора базового класса в определении кон-
структора производного класса.Это обеспечивает гибкость про-
граммы,так как изменения в способе инициализации полей базо-
вого класса никак не отразятся на производных классах,которых
может быть несколько.
С учетом сделанных замечаний рассматриваемый пример приоб-
ретает следующий вид:
class Location /*-позиция: */
{ int x,y;/*-координаты точки экрана; */
public: /*-открытая часть класса: */
Location(int x,int y) /*-конструктор класса; */
{ this->x=x; /*-инициализация абсциссы; */
this->y=y; /*-инициализация ординаты; */
}
~Location() {} /*-пустой деструктор класса; */
int GetX() { return x; } /*-возвращает абсциссу; */
int GetY() { return y; } /*-возвращает ординату; */
void Print()/*-печать координат точек экрана; */
{ cout<<"\nx="<<x;/*-печать абсциссы; */
cout<<" y="<<y;/*-печать ординаты; */
}
};/*-конец определения класса позиция; */
15
эти поля.Открытая часть класса определяется после защищенной
(закрытой) части и начинается с ключевого слова public,за ко-
торым следует двоеточие.Обычно в открытой части записываются
только функции доступа.Порожденный класс получает доступ к
открытой части базового класса только после указания в его
определении слова public перед именем базового класса.Други-
ми словами,если это слово не задано,то порожденный класс ли-
шается какой бы то ни было возможности обращаться к полям
данных или использовать функции доступа базового класса.В
этом случае,доступ к полям и функциям базового класса обеспе-
чивается специальной идентификацией,когда к основному имени
добавляется префикс - имя базового класса и два двоеточия.
  В рассмотренном примере был еще один недостаток,нарушающий
дисциплину объектно-ориентированного программирования:конст-
руктор порожденного класса Point производил инициализацию по-
лей базового класса.В языке C++ имеется для этих целей специ-
альный вызов конструктора базового класса в определении кон-
структора производного класса.Это обеспечивает гибкость про-
граммы,так как изменения в способе инициализации полей базо-
вого класса никак не отразятся на производных классах,которых
может быть несколько.
  С учетом сделанных замечаний рассматриваемый пример приоб-
ретает следующий вид:
  class Location /*-позиция:                                       */
        { int x,y;/*-координаты точки экрана;                      */
    public: /*-открытая часть класса:                              */
            Location(int x,int y) /*-конструктор класса;           */
                   { this->x=x;       /*-инициализация абсциссы;   */
                       this->y=y;     /*-инициализация ординаты;   */
                   }
         ~Location() {} /*-пустой деструктор класса;               */
      int GetX() { return x; } /*-возвращает абсциссу;             */
      int GetY() { return y; } /*-возвращает ординату;             */
     void Print()/*-печать координат точек экрана;                 */
                  { cout<<"\nx="<