Классы и методы в C#
Классы
Модификаторы доступа к классам
Объявление классов
Члены класса
Модификаторы доступа к членам класса
Модификаторы доступа к членам класса
Модификаторы доступа к членам класса
Поля класса
Создание объектов
Доступ к членам объекта
Константы
Методы
Методы
Задание 1
Свойства
Свойства
Свойства
Свойства
Задание 2
Вложенные типы
Вложенные типы
События
События
Задание 3
Самостоятельно
Домашнее задание
Самостоятельно
Самостоятельно
1.63M
Категория: ПрограммированиеПрограммирование

Классы и методы в C#

1. Классы и методы в C#

2. Классы

Класс – это абстрактный тип данных, т.е. это
некоторый шаблон, на основе которого будут
создаваться его экземпляры – объекты.
В С# классы объявляются с помощью
ключевого слова class:
[модификатор доступа] class [имя_класса]
{
//тело класса
}

3. Модификаторы доступа к классам

- public – доступ к классу возможен из любого
места одной сборки либо из другой сборки, на
которую есть ссылка;
- internal – доступ к классу возможен только из
сборки, в которой он объявлен.
Если при объявлении класса не указать
модификатор доступа, то по умолчанию будет
применяться режим internal.
Сборка – это готовый функциональный
модуль в виде exe либо dll файла (файлов),
который содержит скомпилированный код для
.NET.

4. Объявление классов

Класс следует объявлять внутри пространства
имен namespace, но за пределами другого класса
Пример:
namespace HelloWorld
{
class Student // класс будет internal
{
//тело класса
}
public class Pupil
{
//тело класса
}
}

5. Члены класса

- поля;
- константы;
- свойства;
- конструкторы;
- методы;
- события;
- операторы;
- индексаторы;
- вложенные типы.
Все члены класса также имеют свой уровень
доступа.

6. Модификаторы доступа к членам класса

- public – доступ к члену возможен из любого
места одной сборки, либо из другой сборки, на
которую есть ссылка;
- protected – доступ к члену возможен только
внутри класса, либо в классе-наследнике;
- internal – доступ к члену возможен только из
сборки, в которой он объявлен;
- private – доступ к члену возможен только внутри
класса;
- protected internal - доступ к члену возможен из
одной сборки, либо из класса-наследника другой
сборки.

7. Модификаторы доступа к членам класса

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

8. Модификаторы доступа к членам класса

Классы и члены класса можно сделать
статическими с помощью служебного слова static.
Пример:
public static class Class1
{
}
При использовании статического класса не
обязательно создавать объект класса для
обращения к классу и его членам.

9. Поля класса

Поле – это переменная, объявленная внутри
класса. Для получения доступа к полям следует
использовать свойства или методы.
Пример:
class Student
{
private string firstName;
private string lastName;
private int age;
public string group; // не рекомендуется
использовать public для поля
}

10. Создание объектов

После объявления класса можно создавать
объекты при помощи ключевого слова new и имени
класса:
namespace HelloWorld
{
class Student
{
private string firstName;
private string lastName;
private int age;
public string group;
}
class Program
{
static void Main(string[] args)
{
Student student1 = new
Student(); //создание объекта
student1 класса Student
Student student2 = new
Student();
}
}
}

11. Доступ к членам объекта

Доступ осуществляется при помощи оператора
точка «.» :
static void Main(string[] args)
{
Student student1 = new Student();
Student student2 = new Student();
student1.group = "Group1";
student2.group = "Group2";
Console.WriteLine(student1.group); // выводит "Group1"
Console.Write(student2.group);
Console.ReadKey();
}

12.

Рассмотрим пример:
namespace HelloWorld
{
class Student
{
private string firstName;
private string lastName;
private int age;
public string group;
}
class Program
{
static void Main(string[] args)
{
Student student1 = new Student();
student1.firstName= "Nikolay"; //ошибка, нет доступа к
полю firstName. }

13. Константы

Константы - члены класса не отличаются от
простых констант.
Константа – это переменная, значений которой
нельзя изменить.
Константа объявляется с помощью ключевого
слова const.
Пример:
class Math
{
private const double Pi = 3.14;
}

14. Методы

Метод – это небольшая подпрограмма, которая
выполняет, в идеале, только одну функцию.
Методы позволяют сократить объем кода.
Различают статические и простые методы.
Статический метод – это метод, который не
имеет доступа к полям объекта, и для вызова
такого метода не нужно создавать экземпляр
(объект) класса, в котором он объявлен.
Простой метод – это метод, который имеет
доступ к данным объекта, и его вызов выполняется
через объект.

15. Методы

[модификаторы] <тип_возврата> ИмяМетода
([параметры])
{ // Тело метода }
Пример:
1) public double Meth1(double a)
{…
return(Math.Pow(a,2))
}
2)
private void Meth2()
{…
}

16. Задание 1

Создать новый класс Tel, содержащий поля
день разговора (задается целым числом в
интервале от 1 до 7), время разговора
(вещественное число) и стоимость
(вещественное число). Создать новый метод для
подсчета стоимости телефонного разговора в
зависимости от дня недели: в выходные дни
стоимость разговора меньше на 10%.

17. Свойства

Свойства класса - это член класса, который
предоставляет удобный механизм доступа к полю
класса (чтение поля и запись).
При использовании свойства, мы обращаемся к
нему, как к полю класса, но на самом деле
компилятор преобразовывает это обращение к
вызову соответствующего неявного метода.
Такой метод называется аксессор (accessor).

18. Свойства

Существует два аксессора:
get (для получения данных из поля) и
set (для записи).
Объявление простого свойства имеет
следующую структуру:
<тип> <имя>
{
get
{ // код аксессора для чтения из поля }
set
{ // код аксессора для записи в поле }
}

19. Свойства

Пример:
public class Date
{ private int month = 7;
Public int Month
{
get {
return month; }
set {
if ((value > 0) && (value < 13)) { month = value; } }
}
}

20. Свойства

Метод доступа get должен заканчиваться
оператором return или throw.
В методе доступа set используется неявный
параметр value, тип которого соответствует типу
свойства.

21. Задание 2

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

22. Вложенные типы

Тип, определенный внутри класса, называется
вложенным типом.
Пример:
class Container
{
class Nested
{
Nested() { }
}
}

23. Вложенные типы

Вложенные типы по умолчанию
являются private, но могут быть также public,
protected internal, protected или internal.
Для создания нового экземпляра вложенного
класса следует использовать запись:
Container.Nested a= new Container.Nested();

24. События

Прежде чем рассмотреть события, необходимо
ознакомиться с понятием делегат.
Делегат – это объект, указывающий на другой
метод (или список методов) приложения, который
может быть вызван позднее.
Тип делегата объявляется с помощью
ключевого слова delegate:
delegate <возвращаемый_тип> имя
(список_параметров);

25.

using System;
namespace ConsoleApplication1
{ // Создадим делегат
delegate int IntOperation (int i, int j);
class Program
{ // Организуем ряд методов
static int Sum(int x, int y)
{ return x + y; }
static int Prz(int x, int y)
{ return x * y; }
static void Main()
{ // Сконструируем делегат
IntOperation op1 = new IntOperation(Sum);
int result = op1(5, 10);
Console.WriteLine("Сумма: " + result);
// Изменим ссылку на метод
op1 = new IntOperation(Prz);
result = op1(5, 10);
Console.WriteLine("Произведение: " + result);}
}
}

26. События

Событие - это ситуация, при возникновении
которой произойдет действие или несколько
действий.
Событие задается ключевым словом event:
public event <НазваниеДелегата>
<НазваниеСобытия>;
Для запуска события используется запись:
<НазваниеСобытия> ()

27. Задание 3

Определено два класса. Первый класс будет
находить квадрат числа от 1 до 10, используя
цикл. Другой класс будет ждать, когда в первом
классе квадрат числа станет больше 25, и после
этого выведет в консоль фразу «Квадрат числа
больше 25!».

28.

29. Самостоятельно

Изменить в задании 3 следующие параметры:
Первый класс будет находить куб числа от 10 до
20, используя цикл.
Другой класс будет ждать, когда в первом
классе куб числа станет больше 2744, и после
этого выведет в консоль фразу «Куб числа
больше 14^3!».

30. Домашнее задание

Найти и законспектировать:
1. Индексаторы класса и их использование в C#.
2. Конструкторы класса в С#.

31. Самостоятельно

1. Создать новый класс, содержащий поля
количество дней (задается целым числом с
учетом того, что в месяц не более 26 рабочих
дней), среднее значение отработанных часов в
день (вещественное число) и стоимость 1 часа
(вещественное число), надбавки (в %). Создать
новый метод для подсчета заработной платы за
месяц с учетом надбавки. Использовать при
решении поля, методы, свойство (для
ограничения количества дней в рабочем месяце).

32. Самостоятельно

2. В предыдущую задачу добавьте событие:
если среднее значение отработанных часов в
день превышает 8 часов, выводится сообщение
«Переработка!».
English     Русский Правила