- •Мови програмування. Представлення даних.
- •1. Вступ. Про обчислювальну техніку.
- •2. Історія мов програмування.
- •3. Поняття про платформу .Net
- •4. Створення мови програмування с#.
- •5. Представлення даних. Необхідність типізації. Двійкова арифметика.
- •6. Основні поняття програмування.
- •Поняття про інтегроване середовище розробки VisualStudio (на прикладі Visual Studio 2005). Структура c#-програми.
- •1. Основні можливості інтегрованого середовища розробки VisualStudio .Net.
- •2. Структура програми мовою с#.
- •Int I; // Визначили цілу змінну
- •Основні елементи мови с#.
- •1. Основні вбудовані типи мови с#
- •2. Визначення та ініціалізація змінних, область їх видимості.
- •3. Приведення типів.
- •Інакше обидва операнди перетворюються до типу int;
- •4. Літерали (константи) мови с#.
- •5. Операції мови с#.
- •5.1. Арифметичні операції.
- •5.2. Операції інкременту та декременту.
- •5.3. Операції відношення (порівняння).
- •5.4. Логічні операції.
- •5.5. Порозрядні (бітові) операції.
- •5.6. Умовна (тернарна) операція.
- •5.7. Операції присвоєння.
- •5.8. Пріоритет операцій.
- •Основні інструкції керування мови с# – розгалуження та цикли.
- •1. Розгалуження у мові с#
- •2. Цикли у мові с#
- •2.1. Цикл for.
- •2.2. Цикл while.
- •2.3. Цикл do-while.
- •3. Керування виходом із циклів с#
- •Масиви в мові с#.
- •1. Визначення та ініціалізація масиву.
- •2. Цикл foreach
- •3. Багатовимірні масиви.
- •4. Використання деяких методів класу System.Array.
- •5. Масиви масивів. Непрямокутні масиви.
- •Структуровані типи даних (колекції) в мові c#
- •1. Основні структури даних та їх призначення
- •2. Використання списку ArrayList та узагальненого списку List
- •3. Використання асоційованого списку Hashtable та узагальненого словника Dictionary
- •Класи в мові с#.
- •1. Визначення класу.
- •2. Методи класу.
- •3. Методи з параметрами.
- •4. Конструктор класу.
- •Методи в мові с#.
- •1. Передача об’єктів методам.
- •2. Використання модифікаторів для параметрів методів.
- •3. Методи, що повертають об’єкти.
- •Перевантаження методів в мові с#.
- •1. Перевантаження методів.
- •2. Перевантаження конструкторів.
- •3. Використання ключового слова this.
- •4. Деструктор класу.
- •5. Метод Main ().
- •Статичні члени класу.
- •1. Статичні дані-члени класу.
- •2. Статичні методи-члени класу.
- •3. Статичний конструктор класу.
- •4. Статичні класи, локалізація та глобалізація
- •Властивості та індексатори.
- •1. Властивості.
- •2. Індексатори.
- •Спадкування в мові с#.
- •1. Поняття про спадкування та ієрархію класів.
- •2. Спадкування та правила доступу до членів класів.
- •3. Конструктори базового та похідних класів.
- •4. Посилання на екземпляри базового та похідних класів.
- •5. Поняття про поліморфізм.
- •6. Віртуальні функції – більш детальний погляд.
- •7. Абстрактні методи та класи.
- •Перевантаження операцій в мові с#.
- •1. Загальні відомості.
- •2. Перевантаження бінарних арифметичних операцій.
- •3. Перевантаження унарних операцій.
- •4. Перевантаження операцій відношення.
- •5. Перевантаження логічних операцій.
- •6. Підсумкові зауваження.
- •Структури та переліки в мові с#.
- •1. Структури.
- •2. Переліки.
- •Делегати, події та обробники подій
- •1. Делегати (delegate).
- •2. Події та їх обробники.
- •Атрибути та їх використання
- •Рекомендована література
4. Статичні класи, локалізація та глобалізація
Існують спеціальні службові класи, завданням яких є обслуговування певних сторонніх операцій і екземпляри цих класів створювати не лише небажано, але й потенційно небезпечно. Такі класи, як уже зазначалось вище, помічають службовим словом static, яке гарантує неможливість створення екземплярів. До таких класів відносяться, наприклад, класи Environment (методи якого розглядались вище), Convert та Math.
Якщо в попередньому прикладі Static_Method_1 проглянути визначення класу Environment:
namespace System
{
// Summary:
// Provides information about, and means to manipulate, the
// current environment and platform.
// This class cannot be inherited.
[ComVisible(true)]
public static class Environment
{
…
}
}
то можна побачити, що він не містить жодного екземплярного (нестатичного) методу, властивості або поля. Отже, статичні класи не можуть містити екземплярних даних та методів.
Розглянемо статичний клас Convert. З його назви зрозуміло, що він призначений для конвертації даних з одного формату до іншого. Найбільш вживаним способом його використання є звертання до перевантажених методів Convert.ToInt32 та Convert.ToString. На базі них досить легко створити перетворення десяткових чисел до інших числових позиційних систем: двійкової, вісімкової та шістнадцяткової. В наступному прикладі показано, як можна це здійснити:
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
// статичний метод Math
double d1 = Math.Sin(10);
double d2 = Math.Cosh(10);
double d3 = Math.PI;
// перетворення з 10 до 16-кової системи
string s1 = Convert.ToString(500, 16);
// перетворення з 8-кової до десяткової
int i2 = Convert.ToInt32("234", 8);
double df2 = Convert.ToDouble("10,2");
Console.WriteLine(s1);
Console.WriteLine(df2);
}
}
}
Ця програма буде прекрасно працювати, якщо в налаштуваннях вашої операційної системи подільником між цілою та дробовою частинами дійсного числа буде кома. Інакше виникне помилка. Це пов’язано з тим, що в різних культурах існують різні стандарти на представлення нецілих чисел (та взагалі різні культури вживають різні метричні системи, різні календарі, мають різні алфавіти, різні позначення національних валют, тощо). Оскільки платформа .NET налаштована на універсальність створюваних на її базі програм, в ній можливе використання багатьох різних національних культур. Цей підхід має назву глобалізації. З іншого боку, конкретний користувач завжди має справу з усталеними для його культури форматами позначень дат, вимірів, тощо. Налаштування системи до вимог конкретної культури називається локалізацією. Класи, які підтримують глобалізацію та локалізацію, містяться в просторі імен System.Globalization. Одним з найбільш вживаних класів є CultureInfo, який визначає форматування чисел та дат, а також встановлює порядок сортування рядків, тощо. Щоб визначити, які культури встановлені у вашій операційній системі, можна скористатись наступною програмою.
using System;
using System.Globalization;
class Program
{
static void Main(string[] args)
{
// всі культури в цій системі
CultureInfo[] cultures =
CultureInfo.GetCultures(CultureTypes.AllCultures);
// перелік культур
foreach (CultureInfo ci in cultures)
{
Console.WriteLine(ci.EnglishName);
Console.WriteLine(ci.Name);
}
}
}
Як можна бачити, в типовій операційній системі встановлено велику кількість культур. Зазвичай ім’я культури складається або з двосимвольної назви країни (нейтральні культури) або з двосимвольної назви культури та країни. Наприклад, нейтральна українська мова описується як “ua”, а повна назва “uk-UA”. Англійських культур існує декілька (для різних регіонів).
Щоб вивести дату російською або українською мовою потрібно явно вказати культуру, як це показано у наступному прикладі:
using System;
using System.Globalization;
class Program
{
static void Main(string[] args)
{
// D - повний формат дати
// ru-RU російська локалізація
Console.WriteLine(DateTime.Now.ToString(
"D", new CultureInfo("ru-RU")));
// D - повний формат дати
// uk-UA російська локалізація
Console.WriteLine(DateTime.Now.ToString("D",
new CultureInfo("uk-UA")));
}
}