ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.11.2019
Просмотров: 931
Скачиваний: 2
Можливість створювати збережені процедури, тригери і навіть типи даних на .Net мовах (у тому числі і на C #).Підтримка 64-розрядних обчислень, що крім усього іншого, дозволяє збільшити адресний простір і використовувати 64-розрядні примітивні типи даних.
Версія 3.0У червні 2004 року Андерс Гейлсберг вперше розповів на сайті Microsoft про плановані розширеннях мови в C # 3.0. [14] У вересні 2005 року вийшли проект специфікації C # 3.0 і бета-версія C # 3.0, що встановлюється у вигляді доповнення до існуючих Visual Studio 2005 і. NET 2.0. Остаточно ця версія мови увійшла в Visual Studio 2008 і .NET 3.5.
Нові можливості у версії 3.0
У C # 3.0 з'явилися наступні радикальні додавання до мови:
ключові слова select, from, where, що дозволяють робити запити з SQL, XML, колекцій і т. п. (запит, інтегрований в мову, Language Integrated Query, або LINQ)
Ініціалізація об'єкта разом з його властивостями:
Customer c = new Customer (); c.Name = "James"; c.Age = 30;
можна записати як
Customer c = new Customer {Name = "James", Age = 30};
Лямбда-вирази:
listOfFoo.Where (delegate (Foo x) {return x.size> 10;});
тепер можна записати як
listOfFoo.Where (x => x.size> 10);
Дерева виразів:
лямбда-вирази тепер можуть представлятися у вигляді структури даних, доступній для обходу під час виконання, тим самим дозволяючи транслювати строго типізовані C # -виражені в інші домени (наприклад, вирази SQL).
Висновок типів локальної змінної: var x = "hello"; замість string x = "hello";
Безіменні типи: var x = new {Name = "James"};
Методи-розширення - додавання методу в існуючий клас за допомогою ключового слова this при першому параметрі статичної функції.
public static class StringExtensions
{
public static int ToInt32 (this string val)
{
return Int32.Parse (val);
}
}
// ...
string s = "10";
int x = s.ToInt32 ();
Автоматичні властивості: компілятор згенерує закрите (private) поле і відповідні аксессор і мутатор для коду виду
public string Name {get; private set; }
C # 3.0 сумісний з C # 2.0 по генеруємому MSIL-коду; поліпшення в мові - чисто синтаксичні і реалізуються на етапі компіляції. Наприклад, багато хто з інтегрованих запитів LINQ можна здійснити, використовуючи безіменні делегати в поєднанні з предикативними методами над контейнерами зразок List.FindAll і List.RemoveAll.
Версія 4.0
Прев'ю C # 4.0 було представлено в кінці 2008 року, разом з CTP-версією Visual Studio 2010.
Visual Basic 10.0 і C # 4.0 були випущені в квітні 2010 року, одночасно з випуском Visual Studio 2010.
Нові можливості у версії 4.0
Можливість використання пізнього зв'язування, для використання:
з мовами з динамічною типізацією (Python, Ruby)
з COM-об'єктами
відбиття (reflection)
об'єктів із змінною структурою (DOM). З'являється ключове слово dynamic.
Іменовані і опціональні параметри
Нові можливості COM interop
Коваріантність і контраваріантним
Контракти в коді (Code Contracts)
приклади:
dynamic calc = GetCalculator ();
int sum = calc.Add (10, 20); // Динамічний виклик
public void SomeMethod (int x, int y = 5, int z = 7); // Опциональниє параметри
Приклад «Hello, World!» [Ред | правити вікі-текст]
Нижче представлений код класичної програми «Hello world» на C # для консольного застосування:
using System;
namespace Example
{
class Program
{
static void Main ()
{
Console.WriteLine ("Hello World!"); // Вивід заданого тексту в консоль
Console.ReadKey (); // Очікування натискання клавіші користувачем
}
}
}
і код цієї ж програми для програми Windows Forms:
// Assembly: System.dll
// Assembly: System.Drawing.dll
// Assembly: System.Windows.Forms.dll
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsForms
{
public class Program
{
[STAThread]
public static void Main ()
{
new DemoForm (). ShowDialog ();
}
}
public class DemoForm: Form
{
Label label = new Label ();
public DemoForm ()
{
label.Text = "Hello World!";
this.Controls.Add (label);
this.StartPosition = FormStartPosition.CenterScreen;
this.BackColor = Color.White;
this.FormBorderStyle = FormBorderStyle.Fixed3D;
}
}
}
-
Поняття бази даних
Базу даних (БД) можна визначити як уніфіковану сукупність даних, спільно використовувану різними завданнями в рамках деякої єдиної автоматизованої інформаційної системи (ІС).
Теорія управління базами даних як самостійна дисципліна почала розвиватися приблизно з початку 50-х років двадцятого століття. За цей час в ній склалася певна система фундаментальних понять. Наведемо деякі з них.
Предметною областю прийнято називати частину реального світу, що підлягає вивченню з метою організації управління в цій сфері і подальшої автоматизації процесу управління. В рамках даної книги для нас в першу чергу представляють інтерес предметні області, так чи інакше пов'язані зі сферою економіки і фінансів.
Об'єктом називається елемент інформаційної системи, відомості про який зберігаються в базі даних. Іноді об'єкт також називають сутністю (від англ, обличчя). Класом об'єктів називають їх сукупність, що володіє однаковим набором властивостей.
Атрибут - це інформаційне відображення властивостей об'єкта. Кожен об'єкт характеризується деяким набором атрибутів.
Ключовим елементом даних називаються такий атрибут (або група атрибутів), який дозволяє визначити Значення інших елементів-даних. Запис даних (англ, еквівалент запис) - це сукупність значень пов'язаних елементів даних.
Первинний ключ - це атрибут (або група атрибутів), який унікальним чином ідентифікують кожен екземпляр об'єкта (запис). Вторинним ключем називається атрибут (або група атрибутів), значення якого може повторюватися для декількох записів (примірників об'єкта). Насамперед вторинні ключі використовуються в операціях пошуку записів.
Процедури зберігання даних в базі повинні підкорятися деяким загальним принципам, серед яких в першу чергу слід виділити:
Про цілісність і несуперечність даних, під якими розуміється як фізична схоронність даних, так і запобігання невірного використання даних, підтримка допустимих поєднань їх значень, захист від структурних спотворень і несанкціонованого доступу;
Про мінімальна надмірність даних позначає, що будь-який елемент даних повинен зберігатися в базі в єдиному вигляді, що дозволяє уникнути необхідності дублювання операцій, вироблених з ним.
Програмне забезпечення, яке здійснює операції над базами даних, отримало назву СУБД - система управління базами даних. Очевидно, що його робота має бути організована таким чином, щоб виконувалися перераховані принципи.
-
Моделі організації даних
Набір принципів, що визначають організацію логічної структури зберігання даних в базі, отримав назву моделі даних. Моделі баз даних визначаються трьома компонентами:
-
Допустимою організацією даних;
-
Обмеженнями цілісності;
-
Безліччю допустимих операцій.
У теорії систем управління базами даних виділяють моделі чотирьох основних типів: ієрархічну, мережеву, реляційну і об'єктно-реляційну.
Термінологічної основою для ієрархічної та мережної моделей є поняття: атрибут, агрегат та запис. Під атрибутом (елементом даних) розуміється найменша пойменована структурна одиниця даних. Пойменоване безліч атрибутів може утворювати агрегат даних. У деяких випадках окремо взятий агрегат може складатися з безлічі екземплярів однотипних даних, або, як ще кажуть, бути множинним елементом. Нарешті, записом називають складовою агрегат, який не входить до складу інших агрегатів. В ієрархічній моделі всі записи, агрегати і атрибути бази даних утворюють ієрархічно організований набір, тобто таку структуру, в якій всі елементи пов'язані відносинами підпорядкованості, і при цьому будь-який елемент може підкорятися тільки одному якомусь іншому елементу. Таку форму залежності зручно зображувати за допомогою деревоподібного графа (схеми, що складається з точок і стрілок, яка связна і не має циклів). Приклад ієрархічної структури бази даних наведено на рис. 1.
Рис. 1. Схема ієрархічної моделі даних
Типовим представником сімейства баз даних, заснованих на ієрархічній моделі, є Information Management System (IMS) фірми IBM, перша версія якої з'явилася в 1968 р
Концепція мережевої моделі даних пов'язана з ім'ям Ч. Бахмана. Мережевий підхід до організації даних є розширенням ієрархічного. В ієрархічних структурах запис-нащадок повинна мати в точності одного предка; в мережевій структурі даних нащадок може мати будь-яке число предків (рис.2).
Рис. 2. Схема мережевої моделі даних
Мережева БД складається з набору записів і набору зв'язків між цими записами, точніше, з набору екземплярів записів заданих типів (з допустимого набору типів) і набору екземплярів із заданого набору типів зв'язку. Прикладом системи управління даними з мережевою організацією є Integrated Database Management System (IDMS) компанії Cullinet Software Inc., розроблена в середині 70-х років. Вона призначена для використання на "великих" обчислювальних машинах. Архітектура системи заснована на пропозиціях Data Base Task Group (DBTG), Conference on Data Systems Languages (CODASYL), організації, відповідальної за визначення стандартів мови програмування Кобол.
Серед достоїнств систем управління даними, заснованих на ієрархічній або мережевий моделях, можуть бути названі їх компактність і, як правило, високу швидкодію, а серед недоліків - неуніверсальність, високий ступінь залежності від конкретних даних.
-
Реляційна модель даних
Концепції реляційної моделі вперше були сформульовані в роботах американського вченого Е. Ф. Кодда. Звідки походить її друга назва - модель Кодда.
Рис.3. Схема реляційної моделі даних
У реляційної моделі об'єкти і взаємозв'язки між ними представляються за допомогою таблиць (рис. 7.3). Для її формального визначення використовується фундаментальне поняття відносини. Власне кажучи, термін "реляційна" походить від англійського relation - відношення. Якщо задані довільні кінцеві безлічі D1, D2, ..., Dn, то декартовим твором цих множин D1? D2? ...? Dn називають безліч всілякі наборів виду (d1, d2 ..., dn), де
d1 D1, d2 D2, ..., dn Dn. Ставленням R визначеним на множинах D1, D2, ..., Dn,, називається підмножина декартова твори Dl x D2x ... х Dn. При цьому безлічі D1? D2? ...? Dn називаються доменами відносини, а елементи декартова твори - кортежами відносини. Число я визначає ступінь відносини, а кількість кортежів - його потужність. Поряд з поняттями домену та кортежу при роботі з реляційними таблицями використовуються альтернативні ним поняття поля і записи.
У реляційній базі даних кожна таблиця повинна мати первинний ключ (ключовий елемент) - поле або комбінацію полів, які єдиним чином ідентифікують кожен рядок в таблиці.
Важливою перевагою реляційної моделі є те, що в її рамках дії над даними можуть бути зведені до операцій реляційної алгебри, які виконуються над відносинами. Це такі операції, як об'єднання, перетин, віднімання, декартовій твір, вибірка, проекція, з'єднання, ділення.
Найважливішою проблемою, розв'язуваної при проектуванні баз даних, є створення такої їх структури, яка б забезпечувала мінімальне дублювання інформації і спрощувала Процедури обробки та оновлення даних. Код-будинок був запропонований деякий набір формальних вимог універсального характеру до організації даних, які дозволяють ефективно вирішувати перераховані завдання. Ці вимоги до стану таблиць даних отримали назву нормальних форм. Спочатку були сформульовані три нормальні форми. Надалі з'явилася нормальна форма Бойса-Кодда і нормальні форми більш високих порядків. Однак вони не набули широкого поширення на практиці.
-
Кажуть, що ставлення знаходиться в першій нормальній формі, якщо всі його атрибути є простими.
-
Кажуть, що ставлення знаходиться в другій нормальній формі, якщо воно задовольняє вимогам першої нормальної форми і кожен не ключовий атрибут функціонально повно залежить від ключа (однозначно визначається ним).
-
Кажуть, що ставлення знаходиться в третій нормальній формі, якщо воно задовольняє вимогам другої нормальної форми і при цьому будь-який не ключовий атрибут залежить від ключа нетранзитивно. Зауважимо, що транзитивної називається така залежність, при якій який-небудь не ключовий атрибут залежить від іншого не ключового атрибута, а той, у свою чергу, вже залежить від ключа.
Принциповим моментом є те, що для приведення таблиць до стану, що задовольняє вимогам нормальних форм, або, як ще кажуть, для нормалізації даних над ними, повинні бути здійснені перераховані вище операції реляційної алгебри.
Основною перевагою реляційної моделі є її простота. Саме завдяки їй вона покладена в основу переважної більшості реально працюючих СУБД.
-
Мова SQL
У розробленій Коддом реляційної моделі були визначені як вимоги до організації таблиць, що містять дані, так і мова, що дозволяє працювати з ними. Згодом ця мова отримав назву SQL (Structured Query Language - структурована мова запитів). SQL був вперше реалізований фірмою I на початку 70-х років двадцятого століття під назвою Structures English Query Language (SEQUEL). Він був орієнтований на управління прототипом реляційної бази даних IBM-System R. Надалі SQL став стандартом de facto мови роботи з реляційними базами даних. Цей його статус був вперше зафіксований в 1986 році Американським національним інститутом стандартів (ANSI). Іншими досить відомими стандартами SQL стали стандарти ANSI SQL-92 ISO SQL-92, X / Open. У складі SQL можуть бути виділені наступні групи інструкцій:
-
Мова опису даних - DDL (Data Definition Language);
-
Мова маніпулювання даними - DML (Data Manipulation Language);
-
Мова управління транзакціями.
Інструкції DDL призначені для створення, зміни та видалення об'єктів бази даних.
Інструкції мови визначення даних (DDL)
Інструкція |
Призначення |
CREATE |
Створення нових об'єктів(таблиць, полів, індексів) |
DROP |
Видалення об'єктів |
ALTER |
Зміна об'єктів |
Наприклад, нам необхідно створити таблицю, що містить дані по каталогу фірм, кожна фірма в якому характеризується кодом, найменуванням, MCCTOJV розташування штаб-квартири, розміром статутного фонду. Даної операції зі ответствует SQL-вираз
CREATE TABLE Фірми
КодФірми TEXT (5),
НазвФірми TEXT (30),
АдресФірми TEXT (40),
УстФонд (DOUBLE);
Відзначимо, що допустимі імена полів створюваної таблиці і типи містяться в них даних можуть варіюватися для різних версій і діалектів SQL Якщо нам знадобиться змінити структуру таблиці Фірми - припустимо, додасть! до неї ще одну колонку з прізвищем директора, то зробити це можна за допомогою SQL-інструкції:
ALTER TABLE Фірми ADD COLUMN Директор TEXT. (30);
а вираз, що дає Команду на знищення таблиці, буде виглядати так:
DROP TABLE Фірми;
Інструкції DML дозволяють вибирати дані з таблиць, а також додавати, видаляти і змінювати їх.
Інструкції мови маніпулювання даними (DML)
Інструкція |
Призначення |
SELECT |
Виконання запиту до бази даних з метою відбору записів, що задовольняють заданим критеріям |
INSERT |
Додавання записів в таблиці бази даних |
UPDATE |
Зміна значень окремих записів і полів |
DELETE |
Видалення записів з бази даних |
SELECT - команда на вибірку записів з бази даних - є найбільш часто використовуваною SQL-інструкцією. Сфера даних, якими вона маніпулює, визначається за допомогою спеціальних пропозицій.