"Elements of functional programming in C# based on Language-Ext library as an...Fwdays
The functional programming elements are increasingly appearing in C# programming language every year. However, there are still elements for which there is no native support in the language. It is not always appropriate or possible to change the language to another, where there are such elements. Based on Language-Ext library as an example, which is widely used in the development by Uklon, we will analyse the most useful and popular elements of functional programming that have been already implemented in this library.
"Elements of functional programming in C# based on Language-Ext library as an...Fwdays
The functional programming elements are increasingly appearing in C# programming language every year. However, there are still elements for which there is no native support in the language. It is not always appropriate or possible to change the language to another, where there are such elements. Based on Language-Ext library as an example, which is widely used in the development by Uklon, we will analyse the most useful and popular elements of functional programming that have been already implemented in this library.
"Hancture Mediator Architecture: The Secret Ingredient of a Successful Applic...Fwdays
In this talk, we'll explore various aspects of Hancture's mediator architecture, emphasizing its importance for a successful application. We'll begin by examining the current project requirements of the MapService team at Uklon, including the unique and common features of our applications and the challenges we face in developing them. After that, we'll analyze existing architectures, their components, and their compliance with the requirements. We'll delve into the key challenges associated with existing architectures and discuss ways to overcome them.
2. В цьому модулі:
Поняття інтерфейсу;
Синтаксис оголошення інтерфейсу;
Приклади створення інтерфейсів;
Інтерфейсні посилання;
Наслідування інтерфейсів;
Проблеми приховування імен при наслідуванні інтерфейсів;
Аналіз стандартних інтерфейсів;
2
Andrii Hladkyi
trilobt@gmail.com
3. Поняття інтерфейсу
Інтерфейс містить опис властивостей, методів чи подій реалізацію
яких повинен виконати клас-наслідник.
Не можна прописувати реалізацію властивостей, методів в самому
інтерфейсі.
Інтерфейс не може містити поля чи перевантаження операторів.
Всі методи інтерфейсу по замовчуванню public, їх не можна
оголосити як virtual чи static (змінити модифікатор доступу можна
при реалізації метода в класі-насліднику).
Інтерфейс може наслідувати будь яка кількість класів.
Кожний клас може наслідувати будь яку кількість інтерфейсів.
Клас який реалізує інтерфейс, повинен реалізувати всі його члени.
Andrii Hladkyi
trilobt@gmail.com 3
4. Синтаксис оголошення інтерфейсу
Оголошення інтерфейсу виконується за допомогою ключового слова
interface.
Andrii Hladkyi
trilobt@gmail.com 4
[модифікатор доступу] interface Ім’я_інтерфейсу
{
//члени інтерфейсу
}
public interface IResearcher
{
void Investigate();
void Invent();
}
6. Інтерфейсні посилання
В C# можна створювати інтерфейсну змінну посилання.
Може вказувати на будь який екземпляр будь якого класу що
реалізує даний інтерфейс
Через інтерфейсні посилання можна викликати тільки методи
даного інтерфейсу
Andrii Hladkyi
trilobt@gmail.com 6
8. Інтерфейсні індексатори
Дозволяє звертатися до об’єктів класів колекцій, що являються
членами класу, за допомогою квадратних дужок.
Andrii Hladkyi
trilobt@gmail.com 8
element_type this [int index]
{
get;
set;
}
12. Приховування імен при наслідувані
інтерфейсів
Коли клас реалізує декілька інтерфейсів, в яких присутні методи з
однаковим іменем
Andrii Hladkyi
trilobt@gmail.com 12
14. Аналіз стандартних інтерфейсів
Інтерфейс IEnumerable – підтримує перебір всіх елементів колекцій
IEnumerator – використовується в операторові foreach для проходу по
всім елементам колекції
IColection – наслідує IEnumerable містить додаткові властивості і
методи
IList – наслідує IColection, являється базовим інтерфейсом для всіх не
універсальних списків
IDisposable – Являється альтернативним деструктору. Методи
дозволяють звільнити не контрольовані ресурси
IComparable – Використовується для сортування елементів
Andrii Hladkyi
trilobt@gmail.com 14
15. Розробити абстрактний клас Vehicle (транспортний засіб). На його основі
реалізувати класи Plane (літак) Car (автомобіль) Ship (судно). Класи
повинні мати можливість задавати і отримувати координати і параметри
засобів пересування (вартість, швидкість, рік випуску і т.д.) за допомогою
властивостей і оголосити їх в інтерфейсі.
Для літака повинна бути визначена висота, для літака і судна – кількість
пасажирів, для судна – порт приписки. Динамічні характеристики задавати
за допомогою методів. Створити метод для роздруківки стану
транспортного засобу (кількість пасажир, порт, аеропорт і т.д.)
Andrii Hladkyi
trilobt@gmail.com 15