Какие свойства присутствуют не у всех объектов класса
КАТЕГОРИИ:
Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)
Как указывалось выше, класс объектов представляет собой совокупность объектов, обладающих одинаковым набором свойств. При описании предметной области надо изобразить набор свойств, фиксируемых для объектов каждого из представленных в модели классов. Для обозначения свойств будем использовать прямоугольник, изображенный пунктирной линией.
Связь между объектом и характеризующим его свойством изображается в виде линии, соединяющей
Рис. 10 Изображение объекта и его свойствах обозначения. Характер связи между объектом и его свойством может быть различный.
Объект может обладать только одним значением какого-то свойства в каждый момент времени. Назовем такие свойства единичными. Например, каждый человек может иметь только одну «ДАТу_РОЖДЕНИЯ» или «СТАЖ_ РАБОТЫ». Для других свойств возможно существование одновременно нескольких их значений у одного и того же объекта (например, свойство «ИНОСТРАННЫЙ ЯЗЫК» у объекта «СОТРУДНИК» в случае, если «СОТРУДНИК» может владеть несколькими иностранными языками). Такое свойство будем называть множественным. При изображении связи между объектом и его свойствами для единичных свойств будем использовать одинарную стрелку, а для множественных свойств – двойную стрелку на конце линии, соединяющей объект с данным свойством (рис. 10,11).
Рис. 11 Пример изображения единичных и множественных динамических и статических свойств
Значения некоторых свойств не могут измениться с течением времени. Назовем такие свойства статическими,а те свойства, значения которых могут изменяться со временем, будем называть динамическими.Для обозначения динамических свойств будем использовать букву «Д», а статических – «С» над соответствующей линией. Так, упомянутое выше свойство ДАТАРОЖДЕНИЯ будет являться статическим, а «СТАЖ» – динамическим.
Рис. 12. Пример изображения условного свойства
Другой характеристикой связи между объектом и его свойством является признак того, присутствует ли это свойство у всех объектов данного класса, либо оно может отсутствовать у некоторых из объектов. Например, для отдельных служащих может иметь место свойство «УЧЕНАЯ_СТЕПЕНЬ», а другие объекты этого класса могут не обладать указанным свойством. Назовем свойства, присутствующие не у всех объектов данного класса, условными. При изображении связи условного свойства с объектом будем использовать пунктирную линию, а в случае, если свойство определено для всех экземпляров объектов данного класса, – сплошную (рис. 12). Правильность отображения предметной области в ER-модель будет зависеть от того, какие ситуации возможны в данной предметной области, а какие – нет. Так, если в вузе сотрудник может занимать несколько должностей одновременно, например, быть одновременно ректором и заведующим кафедрой, то фрагмент ER-модели будет выглядеть так, как изображено на рис. 12, а если внутривузовское совместительство не разрешено – то так, как изображено на рис. 12 б.
Рис. 12. Варианты изображения (в зависимости от предметной области)
Иногда в ER-модели бывает полезно ввести понятие «составного свойства».
Составным будем называть такое свойство, которое может включать составляющие его элементы.
Примером такого свойства могут быть «АДРЕС», состоящий из «ГОРОДА», «УЛИЦЫ», «ДОМА» и «КВАРТИРЫ». Будем использовать для обозначения составного свойства пунктирный квадрат, из которого исходят линии, соединяющие его с обозначениями составляющих его элементов (рис. 2.7, 2.11).
Рис. 13. Пример изображения составного свойства Личность
При проектировании БД определяются тип и длина полей. Для того, чтобы иметь возможность правильно выбрать эти характеристики, необходимо иметь соответствующую информацию о типе представления атрибута в «немашинной» системе и требования/пожелания пользователей об их отображении в автоматизированной системе, может быть даже с предпочтениями. Например, предположим, что желательно было бы хранить в БД изображение. Если это невозможно в целевой СУБД, то:
• поле, соответствующее данному атрибуту, не вводить
• связать с системой, которая может хранить рисунок
• заменить рисунок описанием.
Например, в «Листке по учету кадров» хранится фотография. Если есть возможность ее сканирования и связи соответствующего файла с записями БД, то сделать это, если нет – то ничего, соответствующего фотографии, не хранить в ИС.
Для всех реквизитов символьного типа должна быть указана их максимальная длина (а лучше не только максимальная, но и минимальная и «средневзвешенная»).
Чтобы не загромождать ER-модель, такие характеристики рекомендуется отображать не непосредственно в модели, а в каталоге реквизитов.
Понятия «объект» и «свойство» являются относительными. Что в каждой из моделей ПО следует считать самостоятельным объектом, а что – свойством другого объекта, будет зависеть от аспекта рассмотрения данной предметной области. Например, пусть строиться АИС для управления конкретным учебным заведением. Для «СОТРУДНИКОВ» и «УЧАЩИХСЯ» указывается, какое учебное заведение они закончили. Больше никакой информации об учебных заведениях не хранится; никакой специальной обработки по этому признаку не производится. В этом случае не стоит выделять отдельный объект «уЧЕБНОЕ_ЗАВЕДЕНИЕ», а следует считать его свойством соответствующего объекта. Если же в предметной области отражается дополнительная информация об учебных заведениях, например, их адрес, тип и т. п., то «уЧЕБНОЕ_ЗАВЕДЕНИЕ» следует рассматривать как самостоятельный объект.
В общем случае можно дать следующие рекомендации по поводу того, что следует выделять в качестве самостоятельного объекта в ER-модели. В качестве самостоятельного объекта в ER-модели следует изображать сущности:
• имеющие более одного идентификатора;
• для которых фиксируются какие-либо их свойства;
• которые участвуют более чем в одной связи.
В экономических организационных системах большая часть информации отражается в символьном виде. При этом различают реквизиты-признаки, отражающие качественные характеристики объектов, и реквизиты-основания, отражающие количественные характеристики объектов. Некоторые характеристики могут быть получены различными способами, в том числе путем вычисления из других, хранящихся в информационной системе показателей. Такие показатели называются производными. При проектировании БД необходима информация о возможных способах получения каждого из реквизитов для решения вопроса о том, какая информация должна в явном виде храниться в БД, а какая может быть получена путем преобразования имеющейся информации.
Дата добавления: 2014-01-03; Просмотров: 845; Нарушение авторских прав?
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
Рекомендуемые страницы:
Читайте также:
Источник
Независимо от того, какой язык программирования вы собираетесь изучать: PHP, Javascript или др. языки программирования, при изучении объектно-ориентированного подхода к программированию, обязательно нужно разобраться с понятиями класса и объекта.
Из предыдущего видео мы знаем, что самым главным действующим лицом в объектно-ориентированном подходе программирования является объект, у которого есть какие-то свойства (т.е. характеристики этого объекта), значения этих свойств и методы, те действия, которые этот объект может совершать.
Но, для того, чтобы в нашей программе появился объект, нужно совершить два действия:
1) Его нужно описать. Какие свойства и методы есть у этого объекта.
2) Его нужно создать
Что значит описать объект? Описание объекта – это определение его свойств и методов, которые этот объект может принимать. Т.е. мы начинаем создавать программу и пишем, что у нас будет некий объект (например, Employee или Работник).
У этого объекта будет свойства first_name (имя), last_name (фамилия), age (возраст).
Этот объект при запросе к нему может выдавать его имя (getFirstName()), фамилию getLastName()), возраст (getAge()).
Обратите внимание, что в конце метода ставятся круглые скобки (). Они обозначают то, что это является методом. Остальное является свойствами, характеристиками объекта.
Что же значит создать объект?
Создание объекта – это некий процесс обращения к конкретному экземпляру описанного объекта. После описания объекта он имеет некую абстрактную форму и когда мы обращаемся к какому-то конкретному работнику, к какому-то конкретному экземпляру этого описания: работник 1, работник 2, работник 3. У нас может быть множество работников, которые соответствуют этой схеме.
Когда мы с вами обращаемся к какому-то конкретному экземпляру этой сущности работника, то мы создаем некий объект, т.е. некий экземпляр существующего описания этого объекта.
Тот программный код, который содержит описательную часть объекта, он называется класс. Часть, в которой мы описываем объект – это называется классом. Т.е. класс – это некая сущность, которая описываем, что будут собой представлять все те экземпляры, которые будут создаваться из этого класса.
Экземпляры классов = объекты.
Объект – это просто что-то конкретное, а класс – это некое абстрактное понятие, которое просто содержит описательную часть.
Класс – это что-то вроде чертежа объекта, т.е. прежде чем мы создадим какую-то деталь, проектировщик должен сделать ее чертеж. Написать, что у этой детали будут такие-то свойства (высота, ширина, длина). Когда чертеж будет выполнен, мы отдаем его какому-то мастеру, и он уже создает экземпляры из этого класса. Деталей, которые могут быть созданы из этого чертежа огромное количество.
Также и в программировании: класс у нас один, а экземпляров этого класса, объектов может быть огромное количество.
И нужно понимать, что
Чертеж НЕ равно деталь
Класс НЕ равно объект
Общий алгоритм работы с объектно-ориентированным подходом в программировании:
- Создали класс
- Создали экземпляр класса (объект)
- Обращаемся к свойствам и методам экземпляра класса.
Конечно, сейчас многое может быть с этим не понятно, но здесь важно приступить к практике и посмотреть на конкретных примерах, как это работает.
Источник
Аннотация: Основные элементы класса: поля, методы, конструкторы, свойства. Виды параметров методов.
Описание класса
Презентацию к данной лекции Вы можете скачать здесь.
Класс является типом данных, определяемым пользователем. Он должен представлять собой одну логическую сущность, например, являться моделью реального объекта или процесса. Элементами класса являются данные и функции, предназначенные для их обработки.
Описание класса содержит ключевое слово class, за которым следует его имя, а далее в фигурных скобках — тело класса, то есть список его элементов. Кроме того, для класса можно задать его базовые классы (предки) и ряд необязательных атрибутов и спецификаторов, определяющих различные характеристики класса:
тело_класса
Обязательными являются только ключевое слово class, имя и тело класса. Тело класса — это список описаний его элементов, заключенный в фигурные скобки. Список может быть пустым, если класс не содержит ни одного элемента. Таким образом, простейшее описание класса может выглядеть так:
Спецификаторы определяют свойства класса, а также доступность класса для других элементов программы. Возможные значения спецификаторов перечислены в таблице 5.1. Класс можно описывать непосредственно внутри пространства имен или внутри другого класса. В последнем случае класс называется вложенным.
№ | Спецификатор | Описание |
---|---|---|
1 | new | Используется для вложенных классов. Задает новое описание класса взамен унаследованного от предка. Применяется в иерархиях объектов |
2 | public | Доступ не ограничен |
3 | protected | Используется для вложенных классов. Доступ только из элементов данного и производных классов |
4 | internal | Доступ только из данной программы (сборки) |
5 | protected internal | Доступ только из данного и производных классов или из данной программы (сборки) |
6 | private | Используется для вложенных классов. Доступ только из элементов класса, внутри которого описан данный класс |
7 | abstract | Абстрактный класс. Применяется в иерархиях объектов, рассматривается в главе 8 |
8 | sealed | Бесплодный класс. Применяется в иерархиях объектов, рассматривается в главе 8 |
9 | static | Статический класс. Введен в версию языка 2.0. Рассматривается в разделе “Конструкторы” |
Спецификаторы 2–6 называются спецификаторами доступа. Они определяют, откуда можно непосредственно обращаться к данному классу. Спецификаторы доступа могут присутствовать в описании только в вариантах, приведенных в таблице, а также могут комбинироваться с остальными спецификаторами.
Сейчас мы не будем изучать вложенные классы. Для остальных классов допускаются два спецификатора: public и internal (по умолчанию).
Класс является обобщенным понятием, определяющим характеристики и поведение некоторого множества конкретных объектов этого класса, называемых экземплярами, или объектами, класса. Объекты создаются явным или неявным образом, то есть либо программистом, либо системой. Программист создает экземпляр класса с помощью операции new, например:
Demo b = new Demo(); // создание другого экземпляра класса Demo
Для каждого объекта при его создании в памяти выделяется отдельная область, в которой хранятся его данные. Кроме того, в классе могут присутствовать статические элементы, которые существуют в единственном экземпляре для всех объектов класса. Часто статические данные называют данными класса, а остальные — данными экземпляра.
Функциональные элементы класса не тиражируются, то есть всегда хранятся в единственном экземпляре. Для работы с данными класса используются методы класса ( статические методы ), для работы с данными экземпляра — методы экземпляра, или просто методы.
Поля и методы являются основными элементами класса. Кроме того, в классе можно задавать целую гамму других элементов: свойства, события, индексаторы, операции, конструкторы, деструкторы, а также типы (
рис.
5.1).
Рис.
5.1.
Состав класса
Ниже приведено краткое описание всех элементов класса, изображенных на рисунке:
- Константы класса хранят неизменяемые значения, связанные с классом.
- Методы реализуют вычисления или другие действия, выполняемые классом или экземпляром.
- Свойства определяют характеристики класса в совокупности со способами их задания и получения, то есть методами записи и чтения.
- Конструкторы реализуют действия по инициализации экземпляров или класса в целом.
- Деструкторы определяют действия, которые необходимо выполнить до того, как объект будет уничтожен.
- Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру.
- Операции задают действия с объектами с помощью знаков операций.
- События определяют уведомления, которые может генерировать класс.
- Типы — это типы данных, внутренние по отношению к классу.
Прежде чем начать изучение элементов класса, необходимо поговорить о присваивании и сравнении объектов.
Механизм выполнения присваивания один и тот же для величин любого типа, как ссылочного, так и значимого, однако результаты различаются. При присваивании значения копируется значение, а при присваивании ссылки — ссылка, поэтому после присваивания одного объекта другому мы получим две ссылки, указывающие на одну и ту же область памяти (
рис.
5.2).
Рис.
5.2.
Присваивание объектов
Аналогичная ситуация с операцией проверки на равенство. Величины значимого типа равны, если равны их значения. Величины ссылочного типа равны, если они ссылаются на одни и те же данные (на рисунке объекты b и c равны, но a не равно b даже при равенстве их значений или если они обе равны null ).
Данные: поля и константы
Данные, содержащиеся в классе, могут быть переменными или константами и задаются в соответствии с правилами, рассмотренными в разделах “Переменные” и “Именованные константы”. Переменные, описанные в классе, называются полями класса. При описании элементов класса можно также указывать атрибуты и спецификаторы, задающие различные характеристики элементов. Синтаксис описания элемента данных:
Возможные спецификаторы полей и констант перечислены в таблице 5.2. Для констант можно использовать только спецификаторы 1–6.
№ | Спецификатор | Описание |
---|---|---|
1 | new | Новое описание поля, скрывающее унаследованный элемент класса |
2 | public | Доступ к элементу не ограничен |
3 | protected | Доступ только из данного и производных классов |
4 | internal | Доступ только из данной сборки |
5 | protected internal | Доступ только из данного и производных классов и из данной сборки |
6 | private | Доступ только из данного класса |
7 | abstract | Одно поле для всех экземпляров класса |
8 | sealed | Поле доступно только для чтения |
9 | static field | Поле может изменяться другим процессом или системой |
По умолчанию элементы класса считаются закрытыми ( private ). Для полей класса этот вид доступа является предпочтительным. Все методы класса имеют непосредственный доступ к его закрытым полям.
Внимание
Поля, описанные со спецификатором static, а также константы существуют в единственном экземпляре для всех объектов класса, поэтому к ним обращаются не через имя экземпляра, а через имя класса. Если класс содержит только статические элементы, экземпляр класса создавать не требуется. Именно этим фактом мы пользовались во всех предыдущих листингах.
Обращение к полю класса выполняется с помощью операции доступа (точка). Справа от точки задается имя поля, слева — имя экземпляра для обычных полей или имя класса для статических. В листинге 5.1 приведен пример простого класса Demo и два способа обращения к его полям.
namespace ConsoleApplication1
{
class Demo
{
public int a = 1; // поле данных
public const double c = 1.66; // константа
public static string s = “Demo”; // статическое поле класса
double y; // закрытое поле данных
}
class Class1
{ static void Main()
{
Demo x = new Demo(); // создание экземпляра класса Demo
Console.WriteLine( x.a ); // x.a – обращение к полю класса
Console.WriteLine( Demo.c ); // Demo.c – обращение к константе
Console.WriteLine( Demo.s ); // обращение к статическому полю
}
}
}
Листинг
5.1.
Класс Demo, содержащий поля и константу
Поля со спецификатором readonly предназначены только для чтения. Установить значение такого поля можно либо при его описании, либо в конструкторе (конструкторы рассматриваются далее).
Источник