Защита внутреннего устройства класса...183 

We use cookies. Read the Privacy and Cookie Policy

Ключевое слово protected позволяет исключить возможность установки gpa равным не допустимому для этой величины значению. Внешнее приложение сможет добавить курс, но не сможет изменить значение среднего балла непосредственно. Если имеется необходимость непосредственного изменения значения gpa, класс может предоставить открытую функцию, предназначенную для этой цели, например:

    class Student

    {

      public :

        /* grade — делает то же, что и раньше */

        float grade( )

        {

        return gpa ;

        }

        /* Даём возможность изменения средней оценки */

            float grade( float newGPA )

            {

                float oldGPA = gpa ;

                /* Проверяем допустимость значения */

                if ( newGPA > 0 && newGPA <= 4.0 )

                {

                    gpa = newGPA ;

                }

                return oldGPA ;

            }

        /* ...всё остальное остаётся без изменений */

        protected :

        int semesterHours ; /* Количество прослушанных часов */

        float gpa ;

    } ;

_________________

183 стр. Глава 15. Защищённые члены класса: не беспокоить!

Добавление новой функции grade( float ) позволяет внешним приложениям изменять содержимое gpa. Заметьте, что класс всё равно не позволяет внешним функциям полностью контролировать содержимое своих защищённых членов. Внешнее приложение не может присвоить gpa любое значение, а только то, которое лежит в диапазоне между 0 и 4.0.

Теперь класс Student обеспечивает внешний доступ к своим внутренним членам, одновременно не позволяя присвоить им недопустимое значение.