
- •Основи програмної інженерії Тема 1. Поняття програмної інженерії. Вступ
- •Процес створення програмного забезпечення
- •Моделі технологічного процесу створення пз
- •Моделі процесу розробки по
- •Характеристики якісного пз
- •Тема 2. Види моделей систем. Поняття і класифікація вимог до програмної системи.
- •Способи запису специфікацій вимог.
- •Види моделей систем.
- •Мова моделювання uml.
- •Об'єктні моделі
- •Інструментальні case-засоби.
- •Тема 3. Поняття архітектурного проектування. Архітектурні моделі.
- •Архітектурний шаблон mvc.
- •Особливості шаблону mvc.
- •Модель проблемної сфери.
- •Тема 4. Важливі функціональні засоби мови c#. Автоматично реалізовані властивості.
- •Ініціалізатори об'єктів та колекцій.
- •Автоматичне виведення типу.
- •Анонімні типи.
- •Використання методів розширення Методи розширення
- •Застосування методів розширення до інтерфейсу
- •Створення фільтруючих методів розширення
- •Тема 5. Лямбда-вирази. Мова linq. Лямбда-вирази.
- •Мова linq.
- •Методи розширення linq.
- •Відкладені запити linq.
- •Тема 6. Створення слабо зв'язаних компонентів. Впровадження залежності.
- •Контейнери впровадження залежності.
- •Бібліотека Ninject.
- •Порядок роботи з Ninject.
- •Тема 7. Засоби доступу до даних. Технологія ado.Net.
- •Реалізація доступу до даних.
- •Робота з даними.
- •Тема 8. Тестування пз. Розробка через тестування. Автоматизоване тестування пз та його види.
- •Розробка через тестування. Робочий потік "червоний-зелений-рефакторинг".
- •Модель "організація.Дія.Твердження".
- •Використання бібліотеки Moq
- •Тема 9. Проектування інтерфейсу користувача. Інтерфейс користувача.
- •Переваги графічного інтерфейсу.
- •Процес проектування графічного інтерфейсу.
- •Принципи проектування інтерфейсів користувача.
- •Шаблони.
- •Тема 10. Основи інженерії вимог. Розробка вимог.
- •Формування і аналіз вимог.
- •Опорні точки зору.
- •Сценарії.
- •Атестація вимог.
- •Тема 11. Прототипування програмних систем. Поняття прототипування.
- •Переваги прототипування.
- •Види прототипування.
- •Технології швидкого прототипування.
- •Тема 12. Покомпонентна розробка. Компоненти і класи об'єктів.
- •Компоненти як постачальники послуг.
- •Рівні абстракції компонентів.
- •Вимоги до компонентів.
- •Тема 13. Шаблони проектування. Структурні шаблони.
- •Поняття шаблону проектування.
- •Основні елементи шаблону.
- •Механізми повторного використання.
- •Структурні шаблони проектування.
Ініціалізатори об'єктів та колекцій.
Ще одним трудомістким завданням програмування є створення нового об'єкту і подальше присвоєння значень його властивостей, як показано в лістингу 5.
Лістинг 5. Створення та ініціалізація об'єкта через властивості
class Program {
static void Main(string[] args) {
Product myProduct = new Product();
myProduct.ProductID = 100;
myProduct.Name = "Kayak";
myProduct.Description = "A boat for one person";
myProduct.Price = 275M;
myProduct.Category = "Watersports";
ProcessProduct(myProduct);
}
private static void ProcessProduct(Product prodParam) {
//... оператори обробки товару
}
}
Щоб створити об'єкт Product і передати його методу ProcessProduct, потрібно виконати три дії: створити об'єкт, встановити значення параметрів, а потім викликати метод. Мова C# надає можливість скористатися засобом ініціалізатора об'єкта, який дозволяє виконати всі на одному кроці, як показано в лістингу 6.
Лістинг 6. Використання засобу інціалізатора об'єкта
class Program {
static void Main(string[] args) {
ProcessProduct( new Product() {
ProductID = 100, Name = "Kayak",
Description = "A boat for one person",
Price = 275M, Category = "Watersports"
} );
}
private static void ProcessProduct(Product prodParam) {
//... оператори обробки товару
}
}
Блок коду, укладений у фігурні дужки ({}), який слідує за конструктором Product, є ініціалізатором. Значення параметрів можна передати в ході процесу створення об'єкта. Результатом є екземпляр класу Product, який можна передати безпосередньо методом ProcessProduct – тобто нам не потрібно використовувати локальну змінну для посилання на об'єкт Product під час його ініціалізації. Ця ж функціональна можливість дозволяє ініціалізувати вміст колекцій і масивів в ході процесу конструювання, як показано в лістингу 7.
Лістинг 7. Ініціалізація колекцій і масивів
using System.Collections.Generic;
class Program {
static void Main (string[] args) {
string[] stringArray = { "Apple", "Orange", "Plum" };
List <int> intList = new List <int> { 10, 20, 30, 40 };
Dictionary <string, int> myDict = new Dictionary <string, int> {
{ "Apple", 10 },
{ "Orange", 20 },
{ "Plum", 30 }
};
}
}
Код в лістингу 7 демонструє створення і ініціалізацію масиву і двох класів з бібліотеки базової колекції. Цей засіб являє собою синтаксичну зручність – він робить використання C# більш приємним, не здійснює ніякого іншого впливу і не надає ніяких додаткових вигод.
Автоматичне виведення типу.
Ключове слово var мови C# дозволяє визначати локальну змінну без явної вказівки типу змінної, як показано в лістингу 8. Це називається виведенням типу або неявним зазначенням типу.
Лістинг 8. Використання виведення типу
var myVariable =
new Product {Name = "Kayak", Category = "Watersports", Price = 275M};
string name = myVariable.Name; // допустимий оператор
int count = myVariable.Count; // помилка компілятора
Суть не в тому, що змінна myVariable не має типу. Просто ми зажадали від компілятора, щоб він вивів тип з коду. Як показано в наступних операторах, компілятор дозволить викликати тільки члени виведеного класу – в даному випадку Product.