XML Schema Definition Tool (Xsd.exe) – Позволяет создать классы DataSet на основании существующей XSD схемы.
Объектно-ориентированное программирование в C#
Классы и объекты
Если в других языках программирования вы могли писать несложные приложения, избегая классов, используя лишь принцип модульности, то, как вы смогли убедиться, любая программа на C# содержит как минимум один класс и еще больше использует классы из стандартных пространств имен - namespace.
Класс представляет из себя абстракцию. Под классом понимается описание чего-либо, причем этого «что-нибудь» может и не существовать. Например, можно смоделировать поведение антигравитатора или машины времени, описав какие-то его компоненты и доступные функции, но кто-нибудь разве видел антигравитатор или может кто-то видел машину времени?
Класс в программировании – это способ реализации естественного человеческого подхода к описанию. К примеру, возьмем велосипед. Все велосипеды можно каким-то образом охарактеризовать. Вы можете описать велосипед человеку, который его никогда не видел и он поймет, что такое велосипед. Описание можно разбить на две группы – свойства описываемого объекта и его функции. Так, например, велосипед имеет колеса, чтобы ездить, у него есть руль, чтобы управлять велосипедом и т. д. Велосипед можно описывать достаточно долго, не привязываясь к конкретному велосипеду. Кроме того, он еще способен выполнять какие-то действия, так, например, ехать, его руль можно поворачивать и вместе с ним поворачивается его колесо и т. д. Описание объекта может определить его свойства и поведение.
Когда мы используем слово «велосипед», то мы под ним как раз и понимаем описание чего-то, что имеет перечисленные выше свойства. Вместо слова велосипед мы могли бы каждый раз говорить более подробно, что он из себя представляет, но удобно ли это...
Объектно-ориентированные языки также предлагают возможность описать набор свойств и методов по работе с этими свойствами в виде некоторой сущности, которая называется классом.
Классы не ограничиваются описанием конкретных сущностей, вы можете описывать также и любую абстрактную сущность, такую как время.
Когда вы используете понятие велосипед, то самого велосипеда может и не существовать в принципе, под словом велосипед вы понимаете лишь некоторое описание, но у вас дома может стоять реальный велосипед. И если в вашем описании велосипеда присутствовали колеса, то вы не могли сказать какого размера эти колеса или хорошо ли они накачаны в данный момент, потому что в описании велосипеда самого велосипеда не существует. Но дома вы можете видеть конкретный экземпляр велосипеда с конкретными колесами и конкретного цвета.
Аналогично в программировании. Когда мы описываем класс, то мы даем лишь описание характеристик и функций. Сущность, которая построена на основе этого описания, называется объектом или экземпляром класса.
Даже если вы создаете два объекта одного и того же класса, то это будут разные объекты, так как вы можете купить два велосипеда одной модели. У них будут одинаковые характеристики, одинаковый цвет, но не смотря на одно описание это будут два разных велосипеда.
Необходимо понимать разницу между объектами, которые реально существуют и описанием.
Инкапсуляция
Сейчас не верится, что еще несколько лет назад такого стиля как объектно-ориентированное программирование просто не существовало. Сегодня программирование без использования ООП немыслимо. За несколько лет этот стиль получил самые лучшие отзывы по всему миру.
ООП поддерживает три основных принципа:
инкапсуляция
полиморфизм
наследование
В этом пункте будет разобран принцип инкапсуляции.
До появления объектно-ориентированного программирования программы содержали множество данных и множество функций по работе с ними. Любая функция могла получить доступ к любым данным, существующим в программе, хотя большинству функций нет необходимости иметь доступ ко всем данным, а только к некоторым. При росте программы наступал хаос. Программист переставал понимать, какие данные используются той или иной функцией. Кроме того, такой стиль программирования делал практически невозможной повторное использование программного обеспечения и его поддержку.
Появление ООП решило эту и многие другие проблемы. ООП поддерживает такое понятие как инкапсуляцию, которая состоит из двух аспектов:
Первый аспект мы уже обсуждали. Давайте рассмотрим, что понимается под контролем данных.
Контроль доступа к элементам сущности
Давайте рассмотрим описание человека. У человека есть такие атрибуты как голова, руки, ноги. Кроме того, человек может выполнять функции, такие как ходить, спать, есть. Предположим, вы реализовали человека таким образом, что все его свойства доступны. Что это означает? Вы в любой момент можете видеть сердце, легкие, желудок. Ужасно? Видно, что такая реализация не правильная. Логично, что вы можете видеть лицо человека, пожимать ему руку, но, скажем, ковыряться у него в зубах дело дантиста, а такие вещи как душа человека нам вообще не доступны. Очевидно, что должна быть возможность ограничивать доступ к свойствам описываемого. Аналогично необходимо ограничить доступ и к методам. Так, например, врядли кто-то может читать мысли человека.
Рассмотрим еще один пример. Пусть у нас есть некая абстракция, которая реализует работу со списком и одним из ее элементов будет переменная, содержащая количество элементов в списке на текущий момент.
class List
{
int nCount;
...
void Add(. . .)
void Remove(. . .)
}
При добавлении элементов в список, количество элементов увеличивается, а при удалении элементов уменьшается. Очевидно, что большинство функций в этом классе будут использовать количество элементов для доступа к элементам списка, а некоторые функции, такие как функция, добавляющая или удаляющая элементы из списка, будут также изменять количество элементов.
Предположим, что вы в своей программе принудительно изменили число элементов в списке. В этом случае вы получите в лучшем случае неправильную работу с объектом класса List.
Одна из возможностей ООП заключается в том, чтобы позволить разработчику классов регулировать доступ к его элементам. Для этого существует два ключевых слова private и public, которые принято называть модификаторами доступа.
Достарыңызбен бөлісу: |