- •19.0. Введение
- •19.1. Моделирование как метод познания
- •20.1. Формы представления моделей
- •20.2. Классификация математических моделей
- •21.1. Математическая модель системы (объекта)
- •21.2. Методы математического моделирования
- •21.3. Технология математического моделирования системы (объекта)
- •1 Этап. Формулирование целей и задач моделирования, выявление проблем, описание объекта исследования.
- •2 Этап. Изучение априорной информации об объекте исследования.
- •3 Этап. Формализация постановки задачи: формальное описание целей и задач моделирования, формулировка требований.
- •4 Этап. Стратегическое и тактическое планирование эксперимента с объектом.
- •5 Этап. Экспериментирование с объектом.
- •6 Этап. Идентификация объекта.
- •7 Этап. Оценка адекватности модели, ее свойств, устойчивости, областей применения.
- •8 Этап. Решение задач моделирования, подведение итогов.
- •21.4. Контрольные вопросы и задания
- •22.1. Понятие информационной модели
- •22.2. Этапы моделирования
- •22.3. Типовые информационные модели
- •Графы, сети, деревья
- •23.1. Понятие алгоритма
- •23.2. Свойства алгоритма
- •23.3. Данные алгоритмов
- •23.4. Элементарные алгоритмические действия
- •23.5. Способы записи алгоритмов
- •24.0. Введение
- •25.0. Введение
- •26.0. Введение
- •27.0. Введение
- •28.1. Вычисление конечных и бесконечных сумм и произведений
- •28.2. Решение уравнений итерационными методами
- •28.3. Расчет таблиц функциональных зависимостей
- •28.4. Подсчет числа положительных, отрицательных и нулевых элементов массивов
- •28.5. Расчет модуля вектора и нормы матрицы
- •28.6. Расчет среднего и дисперсии элементов в массивах
- •28.7. Поиск минимальных или максимальных значений в массивах
- •28.8. Алгоритмы упорядочивания элементов в массивах
- •28.9. Умножение матрицы на вектор и матрицы на матрицу
- •28.10. Возведение квадратной матрицы в целую степень
- •28.11. Исключение элементов массивов
- •28.12. Расчет определителя квадратной матрицы
- •28.13. Транспонирование матриц
- •29.1. Что такое язык программирования?
- •29.2. Низкоуровневые языки программирования
- •29.3. Языки высокого уровня
- •Навигация по разделам:
- •29.3.1. Процедурные языки программирования
- •29.3.2. Функциональные языки программирования
- •29.3.3. Логические языки программирования
- •30.0. Введение
- •31.0. Введение
- •31.1. Постановка и формализация задачи
- •31.2. Разработка алгоритмов решения задачи
- •31.2. Разработка алгоритмов решения задачи
- •31.4. Анализ результатов
- •31.5. Сопровождение программ
- •32.0. Введение
- •33.1. Технология структурного программирования
- •33.2. Структурные методы анализа и проектирования по
- •33.3. Модульное программирование
- •Навигация по разделу
- •33.3.1. Hipo - диаграмма
- •33.3.2. Метод нисходящего проектирования
- •33.3.3. Метод расширения ядра
- •33.3.4. Метод восходящего проектирования
- •33.4. Базовые управляющие структуры структурного программирования
- •33.5. Проектирование и тестирование программы
- •33.6. Подпрограммы, процедуры и функции
- •Навигация по разделу:
- •33.6.1. Основные понятия и терминология
- •33.6.2. Локальность
- •33.6.3. Параметры процедуры
- •34.1. Методология объектно-ориентированного программирования
- •34.2. Объектно-ориентированные методы анализа и проектирования по
- •34.3. Основные принципы построения объектной модели
- •34.4. Основные элементы объектной модели
- •34.5. Пример разработки консольного приложения в технологии объектно-ориентированного подхода
- •Навигация по разделу:
- •34.5.1. Диаграмма прецендентов uml
- •34.5.2. Диаграмма последовательности uml для прецедента
- •34.5.3. Диаграмма классов uml для прецендента «перевести р-ичную строку в число»
- •34.5.4. Текст приложения на языке Object Pascal
- •35.0. Введение
- •35.1. История развития бд
- •35.2. Классификация бд
- •Навигация по разделу:
- •35.2.1. Основные функции субд
- •36.1. Основные понятия бд
- •36.2. Основные понятия реляционной модели бд
- •36.3. Предпроектное обследование предметной области. Связи таблиц
- •36.4. Нормализация отношений
- •36.5. Общие сведения о ms Access
- •36.6. Приложение
- •36.6. Приложение
- •37.2. Связь между таблицами и целостность данных
- •37.3. Создание запросов в ms access
- •Навигация по разделу:
- •37.3.1. Запросы на выборку
- •37.3.2. Запросы с параметрами
- •37.2.3. Запросы с вычислениями
- •37.2.4. Итоговые запросы
- •37.2.5. Перекрестные запросы
- •37.4. Формы
- •37.5. Отчеты
- •38.0. Введение
- •38.1. Различные подходы к построению систем ии
- •38.2. Экспертные системы
- •Методы, основанные на правилах.
- •Методы, основанные на фреймах.
34.5. Пример разработки консольного приложения в технологии объектно-ориентированного подхода
← 34.4. Основные элементы объектной модели |
35.0. Введение → |
Навигация по разделу:
34.5.1. Диаграмма прецендентов UML
34.5.2. Диаграмма последовательности UML для прецедента
34.5.3. Диаграмма классов UML для прецендента «перевести р-ичную строку в число»
34.5.4. Текст приложения на языке Object Pascal
Рассмотрим пример проектирования и реализации программы, предназначенной для преобразования р-ичного числа (р в интервале от 2 до 16) представленного строкой в числовой формат, в технологии ООП.
Проект программы опишем с помощью диаграммы прецедентов, диаграммы последовательностей и диаграммы классов. Реализуем проект в форме консольного приложения на языке Object Pascal в среде программирования Delphi.
34.5.1. Диаграмма прецендентов uml
↑ Наверх
Программа реализует единственный прецедент: полученную от пользователя р-ичную строку преобразует в числовой формат.
Сценарий прецедента: пользователь вводит с клавиатуры основание системы счисления и действительное число, представленное в этой системе счисления. Программа проверяет введённые значения. Если введённые значения верные (основание находится в диапазоне от 2 ло 16, во введённом числе нет недопустимых символов), программа осуществляет преобразование введённого числа в десятичную систему счисления и отображает результат на экране монитора, в противном случае программы выдаёт сообщение об ошибке и завершает свою работу.
34.5.2. Диаграмма последовательности uml для прецедента
↑ Наверх
Для реализации прецедента мы создаём два объекта: один объект класса TInOut осуществляет ввод исходной строки, проверку строки на соответствие заданному формату и вывод результата, второй объект класса TConvertPToDec – осуществляет преобразование введённой строки в числовой формат. Обмен сообщениями между объектами представлен на диаграмме последовательности.
34.5.3. Диаграмма классов uml для прецендента «перевести р-ичную строку в число»
↑ Наверх
Между классом TinOut и классом TConvertPtoDec отношение зависимости, которое на диаграмме изображено в виде пунктирной стрелки. Это отношение возникает в силу того, что объекты класса TinOut вызывают операции объектов класса TConvertPtoDec для преобразования введённого числа в десятичную систему счисления.
34.5.4. Текст приложения на языке Object Pascal
↑ Наверх
Приложение состоит из головной программы POOP и модуля UOOP. В головной программе описан класс TInOut, который отвечает за ввод исходных данных и вывод результата. В модуле UOOP описан класс TConvertPtoDec, который отвечает за преобразования числа, представленного в системе счисления с основанием p в десятичное представление.
Класс TInOut инкапсулирует в себе поля p, Np, mistake для хранения данных и методы, предназначенные для обработки полей. Методы в классе представлены заголовками трёх процедур по именам: OutPutResult, CheckInputFormat, Input и заголовком специального метода конструктора по имени Create. Интерфейс класса – это те поля и методы, к которым могут обращаться объекты этого класса, представлен разделом с уровнем доступа public.Реализация класса - это те поля и методы, которые недоступны объектам этого класса, представлена разделом с уровнем доступа private. В случае класса TInOut все методы составляют интерфейс класса, а поля – его реализацию.
Класс TConvertPtoDec не содержит полей в его состав входят лишь методы. Раздел интерфейса класса представлен одним методом Convert. Три другие метода помещены в раздел реализации класса. Объекты этого класса могут вызывать только метод Convert, который обеспечивает преобразование числа в десятичную систему счисления. Остальные методы являются вспомогательными и вызываются внутри метода Convert. Объекты класса доступа к ним не имеют.
Текст головной программы. //----------------------------------------------------- program POOP; //----------------------------------------------------- //Перевод р - ичного числа представленного строкой в //число. р от 2 до 16. //Технология ООП {$APPTYPE CONSOLE} //----------------------------------------------------- uses SysUtils, UOOP in 'UOOP.pas'; //----------------------------------------------------- type //----------------------------------------------------- TInOut = Class //------------------------------------------------- public //------------------------------------------------- procedure OutPutResult(r: TConvertPtoDec); //Вывод десятичное представление р - ичного числа //------------------------------------------------- procedure CheckInputFormat(); //Контроль формата ввода //------------------------------------------------- procedure Input(); //Ввод р-ичного числа //------------------------------------------------- constructor Create(p: integer = 16); //------------------------------------------------- private //------------------------------------------------- p: integer;//Основание системы счисления //------------------------------------------------- Np:String;//исходное р-ичное число //------------------------------------------------- mistake: integer;//Номер ошибочной позиции в р-ичном числе //------------------------------------------------- end; //----------------------------------------------------- const FirstS =['0'..'9','A'..'F','a'..'f','-','+']; Another = FirstS + [',']; //----------------------------------------------------- constructor TInOut.Create(p: integer = 16); begin self.p:= p; mistake:= 0; end; //----------------------------------------------------- procedure TInOut.Input; //Ввод р-ичного числа begin write('p = '); Readln(p); write('Str',p,' = '); readln(Np); end; //----------------------------------------------------- procedure TInOut.CheckInputFormat; //Контроль формата ввода var i: integer; begin for i:= 1 to Length(Np) do begin if (i = 1) and not (Np[1] in FirstS) then begin mistake:= 1; exit; end; if (i <> 1) and not (Np[i] in Another) then begin mistake:= i; exit; end; end; end; //----------------------------------------------------- procedure TInOut.OutPutResult; //Вывод десятичное представление р - ичного числа begin if mistake = 0 then begin //Формирование и вывод строки результата writeln('number = ',r.Convert(Np,p) :8:4); end else //вывод сообщения об ошибке writeln('input mistake position ', mistake); end; //----------------------------------------------------- var c: TInOut; f: TConvertPtoDec; //----------------------------------------------------- begin c:= TInOut.Create(16);//Создание объекта класса TInOut. f:= TConvertPtoDec.Create; //Создание объекта класса //TConvertPtoDec. c.Input();//Ввод исходных данных c.CheckInputFormat;//Контроль формата исходных данных c.OutPutResult(f);//Преобразование и вывод результата readln; end. Текст модуля. //----------------------------------------------------- unit UOOP; //----------------------------------------------------- interface //----------------------------------------------------- type //----------------------------------------------------- TConvertPtoDec = class//отвечает за преобразование числа //------------------------------------------------- public //------------------------------------------------- function Convert(Np: String;p: integer):real; //Формирование результата private //------------------------------------------------- function PCharToInt(d: Char):integer; //переводит символ, изображающий цифру в её //числовое представление в системах счисления с //основаниями от 2 до 16 //------------------------------------------------- function PStrToInt(r: String; b:integer):integer; //перевод целого - строка r в её числовое //представление в с. сч. с основанием b //------------------------------------------------- function PStrToFrac(f: String; b:integer): Real; //перевод дроби - строка f в её числовое //представление в с. сч. с основанием b end; //----------------------------------------------------- implementation //----------------------------------------------------- function TConvertPtoDec.PCharToInt(d: Char):integer; //переводит символ, изображающий цифру, в её числовое //представление в системах счисления с основаниями от 2 //до 16 begin result:= 0; case d of '0'..'9': Result:= Ord(d)- Ord('0'); 'A'..'F': Result:= Ord(d)- Ord('A') + 10; 'a'..'f': Result:= Ord(d)- Ord('a') + 10; end; end; //----------------------------------------------------- function TConvertPtoDec.PStrToInt(r: String; b:integer):integer; //перевод целое строка s в её числовое //представление в с. сч. с основанием b var n: integer; w: integer; begin result:= 0; n:= Length(r); w:= 1; while n <> 0 do begin Result:= Result + PCharToInt(r[n])*w; w:= w*b; Delete(r,n,1); n:= Length(r); end; end; //----------------------------------------------------- function TConvertPtoDec.PStrToFrac(f: String; b:integer): Real; //перевод дробь строка f в её числовое //представление в с. сч. с основанием b var n: integer; w : Real; begin result:= 0; n:= Length(f); w:= 1/b; while n <> 0 do begin Result:= Result + PCharToInt(f[1])*w; w:= w/b; Delete(f,1,1); n:= Length(f); end; end; //----------------------------------------------------- function TConvertPtoDec.Convert(Np: String;p: integer):real; //Формирование результата p-основание системы счисления var Ip: String;//целая часть исходного р-ичного числа Fp: String;//дробная часть исходного р-ичного числа signe: integer;//Знак числа z: integer;//позиция разделителя в р-ичном числе begin Ip:='';//целая часть исходного р-ичного числа Fp:='';//дробная часть исходного р-ичного числа signe:= 1;//Знак числа if Np[1]='-' then begin signe:= -1; delete(Np,1,1) end else signe:= 1; z:= Pos(',',Np); if z <> 0 then begin Ip:= Copy(Np,1,z - 1); Fp:= Copy(Np,z + 1,Length(Np) - z); result:= PStrToInt(Ip, p) + PStrToFrac(Fp, p) end else begin Ip:= Np; result:= PStrToInt(Ip, p); end; if signe < 0 then result:= result*signe; end; end. //-----------------------------------------------------
← 34.4. Основные элементы объектной модели |
35.0. Введение → |
↑ Наверх