Главная страница
Навигация по странице:

  • Практическая работа № 4 Операции для работы с файловой системой Цель работы: ознакомиться с операциями, предназначенными для работы с файловой системой.

  • 1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

  • Практическая работа № 5 Объектно-ориентированная модель программирования. Объекты.

  • 2 ВЫПОЛНЕНИЕ РАБОТЫ В работе требуется внимательно рассмотреть и разобрать приведенные примеры.3 ФОРМА ОТЧЕТА

  • Практическая работа № 6 Объектно-ориентированная модель программирования. Классы и методы.

  • му паскаль и делфи. Методические рекомендации для студентов по выполнению практических работ для специальности 09. 02. 03 Программирование в компьютерных системах


    Скачать 2.13 Mb.
    НазваниеМетодические рекомендации для студентов по выполнению практических работ для специальности 09. 02. 03 Программирование в компьютерных системах
    Дата01.09.2022
    Размер2.13 Mb.
    Формат файлаdoc
    Имя файламу паскаль и делфи.doc
    ТипМетодические рекомендации
    #658926
    страница3 из 7
    1   2   3   4   5   6   7

    2 ВЫПОЛНЕНИЕ РАБОТЫ

    В работе требуется внимательно рассмотреть и разобрать построчно приведенные примеры. Оформить отчет.

    3 ФОРМА ОТЧЕТА

    Отчет должен содержать ответы на вопросы.

    4 КОНТРОЛЬНЫЕ ВОПРОСЫ


    1. Дайте определение файловому типу.

    2. Что включают операции с файловыми переменными.

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

    4. Дать определение текстовому файлу.

    5. Опишите работу типизированных файлов.

    6. Опишите работу нетипизированных файлов.


    Практическая работа № 4

    Операции для работы с файловой системой
    Цель работы: ознакомиться с операциями, предназначенными для работы с файловой системой.
    1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

    В Pascal существует несколько процедур для работы с файловой структурой.

    Процедура Rename служит для переименования файла или каталога. Синтаксис процедуры следующий:

    Rename(файловая_переменная, новое_имя)

    Второй параметр задается строковым выражением и указывает новое внешнее имя файла или каталога.

    Для уничтожения файла в Pascal используется процедура Erase, единственным параметром которой является внутреннее имя файла.

    Erase(файловая_переменная)

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

    Четыре процедуры (ChDir, MkDir, RmDir и GetDir) в Pascal обеспечивают работу с каталогами.

    Первые три процедуры используют один и тот же синтаксис:

    ChDir(каталог)

    MkDir(каталог)

    RmDir(каталог)

    Во всех трех случаях параметр задается строковым выражением и указывает имя каталога в интерпретации MS DOS.

    Процедура ChDir изменяет текущий каталог на указанный, процедура MkDir создает новый каталог с указанным именем, а процедура RmDir уничтожает каталог при условии, что он пустой.

    Процедура GetDir позволяет определить имя текущего каталога на указанном диске. Синтаксис процедуры таков:

    GetDir(диск, каталог)

    Здесь параметр диск представляет собой выражение типа Word, задающее номер диска (0 – активный диск, 1 – диск A, 2 – диск B и т. д.). Параметр каталог – это переменная типа string, которая служит для возврата пути к текущему каталогу на диске, номер которого указан в качестве первого параметра процедуры. Пример использования описанных выше процедур представлен в программе ниже.

    var

    f: text;

    s: string;

     

    begin

    Assign(f,'a.txt'); // связываемсясфайлом

    Rename(f,'b.txt'); // переименовываем его

     

    MkDir('foto'); // создаем каталог

    ChDir('foto'); // переходим в него

    GetDir(0,s); // полное имя текущего каталога записываем в s

    writeln(s);

     

    ChDir('..'); // поднимаемся на уровень вверх

    rewrite(f); // открываем файл на запись

    write(f,s); // записываем туда строку

    close(f);

    readln; // пока не нажата клавиша, вы можете видеть каталог

    RmDir('foto'); // удаляем каталог

     

    end.

    2 ВЫПОЛНЕНИЕ РАБОТЫ

    В работе требуется внимательно рассмотреть и разобрать построчно приведенные примеры. Оформить отчет.

    3 ФОРМА ОТЧЕТА

    Отчет должен содержать ответы на вопросы.

    4 КОНТРОЛЬНЫЕ ВОПРОСЫ


    1. Дать определение файловой структуре.

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

    3. Предложите свой пример использования описанных процедур.


    Практическая работа № 5

    Объектно-ориентированная модель программирования. Объекты.

    Цель работы: получить теоретические сведения об объектах ООП.

    1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

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

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

    Объектная декомпозиция

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

    Элементы системы, параметры и поведение которой определяются условием задачи, обладающие самостоятельным поведением (т. е. «умеющие» выполнять некоторые действия, зависящие от полученных сообщений и состояния элемента), получили название объектов.

    Процесс представления предметной области в виде совокупности объектов, обменивающихся сообщениями, называется объектной декомпозицией.

    Упражнение 1. Выполните объектную декомпозицию программы, которая по запросу пользователя рисует точку, окружность или квадрат.

    Решение

    По правилам объектной декомпозиции разрабатывается имитационная модель программы. Для этого необходимо проанализировать все происходящие в системе процессы и выделить элементы, обладающие собственным поведением, воздействующие на другие элементы и/или являющиеся объектами такого воздействия.

    Основная цель системы — нарисовать фигуру, выбранную пользователем. Действия пользователя — это либо выбор фигуры, либо изменение параметров фигуры (цвет, размер, коорди­наты), либо команда нарисовать выбранную фигуру с заданными параметрами. Для выполнения этих команд можно воспользоваться следующими объектами: Менеджер (получает, анализирует и обрабатывает команды пользователя) и три объекта — фигуры (каждая со своими параметрами).



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

    Упражнение 2. Выполните объектную декомпозицию системы «Телефонный справочник».

    Решение

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

    Для выполнения выделенных задач можно воспользоваться следующими объектами: Менеджер (получает, анализирует и обрабатывает команды пользователя), Поисковик (осуществляет поиск записей по определенным данным), ОбработатьЗапись (добавляет, редактирует, удаляет запись), Файл (для хранения записей, получает сообщения от объектов Поисковик, ОбработатьЗапись), ОткрытиеФайла (отвечает за существование файла, если файл не существует, то он создается).



    В объектно-ориентированном программировании разрабатываемая система состоит из объектов, которые взаимодействуют через передачу сообщений.

    Каждый объект, получив сообщение, должен определенным образом реагировать на них, выполняя заранее определенные для каждого типа сообщения действия. Например, если объект ОбработатьЗапись будет активизирован, то он должен будет проанализировать, какое именно действие нужно выполнить. Если принято сообщение Редактировать, то объект должен сохранить запись в файл, на место, указанное курсором.

    Состояние объекта характеризуется набором конкретных значений некоторого перечня всех возможных свойств данного объекта; например, состояние объекта Файл характеризуется значениями «активизирован» — «не активизирован». Это состояние объекта необходимо для выполнения всех действий над записной книжкой: если Файл находится в состоянии «не активизирован», то ни одно сообщение не сможет быть обработано.

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

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

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

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

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

    2 ВЫПОЛНЕНИЕ РАБОТЫ

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

    3 ФОРМА ОТЧЕТА

    Отчет должен содержать разобранные примеры, ответы на вопросы.

    4 КОНТРОЛЬНЫЕ ВОПРОСЫ

    1. Понятие ООП.

    2. В чем состоит концептуальное отличие структурного программиро­вания от объектно-ориентированного программирования?

    3. Что называется объектом?

    4. Дать определение объектной декомпозиции.

    5. Правила разработки имитации модели программы.

    6. Дайте характеристику состоянию объекта.

    7. Перечислите этапы операции селекции.

    8. Перечислите этапы операции модификации.

    Практическая работа № 6

    Объектно-ориентированная модель программирования. Классы и методы.
    Цель работы: получить теоретические сведения о классах и методах ООП.
    1 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

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

    Абстрагирование — это один из главных способов решения сложных задач.

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

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

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

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

    Класс представляет собой структуру, динамически размеща­емую в памяти. Экземпляр класса называется объектом. Прежде чем программа сможет использовать объект какого-либо класса, его необходимо создать. Объекты создаются и уничтожаются с помощью специальных методов, которые называются constructor (конструктор) и destructor (деструктор).

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

    Для корректной работы абстракции доступ к ее внутренней структуре должен быть ограничен. Для этого вводятся две части в описании абстракции.

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

    Реализация — это совокупность недоступных извне элемен­тов реализации абстракции, т. е. внутренняя организация абст­ракции и механизмы реализации ее поведения.

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

    frame1

    Для описания нового класса в языке Object Pascal определен следующий синтаксис:

    Туре <имя_объявляемого_класса>=с1аss(<имя_класса_родителя>) Private

    <скрытые_элементы_класса> Protected

    <защищенные_элементы_класса> Public

    <общедоступные_элементы_класса> Published

    <опубликованные_элементы_класса> end;

    Директивы private, protected, public, published предназначены для ограничения доступа к элементам класса.

    Секция private содержит внутренние элементы, обращение к которым возможно только в пределах модуля, содержащего объявление класса.

    Секция protected содержит защищенные элементы, которые доступны в пределах модуля, содержащего определение класса, и внутри классов-потомков.

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

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

    Потомки класса могут менять область доступности всех эле­ментов родительского класса, кроме элементов, объявленных в секции private, так как последние им недоступны.

    Все объекты Delphi являются динамическими, т. е. размещаемыми в динамической области памяти. Соответственно переменная типа класса по смыслу представляет собой указатель на объект. Вызовы конструктора и деструктора являются обязательными, так как конструктор выполняет размещение объекта в памяти, а деструктор — выгрузку из нее.

    Упражнение 1 Разработать класс, переменные которого используются для описания положения геометрической фигуры на экране.

    Решение

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

    Определим класс Position:



    Для хранения значений координат введем два поля Fx и Fy (в языке Object Pascal принято соглашение названия полей на­чинать с символа F (от слова Field — поле)). Это внутренние данные класса, чтобы обеспечить их целостность, опишем их в разделе private.

    Constructor Create предназначен для создания экземпляра класса (объекта), а также для определения начальных значений его полей.

    Destructor Destroy предназначен для удаления объекта из динамической памяти.

    Подчеркнем, выделим мысль о том, что согласно идеологии объектно-ориентированного программирования, все действия с данными, определенными в классе, осуществляются только путем использования методов объекта. Методы GetX и GetY по запросу обращаются к соответствующему полю объекта и возвращают координаты положения объекта.

    Итак, объединение данных с действиями над этими данными порождает новый тип, а процесс называется инкапсуляцией.

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

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

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

    <имя_объекта>.<имя_поля>; ИЛИ

    <имя_объекта>.<имя_метода>;

    Все методы объекта обязательно имеют доступ ко всем полям своего объекта. В языке Object Pascal это достигается через неявную передачу в метод специального параметра Self — адреса области данных конкретного объекта. Таким образом, уменьшается количество параметров, явно передаваемых в метод.

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

    Доступ к данным объекта не через его методы запрещен! Кроме того, объекты должны ограничивать свои операции только их собственными данными и не должны быть связанными ни с какими глобальными переменными, а также не должны изменять их.

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

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

    Особенности системы, подверженные изменениям, следует скрывать в отдельном модуле. В качестве межмодульных можно использовать только те элементы, вероятность изменения которых мала. Все структуры данных должны быть обособлены в модуле; доступ к данным из модуля должен осуществляться только через процедуры данного модуля. Другими словами, следует стремиться построить модули так, чтобы объединить логически связанные абстракции и минимизировать взаимные связи между модулями.

    Модульность — это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули.

    Правила разделения системы на модули.

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

    Многие компиляторы создают отдельный сегмент кода для каждого модуля, поэтому могут появиться ограничения на размер модуля. Динамика вызовов подпрограмм и расположение описаний внутри модулей может сильно повлиять на локальность ссылок и управление страницами виртуальной памяти.

    Иерархия. Значительное упрощение в понимании сложных задач достигается за счет образования из абстракций иерархической структуры.

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

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

    В ООП используют два вида иерархии.

    Иерархия «целое-часть» показывает, что некоторые абстракции включены в некоторую абстракцию как ее части, например, строение цветка описывается следующими частями: цветоложе, пестик, тычинки, цветоножка, завязь, лепестки. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования (на логическом уровне — при декомпозиции предметной области на объекты, на физическом уровне — при декомпозиции системы на модули и при выделении отдельных процессов в мультипроцессорной системе).

    Иерархия «общее—частное» — показывает, что некоторая абстракция является частным случаем другой абстракции, например, ель — это разновидность хвойных деревьев, а деревья — это часть растительного мира планеты. Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним.
    1   2   3   4   5   6   7


    написать администратору сайта