Главная страница
Навигация по странице:

  • Особенности платформы .NET Framework

  • Архитектура приложений

  • Технологическое определение

  • 1. Классы и их экземпляры как основа объектной модели Синтаксическое определение на языке программирования

  • 2. Реализация класса в C. Конструкторы класса Название классаЗакрытые переменныеКонструкторыПример реализации класса в C

  • Замечания по реализации конструкторов в C

  • Ключевое слово this (продолжение)

  • Еще одно применение ключевого слова this

  • Применение цепочки конструкторов

  • 5. Видимость членов класса в C

  • Видимость членов класса в C

  • 6. Определение свойств в C Определение свойствПример определения свойств в C

  • 7. Определение методов в C Пример реализации метода в C

  • 8. Статические методы и методы экземпляров Пример реализации статического метода

  • Вызов метода экземпляра в C

  • 9. Константы и поля для чтения

  • Поля для чтения Поля для чтения. Пример

  • 1.1 Классы и объекты. Введение Алгоритмизация и программирование


    Скачать 1.55 Mb.
    НазваниеВведение Алгоритмизация и программирование
    Дата11.06.2021
    Размер1.55 Mb.
    Формат файлаpptx
    Имя файла1.1 Классы и объекты.pptx
    ТипЛекции
    #216638

    Введение

    Алгоритмизация и программирование

    Структура курса

    • Основы объектно-ориентированного программирования
    • Обработка исключительных ситуаций
    • Основы типов
    • Типы значений и ссылочные типы
    • Перегрузка методов
    • Структуры и перечисления
    • Тип Nullable, анонимные типы и методы расширения
    • Коллекции

    Базовые понятия

    • Примитивные типы данных
    • Переменная
    • Литералы
    • Бинарные и унарные арифметические операции, битовые операции
    • Циклы
    • Условные конструкции, операции сравнения и логические операции
    • Массивы одномерные, многомерные и ступенчатые
    • Проект и решение
    • Менеджер пакетов NuGet

    Содержание лекции

    • Архитектура приложений .NET
    • Классы и объекты
    • Конструкторы классов
    • Ключевое слово this
    • Видимость членов класса
    • Статические методы и методы экземпляров
    • Константы и поля для чтения

    Особенности платформы .NET Framework

    Основой платформы .NET Framework является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду. CLR компилирует код приложения на языке CIL (реализация компиляции которого компанией Microsoft называется MSIL) во время его исполнения, а также предоставляет MSIL-программам (а следовательно, и программам, написанным на языках высокого уровня, поддерживающих .NET Framework) доступ к библиотеке классов .NET Framework, или так называемой .NET FCL (англ. Framework Class Library).

    Архитектура приложений

    Открытость платформы

    Все языки, включаемые в среду разработки Visual Studio .Net, должны использовать единый каркас – .NET.

    Это дает возможность разработки нескольких частей одного приложения на разных языках.

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

    Преодоление языкового барьера - одна из важнейших задач современного мира.


    Технологическое определение

    Класс – описание структуры объекта и методов работы с ним.

    Объект – структура данных, содержащая описание свойств внешнего объекта программирования.

    Метод – функция, работающая с объектом.

    1. Классы и их экземпляры как основа объектной модели

    Синтаксическое определение на языке программирования

    Класс – это тип данных, определяемый программистом.

    Тип данных – форма представления данных с набором операций.

    Объект – переменная класса.

    Классы позволяют группировать в единое целое данные и функциональность, моделируя объекты реального мира.

    Класс может содержать в своем теле:
      • поля,
      • методы,
      • свойства
      • события.

      • Поля определяют состояние, а методы – поведение будущего объекта.

    Пример.

    Класс, который должен хранить данные об имени сотрудника, его идентификационном номере и текущей заработной плате.

    Помимо этого в классе определены два метода – GiveBonus() для увеличения заработной платы сотрудника и DisplayStats() для вывода всех имеющихся данных об этом сотруднике.

    2. Реализация класса в C#. Конструкторы класса

    Название класса

    Закрытые переменные

    Конструкторы

    Пример реализации класса в C#

    Конструктор по умолчанию

    Конструктор класса

    — специальный метод, который вызывается во время построения класса

    Пользовательский конструктор

    Бывают двух видов:

    Конструкторы по умолчанию. Задача – инициализация полей значениями по умолчанию.

    Пользовательские конструкторы. Задача – инициализация полей предопределенными пользователем значениями.

    Конструкторы в C#
    • Если в теле класса не определен явно ни один конструктор, то всегда используется «невидимый» конструктор по умолчанию.
    • Имя конструктора всегда совпадает с именем класса. Конструкторы не имеют возвращаемых значений.
    • Если в классе имеется пользовательский конструктор, и при этом требуется создавать экземпляры класса с использованием конструктора по умолчанию, то конструктор по умолчанию должен быть определен в теле класса явно, иначе возникнет ошибка на уровне компиляции.

    Замечания по реализации конструкторов в C#

    CLR требует, чтобы все объекты создавались оператором new.

    Он выполняет следующие действия:

    1. Вычисление количества байтов, необходимых для хранения всех экземплярных полей типа и всех его базовых типов. Кроме того, в каждом объекте кучи должны присутствовать дополнительные члены, называемые указателем на объект-тип и индексом блока синхронизации; они необходимы CLR для управления объектом. Байты этих дополнительных членов добавляются к байтам, необходимым для размещения самого объекта.

    2. Выделение памяти для объекта с резервированием необходимого для данного типа количества байтов в управляемой куче. Выделенные байты инициализируются нулями.

    3. Инициализация указателя на объект-тип и индекса блока синхронизации (обеспечение работы объекта в условиях многопоточности).

    4. Вызов конструктора экземпляра типа с параметрами, указанными при вызове new.

    3. Оператор new

    Выполнив все эти операции, new возвращает ссылку (или указатель) на вновь созданный объект.

    У оператора new нет пары — оператора delete, то есть нет явного способа освобождения памяти, занятой объектом. Уборкой мусора занимается среда CLR, которая автоматически находит объекты, ставшие ненужными или недоступными, и освобождает занимаемую ими память.

    Инициализация объектов

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

    Принимаемые параметры

    Внутренние переменные-члены класса

    4. Ключевое слово this

    Чтобы избежать конфликта, можно определить для принимаемых переменных имена, отличные от имен переменных-членов класса.

    Пример возможной дисциплины именования переменных-членов класса

    Ключевое слово this (продолжение)

    Техника под названием сцепление конструкторов или цепочка конструкторов (constructor chaining)

    Второй конструктор принимает один параметр и перенаправляет вызов главному конструктору с тремя параметрами

    Главный конструктор принимает три параметра

    Еще одно применение ключевого слова this

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

    В приведенном выше примере нет никакой необходимости дублировать во всех трех конструкторах одну и ту же последовательность инициализации, и благодаря применению ключевого слова this такое дублирование исключается.

    Другое преимущество организации подобного вызова перегружаемого конструктора заключается в возможности создавать конструкторы с задаваемыми "по умолчанию" аргументами, когда эти аргументы не указаны явно.

    Применение цепочки конструкторов

    Модификаторы доступа:

    Public – член объекта (метод или свойство) доступен всем;

    Protected – член объекта доступен только самому объекту и его потомкам;

    Private – член объекта является закрытым и не доступен за его пределами;

    Internal – член объекта доступен только в пределах текущей сборки;

    Внимание (!) Никогда не следует делать поля открытыми, это плохой стиль. Для обращения к полю, рекомендуется использовать методы доступа set и get.

    Неправильно

    Правильно

    5. Видимость членов класса в C#

    Объявление полей класса без модификатора доступа равнозначно их объявлению с модификатором private. Классы, объявленные без модификатора, по умолчанию имеют доступ internal.

    Все классы и структуры, определенные напрямую в пространствах имен и не являющиеся вложенными в другие классы, могут иметь только модификаторы public или internal.

    Видимость членов класса в C#

    Свойства – отдельные структуры данных. Заменяет использование методов.

    Методы доступа set и get могут иметь модификаторы доступа.

    По умолчанию методы доступа создаются открытыми (public) для общего использования.

    Если нужно сделать так, чтобы свойство нельзя было изменить, то set можно объявить как private

    В этом случае свойство EmpID не может быть изменено извне класса, потому что к нему нет доступа.

    Однако к нему можно получить доступ на запись внутри текущего класса.

    Запрет только на внешний доступ.

    6. Определение свойств в C#

    Определение

    свойств

    Пример определения свойств в C#

    Метод – это набор действий, который рассматриваются как единое целое и может быть выполнен в ходе работы программы.

    Модификаторы доступа:

    Public – модификатор общедоступности метода (метод доступен всем);

    Private – метод будет доступен только из класса, в котором определен данный метод (действует по умолчанию);

    Protected – метод будет доступен как из класса, в котором он определен, так и из любого производного класса;

    Internal – метод будет доступен из всех классов внутри сборки, в которой он определен. Из-за пределов этой сборки обратиться к нему будет нельзя;

    Protected internal – действует как protected или как internal

    7. Определение методов в C#

    Пример реализации метода в C#

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

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

    8. Статические методы и методы экземпляров

    Пример реализации статического метода

    Для вызова метода экземпляра необходимо сначала создать объект класса, в котором определен данный метод. Затем метод вызывается через объект другого класса.

    Вызов метода экземпляра в C#

    Особенностью констант является то, что их значение можно установить только один раз. Например, если у нас в программе есть некоторые переменные, которые не должны изменять значение (к примеру, число PI, число e и т.д.), мы можем объявить их константами. Для этого используется ключевое слово const:

    const double PI = 3.14;

    const double E = 2.71;

    9. Константы и поля для чтения

    Поля для чтения можно инициализировать при их объявлении либо на уровне класса, либо инициилизировать и изменять в конструкторе. Инициализировать или изменять их значение в других местах нельзя, можно только считывать их значение.

    Поле для чтения объявляется с ключевым словом readonly.

    Поля для чтения

    Поля для чтения. Пример

    class MathLib

    {

    public readonly double K = 23; // можно так инициализировать

    public MathLib(double _k)

    {

    K = _k; // поле для чтения может быть инициализировано

    // или изменено в конструкторе после компиляции

    }

    public void ChangeField()

    {

    // так нельзя

    //K = 34;

    }

    }


    написать администратору сайта