🗊Презентация Язык программирования C#

Нажмите для полного просмотра!
Язык программирования C#, слайд №1Язык программирования C#, слайд №2Язык программирования C#, слайд №3Язык программирования C#, слайд №4Язык программирования C#, слайд №5Язык программирования C#, слайд №6Язык программирования C#, слайд №7Язык программирования C#, слайд №8Язык программирования C#, слайд №9Язык программирования C#, слайд №10Язык программирования C#, слайд №11Язык программирования C#, слайд №12Язык программирования C#, слайд №13Язык программирования C#, слайд №14Язык программирования C#, слайд №15Язык программирования C#, слайд №16Язык программирования C#, слайд №17Язык программирования C#, слайд №18Язык программирования C#, слайд №19Язык программирования C#, слайд №20Язык программирования C#, слайд №21Язык программирования C#, слайд №22Язык программирования C#, слайд №23Язык программирования C#, слайд №24Язык программирования C#, слайд №25Язык программирования C#, слайд №26Язык программирования C#, слайд №27Язык программирования C#, слайд №28Язык программирования C#, слайд №29Язык программирования C#, слайд №30Язык программирования C#, слайд №31Язык программирования C#, слайд №32Язык программирования C#, слайд №33Язык программирования C#, слайд №34Язык программирования C#, слайд №35Язык программирования C#, слайд №36Язык программирования C#, слайд №37Язык программирования C#, слайд №38Язык программирования C#, слайд №39Язык программирования C#, слайд №40Язык программирования C#, слайд №41Язык программирования C#, слайд №42Язык программирования C#, слайд №43Язык программирования C#, слайд №44Язык программирования C#, слайд №45Язык программирования C#, слайд №46Язык программирования C#, слайд №47Язык программирования C#, слайд №48Язык программирования C#, слайд №49Язык программирования C#, слайд №50Язык программирования C#, слайд №51Язык программирования C#, слайд №52Язык программирования C#, слайд №53Язык программирования C#, слайд №54Язык программирования C#, слайд №55Язык программирования C#, слайд №56Язык программирования C#, слайд №57Язык программирования C#, слайд №58Язык программирования C#, слайд №59Язык программирования C#, слайд №60Язык программирования C#, слайд №61Язык программирования C#, слайд №62Язык программирования C#, слайд №63Язык программирования C#, слайд №64Язык программирования C#, слайд №65Язык программирования C#, слайд №66Язык программирования C#, слайд №67Язык программирования C#, слайд №68Язык программирования C#, слайд №69Язык программирования C#, слайд №70Язык программирования C#, слайд №71Язык программирования C#, слайд №72Язык программирования C#, слайд №73Язык программирования C#, слайд №74Язык программирования C#, слайд №75Язык программирования C#, слайд №76Язык программирования C#, слайд №77Язык программирования C#, слайд №78Язык программирования C#, слайд №79Язык программирования C#, слайд №80Язык программирования C#, слайд №81Язык программирования C#, слайд №82Язык программирования C#, слайд №83Язык программирования C#, слайд №84Язык программирования C#, слайд №85Язык программирования C#, слайд №86Язык программирования C#, слайд №87Язык программирования C#, слайд №88Язык программирования C#, слайд №89Язык программирования C#, слайд №90Язык программирования C#, слайд №91Язык программирования C#, слайд №92Язык программирования C#, слайд №93Язык программирования C#, слайд №94Язык программирования C#, слайд №95Язык программирования C#, слайд №96Язык программирования C#, слайд №97Язык программирования C#, слайд №98Язык программирования C#, слайд №99Язык программирования C#, слайд №100Язык программирования C#, слайд №101Язык программирования C#, слайд №102Язык программирования C#, слайд №103Язык программирования C#, слайд №104Язык программирования C#, слайд №105Язык программирования C#, слайд №106Язык программирования C#, слайд №107Язык программирования C#, слайд №108Язык программирования C#, слайд №109Язык программирования C#, слайд №110Язык программирования C#, слайд №111Язык программирования C#, слайд №112Язык программирования C#, слайд №113Язык программирования C#, слайд №114Язык программирования C#, слайд №115Язык программирования C#, слайд №116Язык программирования C#, слайд №117Язык программирования C#, слайд №118Язык программирования C#, слайд №119Язык программирования C#, слайд №120Язык программирования C#, слайд №121Язык программирования C#, слайд №122Язык программирования C#, слайд №123Язык программирования C#, слайд №124Язык программирования C#, слайд №125Язык программирования C#, слайд №126Язык программирования C#, слайд №127Язык программирования C#, слайд №128Язык программирования C#, слайд №129Язык программирования C#, слайд №130Язык программирования C#, слайд №131Язык программирования C#, слайд №132Язык программирования C#, слайд №133Язык программирования C#, слайд №134Язык программирования C#, слайд №135Язык программирования C#, слайд №136Язык программирования C#, слайд №137Язык программирования C#, слайд №138Язык программирования C#, слайд №139Язык программирования C#, слайд №140Язык программирования C#, слайд №141Язык программирования C#, слайд №142

Содержание

Вы можете ознакомиться и скачать презентацию на тему Язык программирования C#. Доклад-сообщение содержит 142 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Язык программирования C#, слайд №1
Описание слайда:

Слайд 2





Содержание 1
История создания C#
Связь с  .Net Framework
ООП. Характерные черты ООП
Структура программы C#
Консольный ввод и вывод
Литералы
Типы данных
Операторы
Инструкции управления
Классы
Поле
Создание объекта
Инкапсуляция
Описание слайда:
Содержание 1 История создания C# Связь с .Net Framework ООП. Характерные черты ООП Структура программы C# Консольный ввод и вывод Литералы Типы данных Операторы Инструкции управления Классы Поле Создание объекта Инкапсуляция

Слайд 3





Содержание 2
Методы
Свойство
Конструктор
Параметризированный конструктор
Сбор "мусора"
Наследование
Статический класс
Статический метод
Обработка ошибок и исключений
Строки
Массивы: одномерные, многомерные, ступенчатые
Массивы объектов
Перечисления
Коллекции
Описание слайда:
Содержание 2 Методы Свойство Конструктор Параметризированный конструктор Сбор "мусора" Наследование Статический класс Статический метод Обработка ошибок и исключений Строки Массивы: одномерные, многомерные, ступенчатые Массивы объектов Перечисления Коллекции

Слайд 4





Содержание 3
Структуры
Полиморфизм
Перегрузка методов
Необязательные и именованные аргументы
Передача объектов методам
Передача аргументов по значению и по ссылке
Использование ref- и out-параметров
Использование переменного количества аргументов
Возвращение методами массивов
Вызов конструкторов базового класса
Виртуальные методы и их переопределение
Методы расширения
Абстрактные классы и методы
Предотвращение наследования с помощью ключевого слова sealed
Интерфейсы
Описание слайда:
Содержание 3 Структуры Полиморфизм Перегрузка методов Необязательные и именованные аргументы Передача объектов методам Передача аргументов по значению и по ссылке Использование ref- и out-параметров Использование переменного количества аргументов Возвращение методами массивов Вызов конструкторов базового класса Виртуальные методы и их переопределение Методы расширения Абстрактные классы и методы Предотвращение наследования с помощью ключевого слова sealed Интерфейсы

Слайд 5





Что почитать
Герберт Шилдт - C# 4.0. Полное руководство, 2011
MSDN. Visual C# 
Казанский А. А. Объектно-ориентированное программирование на языке Microsoft Visual С# в среде разработки Microsoft Visual Studio 2008 и .NET Framework 4.3 : Учебное пособие и практикум, Москва : Московский государственный строительный университет, ЭБС АСВ, 2013
Культин Н. Б. Microsoft Visual C# в задачах и примерах. – СПб.: БХВ-Петербург, 2009. – 320 с.
Описание слайда:
Что почитать Герберт Шилдт - C# 4.0. Полное руководство, 2011 MSDN. Visual C# Казанский А. А. Объектно-ориентированное программирование на языке Microsoft Visual С# в среде разработки Microsoft Visual Studio 2008 и .NET Framework 4.3 : Учебное пособие и практикум, Москва : Московский государственный строительный университет, ЭБС АСВ, 2013 Культин Н. Б. Microsoft Visual C# в задачах и примерах. – СПб.: БХВ-Петербург, 2009. – 320 с.

Слайд 6





История создания C#
С и С++ являются платформо-зависимыми языками, что мешало переносимости программ. Java, который начал разрабатываться в 1991г., стал платформо-независимым языком 
Однако Java:
 не имеет  межъязыковой возможности взаимодействия (cross-language interoperability) программных и аппаратных изделий разных поставщиков, или многоязыкового программирования (mixed-language programming)
не достигнута полная интеграция с платформой Windows
Microsoft стала разрабатывать С# в конце 1990-х и стал частью общей .NET-стратегии Microsoft. Впервые он увидел свет в качестве альфа-версии в середине 2000 года
Описание слайда:
История создания C# С и С++ являются платформо-зависимыми языками, что мешало переносимости программ. Java, который начал разрабатываться в 1991г., стал платформо-независимым языком Однако Java: не имеет межъязыковой возможности взаимодействия (cross-language interoperability) программных и аппаратных изделий разных поставщиков, или многоязыкового программирования (mixed-language programming) не достигнута полная интеграция с платформой Windows Microsoft стала разрабатывать С# в конце 1990-х и стал частью общей .NET-стратегии Microsoft. Впервые он увидел свет в качестве альфа-версии в середине 2000 года

Слайд 7





Связь С# с оболочкой .NET Framework
Описание слайда:
Связь С# с оболочкой .NET Framework

Слайд 8





Объектно-ориентированное программирование
C# неотделимо от ООП, позволяющего усовершенствовать процесс программирования 
Набор машинных инструкций в двоичном коде на передней панели компьютера (несколько сотен инструкций) 
Язык ассемблер, использующий мнемоники
 который позволил программисту писать гораздо большие и более сложные программы, используя символическое представление машинных инструкций. Языки высокого уровня (например, FORTRAN и COBOL)
Структурное программирование 
Объектно-ориентированное программирование, вобравшее в себя лучшие идеи структурного программирования и объединившее их с новыми концепциями.
Описание слайда:
Объектно-ориентированное программирование C# неотделимо от ООП, позволяющего усовершенствовать процесс программирования Набор машинных инструкций в двоичном коде на передней панели компьютера (несколько сотен инструкций) Язык ассемблер, использующий мнемоники который позволил программисту писать гораздо большие и более сложные программы, используя символическое представление машинных инструкций. Языки высокого уровня (например, FORTRAN и COBOL) Структурное программирование Объектно-ориентированное программирование, вобравшее в себя лучшие идеи структурного программирования и объединившее их с новыми концепциями.

Слайд 9





Характерные черты ООП
 
Инкапсуляция
Механизм программирования, который связывает код (действия) и данные, которыми он манипулирует, и при этом предохраняет их от вмешательства извне и неправильного использования. В объектно-ориентированном языке код и данные можно связать таким образом, что будет создан автономный черный ящик - объект. 
Основной единицей инкапсуляции в С# является класс (набор шаблонных элементов). Класс определяет форму объекта (задает данные и код). В С# класс используется для создания объектов. Объекты — это экземпляры класса. 
Код и данные, которые составляют класс, называются членами класса. Данные, определенные в классе, называются переменными экземпляра (instance variable), а код, который оперирует этими данными, — методами-членами (member method), или просто методами.
Описание слайда:
Характерные черты ООП   Инкапсуляция Механизм программирования, который связывает код (действия) и данные, которыми он манипулирует, и при этом предохраняет их от вмешательства извне и неправильного использования. В объектно-ориентированном языке код и данные можно связать таким образом, что будет создан автономный черный ящик - объект. Основной единицей инкапсуляции в С# является класс (набор шаблонных элементов). Класс определяет форму объекта (задает данные и код). В С# класс используется для создания объектов. Объекты — это экземпляры класса. Код и данные, которые составляют класс, называются членами класса. Данные, определенные в классе, называются переменными экземпляра (instance variable), а код, который оперирует этими данными, — методами-членами (member method), или просто методами.

Слайд 10





Характерные черты ООП
 
Полиморфизм
Качество, которое позволяет одному интерфейсу получать доступ к целому классу действий. 
Пример: руль автомобиля. Руль (интерфейс) остается рулем независимо от того, какой тип рулевого механизма используется в автомобиле. Поворот руля влево заставит автомобиль поехать влево независимо от типа используемого в нем рулевого управления. 
Концепцию полиморфизма часто выражают такой фразой: "один интерфейс — много методов". Это означает, что для выполнения группы подобных действий можно разработать общий интерфейс. Полиморфизм позволяет понизить степень сложности программы, предоставляя программисту возможность использовать один и тот же интерфейс для задания общего класса действий. Конкретное (нужное в том или ином случае) действие (метод) выбирается компилятором. Программисту нет необходимости делать это вручную. Его задача — правильно использовать общий интерфейс.
Описание слайда:
Характерные черты ООП   Полиморфизм Качество, которое позволяет одному интерфейсу получать доступ к целому классу действий. Пример: руль автомобиля. Руль (интерфейс) остается рулем независимо от того, какой тип рулевого механизма используется в автомобиле. Поворот руля влево заставит автомобиль поехать влево независимо от типа используемого в нем рулевого управления. Концепцию полиморфизма часто выражают такой фразой: "один интерфейс — много методов". Это означает, что для выполнения группы подобных действий можно разработать общий интерфейс. Полиморфизм позволяет понизить степень сложности программы, предоставляя программисту возможность использовать один и тот же интерфейс для задания общего класса действий. Конкретное (нужное в том или ином случае) действие (метод) выбирается компилятором. Программисту нет необходимости делать это вручную. Его задача — правильно использовать общий интерфейс.

Слайд 11





Характерные черты ООП
 
Наследование
Процесс, благодаря которому один объект может приобретать свойства другого. Благодаря наследованию поддерживается концепция иерархической классификации. В виде управляемой иерархической (нисходящей) классификации организуется большинство областей знаний. Например, яблоки Антоновка являются частью классификации яблоки, которая в свою очередь является частью класса фрукты, а тот — частью еще большего класса пища. Таким образом, класс пища обладает определенными качествами (съедобность, питательность и пр.), которые применимы и к подклассу фрукты. Помимо этих качеств, класс фрукты имеет специфические характеристики (сочность, сладость и пр.), которые отличают их от других пищевых продуктов.
Если не использовать иерархическое представление признаков, для каждого объекта пришлось бы в явной форме определить все присущие ему характеристики. Но благодаря наследованию объекту нужно доопределить только те качества, которые делают его уникальным внутри его класса, поскольку он (объект) наследует общие атрибуты своего родителя. Следовательно, именно механизм наследования позволяет одному объекту представлять конкретный экземпляр более общего класса.
Описание слайда:
Характерные черты ООП   Наследование Процесс, благодаря которому один объект может приобретать свойства другого. Благодаря наследованию поддерживается концепция иерархической классификации. В виде управляемой иерархической (нисходящей) классификации организуется большинство областей знаний. Например, яблоки Антоновка являются частью классификации яблоки, которая в свою очередь является частью класса фрукты, а тот — частью еще большего класса пища. Таким образом, класс пища обладает определенными качествами (съедобность, питательность и пр.), которые применимы и к подклассу фрукты. Помимо этих качеств, класс фрукты имеет специфические характеристики (сочность, сладость и пр.), которые отличают их от других пищевых продуктов. Если не использовать иерархическое представление признаков, для каждого объекта пришлось бы в явной форме определить все присущие ему характеристики. Но благодаря наследованию объекту нужно доопределить только те качества, которые делают его уникальным внутри его класса, поскольку он (объект) наследует общие атрибуты своего родителя. Следовательно, именно механизм наследования позволяет одному объекту представлять конкретный экземпляр более общего класса.

Слайд 12





Структура программы C#
// A Hello World! program in C#
using System;
namespace Hello World
{
class Hello 
    {
static void Main() 
        {
System.Console.WriteLine("Hello World!");
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
        }
    }
}
Описание слайда:
Структура программы C# // A Hello World! program in C# using System; namespace Hello World { class Hello { static void Main() { System.Console.WriteLine("Hello World!"); Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } }

Слайд 13





Пример создания собственного пространства имён
namespace StatisticalData  {
  class FileHandling     {
    public void Load() {}  // code to load statistical data
   }
}
 
namespace Images  {
  class FileHandling     {
    public void Load() {}  // code to load an image file
  }
}
 
class Program {
  static void Main()     {
    StatisticalData.FileHandling data = new StatisticalData.FileHandling();
    data.Load();
    Images.FileHandling image = new Images.FileHandling();
     image.Load();
  }
}
Описание слайда:
Пример создания собственного пространства имён namespace StatisticalData { class FileHandling { public void Load() {} // code to load statistical data } }   namespace Images { class FileHandling { public void Load() {} // code to load an image file } }   class Program { static void Main() { StatisticalData.FileHandling data = new StatisticalData.FileHandling(); data.Load();   Images.FileHandling image = new Images.FileHandling(); image.Load(); } }

Слайд 14





Метод Main ()
Описание слайда:
Метод Main ()

Слайд 15





Консольный ввод и вывод
Console.WriteLine() - записывает указанные данные с текущим 
признаком конца строки в стандартный выходной поток
Console.Write() - записывает текстовое представление заданного 
значения или значений в стандартный выходной поток
Console.ReadLine() - cчитывает следующую строку символов из стандартного входного потока.
Console.Read() - cчитывает cледующий символ из входного потока или значение минус единица (-1), если доступных для чтения символов не осталось.
string  str = Console.ReadLine();
Описание слайда:
Консольный ввод и вывод Console.WriteLine() - записывает указанные данные с текущим признаком конца строки в стандартный выходной поток Console.Write() - записывает текстовое представление заданного значения или значений в стандартный выходной поток Console.ReadLine() - cчитывает следующую строку символов из стандартного входного потока. Console.Read() - cчитывает cледующий символ из входного потока или значение минус единица (-1), если доступных для чтения символов не осталось. string str = Console.ReadLine();

Слайд 16





Консольный ввод и вывод
Некоторые варианты вывода данных:
Console.WriteLine(“Вывод” + “строки с использованием” + “символа” + “+.”);
На экране: Вывод строки с использованием символа +.
 
Console.WriteLine(“Текст {номер_ аргумента, минимальная_ширина: формат} Текст {номер_ аргумента, минимальная_ширина: формат} Текст”, arg1, arg2);
int year = 1066;
string battle = "Battle of Hastings";
Console.WriteLine("The {0} took place in {1}.", battle, year);
 Результат будет выглядеть следующим образом:  The Battle of Hastings took place in 1066.
 
Console.WriteLine("В феврале {0,10} или {1,5} дней.", 28, 29); // минимальная ширина первого аргумента 10 символов, второго – 5 символов
 На экране: В феврале         28 или    29 дней.
 
Console.WriteLine ("При делении 10/3 получаем: {0:#.##}", 10.0/3.0);
На экране: При делении 10/3 получаем: 3.33
 
Console.WriteLine("{0:###,###.##}", 123456.56);
На экране: 123,456.56
Описание слайда:
Консольный ввод и вывод Некоторые варианты вывода данных: Console.WriteLine(“Вывод” + “строки с использованием” + “символа” + “+.”); На экране: Вывод строки с использованием символа +.   Console.WriteLine(“Текст {номер_ аргумента, минимальная_ширина: формат} Текст {номер_ аргумента, минимальная_ширина: формат} Текст”, arg1, arg2); int year = 1066; string battle = "Battle of Hastings"; Console.WriteLine("The {0} took place in {1}.", battle, year);  Результат будет выглядеть следующим образом:  The Battle of Hastings took place in 1066.   Console.WriteLine("В феврале {0,10} или {1,5} дней.", 28, 29); // минимальная ширина первого аргумента 10 символов, второго – 5 символов  На экране: В феврале 28 или 29 дней.   Console.WriteLine ("При делении 10/3 получаем: {0:#.##}", 10.0/3.0); На экране: При делении 10/3 получаем: 3.33   Console.WriteLine("{0:###,###.##}", 123456.56); На экране: 123,456.56

Слайд 17





Литералы
Литерал  - фиксированное значение, представленное в понятной форме. 
Строковой литерал  - строка символов, заключённая в кавычки. В строковом литерале могут использоваться управляющие последовательности символов (Escape-знаки). 
Пример:
Console.WriteLine("Первая строка\nВторая строка\nТретья строка");
Console.WriteLine ("Один\tДва\tTpи") ;
Console.WriteLine (“Чeтыpe\tПять\tШecть") ;
Console.WriteLine("\"3ачем?\", спросил он.");
 
Описание слайда:
Литералы Литерал - фиксированное значение, представленное в понятной форме. Строковой литерал - строка символов, заключённая в кавычки. В строковом литерале могут использоваться управляющие последовательности символов (Escape-знаки). Пример: Console.WriteLine("Первая строка\nВторая строка\nТретья строка"); Console.WriteLine ("Один\tДва\tTpи") ; Console.WriteLine (“Чeтыpe\tПять\tШecть") ; Console.WriteLine("\"3ачем?\", спросил он.");  

Слайд 18





Литералы
Буквальный строковой литерал ( @ )

Буквальный строковой литерал ( @ ) выводит строку как есть. Пример:
 
Console.WriteLine(@"Воспользуемся табуляцией:
1		2	3	4
5		6	7	8
“);
Console.WriteLine(@"Отзыв программиста: "Мне нравится С #"");
 
На экране: 
Воспользуемся табуляцией:
1	2	3	4
5	6	7	8
Отзыв программиста: "Мне нравится С#."
Описание слайда:
Литералы Буквальный строковой литерал ( @ ) Буквальный строковой литерал ( @ ) выводит строку как есть. Пример:   Console.WriteLine(@"Воспользуемся табуляцией: 1 2 3 4 5 6 7 8 “); Console.WriteLine(@"Отзыв программиста: "Мне нравится С #"");   На экране: Воспользуемся табуляцией: 1 2 3 4 5 6 7 8 Отзыв программиста: "Мне нравится С#."

Слайд 19





Литералы
Численный литерал
Правила определения типа литерала:
целочисленным литералам присваивается наименьший целочисленный тип, который сможет его хранить, начиная с типа int. Таким образом, целочисленный литерал, в зависимости от конкретного значения, может иметь тип int, uint, long или ulong;
все литералы с плавающей точкой имеют тип double.
Для явного определения типа литерала к нему добавляется соответствующий суффикс.
Описание слайда:
Литералы Численный литерал Правила определения типа литерала: целочисленным литералам присваивается наименьший целочисленный тип, который сможет его хранить, начиная с типа int. Таким образом, целочисленный литерал, в зависимости от конкретного значения, может иметь тип int, uint, long или ulong; все литералы с плавающей точкой имеют тип double. Для явного определения типа литерала к нему добавляется соответствующий суффикс.

Слайд 20





Типы данных
С# — строго типизированный язык. Это значит, что все операции проверяются компилятором на соответствие типов. Некорректные операции не компилируются. В C# не допускается, чтобы переменная не имела типа.
Описание слайда:
Типы данных С# — строго типизированный язык. Это значит, что все операции проверяются компилятором на соответствие типов. Некорректные операции не компилируются. В C# не допускается, чтобы переменная не имела типа.

Слайд 21





Типы данных
. Типы значений
Описание слайда:
Типы данных . Типы значений

Слайд 22





Типы данных
Описание слайда:
Типы данных

Слайд 23





Типы данных
Описание слайда:
Типы данных

Слайд 24





Типы данных
Описание слайда:
Типы данных

Слайд 25





Типы данных
Описание слайда:
Типы данных

Слайд 26





Операторы
Описание слайда:
Операторы

Слайд 27





Операторы
Описание слайда:
Операторы

Слайд 28





Операторы
Описание слайда:
Операторы

Слайд 29





Операторы
Описание слайда:
Операторы

Слайд 30





Операторы
Описание слайда:
Операторы

Слайд 31





Операторы
Описание слайда:
Операторы

Слайд 32





Операторы
Описание слайда:
Операторы

Слайд 33





Операторы
Описание слайда:
Операторы

Слайд 34





Инструкции управления
Описание слайда:
Инструкции управления

Слайд 35





Инструкции выбора
Описание слайда:
Инструкции выбора

Слайд 36





Инструкции выбора
Описание слайда:
Инструкции выбора

Слайд 37





Итерационные инструкции
Описание слайда:
Итерационные инструкции

Слайд 38





Итерационные инструкции
Описание слайда:
Итерационные инструкции

Слайд 39





Итерационные инструкции
Описание слайда:
Итерационные инструкции

Слайд 40





Инструкции перехода
Описание слайда:
Инструкции перехода

Слайд 41





Классы
Описание слайда:
Классы

Слайд 42





Класс
Класс - это логическая абстракция, шаблон, который определяет форму объекта. 
Он задает как данные, так и код, который оперирует этими данными и по сути, является чертежом для пользовательского типа данных. Определив класс, его можно использовать, загрузив в память. Класс, загруженный в память, называется объектом или экземпляром.  О реализации класса нет смысла говорить до тех пор, пока не создан объект класса, и в памяти не появилось физическое его представление. Методы и переменные, составляющие класс, называются членами класса. Каждая программа C# имеет, по крайней мере, один класс. 
Экземпляр класса создается с помощью ключевого слова C#   new.
Описание слайда:
Класс Класс - это логическая абстракция, шаблон, который определяет форму объекта. Он задает как данные, так и код, который оперирует этими данными и по сути, является чертежом для пользовательского типа данных. Определив класс, его можно использовать, загрузив в память. Класс, загруженный в память, называется объектом или экземпляром. О реализации класса нет смысла говорить до тех пор, пока не создан объект класса, и в памяти не появилось физическое его представление. Методы и переменные, составляющие класс, называются членами класса. Каждая программа C# имеет, по крайней мере, один класс. Экземпляр класса создается с помощью ключевого слова C#  new.

Слайд 43





Общая форма определения класса
class имя_класса {
// Объявление переменных экземпляров 
доступ тип переменная1;
доступ тип переменнаяN;
 
// Объявление методов
доступ тип_возврата метод1 (параметры) {
// тело метода1
}
доступ тип_возврата методM (параметры) {
// тело методаM
}
}
Описание слайда:
Общая форма определения класса class имя_класса { // Объявление переменных экземпляров доступ тип переменная1; доступ тип переменнаяN;   // Объявление методов доступ тип_возврата метод1 (параметры) { // тело метода1 } доступ тип_возврата методM (параметры) { // тело методаM } }

Слайд 44





Свойства объектов
Перечислим несколько свойств животных:
 Вид животного (Kind of animal)
 Рост (Height)
 Длина (Length)
 Количество лап (Number of legs)
 Окрас (Color)
Наличие хвоста (Has a tail)
 Является ли млекопитающим (Is a mammal)
При рассмотрении свойств этих животных мы можем присвоить значения каждому из них:
 Kind of animal = «Cat» 
 Height = 50 cm
 Length = 110 cm 
 Number of legs = 4
 Color = «Black» 
 Has tail = true 
 Is mammal = true
Описание слайда:
Свойства объектов Перечислим несколько свойств животных: Вид животного (Kind of animal) Рост (Height) Длина (Length) Количество лап (Number of legs) Окрас (Color) Наличие хвоста (Has a tail) Является ли млекопитающим (Is a mammal) При рассмотрении свойств этих животных мы можем присвоить значения каждому из них: Kind of animal = «Cat» Height = 50 cm Length = 110 cm Number of legs = 4 Color = «Black» Has tail = true Is mammal = true

Слайд 45





Поле
Описание слайда:
Поле

Слайд 46





Создание объектов
Описание слайда:
Создание объектов

Слайд 47





Инкапсуляция
Группировка членов в классы имеет не только логический смысл, она также позволяет скрывать данные и функции, которые должны быть недоступны для другого кода. Этот принцип называют инкапсуляцией. 
Спецификаторы доступа:
Описание слайда:
Инкапсуляция Группировка членов в классы имеет не только логический смысл, она также позволяет скрывать данные и функции, которые должны быть недоступны для другого кода. Этот принцип называют инкапсуляцией. Спецификаторы доступа:

Слайд 48





Инкапсуляция
Общие принципы, которыми следует руководствоваться при программировании классов
1. Члены, которые используются только внутри класса, следует определить как закрытые.
2. Данные экземпляров, которые должны находиться в пределах заданного диапазона, следует определить как закрытые, а доступ к ним обеспечить через открытые методы, выполняющие проверку вхождения в диапазон.
3. Если изменение члена может вызвать эффект, распространяющийся за пределы самого члена (т.е. действует на другие аспекты объекта), этот член следует определить как закрытый и обеспечить к нему контролируемый доступ.
4. Члены, при некорректном использовании которых на объект может быть оказано негативное воздействие, следует определить как закрытые, а доступ к ним обеспечить через открытые методы, предохраняющие эти члены от некорректного использования.
5. Методы, которые получают или устанавливают значения закрытых данных, должны быть открытыми.
6. Объявление переменных экземпляров открытыми допустимо, если нет причин делать их закрытыми.
Описание слайда:
Инкапсуляция Общие принципы, которыми следует руководствоваться при программировании классов 1. Члены, которые используются только внутри класса, следует определить как закрытые. 2. Данные экземпляров, которые должны находиться в пределах заданного диапазона, следует определить как закрытые, а доступ к ним обеспечить через открытые методы, выполняющие проверку вхождения в диапазон. 3. Если изменение члена может вызвать эффект, распространяющийся за пределы самого члена (т.е. действует на другие аспекты объекта), этот член следует определить как закрытый и обеспечить к нему контролируемый доступ. 4. Члены, при некорректном использовании которых на объект может быть оказано негативное воздействие, следует определить как закрытые, а доступ к ним обеспечить через открытые методы, предохраняющие эти члены от некорректного использования. 5. Методы, которые получают или устанавливают значения закрытых данных, должны быть открытыми. 6. Объявление переменных экземпляров открытыми допустимо, если нет причин делать их закрытыми.

Слайд 49


Язык программирования C#, слайд №49
Описание слайда:

Слайд 50





Методы
Переменные экземпляров и методы — две основные составляющие классов.
Методы —
Доступ к методам, аналогично доступу к полям класса, регулируется с помощью ключевых слов. По умолчанию все методы будут рассматриваться как private (закрытые).
доступ тип_возврата имя(список_параметров) {
// тело метода
}
Описание слайда:
Методы Переменные экземпляров и методы — две основные составляющие классов. Методы — Доступ к методам, аналогично доступу к полям класса, регулируется с помощью ключевых слов. По умолчанию все методы будут рассматриваться как private (закрытые). доступ тип_возврата имя(список_параметров) { // тело метода }

Слайд 51





Методы
Пример добавления метода в класс
// Добавление метода в класс Building.
using System;
class Building {
public int floors; // количество этажей
public int area; // общая площадь здания
public int occupants; // количество жильцов
// Отображаем значение площади, приходящейся на одного человека
public void areaPerPerson() {
Console.WriteLine(" " + area / occupants +" приходится на одного человека");
}
}
 
Описание слайда:
Методы Пример добавления метода в класс // Добавление метода в класс Building. using System; class Building { public int floors; // количество этажей public int area; // общая площадь здания public int occupants; // количество жильцов // Отображаем значение площади, приходящейся на одного человека public void areaPerPerson() { Console.WriteLine(" " + area / occupants +" приходится на одного человека"); } }  

Слайд 52





Методы
Возврат значения
Методы могут возвращать значения вызывающим их процедурам:
return значение;
Описание слайда:
Методы Возврат значения Методы могут возвращать значения вызывающим их процедурам: return значение;

Слайд 53





Методы
Использование параметров
При вызове методу можно передать одно или несколько значений. Как упоминалось выше, значение, передаваемое методу, называется аргументом. Переменная внутри метода, которая принимает значение аргумента, называется параметром.
Описание слайда:
Методы Использование параметров При вызове методу можно передать одно или несколько значений. Как упоминалось выше, значение, передаваемое методу, называется аргументом. Переменная внутри метода, которая принимает значение аргумента, называется параметром.

Слайд 54





Свойство
class TimePeriod 
{ 
 private double seconds; 
 public double Hours 
 { 
  get { 
      return seconds / 3600; 
  }
  set {
       seconds = value * 3600; 
  }
 }
}
Описание слайда:
Свойство class TimePeriod { private double seconds; public double Hours { get { return seconds / 3600; } set { seconds = value * 3600; } } }

Слайд 55





Конструктор
Очень часто встречаются классы с особым типом метода, называемым «конструктором». С точки зрения синтаксиса (правил языка) его особенность состоит в том, что имя метода-конструктора совпадает с именем класса и в объявление конструктора не включается тип возвращаемого значения. Содержательная специфика связана с предназначением конструктора — он нужен для создания (конструирования) объекта.
доступ имя_класса() {
      // тело конструктора
}
Описание слайда:
Конструктор Очень часто встречаются классы с особым типом метода, называемым «конструктором». С точки зрения синтаксиса (правил языка) его особенность состоит в том, что имя метода-конструктора совпадает с именем класса и в объявление конструктора не включается тип возвращаемого значения. Содержательная специфика связана с предназначением конструктора — он нужен для создания (конструирования) объекта. доступ имя_класса() { // тело конструктора }

Слайд 56





Параметризированный конструктор
using System;
class Building {
int floors; // количество этажей
int area; // общая площадь здания
int occupants; // количество жильцов
public Building(int f, int o) {  //добавлен параметризованный конструктор Building
floors = f;
area = areaPerPerson() ;
occupants = o;
}
// Метод возвращает площадь на одного чел.
int areaPerPerson() {
return floors *occupants;
}
// Метод возвращает макс.кол-во чел. в зданииpublic int maxOccupant(int minArea) {
return area / minArea;
}
}
 
Описание слайда:
Параметризированный конструктор using System; class Building { int floors; // количество этажей int area; // общая площадь здания int occupants; // количество жильцов public Building(int f, int o) { //добавлен параметризованный конструктор Building floors = f; area = areaPerPerson() ; occupants = o; } // Метод возвращает площадь на одного чел. int areaPerPerson() { return floors *occupants; } // Метод возвращает макс.кол-во чел. в зданииpublic int maxOccupant(int minArea) { return area / minArea; } }  

Слайд 57





Ключевое слово this
При вызове метода ему автоматически передается неявно заданный аргумент, который представляет собой ссылку на вызывающий объект (т.е. объект, для которого вызывается метод). Эта ссылка и называется ключевым словом this.
Описание слайда:
Ключевое слово this При вызове метода ему автоматически передается неявно заданный аргумент, который представляет собой ссылку на вызывающий объект (т.е. объект, для которого вызывается метод). Эта ссылка и называется ключевым словом this.

Слайд 58





Ключевое слово this
При вызове метода ему автоматически передается неявно заданный аргумент, который представляет собой ссылку на вызывающий объект (т.е. объект, для которого вызывается метод). Эта ссылка и называется ключевым словом this.
Описание слайда:
Ключевое слово this При вызове метода ему автоматически передается неявно заданный аргумент, который представляет собой ссылку на вызывающий объект (т.е. объект, для которого вызывается метод). Эта ссылка и называется ключевым словом this.

Слайд 59





Сбор "мусора" и использование деструкторов
При использовании оператора new объектам динамически выделяется память из пула свободной памяти.
Для освобождения ранее выделенной памяти в C# используется система сбора мусора (в С++ эту функцию выполняет оператор delete).
Система сбора мусора С# автоматически возвращает память для повторного использования, действуя незаметно и без вмешательства программиста. Если не существует ни одной ссылки на объект, то предполагается, что этот объект больше не нужен, и занимаемая им память освобождается. Эту (восстановленную) память снова можно использовать для размещения других объектов.
Система сбора мусора действует нерегулярно, случайным образом, во время выполнения отдельной программы. Эта система может и бездействовать: она не "включается" лишь потому, что существует один или несколько объектов, которые больше не используются в программе. Поскольку на сбор мусора требуется определенное время, динамическая система С# активизирует этот процесс только по необходимости или в специальных случаях. Таким образом, вы даже не будете знать, когда происходит сбор мусора, а когда - нет.
Описание слайда:
Сбор "мусора" и использование деструкторов При использовании оператора new объектам динамически выделяется память из пула свободной памяти. Для освобождения ранее выделенной памяти в C# используется система сбора мусора (в С++ эту функцию выполняет оператор delete). Система сбора мусора С# автоматически возвращает память для повторного использования, действуя незаметно и без вмешательства программиста. Если не существует ни одной ссылки на объект, то предполагается, что этот объект больше не нужен, и занимаемая им память освобождается. Эту (восстановленную) память снова можно использовать для размещения других объектов. Система сбора мусора действует нерегулярно, случайным образом, во время выполнения отдельной программы. Эта система может и бездействовать: она не "включается" лишь потому, что существует один или несколько объектов, которые больше не используются в программе. Поскольку на сбор мусора требуется определенное время, динамическая система С# активизирует этот процесс только по необходимости или в специальных случаях. Таким образом, вы даже не будете знать, когда происходит сбор мусора, а когда - нет.

Слайд 60





Сбор "мусора" и использование деструкторов
Деструкторы
Деструктор – метод, который вызывается непосредственно перед тем, как объект будет окончательно разрушен системой сбора мусора. 
~имя_класса() {
// код деструктора
}
Описание слайда:
Сбор "мусора" и использование деструкторов Деструкторы Деструктор – метод, который вызывается непосредственно перед тем, как объект будет окончательно разрушен системой сбора мусора. ~имя_класса() { // код деструктора }

Слайд 61





Наследование
Класс может наследовать от другого класса, что означает, что он включает все члены — открытые и закрытые — исходного класса, а также дополнительные определяемые им члены. Исходный класс называется базовым классом, а новый класс — производным классом. Производный класс создается для представления особых возможностей базового класса.
Описание слайда:
Наследование Класс может наследовать от другого класса, что означает, что он включает все члены — открытые и закрытые — исходного класса, а также дополнительные определяемые им члены. Исходный класс называется базовым классом, а новый класс — производным классом. Производный класс создается для представления особых возможностей базового класса.

Слайд 62





Наследование 
Доступ к членам класса и наследование 

Для любого производного класса можно указать только один базовый класс. В С# не предусмотрено наследование нескольких базовых классов в одном производном классе. 
Доступ к закрытым членам класса не наследуется.
Описание слайда:
Наследование Доступ к членам класса и наследование Для любого производного класса можно указать только один базовый класс. В С# не предусмотрено наследование нескольких базовых классов в одном производном классе. Доступ к закрытым членам класса не наследуется.

Слайд 63





Наследование 
Доступ к членам класса и наследование 
Ограничение на доступ к частным членам базового класса из производного класса снимается двумя способами:
применение открытых свойств для доступа к закрытым данным, 
использование защищенных (protected) членов класса.
Описание слайда:
Наследование Доступ к членам класса и наследование Ограничение на доступ к частным членам базового класса из производного класса снимается двумя способами: применение открытых свойств для доступа к закрытым данным, использование защищенных (protected) членов класса.

Слайд 64





Наследование 
Доступ к членам класса и наследование 
Ограничение на доступ к частным членам базового класса из производного класса снимается двумя способами:
применение открытых свойств для доступа к закрытым данным, 
использование защищенных (protected) членов класса.
Описание слайда:
Наследование Доступ к членам класса и наследование Ограничение на доступ к частным членам базового класса из производного класса снимается двумя способами: применение открытых свойств для доступа к закрытым данным, использование защищенных (protected) членов класса.

Слайд 65





Статический класс
Статический член представляет собой метод или поле, доступ к которым можно получить без ссылки на определенный экземпляр класса. Самым общим статическим методом является Main, который представляет точку входа для всех программ C#.
Примером статического метода является WriteLine() в классе Console. При доступе к статическим методам необходимо обратить внимание на отличие в синтаксисе, с левой стороны оператора dot вместо имени экземпляра используется имя класса: Console.WriteLine().
В статическом классе все элементы также статические. Использование статических классов, методов и полей целесообразно в ряде случаев для повышения производительности и эффективности. 
Статический класс может использоваться как обычный контейнер для наборов методов, работающих на входных параметрах, и не должен возвращать или устанавливать каких-либо внутренних полей экземпляра. Например, в библиотеке классов платформы .NET Framework статический класс System.Math содержит методы, выполняющие математические операции, без требования сохранять или извлекать данные, уникальные для конкретного экземпляра класса Math. 
double dub = -3.14;
Console.WriteLine(Math.Abs(dub));
Описание слайда:
Статический класс Статический член представляет собой метод или поле, доступ к которым можно получить без ссылки на определенный экземпляр класса. Самым общим статическим методом является Main, который представляет точку входа для всех программ C#. Примером статического метода является WriteLine() в классе Console. При доступе к статическим методам необходимо обратить внимание на отличие в синтаксисе, с левой стороны оператора dot вместо имени экземпляра используется имя класса: Console.WriteLine(). В статическом классе все элементы также статические. Использование статических классов, методов и полей целесообразно в ряде случаев для повышения производительности и эффективности. Статический класс может использоваться как обычный контейнер для наборов методов, работающих на входных параметрах, и не должен возвращать или устанавливать каких-либо внутренних полей экземпляра. Например, в библиотеке классов платформы .NET Framework статический класс System.Math содержит методы, выполняющие математические операции, без требования сохранять или извлекать данные, уникальные для конкретного экземпляра класса Math.  double dub = -3.14; Console.WriteLine(Math.Abs(dub));

Слайд 66





Статический класс
Следующий список предоставляет основные характеристики статического класса:
содержит только статические члены
создавать его экземпляры нельзя
он закрыт
не может содержать конструкторов экземпляров
его нельзя наследовать
По сути, создания статического класса аналогично созданию класса, содержащего только статические члены и закрытый конструктор. Закрытый конструктор не допускает создания экземпляров класса. 
Статические классы не могут содержать конструктор экземпляров, но могут содержать статический конструктор. Нестатический класс также должен определять статический конструктор, если класс содержит статические члены, для которых нужна нетривиальная инициализация. Статический конструктор вызывается только один раз, и статический класс остается в памяти на время существования домена приложения, в котором находится программа.
Описание слайда:
Статический класс Следующий список предоставляет основные характеристики статического класса: содержит только статические члены создавать его экземпляры нельзя он закрыт не может содержать конструкторов экземпляров его нельзя наследовать По сути, создания статического класса аналогично созданию класса, содержащего только статические члены и закрытый конструктор. Закрытый конструктор не допускает создания экземпляров класса.  Статические классы не могут содержать конструктор экземпляров, но могут содержать статический конструктор. Нестатический класс также должен определять статический конструктор, если класс содержит статические члены, для которых нужна нетривиальная инициализация. Статический конструктор вызывается только один раз, и статический класс остается в памяти на время существования домена приложения, в котором находится программа.

Слайд 67





Статический класс
Статический класс создается по приведенной ниже форме объявления класса, видоизмененной с  помощью ключевого слова static 

static class имя_класса { // ... 
В таком классе все члены должны быть объявлены как static. 
Статические классы применяются главным образом в двух случаях:
при создании метода расширения, которые связаны в основном с языком LINQ 
для хранения совокупности связанных друг с другом статических методов. Именно это его применение и рассматривается ниже
Описание слайда:
Статический класс Статический класс создается по приведенной ниже форме объявления класса, видоизмененной с помощью ключевого слова static static class имя_класса { // ... В таком классе все члены должны быть объявлены как static. Статические классы применяются главным образом в двух случаях: при создании метода расширения, которые связаны в основном с языком LINQ для хранения совокупности связанных друг с другом статических методов. Именно это его применение и рассматривается ниже

Слайд 68





Пример статического класса, содержащего два метода, преобразующих температуру по Цельсию в температуру по Фаренгейту и наоборот
Описание слайда:
Пример статического класса, содержащего два метода, преобразующих температуру по Цельсию в температуру по Фаренгейту и наоборот

Слайд 69


Язык программирования C#, слайд №69
Описание слайда:

Слайд 70





Статические методы
Для объявления статических методов класса используется ключевое слово static перед возвращаемым типом члена.
Статические члены инициализируются перед первым доступом к статическому члену и перед вызовом статического конструктора, если он имеется. Для доступа к члену статического класса следует использовать имя класса, а не имя переменной, указывая расположение члена.
Если класс содержит статические поля, должен быть предоставлен статический конструктор, который инициализирует эти поля при загрузке класса.
Описание слайда:
Статические методы Для объявления статических методов класса используется ключевое слово static перед возвращаемым типом члена. Статические члены инициализируются перед первым доступом к статическому члену и перед вызовом статического конструктора, если он имеется. Для доступа к члену статического класса следует использовать имя класса, а не имя переменной, указывая расположение члена. Если класс содержит статические поля, должен быть предоставлен статический конструктор, который инициализирует эти поля при загрузке класса.

Слайд 71


Язык программирования C#, слайд №71
Описание слайда:

Слайд 72





Обработка ошибок и исключений
try {
// Блок кода, подлежащий проверке на наличие ошибок.
}
catch (ExcepTypel exOb) {
// Обработчик для исключения типа ExcepTypel.
}
catch (ExcepType2 exOb) {
// Обработчик для исключения типа ЕхсерТуре2.
}
finally  {
// Блок кода, подлежащий выполнению независимо от ошибки
}
Описание слайда:
Обработка ошибок и исключений try { // Блок кода, подлежащий проверке на наличие ошибок. } catch (ExcepTypel exOb) { // Обработчик для исключения типа ExcepTypel. } catch (ExcepType2 exOb) { // Обработчик для исключения типа ЕхсерТуре2. } finally  { // Блок кода, подлежащий выполнению независимо от ошибки }

Слайд 73





Обработка ошибок и исключений
Описание слайда:
Обработка ошибок и исключений

Слайд 74


Язык программирования C#, слайд №74
Описание слайда:

Слайд 75





Обработка ошибок и исключений
Описание слайда:
Обработка ошибок и исключений

Слайд 76





Обработка ошибок и исключений
Описание слайда:
Обработка ошибок и исключений

Слайд 77





Строки
Описание слайда:
Строки

Слайд 78





Строки
Работа со строками
Описание слайда:
Строки Работа со строками

Слайд 79





Строки
Работа со строками
Описание слайда:
Строки Работа со строками

Слайд 80





Строки
Наиболее часто используемые методы обработки строк
Описание слайда:
Строки Наиболее часто используемые методы обработки строк

Слайд 81





Строки
Описание слайда:
Строки

Слайд 82





Массивы
Описание слайда:
Массивы

Слайд 83





Одномерные массивы
Описание слайда:
Одномерные массивы

Слайд 84





Многомерные массивы 
тип[, . . ., ] имя_массива = new тип[размер1, размер2, . . . размеры] ; 
int[,,] multidim = new int[4, 10, 3]; 		
тип[,] имя_массива = { 
{val, val, val, ..., val}, 
{val, val, val, ..., val}, 
{val, val, val, ..., val} 
};
Описание слайда:
Многомерные массивы тип[, . . ., ] имя_массива = new тип[размер1, размер2, . . . размеры] ; int[,,] multidim = new int[4, 10, 3]; тип[,] имя_массива = { {val, val, val, ..., val}, {val, val, val, ..., val}, {val, val, val, ..., val} };

Слайд 85





Многомерные массивы 
Пример
// declare multidimension array (two dimensions)
int[,] array2D = new int[2,3];
// declare and initialize multidimension array
int[,] array2D2 = { {1, 2, 3}, {4, 5, 6} };
// write elements in a multidimensional array
for (int i=0; i<2; i++)
{
 for (int j=0; j<3; j++)
    {
      array2D[i,j] = (i + 1) * (j + 1);
    }
}
// read elements in a multidimensional array
for (int i=0; i<2; i++)
{
  for (int j=0; j<3; j++)
    {
      System.Console.Write(array2D[i,j]);
    }
  System.Console.WriteLine();
}
Описание слайда:
Многомерные массивы Пример // declare multidimension array (two dimensions) int[,] array2D = new int[2,3]; // declare and initialize multidimension array int[,] array2D2 = { {1, 2, 3}, {4, 5, 6} }; // write elements in a multidimensional array for (int i=0; i<2; i++) { for (int j=0; j<3; j++) { array2D[i,j] = (i + 1) * (j + 1); } } // read elements in a multidimensional array for (int i=0; i<2; i++) { for (int j=0; j<3; j++) { System.Console.Write(array2D[i,j]); } System.Console.WriteLine(); }

Слайд 86





Массивы массивов  (ступенчатые массивы) 
тип[] [] имя_массива = new тип [размер] []; 
int[][] jagged = new int[3][]; 
jagged[0] = new int[4]; 
jagged[1] = new int[3]; 
jagged[2] = new int[5]; 
jagged[2][1] = 10;
Описание слайда:
Массивы массивов (ступенчатые массивы) тип[] [] имя_массива = new тип [размер] []; int[][] jagged = new int[3][]; jagged[0] = new int[4]; jagged[1] = new int[3]; jagged[2] = new int[5]; jagged[2][1] = 10;

Слайд 87





Массивы
Описание слайда:
Массивы

Слайд 88





Массивы объектов
Описание слайда:
Массивы объектов

Слайд 89





Перечисления
Описание слайда:
Перечисления

Слайд 90





Коллекции
Описание слайда:
Коллекции

Слайд 91





Коллекции
Описание слайда:
Коллекции

Слайд 92





Коллекции
Описание слайда:
Коллекции

Слайд 93





Коллекции
Описание слайда:
Коллекции

Слайд 94





Коллекции
Описание слайда:
Коллекции

Слайд 95





Коллекции
Описание слайда:
Коллекции

Слайд 96





Коллекции
Описание слайда:
Коллекции

Слайд 97





Коллекции
Описание слайда:
Коллекции

Слайд 98





Коллекции
Описание слайда:
Коллекции

Слайд 99





Коллекции
Описание слайда:
Коллекции

Слайд 100





Коллекции
Описание слайда:
Коллекции

Слайд 101





Коллекции
Описание слайда:
Коллекции

Слайд 102





Структуры
Описание слайда:
Структуры

Слайд 103





Структуры
Описание слайда:
Структуры

Слайд 104





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

Слайд 105





Перегрузка методов
В С# допускается совместное использование одного и того же имени двумя или более методами одного и того же класса, при условии, что их параметры объявляются по-разному. В этом случае говорят, что методы перегружаются, а сам процесс называется перегрузкой методов. Перегрузка методов относится к одному из способов реализации полиморфизма в С#. Методы должны также отличаться типами или числом своих параметров.
Описание слайда:
Перегрузка методов В С# допускается совместное использование одного и того же имени двумя или более методами одного и того же класса, при условии, что их параметры объявляются по-разному. В этом случае говорят, что методы перегружаются, а сам процесс называется перегрузкой методов. Перегрузка методов относится к одному из способов реализации полиморфизма в С#. Методы должны также отличаться типами или числом своих параметров.

Слайд 106





Необязательные аргументы
В версии С# 4.0 внедрено новое средство, повышающее удобство указания  аргументов при вызове метода. Это средство называется необязательными аргументами и позволяет определить используемое по умолчанию значение для параметра метода. Данное значение будет использоваться по умолчанию в том случае, если для  параметра не указан соответствующий аргумент при вызове метода.
Описание слайда:
Необязательные аргументы В версии С# 4.0 внедрено новое средство, повышающее удобство указания аргументов при вызове метода. Это средство называется необязательными аргументами и позволяет определить используемое по умолчанию значение для параметра метода. Данное значение будет использоваться по умолчанию в том случае, если для параметра не указан соответствующий аргумент при вызове метода.

Слайд 107





Именованные аргументы
Именованные аргументы были внедрены в версии С# 4.0. Именованный аргумент позволяет указать имя того параметра, которому присваивается его значение. И в этом случае порядок следования аргументов уже не имеет никакого значения. Для указания аргумента по имени служит следующая форма синтаксиса. 
имя_параметра : значение
Описание слайда:
Именованные аргументы Именованные аргументы были внедрены в версии С# 4.0. Именованный аргумент позволяет указать имя того параметра, которому присваивается его значение. И в этом случае порядок следования аргументов уже не имеет никакого значения. Для указания аргумента по имени служит следующая форма синтаксиса. имя_параметра : значение

Слайд 108





Применение оператора new к переменным типа значений
В С# переменная типа значения содержит собственное значение. Во время компиляции программы компилятор автоматически выделяет память для хранения этого значения. Следовательно, нет необходимости использовать оператор new для явного выделения памяти. И напротив, в переменных ссылочного типа хранится ссылка на объект, а память для хранения этого объекта выделяется динамически, т.е. во время выполнения программы. Тем не менее вполне допустимо использовать оператор new и с типами значений.
int i = new int () ;
В этом случае вызывается конструктор по умолчанию для типа int , который инициализирует переменную i нулем. Без оператора new переменная i осталась бы неинициализированной, и попытка использовать ее, например, в методе WriteLine() без явного присвоения ей конкретного значения привела бы к ошибке.
Описание слайда:
Применение оператора new к переменным типа значений В С# переменная типа значения содержит собственное значение. Во время компиляции программы компилятор автоматически выделяет память для хранения этого значения. Следовательно, нет необходимости использовать оператор new для явного выделения памяти. И напротив, в переменных ссылочного типа хранится ссылка на объект, а память для хранения этого объекта выделяется динамически, т.е. во время выполнения программы. Тем не менее вполне допустимо использовать оператор new и с типами значений. int i = new int () ; В этом случае вызывается конструктор по умолчанию для типа int , который инициализирует переменную i нулем. Без оператора new переменная i осталась бы неинициализированной, и попытка использовать ее, например, в методе WriteLine() без явного присвоения ей конкретного значения привела бы к ошибке.

Слайд 109





Передача объектов методам
Описание слайда:
Передача объектов методам

Слайд 110





Передача аргументов по значению и по ссылке
Передача аргументов по значению (call-by-value)
Описание слайда:
Передача аргументов по значению и по ссылке Передача аргументов по значению (call-by-value)

Слайд 111





Передача аргументов по значению и по ссылке
Передача аргументов по ссылке (call-by-reference)
Описание слайда:
Передача аргументов по значению и по ссылке Передача аргументов по ссылке (call-by-reference)

Слайд 112





Использование ref- и out-параметров
Описание слайда:
Использование ref- и out-параметров

Слайд 113





Использование модификатора ref
Пример: изменение передаваемого аргумента в методе
Описание слайда:
Использование модификатора ref Пример: изменение передаваемого аргумента в методе

Слайд 114





Использование модификатора ref
Пример: обмен значениями двух аргументов
Описание слайда:
Использование модификатора ref Пример: обмен значениями двух аргументов

Слайд 115





Использование модификатора out
Описание слайда:
Использование модификатора out

Слайд 116





Использование модификатора out
Пример: разделение числа на целую и дробную части
Описание слайда:
Использование модификатора out Пример: разделение числа на целую и дробную части

Слайд 117





Использование переменного количества аргументов
Описание слайда:
Использование переменного количества аргументов

Слайд 118





Использование переменного количества аргументов
Пример: нахождение минимального числа
Описание слайда:
Использование переменного количества аргументов Пример: нахождение минимального числа

Слайд 119





Возвращение методами массивов
Пример: Метод возвращает массив, содержащий множители
    параметра num. Out-параметр numfactors будет содержать количество
    найденных множителей
Описание слайда:
Возвращение методами массивов Пример: Метод возвращает массив, содержащий множители параметра num. Out-параметр numfactors будет содержать количество найденных множителей

Слайд 120





Наследование
Описание слайда:
Наследование

Слайд 121





Вызов конструкторов базового класса 
class TwoDShape { 
double pri_width; 
double pr.i_height; 
public double Width { 
get { return pri_width; } 
set { pri_width = value < 0 ? -value : value; } 
} 
public double Height { 
get { return pri_height; } 
set { pri_height = value < 0 ? -value : value; } 
} 
public void ShowDim() { 
Console.WriteLine("Ширина и длина равны " + Width + " и " + Height); 
} 
}
Описание слайда:
Вызов конструкторов базового класса class TwoDShape { double pri_width; double pr.i_height; public double Width { get { return pri_width; } set { pri_width = value < 0 ? -value : value; } } public double Height { get { return pri_height; } set { pri_height = value < 0 ? -value : value; } } public void ShowDim() { Console.WriteLine("Ширина и длина равны " + Width + " и " + Height); } }

Слайд 122





Вызов конструкторов базового класса 
В иерархии классов допускается, чтобы у базовых и производных классов были свои собственные конструкторы. 
Конструктор базового класса конструирует базовую часть объекта, а конструктор производного класса — производную часть этого объекта. 
Для обращения к конструктору базового класса используется ключевое слово : base, которое находит двоякое применение: 
вызова конструктора базового класса; 
для доступа к члену базового класса, скрывающегося за членом производного класса. 
Общая форма расширенного объявления: 
конструктор_производного_класса ( список_параметров) : base (список_аргументов) { 
   // тело конструктора 
}
Описание слайда:
Вызов конструкторов базового класса В иерархии классов допускается, чтобы у базовых и производных классов были свои собственные конструкторы. Конструктор базового класса конструирует базовую часть объекта, а конструктор производного класса — производную часть этого объекта. Для обращения к конструктору базового класса используется ключевое слово : base, которое находит двоякое применение: вызова конструктора базового класса; для доступа к члену базового класса, скрывающегося за членом производного класса. Общая форма расширенного объявления: конструктор_производного_класса ( список_параметров) : base (список_аргументов) { // тело конструктора }

Слайд 123





Вызов конструкторов базового класса 
class TwoDShape { 
double pri_width; 
double pri_height; 
public TwoDShape(double w, double h) { 
Width = w; 
Height = h; 
} 
public double Width { 
get { return pri_width; } 
set { pri_width = value < 0 ? -value : value; } 
} 
public double Height { 
get { return pri_height; } 
set { pri_height = value < 0 ? -value : value; } 
} 
public void ShowDim() { 
Console.WriteLine(Width+"и"+Height); 
} 
}
Описание слайда:
Вызов конструкторов базового класса class TwoDShape { double pri_width; double pri_height; public TwoDShape(double w, double h) { Width = w; Height = h; } public double Width { get { return pri_width; } set { pri_width = value < 0 ? -value : value; } } public double Height { get { return pri_height; } set { pri_height = value < 0 ? -value : value; } } public void ShowDim() { Console.WriteLine(Width+"и"+Height); } }

Слайд 124





Вызов конструкторов базового класса 
Когда в производном классе указывается ключевое слово base, вызывается конструктор из его непосредственного базового класса. Следовательно, ключевое слово base всегда обращается к базовому классу, стоящему в иерархии непосредственно над  вызывающим классом. Это справедливо даже для многоуровневой иерархии классов.  
Аргументы передаются базовому конструктору в качестве аргументов метода base(). Если же ключевое слово отсутствует, то автоматически вызывается конструктор, используемый в базовом классе по умолчанию.
В иерархии классов конструкторы  вызываются по порядку выведения классов: от базового к производному. Более того, этот порядок остается неизменным независимо от использования ключевого слова base. Если ключевое слово base не используется, то выполняется конструктор по  умолчанию, т.е. конструктор без параметров.
Описание слайда:
Вызов конструкторов базового класса Когда в производном классе указывается ключевое слово base, вызывается конструктор из его непосредственного базового класса. Следовательно, ключевое слово base всегда обращается к базовому классу, стоящему в иерархии непосредственно над вызывающим классом. Это справедливо даже для многоуровневой иерархии классов. Аргументы передаются базовому конструктору в качестве аргументов метода base(). Если же ключевое слово отсутствует, то автоматически вызывается конструктор, используемый в базовом классе по умолчанию. В иерархии классов конструкторы вызываются по порядку выведения классов: от базового к производному. Более того, этот порядок остается неизменным независимо от использования ключевого слова base. Если ключевое слово base не используется, то выполняется конструктор по умолчанию, т.е. конструктор без параметров.

Слайд 125





Виртуальные методы и их переопределение 
Виртуальным называется такой метод, который объявляется как virtual в базовом классе. Виртуальный метод отличается тем, что он может быть переопределен в одном или нескольких производных классах. 
Если базовый класс содержит виртуальный метод и от него получены производные классы, то при обращении к разным типам объектов по ссылке на базовый класс выполняются разные варианты этого виртуального метода. 
Метод объявляется как виртуальный в базовом классе с помощью ключевого  слова virtual, указываемого перед его именем. Когда же виртуальный метод  переопределяется в производном классе, то для этого используется модификатор override.
Описание слайда:
Виртуальные методы и их переопределение Виртуальным называется такой метод, который объявляется как virtual в базовом классе. Виртуальный метод отличается тем, что он может быть переопределен в одном или нескольких производных классах. Если базовый класс содержит виртуальный метод и от него получены производные классы, то при обращении к разным типам объектов по ссылке на базовый класс выполняются разные варианты этого виртуального метода. Метод объявляется как виртуальный в базовом классе с помощью ключевого слова virtual, указываемого перед его именем. Когда же виртуальный метод переопределяется в производном классе, то для этого используется модификатор override.

Слайд 126





Виртуальные методы и их переопределение 
class Base { 
public virtual void Who() { 
Console.WriteLine("Метод Who() в классе Base"); 
} 
}
 class Derived1 : Base { 
// Переопределить метод Who() 
public override void Who() { 
Console.WriteLine("Метод Who() в классе Derived1"); 
} 
} 
class Derived2 : Base { 
// Переопределить метод Who() 
public override void Who() { 
Console.WriteLine("Метод Who() в классе Derived2"); 
} 
}
Описание слайда:
Виртуальные методы и их переопределение class Base { public virtual void Who() { Console.WriteLine("Метод Who() в классе Base"); } } class Derived1 : Base { // Переопределить метод Who() public override void Who() { Console.WriteLine("Метод Who() в классе Derived1"); } } class Derived2 : Base { // Переопределить метод Who() public override void Who() { Console.WriteLine("Метод Who() в классе Derived2"); } }

Слайд 127





Виртуальные методы и их переопределение
Описание слайда:
Виртуальные методы и их переопределение

Слайд 128





Переопределение метода
Описание слайда:
Переопределение метода

Слайд 129





Переопределение метода
Описание слайда:
Переопределение метода

Слайд 130





Переопределение метода
Описание слайда:
Переопределение метода

Слайд 131





Методы расширения
Методы расширения (extension methods) позволяют добавлять новые методы в уже существующие типы без создания нового производного класса. Эта функциональность бывает полезна, когда необходимо добавить в некоторый тип новый метод, не изменяя сам тип (класс или структуру).
Метод расширения - это обычный статический метод, который в качестве первого параметра всегда принимает такую конструкцию: 
this имя_типа название_параметра
Порядок создания метода расширения:
1) создать статический класс, который будет содержать требуемый метод;
2) объявить статический метод;
Метод расширения никогда не будет вызван, если он имеет ту же сигнатуру, что и метод, изначально определенный в типе.
Методы расширения действуют на уровне пространства имен. То есть, если добавить в проект другое пространство имен, то метод не будет применяться к строкам, и в этом случае надо будет подключить пространство имен метода через директиву using.
Описание слайда:
Методы расширения Методы расширения (extension methods) позволяют добавлять новые методы в уже существующие типы без создания нового производного класса. Эта функциональность бывает полезна, когда необходимо добавить в некоторый тип новый метод, не изменяя сам тип (класс или структуру). Метод расширения - это обычный статический метод, который в качестве первого параметра всегда принимает такую конструкцию: this имя_типа название_параметра Порядок создания метода расширения: 1) создать статический класс, который будет содержать требуемый метод; 2) объявить статический метод; Метод расширения никогда не будет вызван, если он имеет ту же сигнатуру, что и метод, изначально определенный в типе. Методы расширения действуют на уровне пространства имен. То есть, если добавить в проект другое пространство имен, то метод не будет применяться к строкам, и в этом случае надо будет подключить пространство имен метода через директиву using.

Слайд 132





Методы расширения
 namespace  ExtensionMethods
{
public static class StringExtension
{
    public static int CharCount(this string str, char c)
    {
        int counter = 0;
        for (int i = 0; i<str.Length; i++)
        {
            if (str[i] == c)
                counter++;
        }
        return counter;
    }
} 
}
Описание слайда:
Методы расширения  namespace ExtensionMethods { public static class StringExtension {     public static int CharCount(this string str, char c)     {         int counter = 0;         for (int i = 0; i<str.Length; i++)         {             if (str[i] == c)                 counter++;         }         return counter;     } } }

Слайд 133





Абстрактные классы и методы
Абстрактный метод создается с помощью модификатора типа abstract. У абстрактного метода отсутствует тело, и поэтому он не реализуется в  базовом классе. Это означает, что он должен быть переопределен в производном классе, поскольку его вариант из базового класса непригоден для использования.  
Абстрактный метод автоматически становится виртуальным и не требует указания модификатора virtual. Совместное  использование модификаторов virtual и abstract считается ошибкой. 
Для определения абстрактного метода служит приведенная ниже общая форма. 
abstract тип имя (список_параметров); 
Класс, содержащий один или больше абстрактных методов, должен быть также объявлен как абстрактный, и для этого перед его объявлением class указывается  модификатор abstract. Поскольку реализация абстрактного класса не определяется полностью, то у него не может быть объектов. Следовательно, попытка создать объект  абстрактного класса с помощью оператора new приведет к ошибке во время компиляции. Если в производном классе не будет определён метод, являющийся абстрактным в базовом, то во время компиляции  возникнет ошибка. 
В абстрактный класс допускается включать конкретные методы, которые в производном классе переопределять не требуется.
Описание слайда:
Абстрактные классы и методы Абстрактный метод создается с помощью модификатора типа abstract. У абстрактного метода отсутствует тело, и поэтому он не реализуется в базовом классе. Это означает, что он должен быть переопределен в производном классе, поскольку его вариант из базового класса непригоден для использования. Абстрактный метод автоматически становится виртуальным и не требует указания модификатора virtual. Совместное использование модификаторов virtual и abstract считается ошибкой. Для определения абстрактного метода служит приведенная ниже общая форма. abstract тип имя (список_параметров); Класс, содержащий один или больше абстрактных методов, должен быть также объявлен как абстрактный, и для этого перед его объявлением class указывается модификатор abstract. Поскольку реализация абстрактного класса не определяется полностью, то у него не может быть объектов. Следовательно, попытка создать объект абстрактного класса с помощью оператора new приведет к ошибке во время компиляции. Если в производном классе не будет определён метод, являющийся абстрактным в базовом, то во время компиляции возникнет ошибка. В абстрактный класс допускается включать конкретные методы, которые в производном классе переопределять не требуется.

Слайд 134


Язык программирования C#, слайд №134
Описание слайда:

Слайд 135


Язык программирования C#, слайд №135
Описание слайда:

Слайд 136


Язык программирования C#, слайд №136
Описание слайда:

Слайд 137





Предотвращение наследования с помощью 
ключевого слова sealed 
sealed class A { 
// ... 
} 
class В : А { // ОШИБКА! Наследовать класс А нельзя 
// ... 
}
Описание слайда:
Предотвращение наследования с помощью ключевого слова sealed sealed class A { // ... } class В : А { // ОШИБКА! Наследовать класс А нельзя // ... }

Слайд 138





Предотвращение наследования с помощью 
ключевого слова sealed 
class В { 
public virtual void MyMethod() { /* ... */ } 
} 
class D : В { 
// Здесь герметизируется метод MyMethod() и  предотвращается его //дальнейшее переопределение 
sealed public override void MyMethod() { /* ... */ } 
} 
class X : D { 
// Ошибка! Метод MyMethod() герметизирован! 
public override void MyMethod() { /* ... */ } 
}
Описание слайда:
Предотвращение наследования с помощью ключевого слова sealed class В { public virtual void MyMethod() { /* ... */ } } class D : В { // Здесь герметизируется метод MyMethod() и предотвращается его //дальнейшее переопределение sealed public override void MyMethod() { /* ... */ } } class X : D { // Ошибка! Метод MyMethod() герметизирован! public override void MyMethod() { /* ... */ } }

Слайд 139





Некоторые методы  класса object
Описание слайда:
Некоторые методы класса object

Слайд 140





Пример переопределения метода ToString()
Описание слайда:
Пример переопределения метода ToString()

Слайд 141





Интерфейсы
Описание слайда:
Интерфейсы

Слайд 142





Интерфейсы
Описание слайда:
Интерфейсы



Похожие презентации
Mypresentation.ru
Загрузить презентацию