🗊Презентация Технология программирования. Язык программирования С#

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

Содержание

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

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


Слайд 1






Технология программирования
Язык программирования С#
(Си Шарп)
Платформа .NET
(dot NET
или
точка NET)
Описание слайда:
Технология программирования Язык программирования С# (Си Шарп) Платформа .NET (dot NET или точка NET)

Слайд 2






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

Слайд 3






Немного истории
60-е годы
Combined Programming Language (CPL) — совместный язык программирования; Кристофер Стрейчи, Кембриджский и Лондонский университеты
Basic Combined Programming Language (BCPL) — основной совместный язык программирования; Мартин Ричардс, Кембриджский университет
B — Би; Кен Томпсон и Денис Ритчи, Bell Laboratories.
70-е годы
C — Си; Кен Томпсон и Денис Ритчи, Bell Laboratories.
80-е годы
С++ — Си плюс плюс; Бьёрн Страуструп, Bell Laboratories
2000-е годы
С# — Си шарп; Андерс Хейлсберг, Microsoft
Описание слайда:
Немного истории 60-е годы Combined Programming Language (CPL) — совместный язык программирования; Кристофер Стрейчи, Кембриджский и Лондонский университеты Basic Combined Programming Language (BCPL) — основной совместный язык программирования; Мартин Ричардс, Кембриджский университет B — Би; Кен Томпсон и Денис Ритчи, Bell Laboratories. 70-е годы C — Си; Кен Томпсон и Денис Ритчи, Bell Laboratories. 80-е годы С++ — Си плюс плюс; Бьёрн Страуструп, Bell Laboratories 2000-е годы С# — Си шарп; Андерс Хейлсберг, Microsoft

Слайд 4






Рассмотрим:
стандартные типы данных
значения и ссылки
управляющие структуры
параметры функций
массивы
Описание слайда:
Рассмотрим: стандартные типы данных значения и ссылки управляющие структуры параметры функций массивы

Слайд 5






Литература
Эндрю Троелсен. Язык программирования C# 2008 и платформа .NET 4.0, 5-е издание
Описание слайда:
Литература Эндрю Троелсен. Язык программирования C# 2008 и платформа .NET 4.0, 5-е издание

Слайд 6






Интернет
Microsoft Developer Network
http://msdn.ru
Описание слайда:
Интернет Microsoft Developer Network http://msdn.ru

Слайд 7


Технология программирования. Язык программирования С#, слайд №7
Описание слайда:

Слайд 8






Первая программа
using System;
class HelloClass
{
	public static void Main(string[] args)
	{
		Console.WriteLine("Hello, World!");
	}
}
Описание слайда:
Первая программа using System; class HelloClass { public static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }

Слайд 9






варианты:
	public static void Main()
	{
	}
	public static int Main(string[] args)
	{
		return 0;
	}
	public static int Main()
	{
		return 0;
	}
Описание слайда:
варианты: public static void Main() { } public static int Main(string[] args) { return 0; } public static int Main() { return 0; }

Слайд 10






Обработка параметров командной строки
using System;
class HelloClass
{
		public static void Main(string[] args)
		{
			for (int i=0; i<args.Length; i++)
			{
				Console.WriteLine("Arg: {0}",
				args[i]);
			}
		}
}
Описание слайда:
Обработка параметров командной строки using System; class HelloClass { public static void Main(string[] args) { for (int i=0; i<args.Length; i++) { Console.WriteLine("Arg: {0}", args[i]); } } }

Слайд 11






или так:
foreach (string s in args)
{
	Console.WriteLine("Arg: {0}", s);
}
Описание слайда:
или так: foreach (string s in args) { Console.WriteLine("Arg: {0}", s); }

Слайд 12






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

Слайд 13


Технология программирования. Язык программирования С#, слайд №13
Описание слайда:

Слайд 14


Технология программирования. Язык программирования С#, слайд №14
Описание слайда:

Слайд 15


Технология программирования. Язык программирования С#, слайд №15
Описание слайда:

Слайд 16






		bool – логический тип
			true – истина
			false – ложь
		Пример:
	
		bool f1 = 5 > 1;	// f1 = true
		bool f2 = 5 < 1;	// f2 = false
Описание слайда:
bool – логический тип true – истина false – ложь Пример: bool f1 = 5 > 1; // f1 = true bool f2 = 5 < 1; // f2 = false

Слайд 17






		string – строковый тип
		Пример:
		string s1 = "Петр";
		string s2 = "ГУ";
		string s3 = s1 + s2;	// s3 = "ПетрГУ"
		char a = s1[0];	// a = 'П'
Описание слайда:
string – строковый тип Пример: string s1 = "Петр"; string s2 = "ГУ"; string s3 = s1 + s2; // s3 = "ПетрГУ" char a = s1[0]; // a = 'П'

Слайд 18






			Типы:
				- значения
				- ссылки
Описание слайда:
Типы: - значения - ссылки

Слайд 19






	Типы, характеризуемые значениями, включают все числовые типы данных, символьный тип, булевский тип, перечни и структуры.
	Все они размещаются в стеке. При присваивании происходит создание копии – «побайтовое» копирование.
Описание слайда:
Типы, характеризуемые значениями, включают все числовые типы данных, символьный тип, булевский тип, перечни и структуры. Все они размещаются в стеке. При присваивании происходит создание копии – «побайтовое» копирование.

Слайд 20






	Большинство остальных типов являются ссылочными. Ссылочные типы размещаются в динамической памяти. При присваивании копируется ссылка (адрес) на объект. 	Создание объекта только при помощи оператора new.
	Исключением являются строки. Для строк можно не использовать оператор new, при присваивании происходит создании копии.
Описание слайда:
Большинство остальных типов являются ссылочными. Ссылочные типы размещаются в динамической памяти. При присваивании копируется ссылка (адрес) на объект. Создание объекта только при помощи оператора new. Исключением являются строки. Для строк можно не использовать оператор new, при присваивании происходит создании копии.

Слайд 21






struct MyStruct
{
	public int x, y;
}
static void Main()
{
	MyStruct s1, s2;
	s1.x = 10;
	s1.y = 10;
	s2 = s1;
	s2.y = 5;
	// s1 = {10, 10}, s2 = {10, 5}
}
Описание слайда:
struct MyStruct { public int x, y; } static void Main() { MyStruct s1, s2; s1.x = 10; s1.y = 10; s2 = s1; s2.y = 5; // s1 = {10, 10}, s2 = {10, 5} }

Слайд 22






class MyClass
{
	public int x, y;
}
static void Main()
{
	MyClass c1, c2;
	c1 = new MyClass();
	c1.x = 10;
	c1.y = 10;
	c2 = c1;
	c2.y = 5;
	// c1 = {10, 5}, c2 = {10, 5}
}
Описание слайда:
class MyClass { public int x, y; } static void Main() { MyClass c1, c2; c1 = new MyClass(); c1.x = 10; c1.y = 10; c2 = c1; c2.y = 5; // c1 = {10, 5}, c2 = {10, 5} }

Слайд 23


Технология программирования. Язык программирования С#, слайд №23
Описание слайда:

Слайд 24


Технология программирования. Язык программирования С#, слайд №24
Описание слайда:

Слайд 25






Преобразование строки в число
string s = "125";
int n = int.Parse(s);
if (int.TryParse(s, out n) == false)
{
	MessageBox.Show("Введите число");
	return;
}
Описание слайда:
Преобразование строки в число string s = "125"; int n = int.Parse(s); if (int.TryParse(s, out n) == false) { MessageBox.Show("Введите число"); return; }

Слайд 26






		Управляющие структуры
		if
		if … else
		switch
		for
		while
		do … while
		foreach
Описание слайда:
Управляющие структуры if if … else switch for while do … while foreach

Слайд 27






Немного о массивах в
языке программирования C#
Описание слайда:
Немного о массивах в языке программирования C#

Слайд 28






Рассмотрим
	объявление,
	создание
	и инициализацию массивов
Описание слайда:
Рассмотрим объявление, создание и инициализацию массивов

Слайд 29






	
	// Объявление
	int[] A;
	
	// и создание
	A = new int [5];
Описание слайда:
// Объявление int[] A; // и создание A = new int [5];

Слайд 30






	
	// Объявление и создание
	int[] A = new int [5];
Описание слайда:
// Объявление и создание int[] A = new int [5];

Слайд 31






	
	// Объявление, создание и инициализация
	int[] A = new int[5] {1, 2, 3, 4, 5};
	
	int[] A = new int[] {1, 2, 3, 4, 5};
	
	int[] A = {1, 2, 3, 4, 5};
Описание слайда:
// Объявление, создание и инициализация int[] A = new int[5] {1, 2, 3, 4, 5}; int[] A = new int[] {1, 2, 3, 4, 5}; int[] A = {1, 2, 3, 4, 5};

Слайд 32






Одномерный массив
string t = Console.ReadLine();
int N = int.Parse(t);
string[] str = new string [N];
for (int i=0; i<N; i++)
	str[i] = Console.ReadLine();
foreach (string s in str)
	Console.WriteLine(“{0}”, s);
Описание слайда:
Одномерный массив string t = Console.ReadLine(); int N = int.Parse(t); string[] str = new string [N]; for (int i=0; i<N; i++) str[i] = Console.ReadLine(); foreach (string s in str) Console.WriteLine(“{0}”, s);

Слайд 33






Двумерный массив

int[,] mas = new int [5,7];
for (int i=0; i<5; i++)
	for (int j=0; j<7; j++)
		mas[i,j] = i*j;
for (int i=0; i<5; i++)
{
	for (int j=0; j<7; j++)
		Console.Write(“{0}\t”, mas[i,j]);
	Console.WriteLine();
}
Описание слайда:
Двумерный массив int[,] mas = new int [5,7]; for (int i=0; i<5; i++) for (int j=0; j<7; j++) mas[i,j] = i*j; for (int i=0; i<5; i++) { for (int j=0; j<7; j++) Console.Write(“{0}\t”, mas[i,j]); Console.WriteLine(); }

Слайд 34






Ступенчатый двумерный массив
int[][] mas = new int [5][];
for (int i=0; i<5; i++)
{
	mas[i] = new int [i+1];
	for (int j=0; j<=i; j++)
		mas[i][j] = i*j;
}
for (int i=0; i<5; i++)
{
	for (int j=0; j<mas[i].Length; j++)
		Console.Write(“{0}\t”, mas[i][j]);
	Console.WriteLine();
}
Описание слайда:
Ступенчатый двумерный массив int[][] mas = new int [5][]; for (int i=0; i<5; i++) { mas[i] = new int [i+1]; for (int j=0; j<=i; j++) mas[i][j] = i*j; } for (int i=0; i<5; i++) { for (int j=0; j<mas[i].Length; j++) Console.Write(“{0}\t”, mas[i][j]); Console.WriteLine(); }

Слайд 35






	Параметры функции
		параметры – значения
		ссылочные параметры
		выходные параметры
Описание слайда:
Параметры функции параметры – значения ссылочные параметры выходные параметры

Слайд 36






	Передача по значению
int sum(int a, int b)
{
    int s = a + b;
    a = 500;
    b = 750;
    return s;
}
static void Main()
{
    int x = 15, y = 25;
    int z = sum(x ,y);
    // x = 15, y = 25
}
Описание слайда:
Передача по значению int sum(int a, int b) { int s = a + b; a = 500; b = 750; return s; } static void Main() { int x = 15, y = 25; int z = sum(x ,y); // x = 15, y = 25 }

Слайд 37






	Передача по ссылке
void swap(ref int a, ref int b)
{
    int c = a;
    a = b;
    b = c;
}
static void Main()
{
    int x = 1, y = 5;
    swap(ref x ,ref y);
    // x = 5, y = 1
}
Описание слайда:
Передача по ссылке void swap(ref int a, ref int b) { int c = a; a = b; b = c; } static void Main() { int x = 1, y = 5; swap(ref x ,ref y); // x = 5, y = 1 }

Слайд 38






	Передача по ссылке выходного параметра
void f(int a, int b, out int sum, out int pr)
{
    sum = a + b;
    pr = a * b;
}
static void Main()
{
    int x = 15, y = 25, s, p;
    f(x ,y, out s, out p);
    // s = 40, p = 375
}
Описание слайда:
Передача по ссылке выходного параметра void f(int a, int b, out int sum, out int pr) { sum = a + b; pr = a * b; } static void Main() { int x = 15, y = 25, s, p; f(x ,y, out s, out p); // s = 40, p = 375 }

Слайд 39






Передача множества аргументов в виде одного параметра
int sum(params int[] mas)
{
    int s = 0;
    for (int i = 0; i < mas.Length; i++)
        s += mas[i];
    return s;
}
static void Main()
{
    int a = sum(5, 7, 3, 10);
    // a = 25
}
Описание слайда:
Передача множества аргументов в виде одного параметра int sum(params int[] mas) { int s = 0; for (int i = 0; i < mas.Length; i++) s += mas[i]; return s; } static void Main() { int a = sum(5, 7, 3, 10); // a = 25 }

Слайд 40






	
Немного о Microsoft Visual Studio.NET
Описание слайда:
Немного о Microsoft Visual Studio.NET

Слайд 41






Недостатки других подходов
Недостаток C – трудоемкий язык.
Недостаток C++ – трудоемкий язык, небезопасный.
Недостаток Visual Basic – меньше возможностей, чем у C++, нет наследования, нет параметризованных классов и т.д.
Недостаток Java – при создании приложения все пишется только на одном языке, мало средств межъязыкового взаимодействия (существует много готовых программ на разных языках, часть функций лучше реализовывать на других языках).
Описание слайда:
Недостатки других подходов Недостаток C – трудоемкий язык. Недостаток C++ – трудоемкий язык, небезопасный. Недостаток Visual Basic – меньше возможностей, чем у C++, нет наследования, нет параметризованных классов и т.д. Недостаток Java – при создании приложения все пишется только на одном языке, мало средств межъязыкового взаимодействия (существует много готовых программ на разных языках, часть функций лучше реализовывать на других языках).

Слайд 42






Преимущества модели .NET
Полное межъязыковое взаимодействие.
Общая среда для любых приложений.
Наличие библиотеки базовых классов.
Упрощение процесса развертывания приложения (например,
разные версии DLL могут одновременно находится на одном
компьютере).
Кроме того – поддержка работы с XML, в Web, работа с
базами данных и прочее.
Описание слайда:
Преимущества модели .NET Полное межъязыковое взаимодействие. Общая среда для любых приложений. Наличие библиотеки базовых классов. Упрощение процесса развертывания приложения (например, разные версии DLL могут одновременно находится на одном компьютере). Кроме того – поддержка работы с XML, в Web, работа с базами данных и прочее.

Слайд 43






.NET – это среда выполнения
и библиотека базовых классов.
Описание слайда:
.NET – это среда выполнения и библиотека базовых классов.

Слайд 44






Блоки .NET
CLR – Common Language Runtime,
стандартная среда выполнения.
CTS – Common Type System,
стандартная система типов.
CLS – Common Language Specification,
общая языковая спецификация.
Описание слайда:
Блоки .NET CLR – Common Language Runtime, стандартная среда выполнения. CTS – Common Type System, стандартная система типов. CLS – Common Language Specification, общая языковая спецификация.

Слайд 45






а так же:
MSIL, IL – Microsoft intermediate language,
промежуточный язык Microsoft.
JIT – just in time compilation,
компиляция в процессе выполнения.
IDE – Integrated Development Environment,
интегрированная среда разработки.
Описание слайда:
а так же: MSIL, IL – Microsoft intermediate language, промежуточный язык Microsoft. JIT – just in time compilation, компиляция в процессе выполнения. IDE – Integrated Development Environment, интегрированная среда разработки.

Слайд 46






Управляемый код – это код (программа), предназначенный для работы в середе .NET.
Сборка – двоичный файл, содержащий управляемый код.
Сборка хранится в виде файла DLL или EXE. Сборка содержит код на языке IL и метаданные.
Преимущество IL – выполнение на любой платформе.
Во время выполнения программы при необходимости код с языка IL с помощью JIT компилируется в машинный язык и помещается в кэш-память.
Описание слайда:
Управляемый код – это код (программа), предназначенный для работы в середе .NET. Сборка – двоичный файл, содержащий управляемый код. Сборка хранится в виде файла DLL или EXE. Сборка содержит код на языке IL и метаданные. Преимущество IL – выполнение на любой платформе. Во время выполнения программы при необходимости код с языка IL с помощью JIT компилируется в машинный язык и помещается в кэш-память.

Слайд 47






Преимущества C#:
Нет необходимости в указателях.
Управление памятью производится автоматически.
Возможность работы с перечислениями,
структурами и свойствами классов.
Перегрузка операторов (как и в C++, но проще).
Полная поддержка использования
программных интерфейсов.
Наличие атрибутов.
Описание слайда:
Преимущества C#: Нет необходимости в указателях. Управление памятью производится автоматически. Возможность работы с перечислениями, структурами и свойствами классов. Перегрузка операторов (как и в C++, но проще). Полная поддержка использования программных интерфейсов. Наличие атрибутов.

Слайд 48






Объектно-ориентированное программирование,
классы
Описание слайда:
Объектно-ориентированное программирование, классы

Слайд 49






Принципы ООП:
		инкапсуляция
		наследование
		полиморфизм
Инкапсуляция – объединение данных и методов в независимые целостные объекты.
Наследование – создание производных классов на основе базовых классов.
Полиморфизм – изменение способа работы с объектами в зависимости от типа объекта.
Описание слайда:
Принципы ООП: инкапсуляция наследование полиморфизм Инкапсуляция – объединение данных и методов в независимые целостные объекты. Наследование – создание производных классов на основе базовых классов. Полиморфизм – изменение способа работы с объектами в зависимости от типа объекта.

Слайд 50






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

Слайд 51






Описание класса:
[<модификатор>] class <имя класса>
[: <базовый класс>]
{
	<тело класса>
}
Описание слайда:
Описание класса: [<модификатор>] class <имя класса> [: <базовый класс>] { <тело класса> }

Слайд 52






Некоторые модификаторы класса:
abstract – класс является только базовым для других классов
sealed – класс не может быть базовым
Описание слайда:
Некоторые модификаторы класса: abstract – класс является только базовым для других классов sealed – класс не может быть базовым

Слайд 53






Некоторые модификаторы класса:
public – класс доступен вне пределов сборки
internal - класс доступен только в пределах сборки (по умолчанию)
private - только ко вложенным классам, класс доступен в пределах класса, в котором объявлен
protected – только ко вложенным классам, класс доступен в пределах класса, в котором объявлен и из производных классов этого класса
abstract – класс является только базовым для других классов
sealed – класс не может быть базовым
static – статический класс, содержит только статические члены, запрет создания объектов
Описание слайда:
Некоторые модификаторы класса: public – класс доступен вне пределов сборки internal - класс доступен только в пределах сборки (по умолчанию) private - только ко вложенным классам, класс доступен в пределах класса, в котором объявлен protected – только ко вложенным классам, класс доступен в пределах класса, в котором объявлен и из производных классов этого класса abstract – класс является только базовым для других классов sealed – класс не может быть базовым static – статический класс, содержит только статические члены, запрет создания объектов

Слайд 54






Некоторые члены класса:
	константа
	поле
	метод
	конструктор
	свойство
	индексатор
	событие
	тип (класс, структура, перечисление)
Описание слайда:
Некоторые члены класса: константа поле метод конструктор свойство индексатор событие тип (класс, структура, перечисление)

Слайд 55






Члены класса:
	константа
	поле
	метод
	свойство
	событие
	индексатор
	конструктор
	деструктор
	статический конструктор
	тип
Описание слайда:
Члены класса: константа поле метод свойство событие индексатор конструктор деструктор статический конструктор тип

Слайд 56






	Для доступа к членам класса используется точка.
	Примеры:
	label1.Text
	// Класс Студент и объекты класса:
	Student st = new Student();
	st.Name = “Иванов”;
	st.Department = “Математический”;
	st.SetPoint(“Алгебра”, 5);
	double a = st.AveragePoint();
	Stunent st1 = new Student();
Описание слайда:
Для доступа к членам класса используется точка. Примеры: label1.Text // Класс Студент и объекты класса: Student st = new Student(); st.Name = “Иванов”; st.Department = “Математический”; st.SetPoint(“Алгебра”, 5); double a = st.AveragePoint(); Stunent st1 = new Student();

Слайд 57






Описание константы:
	[<модификатор>] const <тип> <имя> [= <значение>]
	Пример описания константы:
	const double Pi = 3.1416;
Описание слайда:
Описание константы: [<модификатор>] const <тип> <имя> [= <значение>] Пример описания константы: const double Pi = 3.1416;

Слайд 58






Описание поля:
[<модификатор>] <тип> <имя> [= <значение>]
Некоторые модификаторы полей:
new – замещение поля
public – доступно вне класса
private – доступно только внутри класса
protected – доступно внутри класса и в порожденных классах
static – статическое поле (1 на всех)
readonly – только для чтения (инициализируется конструктором)
Описание слайда:
Описание поля: [<модификатор>] <тип> <имя> [= <значение>] Некоторые модификаторы полей: new – замещение поля public – доступно вне класса private – доступно только внутри класса protected – доступно внутри класса и в порожденных классах static – статическое поле (1 на всех) readonly – только для чтения (инициализируется конструктором)

Слайд 59






Описание метода:
[<модификатор>] <тип> <имя> (<список параметров>)
{
<тело метода>
}
Некоторые модификаторы методов:
public – доступен вне класса
private – доступен только внутри класса
protected – доступен внутри класса и в порожденных классах
static – статический метод (1 на всех)
virtual – виртуальный метод (может быть перегружен)
override – перегруженный метод
new – замещение метода
abstract – виртуальный метод без реализации
Описание слайда:
Описание метода: [<модификатор>] <тип> <имя> (<список параметров>) { <тело метода> } Некоторые модификаторы методов: public – доступен вне класса private – доступен только внутри класса protected – доступен внутри класса и в порожденных классах static – статический метод (1 на всех) virtual – виртуальный метод (может быть перегружен) override – перегруженный метод new – замещение метода abstract – виртуальный метод без реализации

Слайд 60






Конструктор – это метод, вызываемый при создании объекта. Имя конструктора совпадает с именем класса. Класс может содержать несколько конструкторов, отличающихся типом или количеством входных параметров.
Описание слайда:
Конструктор – это метод, вызываемый при создании объекта. Имя конструктора совпадает с именем класса. Класс может содержать несколько конструкторов, отличающихся типом или количеством входных параметров.

Слайд 61






class Student
{
    public string name;
    public int num;
    public Student()
    {   name = “Noname”; num = -1;
    }
    public Student(string s, int n)
    {   name = s; num = n;
    }
    public void print()
    {
        Console.WriteLine(“{0},{1}”,name,num);
    }
}
Описание слайда:
class Student { public string name; public int num; public Student() { name = “Noname”; num = -1; } public Student(string s, int n) { name = s; num = n; } public void print() { Console.WriteLine(“{0},{1}”,name,num); } }

Слайд 62






class Program
{
    static void Main()
    {
        Student s = new Student();
        s.print();
        s.name = "Иванов";
        s.num = 10;
        s.print();
        Student s1 = new Student("Петров", 15);
        s1.print();
    }
}
Описание слайда:
class Program { static void Main() { Student s = new Student(); s.print(); s.name = "Иванов"; s.num = 10; s.print(); Student s1 = new Student("Петров", 15); s1.print(); } }

Слайд 63






 int GCD(int a, int b)
 {
      int c;
      while (b > 0)
      {
          c = a % b;
          a = b;
          b = c;
      }
      return a;
 }
Описание слайда:
int GCD(int a, int b) { int c; while (b > 0) { c = a % b; a = b; b = c; } return a; }

Слайд 64






 int GCD(int a, int b)
 { // два параметра – a и b
      int c; // объявление переменной c
      while (b > 0) // пока b больше нуля
      {   // переменной с присвоить остаток
          c = a % b; //  от деления a на b
          a = b; // a присвоить b
          b = c; // b присвоить c
      }
      return a; // вернуть a
 }
Описание слайда:
int GCD(int a, int b) { // два параметра – a и b int c; // объявление переменной c while (b > 0) // пока b больше нуля { // переменной с присвоить остаток c = a % b; // от деления a на b a = b; // a присвоить b b = c; // b присвоить c } return a; // вернуть a }

Слайд 65






 int GCD(int a, int b)
 { // вычисление наибольшего общего делителя
      int c; // чисел a и b алгоритмом Евклида
      while (b > 0)
      {
          c = a % b;
          a = b;
          b = c;
      }
      return a;
 }
Описание слайда:
int GCD(int a, int b) { // вычисление наибольшего общего делителя int c; // чисел a и b алгоритмом Евклида while (b > 0) { c = a % b; a = b; b = c; } return a; }

Слайд 66






class Student
{
    private string name;
    private readonly int num;
    private static int N;
    public Student(string s)
    {
        name = s;
        N++;
        num = N;
    }
    
    public void print()
    {
        Console.WriteLine("{0},{1}",name,num);
    }
}
Описание слайда:
class Student { private string name; private readonly int num; private static int N; public Student(string s) { name = s; N++; num = N; } public void print() { Console.WriteLine("{0},{1}",name,num); } }

Слайд 67






class Program
{
    static void Main()
    {
        Student s1 = new Student("Иванов");
        s1.print();
        Student s2 = new Student("Петров");
        s2.print();
    }
}
Описание слайда:
class Program { static void Main() { Student s1 = new Student("Иванов"); s1.print(); Student s2 = new Student("Петров"); s2.print(); } }

Слайд 68






Доступ к статическим членам осуществляется через имя класса, к нестатическим членам – через имя объекта.
class Table
{
    static public int N = 50;
    public int M = 50;
}
class Program
{
    public static void Main()
    {
          int a = Table.N;
          Table t = new Table();
          int b = t.M;
    }
}
Описание слайда:
Доступ к статическим членам осуществляется через имя класса, к нестатическим членам – через имя объекта. class Table { static public int N = 50; public int M = 50; } class Program { public static void Main() { int a = Table.N; Table t = new Table(); int b = t.M; } }

Слайд 69






Конструктор с модификатором static используется для инициализации статических членов класса.
В этом случае нельзя указывать модификаторы доступа (public, private, protected)
class Table
{
    static public int N;
    static Table()
    {
        N = 100;
    }
}
Описание слайда:
Конструктор с модификатором static используется для инициализации статических членов класса. В этом случае нельзя указывать модификаторы доступа (public, private, protected) class Table { static public int N; static Table() { N = 100; } }

Слайд 70






Конструктор с модификатором private используется в том случае, когда нужно запретить создание объектов класса.
class Table
{
    static public int N = 100;
    private Table() { }
}
Описание слайда:
Конструктор с модификатором private используется в том случае, когда нужно запретить создание объектов класса. class Table { static public int N = 100; private Table() { } }

Слайд 71






Наследование. Полиморфизм.
Перегрузка методов базового класса.
Описание слайда:
Наследование. Полиморфизм. Перегрузка методов базового класса.

Слайд 72






abstract class Component
{
    protected double h;
    public void set_h(double x)
    {
        if (x > 0 && x < 100)
            h = x;
        else
            h = 0;
    }
    public abstract double square();
    public double volume()
    {
        return square() * h;
    }
}
Описание слайда:
abstract class Component { protected double h; public void set_h(double x) { if (x > 0 && x < 100) h = x; else h = 0; } public abstract double square(); public double volume() { return square() * h; } }

Слайд 73






class Cylinder : Component
{
    private double r;
    public void set_r(double y)
    {
        if (y > 0 && y < 200)
            r = y;
        else
            r = 0;
    }
    public override double square()
    {
        return 3.14 * r * r;
    }
}
Описание слайда:
class Cylinder : Component { private double r; public void set_r(double y) { if (y > 0 && y < 200) r = y; else r = 0; } public override double square() { return 3.14 * r * r; } }

Слайд 74






class Prism : Component
{
    private double a;
    public void set_a(double z)
    {
        if (z > 0 && z < 50)
            a = z;
        else
            a = 0;
    }
    public override double square()
    {
        return a * a;
    }
}
Описание слайда:
class Prism : Component { private double a; public void set_a(double z) { if (z > 0 && z < 50) a = z; else a = 0; } public override double square() { return a * a; } }

Слайд 75






class Program
{
    static void Main()
    {
        Cylinder cyl = new Cylinder();
        cyl.set_r(5.1);
        cyl.set_h(3.5);
        Prism pr = new Prism();
        pr.set_a(27);
        pr.set_h(94);
        double V1 = cyl.volume();
        double V2 = pr.volume();
    }
}
Описание слайда:
class Program { static void Main() { Cylinder cyl = new Cylinder(); cyl.set_r(5.1); cyl.set_h(3.5); Prism pr = new Prism(); pr.set_a(27); pr.set_h(94); double V1 = cyl.volume(); double V2 = pr.volume(); } }

Слайд 76






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

Слайд 77






Интерфейс – это ссылочный тип, в состав которого входят только абстрактные члены.
Члены интерфейса:
 методы;
 события;
 свойства;
 индексаторы.
Других членов у интерфейса быть не может.
Описание слайда:
Интерфейс – это ссылочный тип, в состав которого входят только абстрактные члены. Члены интерфейса: методы; события; свойства; индексаторы. Других членов у интерфейса быть не может.

Слайд 78






Интерфейс содержит только объявления членов, их реализация должна находится в классе, реализующем интерфейс.
Объявление интерфейса:
[<модификатор>] interface <идентификатор> [: <базовый интерфейс>]
{<тело интерфейса>}
Модификаторы интерфейса: new, public, protected, internal, private.
Члены интерфейса описываются без модификаторов.
Описание слайда:
Интерфейс содержит только объявления членов, их реализация должна находится в классе, реализующем интерфейс. Объявление интерфейса: [<модификатор>] interface <идентификатор> [: <базовый интерфейс>] {<тело интерфейса>} Модификаторы интерфейса: new, public, protected, internal, private. Члены интерфейса описываются без модификаторов.

Слайд 79






Если класс реализует некоторый интерфейс, то имя интерфейса указывается после имени класса и двоеточия:
class <имя класса> : [<базовый класс>,] <интерфейс>
Класс, реализующий интерфейс, обязательно должен реализовывать все члены этого интерфейса.
Описание слайда:
Если класс реализует некоторый интерфейс, то имя интерфейса указывается после имени класса и двоеточия: class <имя класса> : [<базовый класс>,] <интерфейс> Класс, реализующий интерфейс, обязательно должен реализовывать все члены этого интерфейса.

Слайд 80






Класс может реализовывать несколько интерфейсов:
class <имя класса> : [<базовый класс>,] <интерфейс1>, <интерфейс2>
Тем самым имитируется множественное наследование.
Примечание:
Наследование класса от нескольких базовых классов в языке C# запрещено.
Описание слайда:
Класс может реализовывать несколько интерфейсов: class <имя класса> : [<базовый класс>,] <интерфейс1>, <интерфейс2> Тем самым имитируется множественное наследование. Примечание: Наследование класса от нескольких базовых классов в языке C# запрещено.

Слайд 81






Интерфейсы сходны с абстрактными классами и отличаются от них тем, что поддерживают: 	множественное наследование;
	содержат ограниченный набор членов;
	не содержат реализаций.
Интерфейс может иметь несколько базовых интерфейсов. В объявлении интерфейса базовые интерфейсы отделяются запятыми.
Описание слайда:
Интерфейсы сходны с абстрактными классами и отличаются от них тем, что поддерживают: множественное наследование; содержат ограниченный набор членов; не содержат реализаций. Интерфейс может иметь несколько базовых интерфейсов. В объявлении интерфейса базовые интерфейсы отделяются запятыми.

Слайд 82






Пример:
public interface MyInterface
{
    void Method1();
    void Method2();
}
class MyClass : MyInterface
{
    public void Method1()
    {
        // Реализация метода
    }
    public void Method2()
    {
        // Реализация метода
    }
}
Описание слайда:
Пример: public interface MyInterface { void Method1(); void Method2(); } class MyClass : MyInterface { public void Method1() { // Реализация метода } public void Method2() { // Реализация метода } }

Слайд 83






Под явной реализацией члена интерфейса понимается объявление с использованием полного имени члена интерфейса:
<возвращаемое значение> <интерфейс>.<метод>(аргументы)
В этом случае для членов не используются модификаторы доступа.
Явная реализация необходима в случае, если класс реализует несколько интерфейсов, содержащих одноименные методы.
Для вызова такого метода необходимо использовать интерфейсную ссылку.
Описание слайда:
Под явной реализацией члена интерфейса понимается объявление с использованием полного имени члена интерфейса: <возвращаемое значение> <интерфейс>.<метод>(аргументы) В этом случае для членов не используются модификаторы доступа. Явная реализация необходима в случае, если класс реализует несколько интерфейсов, содержащих одноименные методы. Для вызова такого метода необходимо использовать интерфейсную ссылку.

Слайд 84






Оператор as можно использовать для получения интерфейсной ссылки.
Оператор is можно использовать для проверки того, реализует ли класс данный интерфейс.
Описание слайда:
Оператор as можно использовать для получения интерфейсной ссылки. Оператор is можно использовать для проверки того, реализует ли класс данный интерфейс.

Слайд 85






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

Слайд 86






public interface Description
{
    void Name();
}
class Student : Description
{
    string str;
    public Student(string s)
    {
        str = s;
    }
    public void Name()
    {
        Console.WriteLine("Имя студента " + str);
    }
}
Описание слайда:
public interface Description { void Name(); } class Student : Description { string str; public Student(string s) { str = s; } public void Name() { Console.WriteLine("Имя студента " + str); } }

Слайд 87






class Car : Description
{
    string str;
    public Car(string s)
    {
        str = s;
    }
    void Description.Name()
    {
        Console.WriteLine("Марка машины " + str);
    }
}
class Program
{
    static void Print(Description d)
    {
        d.Name();
    }
Описание слайда:
class Car : Description { string str; public Car(string s) { str = s; } void Description.Name() { Console.WriteLine("Марка машины " + str); } } class Program { static void Print(Description d) { d.Name(); }

Слайд 88






    static void Main()
    {
        Student st = new Student("Иванов");
        Print (st);
        Car car = new Car("Тойота");
        if (car is Description)
        {
            // получение интерфейсной ссылки
            Description d = (Description)car;
            Print (d);
        }
        // либо
	  // получение интерфейсной ссылки
        Description g = car as Description;
        if (g != null)
            Print (g);
    }
}
Описание слайда:
static void Main() { Student st = new Student("Иванов"); Print (st); Car car = new Car("Тойота"); if (car is Description) { // получение интерфейсной ссылки Description d = (Description)car; Print (d); } // либо // получение интерфейсной ссылки Description g = car as Description; if (g != null) Print (g); } }

Слайд 89






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

Слайд 90






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

Слайд 91






class Book
{	private int Npage = 0;
	public int NPage
	{
		get
		{
			return Npage;
		}
		set
		{
			if (value >= 0 && value <= 2000)
				Npage = value;
			else
				Npage = 0;
}	}	}
Описание слайда:
class Book { private int Npage = 0; public int NPage { get { return Npage; } set { if (value >= 0 && value <= 2000) Npage = value; else Npage = 0; } } }

Слайд 92






class Program
{
	static void Main()
	{
		Book b = new Book();
		b.NPage = 1000;
		Console.WriteLine(b.NPage.ToString());
		b.NPage = 3000;
		Console.WriteLine(b.NPage.ToString());
	}
}
Описание слайда:
class Program { static void Main() { Book b = new Book(); b.NPage = 1000; Console.WriteLine(b.NPage.ToString()); b.NPage = 3000; Console.WriteLine(b.NPage.ToString()); } }

Слайд 93






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

Слайд 94






Индексаторы позволяют работать с элементами классов
как с массивами, то есть использовать квадратные скобки [ ]
Описание слайда:
Индексаторы позволяют работать с элементами классов как с массивами, то есть использовать квадратные скобки [ ]

Слайд 95






class Book
{
	private string[] title = { "Война и мир", 			"Отцы и дети", "Дубровский" };
	private int[] price = { 500, 270, 80 };
    public int this[string str]
    {
        get
        {
            for (int i=0; i<title.Length; i++)
                if (str == title[i])
                    return price[i];
            return -1;
        }
Описание слайда:
class Book { private string[] title = { "Война и мир", "Отцы и дети", "Дубровский" }; private int[] price = { 500, 270, 80 }; public int this[string str] { get { for (int i=0; i<title.Length; i++) if (str == title[i]) return price[i]; return -1; }

Слайд 96






        set
        {
            for (int i=0; i<title.Length; i++)
                if (str == title[i])
                    price[i] = value;
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        Book MyBook = new Book();
        MyBook["Война и мир"] = 525;
        int p = MyBook["Отцы и дети"];
    }
}
Описание слайда:
set { for (int i=0; i<title.Length; i++) if (str == title[i]) price[i] = value; } } } class Program { static void Main(string[] args) { Book MyBook = new Book(); MyBook["Война и мир"] = 525; int p = MyBook["Отцы и дети"]; } }

Слайд 97






Делегаты
Делегат – это тип данных, содержащий информацию о типе возвращаемого значения и сигнатуре (списке формальных параметров) метода.
Делегаты используются для вызова одного или нескольких методов, соответствующих его типу.
Описание слайда:
Делегаты Делегат – это тип данных, содержащий информацию о типе возвращаемого значения и сигнатуре (списке формальных параметров) метода. Делегаты используются для вызова одного или нескольких методов, соответствующих его типу.

Слайд 98






Объявление делегата
[<модификаторы>] delegate <тип> <имя> (<список параметров>)
Модификаторы:
	new
	public
	protected
	private
Пример:
public delegate void StDel (Student s);
Описание слайда:
Объявление делегата [<модификаторы>] delegate <тип> <имя> (<список параметров>) Модификаторы: new public protected private Пример: public delegate void StDel (Student s);

Слайд 99






Инициализация делегата
Под инициализацией делегата понимается создание экземпляра делегата и установление привязки к методу.
Тип возвращаемого значения, количество и типы параметров метода должны быть такими же, как у делегата.
Описание слайда:
Инициализация делегата Под инициализацией делегата понимается создание экземпляра делегата и установление привязки к методу. Тип возвращаемого значения, количество и типы параметров метода должны быть такими же, как у делегата.

Слайд 100






Инициализация делегата статическим методом
public delegate void StDel (Student s);
class Group
{
    public static void PrintName(Student s)
    {
        Console.WriteLine(s.Name);
    }
}
class App
{
    static void Main()
    {
        StDel d = new StDel(Group.PrintName);
    }
}
Описание слайда:
Инициализация делегата статическим методом public delegate void StDel (Student s); class Group { public static void PrintName(Student s) { Console.WriteLine(s.Name); } } class App { static void Main() { StDel d = new StDel(Group.PrintName); } }

Слайд 101






Инициализация делегата методом экземпляра
public delegate void StDel (Student s);
class Group
{
    public void PrintName(Student s)
    {
        Console.WriteLine(s.Name);
    }
}
class App
{
    static void Main()
    {
	  Group g = new Group();
        StDel d = new StDel(g.PrintName);
    }
}
Описание слайда:
Инициализация делегата методом экземпляра public delegate void StDel (Student s); class Group { public void PrintName(Student s) { Console.WriteLine(s.Name); } } class App { static void Main() { Group g = new Group(); StDel d = new StDel(g.PrintName); } }

Слайд 102






Вызов делегата
Делегат вызывается с помощью указания его имени, за которым в скобках записаны передаваемые параметры.
Пример:
* * * * * * * * * * * * * *
Student st = new Student();
d(st);
Описание слайда:
Вызов делегата Делегат вызывается с помощью указания его имени, за которым в скобках записаны передаваемые параметры. Пример: * * * * * * * * * * * * * * Student st = new Student(); d(st);

Слайд 103






class Student
{
	public string Name;
	public int Number;
	public Student(string Name, int Number)
	{
		this.Name=Name;
		this.Number=Number;
	}
	public delegate void StDel (Student s);
}
Описание слайда:
class Student { public string Name; public int Number; public Student(string Name, int Number) { this.Name=Name; this.Number=Number; } public delegate void StDel (Student s); }

Слайд 104






class Group
{
	private ArrayList Gr = new ArrayList();
	public Group()
	{
		Gr.Add(new Student("Иванов",1));
		Gr.Add(new Student("Петров",2));
		Gr.Add(new Student("Сидоров",3));
	}
	public void f(Student.StDel sdf)
	{
		foreach(Student s in Gr)
			sdf(s);
	}
}
Описание слайда:
class Group { private ArrayList Gr = new ArrayList(); public Group() { Gr.Add(new Student("Иванов",1)); Gr.Add(new Student("Петров",2)); Gr.Add(new Student("Сидоров",3)); } public void f(Student.StDel sdf) { foreach(Student s in Gr) sdf(s); } }

Слайд 105






class App
{
	public static void PrintName(Student s)
	{
		Console.WriteLine(s.Name);
	}
	public static void PrintNumber(Student s)
	{
		Console.WriteLine(s.Number);
	}
	static void Main()
	{
		Group gr = new Group();
		gr.f(new Student.StDel(PrintName));
		gr.f(new Student.StDel(PrintNumber));
		Student.StDel a = new 						Student.StDel(PrintName);
		a += new Student.StDel(PrintNumber);
		gr.f(a);
	}	
}
Описание слайда:
class App { public static void PrintName(Student s) { Console.WriteLine(s.Name); } public static void PrintNumber(Student s) { Console.WriteLine(s.Number); } static void Main() { Group gr = new Group(); gr.f(new Student.StDel(PrintName)); gr.f(new Student.StDel(PrintNumber)); Student.StDel a = new Student.StDel(PrintName); a += new Student.StDel(PrintNumber); gr.f(a); } }

Слайд 106






Делегаты позволяют упростить процесс вызова методов классов из других классов.
Делегаты используются для реализации «обратного вызова»
Описание слайда:
Делегаты позволяют упростить процесс вызова методов классов из других классов. Делегаты используются для реализации «обратного вызова»

Слайд 107






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

Слайд 108






Обработка щелчка мышкой по кнопке
обработчик события:
private void button1_Click(object sender, EventArgs e)
{
	label1.Text = “Привет!”;
}
привязка метода к событию:
this.button1.Click += new System.EventHandler(this.button1_Click);
Описание слайда:
Обработка щелчка мышкой по кнопке обработчик события: private void button1_Click(object sender, EventArgs e) { label1.Text = “Привет!”; } привязка метода к событию: this.button1.Click += new System.EventHandler(this.button1_Click);

Слайд 109






Создание и использование событий:
Объявление делегата:
	public delegate void del(int[] mas);
Создание события как экземпляра делегата:
	public event del use;
Вызов события:
	use(P);
Создание метода:
	public void plus(int[] A) { *** }
Привязка метода в качестве обработчика события:
	Name.use += new Name.del(plus);
 	// Name – имя объекта или класса
Описание слайда:
Создание и использование событий: Объявление делегата: public delegate void del(int[] mas); Создание события как экземпляра делегата: public event del use; Вызов события: use(P); Создание метода: public void plus(int[] A) { *** } Привязка метода в качестве обработчика события: Name.use += new Name.del(plus); // Name – имя объекта или класса

Слайд 110






class Car
{
	private bool good=true;
	public delegate void CarHandler(string msg);
	public static event CarHandler Crack;
	public static event CarHandler OOPS;
	int Speed;
	int maxSpeed = 150;
Описание слайда:
class Car { private bool good=true; public delegate void CarHandler(string msg); public static event CarHandler Crack; public static event CarHandler OOPS; int Speed; int maxSpeed = 150;

Слайд 111






	public void SpeedUp(int delta)
	{
		if (!good)
		{
			if (Crack!=null)
				Crack("Машина вышла из строя!!!");
		}
		else
		{
			Speed+=delta;
			if (maxSpeed - Speed <= 10)
				if (OOPS!=null)
					OOPS("Осторожно!!!");
		
			if (Speed>=maxSpeed)
				good=false;
			else
				Console.WriteLine("Текущая
				скорость: "+Speed);
		}
	}
}
Описание слайда:
public void SpeedUp(int delta) { if (!good) { if (Crack!=null) Crack("Машина вышла из строя!!!"); } else { Speed+=delta; if (maxSpeed - Speed <= 10) if (OOPS!=null) OOPS("Осторожно!!!"); if (Speed>=maxSpeed) good=false; else Console.WriteLine("Текущая скорость: "+Speed); } } }

Слайд 112






class CarEvent
{
	public void OnCrack(string s)
	{
		Console.WriteLine("Пришло сообщение:
		{0}", s);
	}
	public void OnCrack2(string s)
	{
		Console.WriteLine("Повторяю: {0}", s);
	}
	public void OnOOPS(string s)
	{
		Console.WriteLine("Пришло сообщение:		{0}", s);
	}
}
Описание слайда:
class CarEvent { public void OnCrack(string s) { Console.WriteLine("Пришло сообщение: {0}", s); } public void OnCrack2(string s) { Console.WriteLine("Повторяю: {0}", s); } public void OnOOPS(string s) { Console.WriteLine("Пришло сообщение: {0}", s); } }

Слайд 113






class App
{
	static void Main()
	{
		Car c = new Car();
		CarEvent e = new CarEvent();
		Car.Crack += new
		Car.CarHandler(e.OnCrack);
		Car.Crack += new Car.CarHandler(e.OnCrack2);
		Car.OOPS += new Car.CarHandler(e.OnOOPS);
		for (int i=0; i<10; i++)
			c.SpeedUp(20);
		Car.Crack -= new
		Car.CarHandler(e.OnCrack);
		Car.Crack -= new Car.CarHandler(e.OnCrack2);
		Car.OOPS -= new Car.CarHandler(e.OnOOPS);
	}
}
Описание слайда:
class App { static void Main() { Car c = new Car(); CarEvent e = new CarEvent(); Car.Crack += new Car.CarHandler(e.OnCrack); Car.Crack += new Car.CarHandler(e.OnCrack2); Car.OOPS += new Car.CarHandler(e.OnOOPS); for (int i=0; i<10; i++) c.SpeedUp(20); Car.Crack -= new Car.CarHandler(e.OnCrack); Car.Crack -= new Car.CarHandler(e.OnCrack2); Car.OOPS -= new Car.CarHandler(e.OnOOPS); } }

Слайд 114






class Trans
{
    private static int[] P;
    public delegate void del(int[] mas);
    public static event del use;
    // Переворачивание массива
    private static void Reverse(int k)
    {
        int j = 1;
        while (j < k)
        {
            int t = P[j];
            P[j] = P[k];
            P[k] = t;
            j++;
            k--;
        }
    }
Описание слайда:
class Trans { private static int[] P; public delegate void del(int[] mas); public static event del use; // Переворачивание массива private static void Reverse(int k) { int j = 1; while (j < k) { int t = P[j]; P[j] = P[k]; P[k] = t; j++; k--; } }

Слайд 115






 // Рекурсивная реализация перебора
    private static void Antilex(int m)
    {
        if (m == 1)
        {
            if (use != null)
                use(P);
            return;
        }
        for (int i = 1; i <= m; i++)
        {
            Antilex(m - 1);
            if (i < m)
            {
                int t = P[i];
                P[i] = P[m];
                P[m] = t;
                Reverse(m - 1);
            }
        }
    }
Описание слайда:
// Рекурсивная реализация перебора private static void Antilex(int m) { if (m == 1) { if (use != null) use(P); return; } for (int i = 1; i <= m; i++) { Antilex(m - 1); if (i < m) { int t = P[i]; P[i] = P[m]; P[m] = t; Reverse(m - 1); } } }

Слайд 116






 
// Запуск рекурсии
    public static void DoIt(int n)
    {
        P = new int[1 + n];
        for (int i = 1; i <= n; i++)
            P[i] = i;
        Antilex(n);
    }
}
Описание слайда:
// Запуск рекурсии public static void DoIt(int n) { P = new int[1 + n]; for (int i = 1; i <= n; i++) P[i] = i; Antilex(n); } }

Слайд 117






class Program
{
    static void print(int[] A)
    {
        for (int i = 1; i < A.Length; i++)
            Console.Write("{0} ", A[i]);
        Console.WriteLine();
    }
    static int count = 0;
    static void plus(int[] A)
    {
        count++;
    }
Описание слайда:
class Program { static void print(int[] A) { for (int i = 1; i < A.Length; i++) Console.Write("{0} ", A[i]); Console.WriteLine(); } static int count = 0; static void plus(int[] A) { count++; }

Слайд 118






 
    static void Main()
    {
        Trans.use += new Trans.del(print);
        Trans.use += new Trans.del(plus);
        Trans.DoIt(5);
        Console.WriteLine(count);
        Console.ReadKey();
	  Trans.use -= new Trans.del(print);
        Trans.use -= new Trans.del(plus);
    }
}
Описание слайда:
static void Main() { Trans.use += new Trans.del(print); Trans.use += new Trans.del(plus); Trans.DoIt(5); Console.WriteLine(count); Console.ReadKey(); Trans.use -= new Trans.del(print); Trans.use -= new Trans.del(plus); } }

Слайд 119






Обработка исключений
string str = Console.ReadLine();
int a;
try
{
	a = int.Parse(str);
}
catch (Exception e)
{
	Console.WriteLine(e.Message);
	a = 0;
}
Описание слайда:
Обработка исключений string str = Console.ReadLine(); int a; try { a = int.Parse(str); } catch (Exception e) { Console.WriteLine(e.Message); a = 0; }

Слайд 120






Пример записи в текстовый файл и чтения из текстового файла
using System.IO;
class Program
{
    static void Main(string[] args)
    {
        StreamWriter writer =
        File.CreateText("output.txt");
        writer.WriteLine("Привет!");
        writer.Close();
        StreamReader reader = File.OpenText("output.txt");
        string str = reader.ReadLine();
        string[] s = File.ReadAllLines("input.txt");
        int m = int.Parse(s[0]);
        int n = int.Parse(s[1]);
     }
}
Описание слайда:
Пример записи в текстовый файл и чтения из текстового файла using System.IO; class Program { static void Main(string[] args) { StreamWriter writer = File.CreateText("output.txt"); writer.WriteLine("Привет!"); writer.Close(); StreamReader reader = File.OpenText("output.txt"); string str = reader.ReadLine(); string[] s = File.ReadAllLines("input.txt"); int m = int.Parse(s[0]); int n = int.Parse(s[1]); } }

Слайд 121






 int[,] A = new int[m, n];
        for (int i = 2; i < m + 2; i++)
        {
            int j = 0;
            string num = "";
            for (int k = 0; k <= s[i].Length && j < n; k++)
            {
                if (k == s[i].Length || s[i][k] == ' ‘
                    || s[i][k] == '\t')
                {
                    A[i - 2, j] = int.Parse(num);
                    num = "";
                    j++;
                }
                else
                    num += s[i][k];
            }
        }
    }
}
Описание слайда:
int[,] A = new int[m, n]; for (int i = 2; i < m + 2; i++) { int j = 0; string num = ""; for (int k = 0; k <= s[i].Length && j < n; k++) { if (k == s[i].Length || s[i][k] == ' ‘ || s[i][k] == '\t') { A[i - 2, j] = int.Parse(num); num = ""; j++; } else num += s[i][k]; } } } }

Слайд 122






Спроектируйте класс, содержащий информацию о студенте. Класс должен содержать закрытые поля: номер зачетной книжки (целое число) и фамилию студента (строка). Значения полей должны устанавливаться конструктором класса. Для доступа к полям необходимо использовать свойства, причем номер зачетной книжки изменять запрещено. Класс должен содержать отрытый метод, печатающий на консоль сообщение «Меня зовут » и далее – фамилия студента.
Описание слайда:
Спроектируйте класс, содержащий информацию о студенте. Класс должен содержать закрытые поля: номер зачетной книжки (целое число) и фамилию студента (строка). Значения полей должны устанавливаться конструктором класса. Для доступа к полям необходимо использовать свойства, причем номер зачетной книжки изменять запрещено. Класс должен содержать отрытый метод, печатающий на консоль сообщение «Меня зовут » и далее – фамилия студента.

Слайд 123






Вопросы:
Типы данных (значения, ссылки).
Виды параметров функции.
Понятие класса. Члены класса.
Инкапсуляция, наследование, полиморфизм.
Конструктор класса.
Статические члены класса.
Свойства. Индексаторы.
Делегаты.
События.
Интерфейсы.
Обработка исключений.
Описание слайда:
Вопросы: Типы данных (значения, ссылки). Виды параметров функции. Понятие класса. Члены класса. Инкапсуляция, наследование, полиморфизм. Конструктор класса. Статические члены класса. Свойства. Индексаторы. Делегаты. События. Интерфейсы. Обработка исключений.



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