Текущий контроль осуществляется при проведении лабораторных работ, тестирования и выполнения контрольных работ.

Содержание курса определено требованиями Федерального государственного образовательного стандарта по направлению 230700 «Прикладная информатика»

3 Место учебной дисциплины в структуре ООП ВО

Данная дисциплина относится к вариативной части.

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

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

Для изучения данной дисциплины необходимы «входные» знания по основам процедурного и объектно-ориентированного программирования, структуре и функциональных модулях операционных систем, архитектуре микропроцессорных систем.

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

НЕ нашли? Не то? Что вы ищете?

4 Объем дисциплины (в зачетных единицах с указанием количества академических, выделенных на контактную работу обучающихся с преподавателем (по видам учебных занятий) и на самостоятельную работу обучающихся)

Таблица 1. Выписка из учебного плана

Форма обучения

Семестр

Трудоемкость

Лекции, час

Практич., час

Лаб. раб., час

СРС, час

Форма аттестации

зач. ед.

час

заочная

7

3

108

4

-

4

96

Зачет

В т. ч. в интерактивной форме

4

5 Содержание дисциплины (структурированное по темам (разделам) с указанием отведенного на них количества академических или астрономических часов и видов учебных занятий)

Таблица 2 Тематический план дисциплины

Всего

В т. ч. аудиторных, час

Самост.

Раздел, тема

часов

Всего

Из них

работа,

Аудит.

Лекции

Лаб.

час

1.   

Базовые концепции

кроссплатформенного

программирования.

20

1

1

19

2.   

Сравнение реализаций

платформ Java и. Net

20

1

1

19

3.   

Использование библио-

тек Qt и wxWidgets для

кроссплатформенной

компиляции программ

на языке С++

22

3

1

2

19

4.   

Возможности кросс-

платформенного интерпретатора языка python

21

2

1

1

19

5.   

Анализ производительности и профилирование кроссплатформенных приложений

21

1

1

20

ИТОГО:

104+4 часа на зачёт

8

4

4

96

Общая трудоемкость дисциплины составляет 2 зачетные единицы, 108 часа.

6. Виды занятий и их содержание:

6.1 Планы и содержание лекционных занятий

Раздел 1.

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

Раздел 2.

Введение в язык Java. История. Основные свойства. Создание простой программы. Основы GUI. События в Java. Обзор библиотеки Swing. Апплет. Сервлет. Особенности

архитектуры. NET. Методы и средства разработки приложений с использованием Visual

. Сборки, потоки и домены приложений.

Раздел 3.

Установка Qt SDK. Модули библиотеки Qt. QtCore — классы ядра библиотеки, используемые другими модулями. QtGui — компоненты графического интерфейса. Технология widgets 3on canvas. Инструментальные средства wxWidgets. wxWidgets и родные графические элементы пользовательского интерфейса. Недостатки wxWidgets и Qt.

Раздел 4.

Портируемость Python. Ссылочные и атомарные объекты. Объектно-ориентированное и функциональное программирование в Python. Модули в языке Python. Модули, написанные на «чистом» Python, и модули расширения (extension modules), написанные на других языках программирования. Стандартная библиотека Python. Модули расширения и программные интерфейсы.

Раздел 5.

Поиск узких мест в приложениях. Правило «20-80». Сбор характеристик работы программы: время выполнения отдельных фрагментов, число верно предсказанных условных переходов, число кэш-промахов и т. п. Простейшее профилирование. Отдельные утилиты анализа и средства интегрированных сред разработки.

6.2 Планы и содержание лабораторных занятий

ЛАБОРАТОРНАЯ РАБОТА №1

"Процедурный и объектно-ориентированный подходы"

Цель работы. Освоить на примере разницу между объектно-ориентированным и процедурным подходами.

Краткие сведения и задание

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

from Database import Database

from time import *

class HTTPPage():

def __init__(self, filename = "index. html"):

self. filename = filename;

def buildTable(self, table, titles = ['Pressure', 'Temperature', 'Wind', 'Humidity'], reverse = True):

result = "<table border=1 cellpadding=10 cellspacing=0>"

result += "<tr><th>Time</th>"

for title in titles:

result += "<th>" + title + "</th>"

result += "</tr>"

for t, row in sorted(table. items(), key = lambda (t, row): t, reverse=reverse):

result += "<tr>"

result += "<td>" + strftime("%d %b %Y, %H:%M:%S", (gmtime(t))) + "</td>"

for cell in row. keys():

result += "<td>" + str(row[cell]) + "</td>"

result += "</tr>"

result += "</table>"

return result

def meanTemp(self):

db = Database()

mean = db. meanTemp()

db. close()

def data(self, startTime, finishTime, limit):

db = Database()

result = {}

data = db. getInterval(startTime, finishTime, limit)

db. close()

for row in data:

[dId, dTime, dType, dValue] = row[:4]

if dTime not in result:

result[dTime] = {}

result[dTime][dType] = str(dValue)[:5]

return self. buildTable(result)

def generateLastData(self, limit):

t = time()

return self. data(t - 120000, t, limit)

def show(self):

content = open(self. filename, 'r').read()

content = content. replace("%MEANTEMP%", str(self. meanTemp()))

content = content. replace("%LASTDATA%", self. generateLastData(limit = 20))

content = content. replace("%TIME%", strftime("%a, %d %b %Y %H:%M:%S", gmtime()))

return content. encode("ascii");

def render(self, resource):

return self. show();

ЛАБОРАТОРНАЯ РАБОТА №2

"Распараллеливание и многопоточность"

Цель работы. Научиться запускать процессы и потоки и обеспечивать их работу.

Краткие сведения и задание

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

Родительский процесс:

import optparse

import os

import subprocess

import sys

def main():

child = os. path. join(os. path. dirname(__file__),

"grepword-p-child. py")

opts, word, args = parse_options()

filelist = get_files(args, opts. recurse)

files_per_process = len(filelist) // opts. count

start, end = 0, files_per_process + (len(filelist) % opts. count)

number = 1

pipes = []

while start < len(filelist):

command = [sys. executable, child]

if opts. debug:

command. append(str(number))

pipe = subprocess. Popen(command, stdin=subprocess. PIPE)

pipes. append(pipe)

pipe. stdin. write(word. encode("utf8") + b"\n")

for filename in filelist[start:end]:

pipe. stdin. write(filename. encode("utf8") + b"\n")

pipe. stdin. close()

number += 1

start, end = end, end + files_per_process

while pipes:

pipe = pipes. pop()

pipe. wait()

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5