GRASP 

Информационный эксперт (Information Expert) Низкая связанность (Low Coupling) Высокое зацепление (High Cohesion) Устойчивый к изменениям (Protected Variantions) Контроллер (Controller) Полиморфизм (Polymorphism) Чистая выдумка (Pure Fabrication) Перенаправление (Indirection) Создатель (Creator) GRASP (General Responsibility Assignment Software Patterns) — шаблоны проектирования, используемые для решения…

Читать далее

Шаблоны проектирования. Архитектурные шаблоны(MVC, MVP, MVVM, компонентный подход, ECS

Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо[1]. MVP (Model-View-Presenter) — паттерн разработки пользовательского интерфейса. Шаблон MVP является производным от MVC, но при…

Читать далее

Сложность алгоритма. Big O notation

Big O нотация нужна для описания сложности алгоритмов. Для этого используется понятие времени. Big-O позволяет оценить, насколько время выполнения алгоритма зависит от переданных в него данных. Начнем с самого простого: O(1) Возьмем массив из 5 чисел: Допустим надо получить первый…

Читать далее

Алгоритмы сортировки c#

Алгоритмы сортировки – это популярная тема, на разбор которой в университетах отводится несколько месяцев. Но зачем вообще в 20?? году изучать алгоритмы, если в CLR уже и так встроен и прекрасно работает адаптивный метод Sort() для любых коллекций? А причин…

Читать далее

Hashtable и коллизии

Хеш-таблица (hashtable) — это структура данных, представляющая собой специальным образом организованный набор элементов хранимых данных. Все данные хранятся в виде пар «ключ-значение». Данная структура похожа на словарь (map), но имеет особенности такие как применение хеш-функции для увеличения скорости поиска. Принцип работы…

Читать далее

В чем разница между array и List?

Хотя в языке C# есть массивы, которые хранят в себе наборы однотипных объектов, но работать с ними не всегда удобно. Например, массив хранит фиксированное количество объектов, однако что если мы заранее не знаем, сколько нам потребуется объектов. И в этом…

Читать далее

Структуры данных

Связный список Двусвязные списки Стек на основе массива Стек Очередь Дек Кольцевой односвязный список Кольцевой двусвязный список Связный список (Linked List) представляет набор связанных узлов, каждый из которых хранит собственно данные и ссылку на следующий узел. В реальной жизни связный…

Читать далее

SOLID

Вот как расшифровывается акроним SOLID: S: Single Responsibility Principle (Принцип единственной ответственности). O: Open-Closed Principle (Принцип открытости-закрытости). L: Liskov Substitution Principle (Принцип подстановки Барбары Лисков). I: Interface Segregation Principle (Принцип разделения интерфейса). D: Dependency Inversion Principle (Принцип инверсии зависимостей). Принцип единственной ответственности — Каждый класс…

Читать далее

Принципы ООП. Рассказать про каждый. Как это реализовано в языке C#? 

Принципы ООП: Наследование Абстракция Инкапсуляция Полиморфизм Принцип 1. Наследование Наследование — механизм, который позволяет описать новый класс на основе существующего (родительского). При этом свойства и функциональность родительского класса заимствуются новым классом. Для чего нужно наследование и какие преимущества оно дает?…

Читать далее