Содержание
- 2. Контакты: [email protected] http://vk.com/kirill.surkov
- 3. Литература Данная презентация служит методикой изучения предмета и содержит основные понятия ООП и их представление на
- 4. Базовые понятия структурного программирования Переменная – ячейка данных Тип данных – допустимые значения и операции переменной
- 5. Модуль Модуль – единица разработки, применения и поставки. public static class Helper // модуль { public
- 6. Разграничение доступа к модулям Разграничение доступа к модулю осуществляется с помощью ключевых слов: public – доступ
- 7. Объект – динамический модуль Объект – динамический модуль, у которого может быть много экземпляров. Описание динамического
- 8. Исключение Исключение – событие и объект с информацией об ошибке. Исключение создается: Аппаратно – в результате
- 9. Обработка исключений Обработка исключения: try { // операторы, подверженные исключениям } catch { // операторы обработки
- 10. Классификация исключений Распознавание класса исключения: try { // арифметические вычисления } catch (DivideByZeroException e) { //
- 11. Защита ресурсов от исключений Защита ресурсов от исключения: // запрос ресурса try { // работа с
- 12. Защита ресурсов от исключений С помощью оператора using: using (var stream = new FileStream(...)) { stream.Read(buffer,
- 13. Базовые понятия объектно-ориентированного программирования Класс – тип данных для создания объектов Объект – экземпляр класса Метод
- 14. Класс и объект Класс – тип данных для создания объектов: public class DelimitedReader { public void
- 15. Метод Метод: public class DelimitedReader { public void AssignFields() { FileName = "MyFile.csv"; this.Delimiter = ';';
- 16. Конструктор и деструктор Конструктор и деструктор – особые методы: public class DelimitedReader { public DelimitedReader(string fileName,
- 17. Свойство Свойство – виртуальное поле: public class DelimitedReader { public bool Active { get { return
- 18. Свойство Свойство с автоматически создаваемым полем для него: public class DelimitedReader { public char Delimiter {
- 19. Индексатор Индексатор – особое свойство, предоставляющее доступ к объекту как к массиву: public class DelimitedReader {
- 20. Наследование – расширение класса Базовая абстракция объекта для чтения текста в табличном виде: public class TableReader
- 21. Наследование – расширение класса Расширение базового класса для чтения таблиц формата TXT: public class FixedReader :
- 22. Наследование – расширение класса Смысл расширения типа заключается в том, чтобы определить переменную базового типа и
- 23. Наследование – контроль и приведение типа Контроль типа осуществляется с помощью оператора is: TableReader reader; ...
- 24. Базовый класс Object Базовый класс System.Object содержит общие для всех объектов методы: namespace System { public
- 25. Виртуальный метод Виртуальный метод – переопределяемый в производных классах метод. Вызов виртуального метода осуществляется в соответствии
- 26. Механизм вызова виртуального метода Схема вызова obj.ToString(); // obj ссылается на объект класса Point Сегмент стека
- 27. Абстрактный виртуальный метод Абстрактный метод – это виртуальный метод без реализации. Для такого метода в таблице
- 28. Динамический виртуальный метод В некоторых языках программирования разновидностью виртуального метода является динамический метод: public class TableReader
- 29. Виртуальное свойство Свойство можно сделать виртуальным. Тогда в производных классах перекрываются его методы чтения и записи:
- 30. Запрет на расширение Наследование от класса можно запретить с помощью ключевого слова sealed – «запечатанный». «Запечатывание»
- 31. Делегат – ссылка на метод Можно создать процедурную переменную, содержащую адрес метода. Предварительно для такой переменной
- 32. Пример применения делегата public delegate void NextLineDelegate(); public class DelimitedReader { private NextLineDelegate fNextLineDelegate; public DelimitedReader(string
- 33. Событие – список делегатов Бывает необходим список переменных-делегатов для уведомления целого множества объектов. Он называется событием.
- 34. Пример применения события public delegate void NextLineDelegate(); public class DelimitedReader { public event NextLineDelegate NextLineEvent; public
- 35. Принятый формат для событий Для событий существует удобный стандартный тип-делегат, который решено применять для всех событий:
- 36. Обновленный пример применения события public class DelimitedReader { public event EventHandler NextLineEvent; public DelimitedReader(string fileName) {
- 37. Методы регистрации события Определяя событие, можно указать методы, которые будут вызываться при добавлении делегата в список
- 38. Интерфейс = объект – реализация Из класса TableReader можно выделить программный интерфейс: public interface ITableReader {
- 39. Интерфейс Интерфейс не может содержать поля, конструкторы, деструктор. Все элементы интерфейса по определению являются общедоступными (public)
- 40. Интерфейс Объект может поддерживать несколько интерфейсов, что эффективно заменяет множественное наследование: Object TableReader FixedReader DelimitedReader IDisposable
- 41. Интерфейс Объект может поддерживать несколько интерфейсов, что эффективно заменяет множественное наследование: public class TableReader : Object,
- 42. Механизм вызова метода через интерфейс Схема вызова intf.NextLine(); // intf ссылается на объект TableReader Сегмент стека
- 43. Шаблон – параметризованный класс Можно определить класс, параметризованный типом данных. Такой класс называют шаблоном или обобщенным
- 44. Шаблон При описании шаблона можно ограничить возможные значения параметра-типа: public class List where T: ListItem {
- 45. Атрибут – метаданные Атрибуты – это метаданные, которые можно назначать элементам программы. Эти метаданные представляются как
- 46. Атрибут – механизм рефлексии С помощью механизма рефлексии для каждого элемента программы – класса, поля, свойства,
- 47. Дополнительные понятия Переменная с непостоянным типом значений Анонимная функция
- 48. Переменная с непостоянным типом значений Для поддержки скриптовых языков в язык C# внесли возможность создавать переменные
- 49. Анонимная функция public delegate int FunctionDelegate(int x); public class Program { public void Test() { CallFunction(this.Negate);
- 50. Анонимная функция Вместо вручную объявленного делегата: public delegate int FunctionDelegate(int x); можно использовать готовый шаблон: public
- 51. Анонимная функция Создадим процедурную переменную, которой присвоим ссылку на анонимную функцию: Func func = (int x)
- 52. Приемы программирования Итератор – абстрактный продвигаемый вперед указатель на элемент контейнера Одиночка – объект, создаваемый в
- 53. Итератор (Iterator/Enumerator) Итератор – абстрактный продвигаемый вперед указатель на элемент контейнера: public interface IEnumerator { object
- 54. Итератор Для удобства пользования итератором существует оператор foreach: public static void Test(List args) { foreach (string
- 55. Итератор Если функция возвращает значение типа IEnumerable, то такую функцию можно сделать итератором: public static void
- 56. Одиночка (Singleton) Одиночка – объект, создаваемый в единственном экземпляре. Пример – статическое (static) поле класса, инициализированное
- 57. Одиночка public class Config { private static volatile Config instance = null; private static readonly object
- 58. Заместитель Прокси (Proxy) или Суррогат (Surrogate) – легковесный объект-заместитель, перенаправляющий вызовы к замещаемому тяжеловесному объекту. Обертка
- 59. Прокси (Proxy) / Суррогат (Surrogate) Прокси (Proxy) или Суррогат (Surrogate) – легковесный объект-заместитель, перенаправляющий вызовы к
- 60. Прокси / Суррогат public interface IWebClient { void Request(); } public class WebClient : IWebClient {
- 61. Прокси / Суррогат Прокси (Proxy) – легковесный объект-заместитель, перенаправляющий вызовы к замещаемому тяжеловесному объекту (обычно через
- 62. Обертка (Wrapper) / Декоратор (Decorator) Обертка (Wrapper) или Декоратор (Decorator) – объект-заместитель, содержащий в себе замещаемый
- 63. Обертка (Wrapper) / Декоратор (Decorator) Обертка (Wrapper) или Декоратор (Decorator) – объект-заместитель, содержащий в себе замещаемый
- 64. Адаптер (Adapter) Адаптер – объект, реализующий некоторый интерфейс путем обращения к другому объекту через свойственный ему
- 65. Адаптер interface IConfig { string GetValue(string key); } class DictionaryConfig : IConfig // Адаптер для Dictionary
- 66. Адаптер Адаптер – объект, реализующий некоторый интерфейс путем обращения к другому объекту через свойственный ему интерфейс.
- 67. Компоновщик (Composite) Компоновщик – объект, компонующий набор других однотипных объектов в одно целое. public class CompositeStream
- 68. Компоновщик Компоновщик – объект, компонующий набор других однотипных объектов в одно целое.
- 69. Мост (Bridge) Мост – делегирование функциональности метода другому объекту через интерфейс, чтобы иметь возможность независимо менять
- 70. Мост Мост через интерфейс создается к отдельной иерархии классов. public class LowQualityPaintDevice : IPaintDevice { public
- 71. Мост Мост – делегирование функциональности метода другому объекту через интерфейс, чтобы иметь возможность независимо менять реализацию
- 72. Наблюдатель (Observer/Listener) Наблюдатель – объект, получающий уведомления от других объектов. Наблюдатель применяется в языках программирования, не
- 73. Посетитель (Visitor) Посетитель – объект, передаваемый другому объекту для вызова своих методов. Например, в библиотеке визуальных
- 74. Фабричный метод (Factory Method) Фабричный метод – виртуальный метод, создающий объект.
- 75. Фабрика классов (Factory) Цель фабрики классов – создание объектов. Почему не создать его просто через new?
- 77. Скачать презентацию