Какие свойства присутствуют не у всех объектов класса

Какие свойства присутствуют не у всех объектов класса thumbnail
Студопедия

КАТЕГОРИИ:

Архитектура-(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. У нас может быть множество работников, которые соответствуют этой схеме.

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

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

Экземпляры классов = объекты.

Объект – это просто что-то конкретное, а класс – это некое абстрактное понятие, которое просто содержит описательную часть.

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

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

И нужно понимать, что

Чертеж НЕ равно деталь

Класс НЕ равно объект

Общий алгоритм работы с объектно-ориентированным подходом в программировании:

  1. Создали класс
  2. Создали экземпляр класса (объект)
  3. Обращаемся к свойствам и методам экземпляра класса.

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

Источник

Аннотация: Основные элементы класса: поля, методы, конструкторы, свойства. Виды параметров методов.

Описание класса

Презентацию к данной лекции Вы можете скачать здесь.

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

Описание класса содержит ключевое слово class, за которым следует его имя, а далее в фигурных скобках — тело класса, то есть список его элементов. Кроме того, для класса можно задать его базовые классы (предки) и ряд необязательных атрибутов и спецификаторов, определяющих различные характеристики класса:

[ атрибуты ] [ спецификаторы ] class имя_класса [ : предки ]
тело_класса

Обязательными являются только ключевое слово class, имя и тело класса. Тело класса — это список описаний его элементов, заключенный в фигурные скобки. Список может быть пустым, если класс не содержит ни одного элемента. Таким образом, простейшее описание класса может выглядеть так:

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

Таблица
5.1.
Спецификаторы класса

СпецификаторОписание
1newИспользуется для вложенных классов. Задает новое описание класса взамен унаследованного от предка. Применяется в иерархиях объектов
2publicДоступ не ограничен
3protectedИспользуется для вложенных классов. Доступ только из элементов данного и производных классов
4internalДоступ только из данной программы (сборки)
5 protected internalДоступ только из данного и производных классов или из данной программы (сборки)
6privateИспользуется для вложенных классов. Доступ только из элементов класса, внутри которого описан данный класс
7abstractАбстрактный класс. Применяется в иерархиях объектов, рассматривается в главе 8
8sealedБесплодный класс. Применяется в иерархиях объектов, рассматривается в главе 8
9staticСтатический класс. Введен в версию языка 2.0. Рассматривается в разделе “Конструкторы”

Спецификаторы 2–6 называются спецификаторами доступа. Они определяют, откуда можно непосредственно обращаться к данному классу. Спецификаторы доступа могут присутствовать в описании только в вариантах, приведенных в таблице, а также могут комбинироваться с остальными спецификаторами.

Сейчас мы не будем изучать вложенные классы. Для остальных классов допускаются два спецификатора: public и internal (по умолчанию).

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

Demo a = new Demo(); // создание экземпляра класса Demo
Demo b = new Demo(); // создание другого экземпляра класса Demo

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

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

Поля и методы являются основными элементами класса. Кроме того, в классе можно задавать целую гамму других элементов: свойства, события, индексаторы, операции, конструкторы, деструкторы, а также типы (
рис.
5.1).

Состав класса

Рис.
5.1.
Состав класса

Ниже приведено краткое описание всех элементов класса, изображенных на рисунке:

  • Константы класса хранят неизменяемые значения, связанные с классом.
  • Методы реализуют вычисления или другие действия, выполняемые классом или экземпляром.
  • Свойства определяют характеристики класса в совокупности со способами их задания и получения, то есть методами записи и чтения.
  • Конструкторы реализуют действия по инициализации экземпляров или класса в целом.
  • Деструкторы определяют действия, которые необходимо выполнить до того, как объект будет уничтожен.
  • Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру.
  • Операции задают действия с объектами с помощью знаков операций.
  • События определяют уведомления, которые может генерировать класс.
  • Типы — это типы данных, внутренние по отношению к классу.

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

Механизм выполнения присваивания один и тот же для величин любого типа, как ссылочного, так и значимого, однако результаты различаются. При присваивании значения копируется значение, а при присваивании ссылки — ссылка, поэтому после присваивания одного объекта другому мы получим две ссылки, указывающие на одну и ту же область памяти (
рис.
5.2).

Присваивание объектов

Рис.
5.2.
Присваивание объектов

Аналогичная ситуация с операцией проверки на равенство. Величины значимого типа равны, если равны их значения. Величины ссылочного типа равны, если они ссылаются на одни и те же данные (на рисунке объекты b и c равны, но a не равно b даже при равенстве их значений или если они обе равны null ).

Данные: поля и константы

Данные, содержащиеся в классе, могут быть переменными или константами и задаются в соответствии с правилами, рассмотренными в разделах “Переменные” и “Именованные константы”. Переменные, описанные в классе, называются полями класса. При описании элементов класса можно также указывать атрибуты и спецификаторы, задающие различные характеристики элементов. Синтаксис описания элемента данных:

[ атрибуты ] [ спецификаторы ] [ const ] тип имя [ = начальное_значение ]

Возможные спецификаторы полей и констант перечислены в таблице 5.2. Для констант можно использовать только спецификаторы 1–6.

Таблица
5.2.
Спецификаторы полей и констант класса

СпецификаторОписание
1newНовое описание поля, скрывающее унаследованный элемент класса
2publicДоступ к элементу не ограничен
3protectedДоступ только из данного и производных классов
4internalДоступ только из данной сборки
5 protected internalДоступ только из данного и производных классов и из данной сборки
6privateДоступ только из данного класса
7abstractОдно поле для всех экземпляров класса
8sealedПоле доступно только для чтения
9static fieldПоле может изменяться другим процессом или системой

По умолчанию элементы класса считаются закрытыми ( private ). Для полей класса этот вид доступа является предпочтительным. Все методы класса имеют непосредственный доступ к его закрытым полям.

Внимание

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

Обращение к полю класса выполняется с помощью операции доступа (точка). Справа от точки задается имя поля, слева — имя экземпляра для обычных полей или имя класса для статических. В листинге 5.1 приведен пример простого класса Demo и два способа обращения к его полям.

using System;
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 предназначены только для чтения. Установить значение такого поля можно либо при его описании, либо в конструкторе (конструкторы рассматриваются далее).

Источник