Содержание
- 2. Определение класса // Исходное определение класса class Employee { // Внутренние закрытые данные класса private string
- 3. Определение класса public static void Main() { // Вызываем конструктор по умолчанию. // Заполняет все поля
- 4. Использование ключевого слова this class Employee { public Employee(string fullName, int empID, float currPay) { this.fullName
- 5. Определение открытого интерфейса по умолчанию Открытый интерфейс по умолчанию – набор public-членов класса: методы – наборы
- 6. Указание области видимости на уровне типа class HelloClass { } // Класс доступен вне пределов сборки,
- 7. Указание области видимости на уровне типа namespace HelloClass { using System; internal struct X // Эта
- 8. Средства инкапсуляции в C# Ко внутренним данным объекта нельзя обратиться через экземпляр этого объекта Создать традиционную
- 9. Реализация инкапсуляции традиционными методами // Определение традицонных методов доступа и изменения для закрытой переменной public class
- 10. Реализация инкапсуляции традиционными методами // Применение методов доступа и изменения public static int Main(string[] args) {
- 11. Применение свойств класса // Пользовательское свойство EmpID для доступа к переменной empID public class Employee {
- 12. Внутреннее представление свойств // Помните, что свойство C# автоматически отображается // в пару методов get/set public
- 13. Свойства только для чтения (или записи) public class Employee { // Будем считать, что исходное значение
- 14. Статические конструкторы // Статические конструкторы используются // для инициализации статических переменных public class Employee { //
- 15. Статические свойства public class Employee { // Статическая переменная private static string compname; // Статическое свойство
- 16. Создание полей «только для чтения» public class Employee { . . . // Поле только для
- 17. Статические поля «только для чтения» // В классе Tire определен набор полей только для чтения public
- 18. Статические поля «только для чтения» // Так можно использовать динамически создаваемые поля только для чтения public
- 19. Поддержка наследования
- 20. Наследование в C# Классическое наследование (отношение «быть» – is-a) Включение-делегирование (отношение «иметь» – has-a)
- 21. Добавляем в пространство имен Employees два новых производных класса namespace Employees { public class Manager :
- 22. Создаем объект производного класса и проверяем его возможности public static int Main(string[] args) { // Создаем
- 23. Работа с конструктором базового класса // При создании объекта производного класса конструктор производного класса // автоматически
- 24. Множественное наследование В C# множественное наследование классов запрещено Множественное наследование интерфейсов разрешено
- 25. Защищаемые поля Использование ключевого слова protected public class Employee { protected string fullName; protected int empID;
- 26. Запрет наследования «Запечатанные» классы public sealed class PartTimePerson: SalesPerson { public PartTimePerson(string fullName, int empID) {
- 27. Модель включения-делегирования has-a public class Radio { public Radio(){} public void TurnOn(bool on) { if (on)
- 28. public class Car {// Этот класс будет выступать в роли внешнего класса, класса-контейнера для Radio private
- 29. Помещение радиоприемника внутрь автомобиля // Автомобиль «имеет» (has-a) радио public class Car { . . .
- 30. За создание объектов внутренних классов ответственны контейнерные классы public class Car { ... // Встроенное радио
- 31. Произвести инициализацию средствами C# можно и так public class Car { ... // Встроенное радио private
- 32. Делегирование public class Car { ... // Встроенное радио private Radio theMusicBox = new Radio; ...
- 33. Использование делегирования // Выводим автомобиль на пробную поездку public class CarApp { public static int Main(string[]
- 34. Определение вложенных типов // В C# можно вкладывать в друг друга классы, интерфейсы и структуры public
- 35. Класс Radio теперь вложен в Car // Класс Radio вложен в класс Car. Все остальное —
- 36. Поддержка полиморфизма в C# // Пусть в классе Employee определен метод для поощрения сотрудников public class
- 37. Использование метода GiveBonus public static int Main(string[] args) { Manager sasha = new Manager("Саша", 92, 100000,
- 38. Поддержка полиморфизма в C# public class Employee { … // Для метода GiveBonus предусмотрена реализация по
- 39. Переопределение виртуальных методов public class SalesPerson : Employee { // На размер поощрения продавцу будет влиять
- 40. Улучшенная система поощрений! public static int Main(string[] args) { Manager sasha = new Manager("Саша", 92, 100000,
- 41. Абстрактные классы Employee X = new Employee(); // А это кто такой? // Создание объектов абстрактного
- 42. Абстрактные методы namespace Shapes { public abstract class Shape { // Пусть каждый объект-геометрическая фигура получит
- 43. Абстрактные методы // В объекте Circle реализация базового класса для Draw() не замещена public static int
- 44. Абстрактные методы // Каждая геометрическая фигура теперь ОБЯЗАНА самостоятельно определять метод Draw() public abstract class Shape
- 45. Абстрактные методы // Если мы не заместим в классе Circle абстрактный метод Draw(), класс Circle будет
- 46. Полиморфизм в действии namespace Shapes { using System; public class ShapesApp { public static int Main(string[]
- 47. Сокрытие методов // Класс Oval наследует Circle, но скрывает унаследованный // метод Draw public class Oval
- 48. Приведение типов // Класс Manager – производный от System.Object object o = new Manager(…) // Класс
- 49. Использование приведения типов public class TheMachine { public static void FireThisPerson(Employee e) { // Удаляем сотрудника
- 50. Обработка исключений
- 51. Генерация исключения // В настоящее время SpeedUp()выводит сообщения об ошибках прямо на системную консоль public void
- 52. Перехват исключений public static int Main(string[ ] args) // Безопасно разгоняем автомобиль { Car buddha =
- 53. Создание пользовательских исключений // Это пользовательское исключение более подробно описывает // ситуацию выхода машины из строя
- 54. Генерация пользовательского исключения // Генерируем пользовательское исключение public void SpeedUp(int delta) { // Если машина вышла
- 55. Перехват пользовательского исключения try { for(int i = 0; i buddha.SpeedUp(10); } catch (CarIsDeadException e) {
- 56. Создание пользовательских исключений (2-й вариант) public class CarIsDeadException : System.Exception { // Конструкторы для создания польз.
- 57. Генерация пользовательских исключений (2-й вариант) public void SpeedUp(int delta) { if (dead) { // Передаем имя
- 58. Обработка нескольких исключений // Проверка параметров на соответствие условиям public void SpeedUp(int delta) { // Ошибка
- 59. Обработка нескольких исключений // Теперь мы готовы перехватить оба исключения try { for(int i = 0;
- 60. Блок finally // Используем блок finally для закрытия всех ресурсов public static int Main(string[] args) {
- 61. Необработанное исключение
- 62. Не допускайте бесконечной генерации ошибок try { // Разгоняем машину... } catch (CarIsDeadException e) { //
- 63. Жизненный цикл объектов public static int Main(string[] args) { // Помещаем объект класс Car в «кучу»
- 64. Контроль за свободной памятью // Создаем объекты Car таким образом, чтобы отреагировать на // возможную нехватку
- 65. Финализация объекта System.Object.Finalize() Нельзя замещать Нельзя вызывать public class Car : Object { // Деструктор C#
- 67. Скачать презентацию