Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
гавно для печати.docx
Скачиваний:
12
Добавлен:
21.09.2019
Размер:
171.17 Кб
Скачать

10. Структуры в c#. Создание структур, доступ к элементам, массивы структур.

Структуры, как и классы, используются как контейнерные объекты для многих видов объектов данных. Они могут реализовывать конструктуры, константы, поля, свойства, индексаторы, операторы и вложенные типы, т. е. структуры поддерживают все возможности, которые реализуются с помощью классов. Структуры во многом схожи с классами. Но классы являются ссылочными типами и поэтому только ссылаются на данные, которые в них хранятся. Структуры хранят действительные значения. Память для структур выделяется в стеке. По этой причине доступ к структурам осуществляется быстрее, чем классам, которые сохраняются в куче. Структуры не поддерживают наследования, но они, как и классы, могут реализовывать интерфейсы.Объявление структуры с помощью слова struct. [<атрибут><модификатор>struct<идентификатор>: <интерфейс><тело структуры>;]Пример: usingSystem;ClassusesStruct

{ struct point

{ public double x,y;

public point (double x, double y)

{ this.x = x;

this.y = y;}

}

static void Main ()

{ point [ ] pt = new point [5]; …

for (int i = 0; i < 5; i + +)

{ pt [i] = new point (i, i+2);

Console. Writeline (“{0}”, i);

Console. Writeline (“Значение x = {0}”, pt [i].x);

Console. Writeline (“Значение y = {0}”, pt [i].y); }

} }

Все базовые типы в С# в основном являются типами структур (sbyte, int, long), т. е. имена встроенных типов только псевдонимы соответствующим структурам пространства имён System. Стуктуры инициализируются только с помощью вызова конструктора. Структуры не поддерживают наследования. Однако, как и другие типы, они являются производными единого базового класса System. Object.

11.Объект и его свойства. Характеристики ооп.

В середине 80-х годов XXв. в программировании возникло новое направление, основанное на понятии объекта. ООП предназначено для написания сложных систем. Возникла потребность разделить программы не просто на процедуры, а на полностью независимые и самостоятельные классы процедур, которые сами отвечают за свое внутреннее состояние и внешнее поведение. Их отличительная черта состоит в том, что базируясь на эти классы, можно строить совершенно различные приложения.

Понятие объекта.Объект– это некая отдельная сущность, выделяющаяся среди других сущностей особыми свойствами, поведением, взаимодействием с себе подобными объектами приложения. Реальные объекты окружающего нас мира обладают тремя базовыми характеристиками: 1.они имеют набор свойств. Совокупность свойств объекта определяет его состояние. Как правило, свойства – это набор переменных и констант, в которых хранятся значения, определяющие параметры объекта. 2.Они способны разными методами изменять эти свойства. Метод–процедура, которая реализует возможные с объектом действия. 3.Способны реагировать на события, возникающие внутри самого объекта. События – это аналог сообщений, которые получают и отправляют объекты. Объекты, имеющие общие свойства, методы обработки данных, объединяются в классы. Класс – это новый тип данных, основанный на единой структуре объекта. При создании класса в современных средах программирования задаются 2 блока: 1.Данные - описываются все структуры данных, с которыми будет работать данный класс, а также создаются экземпляры объектов. 2.Методы- описываются свойства и методы обработки этих данных, еще говорят, описывается поведение данного класса. Классу присваивают имя.

Перед тем как начать создавать класс, необходимо определить три основных момента: 1.Какие действия должны выполнять объекты класса? 2.Что должен содержать класс объектов для выполнения действий? 3.Какие действия присущи объектам данного класса? Класс характеризуется следующими основополагающими понятиями ООП. 1.Наследование. Позволяет создавать новые классы на основе имеющегося класса, с наследованиемвсех его свойств и методов и добавлением собственных. Класс, не имеющий предшественника, называется базовым. Если первый называется базовым, то второй – производным классом (или подклассом). Иерархия. Производный класс сам может служить базовым. От одного базового класса можно образовывать несколько производных. Знание иерархии классов важно для понимания процессов выдачи ответов на сообщение. При получении сообщения объект ищет в протоколе методов экземпляра своего класса метод, совпадающий с именем сообщения. Если такого метода нет, он ищется в списке методов базового класса и т.д. когда метод обнаружен, он выполняется и выдается ответ. Если нигде нет, вплоть до корня дерева, метод не обнаружен, выдается сообщение об ошибке. 2. Полиморфизм. Объекты разных классов могут использовать одноименные методы, работающие по-разному для разных объектов. Или, другими словами, различные объекты выполняют одно и то же действие по-своему. В связи с этим в большинстве случаев методы базового класса у производных классов приходится переопределять. Итак, свойство объектов переопределять методы базового (наследуемого) класса и называется полиморфизмом. Полиморфизм проявляется в том, что одно и то же сообщение может посылаться разным объектам, и понимают они его каждый по-своему. Это увеличивает наглядность программ, поскольку не надо беспокоиться о случайном совпадении имен сообщений. Классы также являются объектами и им тоже можно посылать сообщение. Ведь сообщение – это вызов методов с заданными параметрами. 3. Инкапсуляция. Скрытие сложного механизма действия объекта, т.е. скрытие деталей, несущественных для использования объекта. Определив класс, можно создавать объекты этого класса и манипулировать ими, используя методы. Объекты, принадлежащие одному и тому же типу, образуют коллекцию. Причем, это будут объекты не обязательно одного класса.Свойства.Во многих языках программирования свойства реализуются в виде пары методов: метод, получающий текущее значение свойства, называется акцессор; метод, задающий новое значение свойства — мутатор. Принято называть процедуры свойств именем свойства с приставками get и set.С точки зрения пользователя, свойства выглядят практически так же, как и обычные поля класса. Им можно присваивать некоторые значения и получать их обратно. Свойства позволяют не только возвращать и изменять значение внутренней переменной класса, но и выполнять дополнительные функции.

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