18. C-sharp 12 19-11-2013

Created Saturday 23 November 2013

** Инкапсуляция, наследование, полиморфизм
1) Инкапсуляция - защита данных
** 2609, 2124
** Обработка текста задания:
1) Подчеркнуть существительные - кандидаты в классы
2) Построить таблицу domain dictionary (всё, что не класс - переменная):
| 1 | Israel | class |
|---+--------+-------|
| 2 | Zoo | class |
| 3 | Cage | class |
| 4 | Lion | class |
3) Country -> Zoo -> Cage -> Lion
** Anemic object model (MVC etc..) - основная группа классов не имеет методов,
несколько контролирующих классов содержат все методы.
** Архитектура объектно-ориентированных программ:
1) Часть классов не относятся к объектной модели, а являются
служебными (ввод-вывод и т.д.)
2) Существует несколько архитектур организации программы (деления
классов на группы)
3) Взаимодействие с пользователем, ввод-вывод данных, бизнес-логика
4) Архитектуры:
1) N-layer (tier) architecture - Wiki...
+ Группы классов должны быть разбиты на 3 части:
1) Обслуживание пользовательского ввода - UI (User Interface)
+ Добавить папку UI и поместить туда все эти классы
2) Бизнес-логика BL
+ Добавить папку BL и поместить туда всю объектную модель
3) Взаимодействие с внешними данными (включая печать на дисплей,
в файл и т.д.) Data Access Layer
+ Добавить папку DAL и поместить туда весь output
+ По необходимости добавлять вложенные папки
+ Согласно этой архитектуре классы могут обращаться только по
следующей схеме: UI -> BL -> DAL
2) Model View Controller (MVC) - более гибкая архитектура за счёт
отсутствия однонаправленности
+ Модель - это бизнес-логика
+ View - это UI и DAL
+ Controller - нет аналога в N-layer
+ Применим (в основном) в тех проектах, в которых богатый пользовательский
интерфейс

  1. Все запросы от слоя UI попадают в Controller.
  2. UI - это группа классов, которые отслеживают, что происходит
со стороны пользователя
  1. Controller обращается к модели (изменяет модель, даёт запрос на
изменение модели). Если модель изменилась, Controller это видит,
запрашивает новые данные и изменяет View - то, что видно на экране.
  1. Model не видит View и наоборот.
+ На базе MVC есть MVP, MVVM etc..
+ Microsoft автоматизировала эту модель
** HW - по схеме N-layer
1) В 3-х городах Израиля: Хайфе, Иерусалиме и Тель-Авиве есть по 2 главных каньона. В каждом каньоне
есть 3 стоянки: наружная, подземная, и на крыше. На каждой стоянке
ограниченное число мест (50, 25, 30). Автомобили могут заезжать на стоянки,
если там есть свободные места. Пользователь может, подъезжая к городу,
ввести название города, указать имя каньона, в который он едет, а также
вид стоянки. Программа выдаёт результат в виде номера свободной стоянки, или
что свободной стоянки нет. Второе действие поиска, программа спрашивает "зарезервировать?"
Второй запрос - не интересует вид стоянки, только город и каньон: программа выдаёт
вид стоянки и номер ячейки, если нет свободной - "свободных мест нет", и предлагает
зарезервировать (оплатить). Стоянка может освобождаться пользователем.
Стоянка освобождается автоматически, поскольку вы уезжаете и освобождается
лазерный датчик.



Backlinks: