Лабораторная работа №3 С# Наследование
Оценка 4.9

Лабораторная работа №3 С# Наследование

Оценка 4.9
Лабораторные работы
docx
информатика
Взрослым
04.04.2018
Лабораторная работа №3 С# Наследование
В предыдущих лабораторных работах мы считали, что все свойства и методы публичны. Однако, как было замечено ранее возможны еще два варианта private и protected. Рrivate означает, что свойство или метод доступны только внутри данного класса, protected означает, что свойство или метод доступны внутри данного класса, а также в его наследниках. Данная способность скрывать методы и свойства называется инкапсуляцией. Что такое наследник в классе. Наследник-это класс, который получает все публичные (public) и защищенные (protected) свойства и методы класса родителя, кроме конструктора. Наследование обозначается, как символ двоеточия, который ставится после имени класса, после данного символа указывается имя класса родителя.
Лабораторная работа№3.docx
Лабораторная работа №3. В предыдущих лабораторных работах мы считали, что все свойства и методы публичны. Однако, как было замечено ранее возможны еще два варианта private и protected. Рrivate означает, что свойство или метод доступны только внутри данного класса, protected означает, что свойство или метод доступны внутри данного класса, а также в его наследниках. Данная способность скрывать методы и свойства называется инкапсуляцией. Что такое наследник в классе. Наследник-это класс, который получает все публичные (public) и защищенные (protected) свойства и методы класса родителя, кроме конструктора. Наследование обозначается, как символ двоеточия, который ставится после имени класса, после данного символа указывается имя класса родителя. Класс может стать наследником, только одного родителя. Рассмотрим пример наследования, создав класс квадрат, унаследовав его от класса прямоугольник. Почему квадрат может являться наследником класса прямоугольник? class Square: Rectangle { public Square (int size, Point topleft): base (topleft, size, size) { } } Как видно из примера, наследование помогает избавится от повторов кода. Унаследовав квадрат от прямоугольника, класс квадрат автоматически получает такие свойства, как ширина, высота и координаты левого верхнего угла. Нам лишь остается реализовать конструктор. В отличие от прямоугольника у квадрата стороны равны, а значит, конструктор квадрата в отличие от конструктора прямоугольника будет принимать, только координаты угла и размер стороны. Мы можем реализовать конструктор самостоятельно, либо можем использовать конструктор класса родителя, путем вызова его, методом, изображенным в примере. Такая запись, говорит о том, что при вызове конструктора квадрата, сначала вызывается, конструктор прямоугольника с передачей в него нужных значений, а только потом выполняется код конструктора квадрата. (В нашем случае ничего не выполнится, так как дополнительного кода не указано) Какая проблема при такой реализации присутствует в классе квадрат? Свойства ширина у прямоугольника, объявлено, как публичное, а значит оно общедоступно, как для чтения, так и для записи. Так ка квадрат является наследником прямоугольника, то у него также присутствует свойство высота и оно так же общедоступно. Это приводит к тому, что мы можем квадрату задать различную ширину и высоту, что противоречит определению самого квадрата. Задание: 1. Исправить, используя механизм инкапсуляции, проблему в классе квадрат. 2. Реализовать класс круг, унаследовав его от класса эллипс. По аналогии с возникшей при реализации проблемой квадрата предотвратить возможность задания различных радиусов по оси X и Y у круга.

Лабораторная работа №3 С# Наследование

Лабораторная работа №3 С# Наследование

Лабораторная работа №3 С# Наследование

Лабораторная работа №3 С# Наследование
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
04.04.2018