Слайд 1Системное программирование
для Microsoft.NET на языке C#
Лекция 3
Оцоков Шамиль
Алиевич,
Московский энергетический институт,
Email: otsokovShA@mpei.ru
Слайд 4Двумерные массивы
Примеры задач:
Дана матрица A(n,m). Вывести сумму отрицательных элементов каждой
строки кратной 7
Вывести столбец с наибольшим элементом прямоугольной матрицы
Слайд 6Что такое объект?
Программные объекты моделируют объекты реального мира или абстрактные
концепции (которые также считаются объектами).
Примерами объектов реального мира являются люди,
автомобили, товары, покупки и т. д.
Две группы их характеристик:
- Состояния - это характеристики объекта, которые определяют его способом и описывают его в целом или в конкретный момент.
- Поведение - это особые отличительные действия, которые может выполнять объект.
Слайд 7Что такое объект?
Объекты в ООП объединяют данные и средства их
обработки в одном. Они соответствуют объектам в реальном мире и
содержат данные и действия:
- Элементы данных - встроенные в объекты переменные, описывающие их состояния.
- Методы - действия.
Слайд 8Классы и объекты
Класс определяет абстрактные характеристики объектов.
Он предоставляет структуру
для объектов или шаблон, который мы используем для описания природы
чего-либо (некоторого объекта). Классы являются строительными блоками ООП и неразрывно связаны с объектами.
Более того, каждый объект является экземпляром только одного определенного класса.
У нас есть класс Car и объект Nissan almera, который является экземпляром класса Car. Класс Car описывает характеристики всех машин, тогда как Nissan almera- это определенная машина.
Слайд 9Классы, атрибуты и поведение
Класс определяет характеристики объекта (которые мы будем
называть атрибутами) и его поведение (действия, которые может выполнять объект).
Атрибуты класса определяются как его собственные переменные в его теле (называемые переменными-членами). Поведение объектов моделируется определением методов в классах.
Классы в C # могут содержать следующие элементы:
- Поля - переменные-члены определенного типа;
- Свойства - это особый тип элементов, которые расширяют функциональность полей, предоставляя возможность дополнительного управления данными при извлечении и записи их в поля класса
- Методы - они реализуют манипуляции с данными.
Слайд 10Классы, атрибуты и поведение
public class Car
{
// Field name
private string name;
//
Field color
private string color;
public string Name
{
// Getter of the property
"Name"
get
{
return this.name;
}
// Setter of the property "Name"
set
{
this.name = value;
}
}
Слайд 11Классы, атрибуты и поведение
public string Color
{
// Getter of the property
"Color"
get
{
return this.color;
}
// Setter of the property "Color«
set
{
this.color =
value;
}
}
// Default constructor
public Car()
{
this.name = "Unnamed";
this.color = "gray";
}
Слайд 12Классы, атрибуты и поведение
// Constructor with parameters
public Car(string name,
string color)
{
this.name = name;
this.color = color;
}
// Method move
public void move()
{
Console.WriteLine(“Car {0} moved", name);
}
Слайд 13Что такое метод
Метод – это основная часть программы метод служит
для решения определенной проблемы и обычно принимает параметры и возвращает
результат
Метод реализует всю бизнес логику программы
Почему используются методы?
Cуществует много причин для использования методов, некоторые из них следующие:
- лучшая структуризация программы, повышения читабельности кода
- избежание дублирования кода
- повторное использование кода
Слайд 14Как объявить, реализовать и вызвать метод?
Три различных действия, связанных с
существованием метода:
объявление,
реализация (создание)
и вызов метода.
При объявлении метода
мы вызываем регистрацию метода в программе, чтобы его можно было успешно идентифицировать в остальной части программы.
Реализация (создание) метода - это процесс набора кода, решающего конкретную задачу. Этот код находится в самом методе и представляет его логику.
Вызов метода - это процесс, который вызывает уже объявленный метод из той части кода, где должна быть решена проблема, которую метод решает.
Слайд 15Объявление метода
При объявлении:
[static ] ([])
Для объявления
метода есть несколько обязательных элементов:
- Тип результата, возвращаемого методом -
.
- Название метода - .
- Список параметров метода - - это может быть пустой список или он может состоять из последовательности объявлений параметров.
Слайд 16Сигнатура метода
Метод идентифицируется парой элементов его объявления: именем метода и
списком параметров.
Эти два элемента определяют так называемую спецификацию метода
(или сигнатуру метода).
Правилам именования методов, предложенным Microsoft:
- Название метода должно начинаться с заглавной буквы.
- Должно применяться правило PascalCase, т.е. каждое новое слово, которое объединяется таким образом, чтобы сформировать имя метода, должно начинаться с заглавной буквы.
- Рекомендуется, чтобы имя метода состояло из глагола или глагола и существительного.
Слайд 17Модификаторы доступа
Общедоступный метод с помощью модификатора public.
Это специальный модификатор
типа, называемый также модификатором доступа, и используется, чтобы показать, что
метод может быть вызван любым классом C #, независимо от того, где он находится.
Модификатор private. Его функция противоположна общедоступной, т.е. если метод объявлен с помощью модификатора доступа private, он не может быть вызван из любого места, кроме класса, в котором он объявлен.
Если метод объявлен без модификатора доступа (открытого или закрытого), он доступен для всех классов в текущей сборке, но недоступен для любых других сборок (скажем, из других проектов в Visual Studio).
Слайд 18Реализация метода
static ()
{
// тело метода
// локальные методы
int
x = 3;
int y = 4;
}
Вызвать метод
очень просто. Единственное, что нужно сделать, это написать имя метода , за которым следует круглые скобки и точка с запятой ";"
Слайд 21Пример методов
static void PrintSign(int number)
{
if (number > 0)
{
Console.WriteLine("Positive");
}
else if (number < 0)
{
Console.WriteLine("Negative");
}
else
{
Console.WriteLine("Zero");
}
}
static void PrintMax(float number1, float number2)
{
float max = number1;
if (number2 > max)
{
max = number2;
}
Console.WriteLine("Maximal number: «
+ max);
}
PrintMax(100.0f, 200.0f);
Слайд 22Передача по ссылке или по значению
static void PrintArray(int[] arrParam)
{
Console.Write("[");
int length
= arrParam.Length;
if (length > 0)
{
Console.Write(arrParam[0].ToString());
for (int i = 1; i
< length; i++)
{
Console.Write(", {0}", arrParam[i]);
}
}
Console.WriteLine("]");
}
Слайд 23Параметры по умолчанию и именованные аргументы
static void SomeMethod(int x, int
y = 5, int z = 7)
{
}
static
void Main()
{
// Normal call of SomeMethod
SomeMethod(1, 2, 3);
// Omitting z - equivalent to SomeMethod(1, 2, 7)
SomeMethod(1, 2);
// Omitting both y and z – equivalent to SomeMethod(1, 5, 7)
SomeMethod(1);
}
Слайд 24Перегрузка методов
static void Print(string str)
{
Console.WriteLine(str);
}
static void Print(int
number)
{
Console.WriteLine(number);
}
Слайд 25Задачи
Напишите метод, который определяет, сколько раз определенное число может быть
найдено в заданном массиве. Напишите программу для проверки правильности работы
метода.