Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Технологии програмирования
3.Структуры и классы в языках программирования C++, C#, Visual Basic. Наследование. Инкапсуляция и полиморфизм. Структуры и классы в языках программирования C++, C#, Visual Basic. В С++ структура (struct) является практически синонимом класса, отличаясь лишь способом доступа к ее членам по умолчанию, в структуре все члены по умолчанию public, а в классе — private. В отличие от массива, структуры могут объединять различные типы данных. Структура в C# является типом значения и синтаксически подобна классу, но размещается на стеке и соответствует классу значений (value class - тип-значения (значимый тип)) CLR-расширения С++. Структуры имеют конструкторы, поля, свойства, методы, операторы и пр. Еще одна особенность структур — для них автоматически создается конструктор без параметров, который не может быть переопределен. Этот конструктор заполняет поля-значения структуры нулевым значением, а ссылочные поля значением null. По умолчанию структуры являются наследниками класса ValueType (тип-значения (значимый тип)), который является расширением класса object, но явно наследовать класс или структуру не могут, зато могут наследовать интерфейсы:
Экземпляр структуры может создаваться с использованием оператора new, тогда вызывается соответствующий конструктор, если же оператор new не используется, экземпляр создается, но память не инициализируется (необходимо вручную инициализировать вручную). Структуры не могут наследоваться из другого класса или другой структуры и соответственно не могут быть наследуемыми. Структура в Visual Basic начинается с объявления оператора Structure и завершается оператором EndStructure. Использовать структуры логичнее, когда необходимо хранить небольшое количество переменных либо связанных между собой, либо имеющих отношение к какому-нибудь логическому элементу. В структурах невозможна инициализация каких-либо переменных (полей). Наследование. Наследование позволяет избежать дублирования лишнего кода при написании классов. Наследование представляет собой способность производного класса наследовать характеристики существующего базового класса. Класс при создании может быть объявлен наследником другого класса, от которого он получает все переменные, методы, свойства и т. п. Такое отношение наследования называют "быть" (is-a). Для начальной инициализации переменных в классе наследнике необходимо присвоить значение полям базового класса. Можно сделать это и в конструкторе класса наследника, однако разумнее создать конструктор базового класса и вызвать его из конструктора наследуемого класса. Общий синтаксис создания производного класса в языке C++
Не всегда классическая модель наследования "быть" является хорошим решением. Иногда эту модель называют повторным использованием "белого ящика", действительно, класс наследник получает доступ к переменным и методам наследуемого класса. Во многих ситуациях, бывает корректней использовать модель включения класса, как нового типа данных. Такую модель называют моделью "черного ящика" или моделью включения "иметь" (has-a). В случае множественного наследования после двоеточия перечисляются через запятую все базовые классы со своими модификаторами доступа: · public — открытый (доступ разрешен как внутри, так и вне класса); · private — закрытый (вне класса доступа нет); · protected — защищенный (доступен только наследникам класса); · internal — внутренний (открытый доступ только в текущей сборке). По-умолчанию модификатор доступа подразумевается internal. Доступность в производном классе регулируется ключом доступа к базоаому классу, указанному при объявлении производного класса. Этот ключ определяет вмд наследования public, protected или private. Открытое наследование сохраняет доступ ко всем элементам родительского класса, защищенное - понижает статус доступа public до protected, и наконец, закрытое - понижает статусы доступа public и protected до private. В C++ отношение классов (is-a) имеет место только при открытом наследовании. Язык C#, соответствуя концепции объектно-ориентированного программирования, поддерживает наследование, реализация которого заимствована из С++, однако запрещено множественное наследование. Для объявления класса наследника в Visual Basic используется оператор Inherits. Дочерние классы также наследуют и могут расширять свойства, методы и пр. родительского класса. Все классы могут наследоваться только если они не имеют модификатора. NotInheritable. Visual Basic не поддерживает множественное наследование. Используются аналогичные типы доступа public, friend или private. Инкапсуляция и полиморфизм. Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. Инкапсуляция (по-русски: «сокрытие») — это свойство объектов скрывать некоторые свои данные и способы их обработки (методы) от окружающей его цифровой среды и, в частности, от кривых ручонок малоопытных программистов, оставляя «снаружи» только необходимые и/или требуемые свойства и функциональные возможности. В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект - это то, что поддерживает инкапсуляцию. Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. Полиморфизм (polymorphism) (от греческого polymorphos) - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных. Например, для языка Си, в котором полиморфизм поддерживается недостаточно, нахождение абсолютной величины числа требует трёх различных функций: abs(), labs() и fabs(). Эти функции подсчитывают и возвращают абсолютную величину целых, длинных целых и чисел с плавающей точкой соответственно. В С++ каждая из этих функций может быть названа abs(). Тип данных, который используется при вызове функции, определяет, какая конкретная версия функции действительно выполняется. В С++ можно использовать одно имя функции для множества различных действий. Это называется перегрузкой функций (function overloading).
5. БД+Грегер 3. Основные понятия и определения реляционной модели данных. Реляционная модель данных – логическая модель данных, является прикладной теорией, на основе, которой строятся реляционные базы данных. В реляционной модели достигается гораздо более высокий уровень абстракции данных, чем в иерархической или сетевой. реляционная модель предоставляет средства описания данных на основе только их естественной структуры, т.е. без потребности введения какой-либо дополнительной структуры для целей машинного представления. Другими словами, представление данных не зависит от способа их физической организации. Это обеспечивается за счет использования математической теории отношений (само название "реляционная" происходит от английского relation – "отношение"). Согласно Дейту, реляционная модель состоит из трех частей: • Структурной части • Целостной части • Манипуляционной части Структурная часть модели определяет, что единственной структурой данных является нормализованное n-арное отношение. Отношения удобно представлять в форме таблиц, где каждая строка есть кортеж, а каждый столбец – атрибут, определенный на некотором домене(тип данных). Данный неформальный подход к понятию отношения дает более привычную для разработчиков и пользователей форму представления, где реляционная база данных представляет собой конечный набор таблиц. По сути - данные в базе данных представляют собой набор отношений. Манипуляционная часть модели определяет два фундаментальных механизма манипулирования данными – реляционная алгебра и реляционное исчисление. Основной функцией манипуляционной части реляционной модели является обеспечение меры реляционности любого конкретного языка реляционных БД: язык называется реляционным, если он обладает не меньшей выразительностью и мощностью, чем реляционная алгебра или реляционное исчисление. Целостная часть модели определяет требования целостности сущностей и целостности ссылок. Первое требование состоит в том, что любой кортеж любого отношения отличим от любого другого кортежа этого отношения, т.е. другими словами, любое отношение должно обладать первичным ключом. Требование целостности по ссылкам, или требование внешнего ключа состоит в том, что для каждого значения внешнего ключа, появляющегося в ссылающемся отношении, в отношении, на которое ведет ссылка, должен найтись кортеж с таким же значением первичного ключа, либо значение внешнего ключа должно быть неопределенным (т.е. ни на что не указывать). Отношения: N-арным отношением R называют подмножество декартова произведения D1×D2×..×Dn множеств D1, D2,..., Dn (n > 1), необязательно различных. Исходные множества D1, D2,..., Dn называют в модели доменами. Домен (тип данных) - это семантическое понятие. Домен можно рассматривать как подмножество значений некоторого типа данных имеющих определенный смысл. Домен характеризуется следующими свойствами: · Домен имеет уникальное имя (в пределах базы данных) · Домен определен на некотором простом типе данных или на другом домене · Домен может иметь некоторое логическое условие, позволяющее описать подмножество данных, допустимых для данного домена · Домен несет определенную смысловую нагрузку Атрибут: Вхождение домена в отношение называется атрибутом. Количество атрибутов отношения называется степенью или рангом отношения (1 – унарное, 2 – бинарное, n-арное). Атрибуты отношения описывают столбец таблицы – имя и тип данных для этого столбца. Значения атрибутов должны быть атомарными, т.е. относиться к некоторому базовому типу, такому как целочисленный или строковый. Схема отношения (Сущность по сути) Обычно схему отношения представляют как имя отношения и множество его атрибутов. Подразумевается некий «стандартный» порядок следования атрибутов. Детали (Номер, Название, Вес) При строгом определении схемы для каждого атрибута указывается также домен. Можно определить схему отношения в виде таблицы. Схемы двух отношений называются эквивалентными, если они имеют одинаковую степень и возможно такое упорядочение имен атрибутов в схемах, что на одинаковых местах будут находиться атрибуты, принимающие значения из одного домена. Схемы всех отношений, описывающих данную предметную область, дают схему базы данных. Кортежи (запись) Элементы декартова произведения <d1, d2, …dn> называют кортежами. Количество кортежей называется мощностью отношения. Кортеж отношения содержит по одному значению каждого атрибута. Пример кортежа – (10, Гайка, 17,2). Если изменить порядок следования строк в таблице получим то же самое отношение Полный набор кортежей одного отношения составляет экземпляр этого отношения. Мощность множества кортежей отношения называют мощностью отношения. Экземпляр отношения Полный набор кортежей одного отношения составляет экземпляр этого отношения. Экземпляр изменяется в результате добавления или удаления кортежей. Отношение можно также представить как двумерную таблицу, обладающую определенными свойствами: · в таблице нет одинаковых строк; · каждый столбец в таблице имеет уникальное имя; · порядок строк произволен; · порядок столбцов произволен; · значения в столбцах. Схемы двух отношений называются эквивалентными, если они имеют одинаковое количество и упорядочение атрибутов. Схемы всех отношений, описывающих данную предметную область, дают схему базы данных. Ключи: Возможным ключом отношения называется такой минимальный набор атрибутов, который функционально определяет каждый из оставшихся атрибутов. Отношение может иметь несколько возможных ключей. Например, табельный номер, номер паспорта, номер страхового полиса в отношении «Сотрудник». Для отношения всегда существует возможный ключ. В крайнем случаях возможным ключом могут быть все атрибуты. Для идентификации кортежа из возможных ключей выбирается один и назначается первичным ключом отношения. При выборе первичного ключа следует отдавать предпочтение несоставному ключу, числовой тип предпочтительнее текстового. Ограничение уникальности означает, что в отношении не может быть двух одинаковых значений первичного ключа. Для отношения определено также понятие вторичного ключа. Вторичным ключом называется один или несколько атрибутов, значения которых идентифицируют группу кортежей. Например, по названию могут быть отобраны все гайки. Объекты предметной области взаимосвязаны. В реляционной модели связь между двумя отношениями устанавливается путем копирования ключевых атрибутов. Один или несколько атрибутов отношения, являющихся возможным ключом другого отношения, называется внешним ключом (foreign key). Каждому значению внешнего ключа должно соответствовать значение первичного ключа в другом, связанном отношении. Ограничение определяется для конкретной связи. Чаще всего внешний ключ является ссылкой на первичный ключ другого отношения, но возможна ссылка и на другой атрибут, значения которого уникальны. Такую связь относят к типу «один ко многим». В базе данных таблица, содержащая внешний ключ называется подчиненной, а связанная – главной. Достоинства реляционной модели: · простота и доступность для понимания пользователем. Единственной используемой информационной конструкцией является "таблица"; · строгие правила проектирования, базирующиеся на математическом аппарате; · полная независимость данных. Изменения в прикладной программе при изменении реляционной БД минимальны; · для организации запросов и написания прикладного ПО нет необходимости знать конкретную организацию БД во внешней памяти. Недостатки реляционной модели: · далеко не всегда предметная область может быть представлена в виде "таблиц"; · в результате логического проектирования появляется множество "таблиц". Это приводит к трудности понимания структуры данных; · БД занимает относительно много внешней памяти; · относительно низкая скорость доступа к данным. Нормальные формы: (https://habrahabr.ru/post/254773/) Переменная отношения находится в первой нормальной форме тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов. В реляционной модели отношение всегда находится в первой нормальной форме по определению понятия отношение. Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от ее потенциального ключа Переменная отношения R находится в 3NF тогда и только тогда, когда выполняются следующие условия: · R находится во второй нормальной форме. · ни один неключевой атрибут R не находится в транзитивной функциональной зависимости от потенциального ключа R. Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только если любая функциональная зависимость между его полями сводится к полной функциональной зависимости от возможного ключа. Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полностью совпадает с содержимым таблицы. Таблица находится в пятой нормальной форме (5НФ) тогда и только тогда, когда в каждой ее полной декомпозиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в 5НФ.
Date: 2016-06-06; view: 514; Нарушение авторских прав |