Лабораторная работа №1 Тема: Компонентно-ориентированное программирование




Скачать 76.27 Kb.
НазваниеЛабораторная работа №1 Тема: Компонентно-ориентированное программирование
Дата публикации01.02.2014
Размер76.27 Kb.
ТипЛабораторная работа
shkolnie.ru > Право > Лабораторная работа
Лабораторная работа №1

Тема: Компонентно-ориентированное программирование.

Цель работы: Ознакомится с парадигмой компонентно – ориентированного программирования на примере создания собственного .Net компонента в среде MS Visual Studio 2010.

Теоретическая часть

В 90-е года впервые начали обсуждать вопрос компонентно-ориентированного программирования. В контексте Интернета эта идея трансформировалась в идею сетевых услуг (web services).

Компонентно-ориентированное программирование (англ. component-oriented programming, COP, далее КОП) — парадигма программирования, ключевой фигурой которой является компонент.

Компонентно-ориентированное программирование возникло как своего рода дисциплина, т.е. набор определенных ограничений, налагаемых на механизм ООП (Объектно-ориентированное программирование), когда стало ясно, что бесконтрольное использование ООП приводит к проблемам с надежностью больших программных комплексов. Это так называемая проблема хрупких базовых типов [fragile base class problem]; проблема может проявиться при попытке изменить реализацию типа-предка, когда может оказаться, что изменить реализацию типа-предка даже при неизменных интерфейсах его методов невозможно, не нарушив корректность функционирования типов-потомков.

Можно сказать, что КОП — это такое ООП, которое подчинено требованиям безопасности "старого" структурного и модульного программирования.

КОП можно описать примерно такой формулой:

КОП = ООП

+ модульность (включая сокрытие информации и позднее связывание модулей, т.е. возможность подгружать необходимые модули в процессе выполнения программы, а не заранее, как это обычно делается в старых системах программирования)

+ безопасность (статический контроль типов переменных и автоматическое управление памятью)

- наследование реализации через границы модулей.

Последняя строчка означает, что в КОП запрещено наследование от типов, реализованных в других модулях; наследовать можно только абстрактным, интерфейсным типам

Под компонентом понимается независимый модуль программного кода, предназначенный для повторного использования и развертывания. Как видно из определения, применение компонентного программирования призвано обеспечить более простую, быструю и прямолинейную процедуру первоначальной инсталляции прикладного программного обеспечения, а также увеличить процент повторного использования кода, т.е. усилить основные преимущества ООП.

Компоненты - это существенно более крупные единицы, чем объекты (в том смысле, что объект представляет собой конструкцию уровня языка программирования). Другими отличиями компонентов от традиционных объектов являются возможность содержать множественные классы и (в большинстве случаев) независимость от языка программирования.

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

^ Ход работы

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

1. Запустите Visual Studio 2010.

2. Выберите создать проект. В открывшемся диалоговом окне выберите тип проекта «Библиотека классов». Задайте имя LikeComponent и укажите место, где необходимо сохранить проект (рис. 1).

3. Используя панель «обозреватель решений» удалите файл Class1.cs (рис.2).

4. Используя панель «обозреватель решений» добавьте компонент «Класс компонента» (рис. 3).



Рисунок 1.



Рисунок 2.



Рисунок 3.

5. Назовите добавляемый компонент «LikeButton» (рис. 4).



Рисунок 4.

6. Выберите в меню «Проект\Добавить ссылку». В открывшемся окне переключитесь на вкладку .Net (рис. 5) и удерживая клавишу Ctrl выберите:

System

System.Windows.Forms

System.Drawing



Рисунок 5.

7. На панели «обозреватель решений» нажмите правой кнопкой мыши на «LikeButton.cs» и выберите «Перейти к коду».

8. В появившемся окне введите следующий код (часть его уже будет автоматически подставлена).

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Diagnostics;

using System.Linq;

using System.Text;

using System.Drawing;

using System.Windows.Forms;

using System.Collections;
namespace LikeComponent

{

public partial class LikeButton : Control //Класс, описывающий создаваемый компонент

//По умолчанию создаваемый класс наследовался от класса Component.Мы поменяли базовый класс //Component на Control для того, чтобы сделать компонент визуальным.

//В зависимости от выбора базового типа различают следующие компоненты:

//1) Пользовательские элементы управления (user control) - расширение визуальных элементов //управления, в основе которых лежит класс Control

//2) Не визуальные компоненты (nonvisual component) - расширения классов, не имеющих во //время выполнения визуального представления

//3) Специальные элементы управления (custom control) - создание совершенно нового //визуального компонента непосредственно из класса Control

//При желании можно наследовать классы любых существующих компонентов
{

public LikeButton() //конструкторы, в которые мы добавили вызов метода Init(), //который задает начальные параметры свойствам нашего компонента

{

InitializeComponent();

Init();

}
public LikeButton(IContainer container)

{

container.Add(this);
InitializeComponent();

Init();

}
int count; //свойство счетчик, которое хранит количество нажатий на данный //компонент

Color colore; //хранит цвет компонента
[DefaultValue (0)] // значение для счетчика задаем по умолчанию, далее представляем //код для управления доступом к свойствам объекта

public int Count

{

get { return count; }

set { count = value; }

}
public Color Colore

{

get { return colore; }

set { colore = value; }

}
void Init() //метод задает начальные значения свойствам компонента

{

count = 0;

colore = Color.Aqua;

this.BackColor = colore; //задаем цвет компонента

}
public bool AddLike() //добавляем один Like, то есть одно нажатие на наш компонент

{

count++;

if (count > 10)

colore = Color.Yellow;

if (count > 20)

colore = Color.Red;

if (count > 30)

colore = Color.Green;

if (count > 50)

colore = Color.Gold;

this.BackColor = colore;

this.Refresh();

if (count > 0)

return true;

else

return false;

}
protected override void OnPaint(PaintEventArgs e) //переопределяем прорисовку //элемента, чтобы она выводила текст на наш компонент

{

base.OnPaint(e);

Font drawFont = new Font("Arial", 16);

SolidBrush drawBrush = new SolidBrush(Color.Black);

PointF drawPoint = new PointF((Right-Left)/4F, (Bottom-Top)/3F);

e.Graphics.DrawString("Like "+Convert.ToString(count), drawFont, drawBrush, drawPoint);

}

protected override void OnMouseClick(MouseEventArgs e) // переопределяем событие //нажатие мышкой на нашем компоненте

{

base.OnMouseClick(e);

if (e.Button == MouseButtons.Left)

AddLike();

}
}

}
9. Добавим приложение, которое будет использовать наш компонент. Выберите в меню «Фаил\Добавить\Создать проект». В открывшемся диалоговом окне необходимо выбрать «Приложение Windows Forms» и задать имя «PictureLike».

10. Перенесите с панели элементов на форму следующие компоненты (рис.6).



Рисунок 6.

11. Установите свойство Button Text в «Сгенерировать изображение». Установите свойство PictureBox SizeMode в «StretchImage». Так же вы можете наблюдать, что в свойствах нового компонента отображаются созданные нами поля «Count» и «Colore».

12. Нажмите дважды на компоненте Button и введите следующий код – обработчик нажатия на кнопку.
var rnd = new Random();

string s = Convert.ToString(rnd.Next(1, 6));

pictureBox1.Load("Image/image"+s+".jpeg");
Данный код загружает изображение из папки Image, выбирая его случайным образом. Необходимо в папке \LikeComponent\PictureLike\bin\Debug создать папку Image и в ней создать пять файлов с графическими изображениями, назвав их image1.jpeg … image5.jpeg.

13. На панели «обозреватель решений» нажмите правой кнопкой мыши на проекте «PictureLike». В открывшемся контекстном меню выберите «Назначить запускаемым проектом».

14. На панели «обозреватель решений» нажмите правой кнопкой мыши на проекте «LikeСomponent». В открывшемся контекстном меню выберите «Построение».

15. Запустите проект на выполнение и ознакомьтесь с его работой.

16. Добавьте еще один новый проект, назвав его «WordLike». В отличие от проекта «PictureLike», данный проект должен случайным образом выводить слова из некоторого текстового файла. В остальном логика работы приложения должна быть такой же. Самостоятельно напишите весь необходимый код.

17. Пример текстового файла, который содержит слова, приведен на рис. 7.



Рисунок 7.

Отчет

Отчет по работе должен содержать следующее:

1. Программный код созданного компонента.

2. Программный код проекта «PictureLike».

3. Программный код проекта «WordLike».

4. Соответствующие выводы о преимуществе использования в разработанном программном обеспечении своего компонента над стандартным компонентом Button.

Защита

Для успешной защиты лабораторной работы необходимо проработать материал лекции №1, посвященной моделям разработки ПО.

Похожие:

Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconК онтрольная работа по теме «Алгоритмизация и объектно-ориентированное программирование»
Контрольная работа по теме «Алгоритмизация и объектно-ориентированное программирование»
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconДисциплина: Объектно-ориентированное программирование
Фонд тестовых заданий предназначен для контроля знаний студентов по специальности 230105. 65 – Программное обеспечение вычислительной...
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconЛабораторная работа №3 Тема: «Обработка двумерных массивов (матриц...
Б оформить в виде модуля программу, выполняющую обработку матрицы в соответствии с заданием лабораторной работы
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconКонтрольная работа по дисциплине «Объектно-ориентированное программирование»
Кроме методов, перечисленных в задании, если это имеет смысл, должны быть реализованы
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconОбъектно-ориентированное программирование

Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconЛабораторная работа n 5 «программирование матричных операций»
Федеральное государственное образовательное учреждение высшего профессионального образования
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconУчебно-методический комплекс по дисциплине " объектно-ориентированное...
Спецкурс «Программирование» нацелен на формирование у будущих учителей информатики умения реализовать, в первую очередь, педагогический...
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconОбъектно-ориентированное программирование”
Разработать приложение для выделения черно-белых контуров на изображении по методу Робертса
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconЮ. А. Луцик объектно-ориентированное программирование
Рецензент: заведующий кафедрой математики и информатики егу, канд техн наук В. И. Романов
Лабораторная работа №1 Тема: Компонентно-ориентированное программирование iconЛабораторная работа №1 Программирование алгоритмов линейной и разветвляющейся структуры
Задание Составьте и выполните программу линейной структуры согласно вариантам задания
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
shkolnie.ru
Главная страница