Интерфейсы Лекция 4. Реализуйте очередь в виде списка, содержащую комплексные числа Реализуйте методы void Enqueue(Complex с ) – помещает число в очередь.

Презентация:



Advertisements
Похожие презентации
Интерфейсы Обобщения ( шаблоны ) Лекция 4. Интерфейсы Обобщения.
Advertisements

Обобщения ( шаблоны ) Лекция 5. Тип, метод или интерфейс параметризованный другим типом Обобщенный тип Тип ( класс, структура ), который параметризован.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Высокоуровневые методы информатики и программирования Лекция 14 Интерфейсы.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Обобщения ( generics) Обобщения – это классы, структуры, интерфейсы и методы, в которых некоторые типы сами являются параметрами. Эти типы перечисляются.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Прикладное программирование кафедра прикладной и компьютерной оптики Наследование.
Наследование time time_with_sec В чем преимущества наследования? Наследование кода – поля, метод inc Появилось два класса с которыми точно можно обращаться.
Лекция 8. Введение в ООП. Часть 1 Красс Александр СПбГУ ИТМО, 2008.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Коллекции классов Лекция 12. С помощью коллекций вместо создания структур данных программист использует готовые структуры данных, не заботясь об их реализации.
Наследование. Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся.
ИТЕРАТОРЫ И LINQ Лекция 1. Интерфейс IEnumerable и IEnumerator Любая коллекция реализует интерфейс IEnumerable. public interface IEnumerable : IEnumerable.
Особенности C# Индексаторы, события, частичные методы, расширяющие методы, сборщик мусора DraggonZ.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Транксрипт:

Интерфейсы Лекция 4

Реализуйте очередь в виде списка, содержащую комплексные числа Реализуйте методы void Enqueue(Complex с ) – помещает число в очередь ( в конец ) Complex Dequeue() – получает число из начала очереди и удаляет его из очереди Complex Peek() – возвращает число, находящееся в начале очереди int Count() – возвращает кол - во элементов в очереди void Print() - метод, распечатывающий содержимое очереди. Где Complex – класс комплексных чисел, со свойствами Re и Im и переопределённым методом ToString() * Не разрешается использовать классы из пространства System.Collections и его производных

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

Объявление интерфейса interface [attributes] [modifiers] interface interface_name [: base_interfaces] { interface_body } Пример объявления интерфейса public interface IDisposable { void Dispose(); } public interface IPointy { byte Points {get;} int GetNumberOfPoints(); }

Интерфейс может содержать следующие члены Методы Свойства Индексаторы События Не могут содержать поля Не могут содержать реализацию Члены интерфейса не могут быть статическими Члены интерфейса не могут иметь модификаторов Члены интерфейса всегда public

Классы и структуры могут реализовать интерфейсы public class Circle2d : Ellipse2d, ICloneable Базовый класс должен идти первым в списке, а за ним список реализуемых интерфейсов. Можно реализовать одновременно несколько интерфейсов Класс, реализующий интерфейс : Либо реализует все его методы Либо объявляет их ( и себя ) абстрактными

Неявная реализация интерфейса Записывается короткое ( как обычно ) имя каждого метода, свойства и т. д. public object Clone() { … } Доступность члена извне : Метод доступен как обычноperemen.Clone() Метод доступен и через интерфейс (( ICloneable)peremen).Clone() IDisposable classForDispose = ( IDisposable)peremen; classForDispose.Dispose() Явная (explicit) реализация интерфейса Записывается квалифицированное имя каждого метода, свойства и т. д. ( т. е. с указанием интерфейса ) object ICloneable.Clone() { … } Метод доступен только через интерфейс (( ICloneable)peremen).Clone() Используется при наличии конфликта Не указывается модификатор доступа. Он неявно public

Привязка к не виртуальным методам Производному классу, чтобы сменить реализацию, требуется самому реализовать интерфейс Привязка к виртуальным методам Производным классам достаточно просто переопределить виртуальный метод, чтобы сменить реализацию

Интерфейсы могут наследоваться от других интерфейсов. Производный интерфейс включает в себя все из базовых интерфейсов Тип ( класс, структура ), реализующие производный интерфейс должен реализовать также и все базовые интерфейсы public interface IList : ICollection, IEnumerable {….} Передача интерфейсов в качестве параметров Метод принимает любой тип, реализующий данный интерфейс public void GetShape(IDrawable shape); Интерфейсы в качестве возвращаемых параметров Метод возвращает некий тип, который реализует данный интерфейс public IDrawable GetShape(); I В.NET все существующие интерфейсы начинаются с I

Абстрактные классы и интерфейсы обеспечивают абстракцию Абстрактные классы могут содержать реализацию, интерфейсы – нет Интерфейсы могут содержать только методы, свойства, события и индексаторы Все члены интерфейса – public. Это открытый контракт Используйте абстрактные классы, если : Требуется определить определенную функциональность, которую могут использовать все наследники Производный класс является базовым Используйте интерфейсы Производный класс реализует интерфейс Требуется множественное наследование

ICloneable Определяет единственный метод object Clone() Позволяет выполнять копирование объектов IDisposable Определяет единственный метод Dispose() Реализуйте этот метод, если требуется освобождение внешних ресурсов Файлы, соединения и т. д. IComparable – используется при сортировках при сравнении 2 элементов IEnumerable, IEnumerable, IEnumerator, IEnumerator Позволяют итерировать по коллекции IDictionary, IList, ICollection Интерфейсы реализуемые коллекциями

Интерфейсы

Реализуйте абстрактный класс Shape, содержащий метод Draw(), якобы рисующий фигуру ( вывод строки на экран ) Создайте классы его потомков Triangle, Hexagon, Circle, Sphere Создайте интерфейсы IPoint, со свойством Point, выдающим количество точек в фигуре. IDrawable, с методом Draw(), якобы рисующем фигуру ( вывод строки на экран ) Реализуйте IPoint для Triangle и Hexagon IDrawable для Triangle ( не явно ) и Sphere ( явно ) В основном классе : Создайте метод AnalyzeShape(), принимающий Shape и распечатывающий, если возможно, кол - во точек в фигуре, и вызывающий метод Draw напрямую и через интерфейс. В методе Main создайте массив из Shape с разными фигурами и проанализируйте их вызвав метод AnalyzeShape()