Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на вопросы_2003.doc
Скачиваний:
7
Добавлен:
16.04.2019
Размер:
275.46 Кб
Скачать

53. Основные понятия ооп.

ООП — это целый набор концепций и идей, позволяющих осмыслить задачу, стоящую при разработке компьютерной программы, а затем найти путь к ее решению более понятным, а значит, и более эффективным способом.

Достоинства ООП:

1,использование при программировании понятий, близких к предметной области;

2,возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы;

3,возможность многократного использования кода за счет наследования;

4,сравнительно простая возможность модификации программ;

5,возможность создания и использования библиотек объектов.

язык может называться объектно-ориентированным, если в нем реализованы три концепции:

инкапсуляция, наследование и полиморфизм.

Инкапсуляция- это возможность скрыть внутреннее устройство объекта от его пользователей, предоставив через интерфейс доступ только к тем членам объекта, с которыми клиенту разрешается работать напрямую.

Наследованием называют возможность при описании класса указывать на его происхождение от другого класса. Наследование позволяет создать новый класс, в основу которого положен существующий. В полученный таким образом класс можно внести свои изменения, а затем создать новые объекты данного типа

Полиморфизм - это функциональная возможность, позволяющая старому коду вызвать новый. Это свойство ООП, пожалуй, наиболее ценно, поскольку дает вам возможность расширять и совершенствовать свою систему, не затрагивая существующий код.

54. Конструкторы. Параметр this. Ключевое слово this.

Конструктором называется группировка кода, которой передаётся управление

при создании объекта. Синтаксис объявления конструктора аналогичен обявлению

метода. Те же спецификаторы доступа, имя, список параметров. Особенности

конструктора заключаются в том, что:

􀂃 конструктор НЕ ИМЕЕТ НИКАКОГО спецификатора возвращаемого даже void,

􀂃 имя конструктора полностью совпадает с именем класса или структуры,

􀂃 в классе и в структуре можно объявлять множество вариантов конструкторов.

Они должны отличаться списками параметров. В структуре невозможно объявить

конструктор с пустым списком параметров,

􀂃 не существует выражения вызова для конструктора, управление в конструктор

передаётся посредством выполнения специальной операции new.

this в контексте конструктора:

Конструктор не вызывается. Передача управления конструктору осуществляется

при выполнении операции new.

this в контексте конструктора обеспечивает в C# передачу управления

от конструктора к конструктору. Таким образом, программист освобождается от

необходимости повторного кодирования алгоритмов инициализации для каждого из

вариантов конструктора.

55. Интерфейсы. Правила использования.

Для реализации интерфейса в классе должны быть предоставлены тела (т.е. кон­кретные реализации) методов, описанных в этом интерфейсе. Каждому классу предо­ставляется полная свобода для определения деталей своей собственной реализации интерфейса. Следовательно, один и тот же интерфейс может быть реализован в двух классах по-разному. Тем не менее в каждом из них должен поддерживаться один и тот же набор методов данного интерфейса. А в том коде, где известен такой интерфейс, могут использоваться объекты любого из этих двух классов, поскольку интерфейс для всех этих объектов остается одинаковым. Благодаря поддержке интерфейсов в С# мо­жет быть в полной мере реализован главный принцип полиморфизма: один интер­фейс — множество методов.

Интерфейсы объявляются с помощью ключевого слова interface. Ниже приведе­на упрощенная форма объявления интерфейса.

interfaceимя{

возвращаемый_тип имя_метода1 (список_параметров) ;

возвращаемый_тип имя_метода2 (список_параметров) ;

// ...

возвращаемый_тип имя_методаN(список_параметров} ; }

где имя — это конкретное имя интерфейса. В объявлении методов интерфейса ис­пользуются только их возвращаемый_тип и сигнатура. Они, по существу, являются абстрактными методами. Как пояснялось выше, в интерфейсе не может быть никакой реализации. Поэтому все методы интерфейса должны быть реализованы в каждом классе, включающем в себя этот интерфейс. В самом же интерфейсе методы неявно считаются открытыми, поэтому доступ к ним не нужно указывать явно.

Как только интерфейс будет определен, он может быть реализован в одном или не­скольких классах. Для реализации интерфейса достаточно указать его имя после име­ни класса, аналогично базовому классу. Ниже приведена общая форма реализации интерфейса в классе.

сlаssимя_ класса : имя_интерфейса {

/ / тело класса }

где имя_интерфейса — это конкретное имя реализуемого интерфейса. Если уж ин­терфейс реализуется в классе, то это должно быть сделано полностью. В частности, реализовать интерфейс выборочно и только по частям нельзя.