- •Часть 1-3
- •2012 Лабораторная работа №3
- •Общие сведения
- •Формализация задачи
- •Упражнение 3 – Добавление в модель хранимой процедуры
- •Часть 1-4
- •2012 Лабораторная работа 4
- •Назначение паттерна Observer
- •Решаемая проблема
- •Назначение паттерна Singleton
- •Описание паттерна Singleton
- •Ход лабораторной работы Упражнение 1 - паттерн наблюдатель
- •Упражнение 2 - паттерн одиночка
- •Упражнение 3 - паттерн интерфейс
Упражнение 3 – Добавление в модель хранимой процедуры
1. Обновили модель, добавив в нее хранимую процедуру «uspGetManagerEmployees».
2. Для хранения результатов ее вызова сгенерировали новый тип (Complex Type).
3. Изменили метод, вызываемый при загрузке формы. В нем должнобыло происходить
заполнение дерева сотрудниками в соответствие с корпоративной иерархией.
Изменили программу, добавив вывод иерархии подчиненности всех сотрудников компании. Для этого к модели подключили хранимую процедуру.
Листинг
Упр. 3
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace UseEntityFramework
{
public partial class Form1 : Form
{
private AdventureWorksEntities2 db;
public Form1()
{
db = new AdventureWorksEntities2();
InitializeComponent();
GetPredisentName();
}
private void GetPredisentName()
{
var p = db.Employee
.Where (o => o.ManagerID == null);
foreach (var emp in p)
{
AddEmployeeToHierarchy((int)emp.EmployeeID, treeView.Nodes.Add(emp.Contact.FirstName + " " + emp.Contact.LastName));
}
}
private void MakeHierarchy()
{
}
public void AddEmployeeToHierarchy(int EmpID, TreeNode node)
{
System.Data.Objects.ObjectResult<uspGetManagerEmployees_Result> res = db.uspGetManagerEmployees(EmpID);
foreach (var emp in res)
{
AddEmployeeToHierarchy((int)emp.EmployeeID, node.Nodes.Add(emp.FirstName + " " + emp.LastName));
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Рис. 7. Результат упражнения 3
Вывод: В ходе лабораторной работы была изучена работа с Entity Framework 4.0. Для работы было создано приложение, подключающее к базе данных и использующее необходимые данные из таблиц и хранимые процедуры. Также научились взаимодействовать программно с базой данных, которая прикреплена к проекту.
МИНОБР НАУКИ РОССИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» им. В. И.УЛЬЯНОВА (ЛЕНИНА)» (СПбГЭТУ)
ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ И ИНФОРМАТИКИ
КАФЕДРА СИСТЕМ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ
ЛАБОРАТОРНАЯ РАБОТА
по учебной дисциплине «Паттерны проектирования приложений»
на тему «Углублённое изучение ООП»
Часть 1-4
«Изучение паттернов проектирования»
Выполнили:
Соловьёв С.П.
Ярославцева В.А.
Группа: 9301
Факультет: КТИ
Преподаватель: Горячев А.В.
Санкт-Петербург
2012 Лабораторная работа 4
Цель работы: ознакомиться с применением паттернов проектирования в построении архитектуры приложений.
Задание: выполнить три упражнения. Каждое упражнение представляет собой реализацию того или иного паттерна, а именно:
Паттерн наблюдатель
Паттерн одиночка
Паттерн интерфейс
Общие сведения:
ПАТТЕРН НАБЛЮДАТЕЛЬ (Observer)
Паттерн наблюдатель определяет отношение «Один - ко - многим» между объектами таким образом, что при изменении состояния одного объекта происходит автоматическое оповещение и обновление всех зависимых связей.
На рисунке 1 изображена примерная диаграмма классов паттерна Наблюдатель:
Рисунок – 1.UML-диаграмма классов паттерна Observer
1. Интерфейс субъекта. Используется объектами для регистрации в качестве
наблюдателя, а также исключения из списка.
2. Каждый субъект может иметь несколько наблюдателей.
3. Каждый потенциальный наблюдатель должен реализовать интерфейс Observer.
Интерфейс содержит единственный метод update(), который вызывается при
изменении состояния субъекта.
4. Субъект реализует интерфейс Subject. Кроме методов регистрации и исключения,
субъект также реализует метод notifyObservers(), оповещающий всех текущих
наблюдателей об изменении состояния.
5. Субъект может иметь get – и set – методы для изменения состояния.
6. Наблюдатели могут относиться к любому классу, реализующему интерфейс
Observer. Каждый наблюдатель регистрируется у конкретного субъекта для
получения обновлений.