Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО - задание по лабам.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
113.15 Кб
Скачать

Лабораторная работа № 3 Каркасы программных систем

Цель работы – приобретение навыков разработки оконных и Web интерфейсов, изучение паттерна Model-Controller-View.

Порядок выполнения работы

1. Для задания из лабораторной работы № 1 разработать оконное приложение на Ruby с возможностями:

- загрузки, редактирования и сохранения исходных данных;

- запуска требуемой реализации алгоритма;

- просмотра и сохранения результатов работы.

При разработке рекомендуется использовать библиотеку FXRuby (допустимо и другую, например WxRuby).

2. Разработать Web-приложение с использованием программного каркаса Rails. Приложение должно поддерживать все возможности оконного приложения.

3. Сравнить реализации по количеству строк кода, количеству действий в интерфейсе пользователя для достижения результата, удобству работы.

Требования к программному обеспечению

При разработке необходимо соблюдать принцип DRY (Don't Repeat Yourself), т.е. не повторять один и тот же код в разных частях программы. Web приложение должно содержать реализацию модели, представления и котроллера (Model-View-Controller). Причем класс модели должен быть общим для оконного и Web приложения. Модель должна содержать методы ввода и вывода в файлы. В интерфейсе пользователя каждый элемент вводимых данных (элемент матрицы, вектора и т.д.) должен быть представлен как отдельный элемент управления.

Содержание отчета

1. Постановка задачи

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

3. Сравнение программных реализаций

4. Выводы

5. Приложения

5.1. Результаты тестирования

5.2. Листинги программ

Методические указания

Разработка на Rails

Приведенные команды выполняются из командной строки. Во время выполнения необходима связь с интернет.

Установка Rails:

gem install rails

Создание приложения simpletable:

rails simpletable

Настройка приложения для выполнения лабораторной работы (для Rails 2.0.2)

В файле \config\environment.rb:

Указать параметры конфигурации

Не использовать базу данных:

config.frameworks -= [ :active_record, :active_resource, :action_mailer ]

Выключить защиту от возможных атак на web-приложение:

config.action_controller.allow_forgery_protection = false

Запустить сервер WEBrick из командной строки

ruby script\server

В браузере набрать

http://localhost:3000

Создание контроллера из командной строки

ruby script\generate controller MyTable

Создать файл с моделью

app\models\my_table.rb

class MyTable

def load

s = File.open('1.txt','r').readlines

@d = Array.new(s.size) do |i|

a = s[i].split(' ')

a.each_index{ |j| a[j] = a[j].to_i }

a

end

end

def save

File.open('1.txt','w') do |f|

@d.each{ |r| f.puts r.join(' ') }

end

end

def get_table

@d

end

def set_table( t )

@d = t

end

def get_sum

s = 0

@d.each { |r| r.each{ |d| s+=d } }

s

end

end

Отредактировать файл контроллера:

app\controllers\my_table_controller.rb:

class MyTableController < ApplicationController

def index

@table = MyTable.new

@table.load

@t = @table.get_table

@s = @table.get_sum

end

def some_action

t = []

params['table'].each do |rnum, r|

s = []

r.each do |cnum, d|

s << d.to_i

end

t << s

end

table = MyTable.new

table.set_table(t)

table.save

redirect_to :action => 'index'

end

end

Создать файл представления

app\views\my_table\index.rhtml

<html>

<head>

<title>Table editor</title>

</head>

<body>

<h1>This is table</h1>

<form action="my_table/some_action" method="POST">

<% @t.each_with_index do |r,i| %>

<p>

<% r.each_with_index do |d,j| %>

<input name="table[<%= i %>][<%= j %>]" size=4 value="<%= d.to_s %>" />

<% end %>

</p>

<% end %>

<p>Summa=<%= @s %> </p>

<input type="submit" value="Ok" />

</form>

</body>

</html>

В браузере перейти по адресу

http://localhost:3000/my_table