Lab2_Stepnoy (Лабораторные работы РИСиБД)

2015-08-23СтудИзба

Описание файла

Файл "Lab2_Stepnoy" внутри архива находится в папке "Лабораторные работы РИСиБД". Документ из архива "Лабораторные работы РИСиБД", который расположен в категории "". Всё это находится в предмете "распределённые ис и базы данных" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "распределённые ис и базы данных" в общих файлах.

Онлайн просмотр документа "Lab2_Stepnoy"

Текст из документа "Lab2_Stepnoy"



Национальный исследовательский университет

«Московский Энергетический Институт»

Институт автоматики и вычислительной техники

Кафедра прикладной математики















Лабораторная работа №2

По дисциплине «Проектирование крупных программных систем и баз данных»

На тему «Реализация шаблона проектирования»



Выполнила студентка

Группы А-13-08

Степная Е.В.



Проверил

Куриленко И.Е.







Москва, 2012





Неизменяемый объект

Категория – базовые шаблоны.

Описание

Неизменяемый объект - объект, который не может быть изменен после своего создания.

Уместность применения

Шаблон следует применять, если требуется обезопасить объект от явного и неявного изменения его свойств.

Неизменяемые объекты часто используются для устранения дорогих операций копирования и сравнения, для упрощения кода и увеличения скорости исполнения. Однако неуместно делать объект неизменяемым, если в нём есть большое количество изменяемых данных.

Преимущества, достигаемые при применении шаблона

  • Данный шаблон используется другими шаблонами и является основным, потому что он повышает надежность и управляемость кода, за счет наложения запрета на изменение содержимого объекта класса, реализующего данный шаблон.

  • Сохранность изначального состояния объекта.

Недостатки шаблона

  • Если вдруг возникает необходимость изменить свойства объекта, приходится создать его копию или вообще не использовать данный шаблон.

Детали реализации

using System;

using System.Text;

public interface IImmutable

{

bool isImmutable { get; }

void makeImmutable();

}

public abstract class Immutable : IImmutable

{

private bool immutable;

public bool isImmutable

{

get { return immutable; }

}

public void makeImmutable()

{

immutable = true;

}

protected void checkImmutable()

{

if (immutable)

throw new Exception("Ошибка! Попытка изменить неизменяемый объект!");

}

}

namespace Lab2_1

{

public class Cvet : Immutable

{

private string element;

private string gColor;

public string Element

{

get { return element; }

set { checkImmutable(); element = value; }

}

public string GColor

{

get { return gColor; }

set { checkImmutable(); gColor = value; }

}

public Cvet(string element, string gColor)

{

this.element = element;

this.gColor = gColor;

makeImmutable();

}

}

}

UML-диаграммы

Диаграмма классов

Диаграмма последовательности

Литература





Маркерный интерфейс

Категория – базовые шаблоны.

Описание

Маркерный интерфейс предоставляет средства для связывания метаданных с классом в случаях, где нет явной поддержки этих метаданных. В интерфейсе нет методов. Маркерный интерфейс сигнализирует о том, что объект класса, реализующий его, имеет отличительные черты.

Уместность применения

Шаблон следует применять, если необходимо выделить некоторое множество сходных классов и назначить им некоторое поведение.

Достоинства

  • Убирать и добавлять маркеры очень просто.

  • Уменьшение программного кода.

  • Маркерные интерфейсы дают возможность разделить логику работы программы для разных групп классов.

Недостатки

  • Так как интерфейс явно или неявно реализуется всеми классами-наследниками, нет возможности «снять» маркер с объектов этих классов.

  • Интерфейс определяет контракт на реализацию классов и наследуется всеми потомками.

Детали реализации

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Marker

{

interface Avtomat

{ }

class Student

{

public int ocenka;

}

class AvtomatStudent : Student, Avtomat

{

public AvtomatStudent(int o) { this.ocenka = o; }

}

class ProstoyStudent : Student

{

public ProstoyStudent(int o) { this.ocenka = o; }

}

class Program

{

static void GetFive(Student stud)

{

if (stud is Avtomat)

{

stud.ocenka=5;

}

}

static void Main(string[] args)

{

AvtomatStudent Ivanov = new AvtomatStudent(4);

ProstoyStudent Petrov = new ProstoyStudent(4);

Console.WriteLine("Оценка, которую получит Иванов, если будет сдавать экзамен:" + Ivanov.ocenka);

Console.WriteLine("Оценка, которую получит Петров, если будет сдавать экзамен:" + Petrov.ocenka);

Console.WriteLine();

GetFive(Ivanov);

GetFive(Petrov);

Console.WriteLine("Оценка Иванова " + Convert.ToString(Ivanov.ocenka));

Console.WriteLine("Оценка Петрова " + Convert.ToString(Petrov.ocenka));

Console.ReadKey();

}

}

}

UML-диаграммы

Диаграмма классов

Диаграмма последовательности

Литература





Контейнер свойств

Категория – базовые шаблоны.

Описание

Контейнер свойств - шаблон, который обеспечивает динамическую расширяемость уже готового объекта.

Уместность применения

Шаблон следует применять, если количество свойств объекта требуется динамически увеличивать или уменьшать.

Достоинства

  • Гибкость класса.

  • Возможность динамически расширять или уменьшать объект.

Недостатки

Время доступа к динамически добавленным свойствам гораздо выше и зависит от числа таких свойств в объекте.

Детали реализации

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;

namespace Konteyner

{

class PropertyContainer

{

private SortedList list = new SortedList(0);

public PropertyContainer(SortedList list = null)

{

if (list != null)

this.list = list;

}

public PropertyContainer Add(string name, object value = null)

{

if (list.Contains(name))

throw new Exception("Свойство с именем '" + name + "' уже есть");

list.Capacity++;

list.Add(name, value);

return this;

}

public object Get(string name)

{

if (!list.Contains(name))

throw new Exception("Свойство с именем '" + name + "' не задано");

return list.GetByIndex(list.IndexOfKey(name));

}

public PropertyContainer Set(string name, object value)

{

if (!list.Contains(name))

throw new Exception("Свойство с именем '" + name + "' не задано");

list.SetByIndex(list.IndexOfKey(name), value);

return this;

}

public PropertyContainer Remove(params string[] names)

{

foreach (string name in names)

{

if (!list.Contains(name))

throw new Exception("Свойство с именем '" + name + "' не задано");

}

foreach (string name in names)

list.Remove(name);

list.Capacity -= names.Length;

return this;

}

}

class Program

{

static void Main(string[] args)

{

PropertyContainer container = new PropertyContainer();

container.Add("a", 1).Add("b", "Строка");

Console.WriteLine("Значения свойств:\na = " + container.Get("a") + "\nb = " + container.Get("b"));

Console.ReadLine();

}

}

}



UML-диаграммы

Диаграмма классов

Диаграмма последовательности

Литература





Шаблон делегирования

Категория – базовые шаблоны.

Описание

Шаблон делегирования - это способ, которым объект внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту.

Уместность применения

Шаблон даёт возможность изменить поведение конкретного экземпляра объекта вместо создания нового класса путем наследования. Таким образом, если при работе с объектом велика вероятность возникновения такой ситуации, следует использовать шаблон делегирования.

Достоинства

Применение шаблона делегирования ускоряет процесс внесения серьёзных изменений в логику работы программы.

Недостатки

Этот шаблон обычно затрудняет оптимизацию по скорости в пользу улучшенной чистоты абстракции.

Детали реализации

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Deleg

{

interface IDelegate

{

string Func();

}

class FirstCl : IDelegate

{

public string Func() { return "Функция из первого класса"; }

}

class SecondCl : IDelegate

{

public string Func() {return "Функция из второго класса";}

}

class Delegate : IDelegate

{

IDelegate Myobject = new FirstCl();

public string Func()

{

return Myobject.Func();

}

public void GetFunc(IDelegate m)

{

Myobject = m;

}

}

class Program

{

static void Main(string[] args)

{

Delegate MyO = new Delegate();

Console.WriteLine(MyO.Func());

MyO.GetFunc(new FirstCl());

Console.WriteLine(MyO.Func());

MyO.GetFunc(new SecondCl());

Console.WriteLine(MyO.Func());

Console.ReadLine();

}

}

}



UML-диаграммы

Диаграмма классов

Диаграмма последовательности

Литература



Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее