Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры C#.doc
Скачиваний:
16
Добавлен:
22.09.2019
Размер:
472.58 Кб
Скачать

8. Структуры в c#, создание структуры.

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

Объявление структуры с помощью слова struct. [<атрибут> <модификатор> struct <идентификатор>: <интерфейс> <тело структуры>;]

Пример: using System;

Class uses Struct

{ 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.

9. Понятие объектно-ориентированного программирования.

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

Понятие объекта. Объект – это некая отдельная сущность, выделяющаяся среди других сущностей особыми свойствами, поведением, взаимодействием с себе подобными объектами приложения.Реальные объекты окружающего нас мира обладают тремя базовыми характеристиками:

  1. они имеют набор свойств. Свойство – это признак, некоторое отдельное качество (параметр) объекта. Например, свойствами могут быть размеры объекта, заголовок, его наименование. Совокупность свойств объекта определяет его состояние. Как правило, свойства – это набор переменных и констант, в которых хранятся значения, определяющие параметры объекта.

  2. Они способны разными методами изменять эти свойства. Метод – это функция или процедура, которая реализует возможные с объектом действия.

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

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

Объекты, имеющие общие свойства и поведение, методы обработки данных, объединяются в классы. Класс – это новый тип данных, основанный на единой структуре объекта.При создании класса в современных средах программирования задаются, фактически, 2 блока:

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

  2. Методы - описываются свойства и методы обработки этих данных, еще говорят, описывается поведение данного класса. Классу присваивают имя.

Перед тем как начать создавать класс, необходимо определить три основных момента:

  • Какие действия должны выполнять объекты рассматриваемого класса?

  • Что должен содержать класс объектов для выполнения заданных действий? Переменные можно использовать для хранения информации внутри объекта, а свойства – для доступа к этой информации извне. Создаваемые свойства могут быть доступны для чтения и записи или только для чтения.

  • Какие действия присущи объектам данного класса? Можно создавать процедуры и функции для реализации методов, обеспечивающих выполнение этих действий. (процедуры выполняют действия; функции возвращают некоторые значения).

Свойства класса.Класс является носителем общих для объектов этого класса признаков. Класс характеризуется следующими основополагающими понятиями ООП.

  1. Наследование. Позволяет создавать новые классы, на основе имеющегося класса, с наследованием всех его свойств и методов и добавлением собственных. Класс, не имеющий предшественника, называется базовым (классом-родителем). Если первый называется базовым, то второй – производным классом (или подклассом). Например, класс «животное» имеет свойства «название», «размер», методы «идти», «размножаться». Созданный на его основе класс «корова» наследует все эти свойства и методы, к которым дополнительно добавляется свойство «домашнее» и метод «давать молоко».Иерархия. Производный класс сам может служить базовым, т.е. от него образовывать новые классы. В этом случае полученный класс будет включать в себя элементы всех его базовых классов. От одного базового класса можно образовывать несколько производных. Таким образом, возможна древовидная структура иерархии классов.Знание иерархии классов важно для понимания процессов выдачи ответов на сообщение. При получении сообщения объект ищет в протоколе методов экземпляра своего класса метод, совпадающий с именем сообщения. Если такого метода нет, он ищется в списке методов базового класса и т.д. когда метод обнаружен, он выполняется и выдается ответ. Если нигде нет, вплоть до корня дерева, метод не обнаружен, выдается сообщение об ошибке.

  2. Полиморфизм. Объекты разных классов могут использовать одноименные методы, работающие по-разному для разных объектов. Или, другими словами, различные объекты выполняют одно и то же действие по-своему. В связи с этим в большинстве случаев методы базового класса у производных классов приходится переопределять. Объект класса «корова» выполняет метод «идти» совсем не так, как объект класса «кенгуру». Все переопределяемые методы по написанию (названию) будут совпадать с методами базового объекта, однако компилятор по типу объекта (его классу) распознает, какой конкретно метод надо использовать, и не вызовет для объекта класса «корова» метод «идти» класса «животные».Итак, свойство объектов переопределять методы базового (наследуемого) класса и называется полиморфизмом. Полиморфизм проявляется в том, что одно и то же сообщение может посылаться разным объектам, и понимают они его каждый по-своему. Это увеличивает наглядность программ, поскольку не надо беспокоиться о случайном совпадении имен сообщений. Классы также являются объектами и им тоже можно посылать сообщение. Ведь сообщение – это вызов методов с заданными параметрами. Весь Windows имеет один интерфейс – оконный, но имеется множество методов его поддержки, т.е. разные окна решают разные задачи.

  3. Инкапсуляция. Скрытие сложного механизма действия объекта, т.е. скрытие деталей, несущественных для использования объекта.Определив класс, можно создавать объекты этого класса и манипулировать ими, используя методы. При этом некоторые данные и методы, инкапсулированные в одном классе, можно сделать недоступными вне реализации класса, а другие могут быть доступны из любого места программы. (Это атрибуты доступа к ним – public, protected, private). Объекты, принадлежащие одному и тому же типу, образуют коллекцию. Причем, это будут объекты не обязательно одного класса.