Сохранение данных в двоичных файлах

Автор работы: Пользователь скрыл имя, 11 Июня 2014 в 11:55, курсовая работа

Краткое описание

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

Содержание

1. Индивидуальное задание. 3
2. Теоритические сведения. 3
2.1 Объектно-ориентированное программирование. История и основные понятия. 3
2.2. Бинарный файл. 5
3. Пошаговый алгоритм. 6
3.Схема алгоритма. 7
4. Объектная декомпозиция. 7
5. Реализация. 9
6. Результат выполнения программы. 10
Литература. 10

Вложенные файлы: 1 файл

kursovaya_rabota_OOP.docx

— 101.67 Кб (Скачать файл)

Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Кафедра математической кибернетики и информационных технологий

 

 

 

 

Сохранение данных в двоичных файлах

Курсовая работа

По дисциплине «Объектно-ориентированное программирование»

 

 

 

 

 

 

Выполнил

Гомбоев Чингис Нимаевич

студент 4 курса

 группы ПО1001

 

Научный руководитель

к.т.н. доцент Жуков Герман Васильевич

 

Оценка____________________________

_____ апреля 2014 г.

______________________ Г.В.Жуков

 

Научный руководитель(подпись)

 

___________________________________

 

 

 

 

Москва 2014

Оглавление

 

 

 

1. Индивидуальное задание.

Дан файл f, компоненты которого являются целыми числами. Записать в файл g все четные числа исходного файла: в файл h - все нечетные. Порядок следования чисел сохраняется. Записать в файлы g и h комментарии.

2. Теоритические сведения.

2.1 Объектно-ориентированное программирование. История и основные понятия.

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

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

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

Первым языком программирования, в котором были предложены принципы объектной ориентированности, была Симула. В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Тем не менее, большинство концепций были развиты Аланом Кэем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированным языком программирования.

В настоящее время количество прикладных языков программирования (список языков), реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком программирования является Cи. При взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Например, одной из наиболее распространённых библиотек мультиплатформенного программирования является объектно-ориентированная библиотека Qt, написанная на языке C++.

Абстракция.

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

Инкапсуляция.

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

Наследование.

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

Полиморфизм.

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Класс.

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

Объект.

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

Прототип.

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

2.2. Бинарный файл.

Двоичный (бинарный) файл — файл, в котором данные представлены в такой же форме, в какой они хранятся во внутренней (основной, оперативной) памяти. А поскольку при хранении информации в ЭВМ используется двоичная система счисления, то «в честь ее» эти файлы и называются двоичными. Двоичные файлы обычно "противопоставляются" текстовым, в которых информация (текстовая информация) представлена в виде кодов текстовых символов определенной кодовой таблицы (ASCII, Unicode). К примеру, целое число в текстовом и двоичном файле будет представлено в разных формах. Десятичное число 123 в текстовом файле будет представлено побайтно (для ASCII, к примеру), посимвольно: 00110001b (31h), 00110010b (32h), 00110011b (33h), а в двоичном файле: если оно беззнаковое, однобайтное, для простоты, 01111011b. b указывает на двоичную систему счисления, h - на шестнадцатиричную. Символы цифр в таблице ASCII начинаются со смещения 30h. Таким образом, в текстовом файле n-значное десятичное число будет занимать n байт, а в двоичном - приблизительно, более, чем в два раза меньше. Казалось бы, двоичное представление лучше и экономичнее, но кодирование символьной текстовой информации осуществляется при помощи кодовых таблиц - на них построен принцип представления текстовой информации в ЭВМ. В широком смысле, на самом деле любой файл по своей природе является двоичным, т.к. на физическом уровне, как правило, во внешней памяти ЭВМ (НЖМД), он представляет собой массив байт.

3. Пошаговый алгоритм.

Для решения поставленной задачи необходимо составить пошаговый алгоритм.

Шаг 1. Открыть файл с набором чисел.

Шаг 2. Создать массив чисел заполненный данными из файла, массив для четных чисел и массив для нечетных чисел.

Шаг 3. Создать итератор i с начальным значением 0.

Шаг 4. Если i-ое число в исходном массиве четное, то записываем это число в конец массива четных чисел, иначе записываем в конец массива нечетных чисел.

Шаг 5. увеличиваем i на 1.

Шаг 6. Если i меньше длины исходного массива, то перейти на шаг 4.

Шаг 7. Закрыть файлы нечетных и четных чисел.

3.Схема алгоритма.

На рисунке 1 представлена схема алгоритма решения, поставленной задачи.

Рис.1. Схема алгоритма.

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

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

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

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

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

 

1.— Открыть файл.

2.— Найти четные нечетные числа.

3.— Записать числа в новые файлы.

5. Реализация.

Ниже представлен код программы на языке C++.

#include "FileManager.h"

#include <fstream>

#include <iostream>

#include <sstream>

#include <string>

#include <conio.h>

 

char* FileManager::readFromFile()

{

string fileName;

cout << "Enter FileName:";

cin >> fileName;

 

char* buffer = new char[256];

    ifstream infile(fileName);

 

infile.getline(buffer,256);

 

cout << buffer << endl;

_getch();

return buffer;

}

 

void FileManager::findAndSaveNumbers(char* str)

{

string line = str;

vector<int> oddData,evenData;  //odd четные, even - нечетные

stringstream lineStream(line);

int value;

while(lineStream >> value)

{

if(value & 1)

evenData.push_back(value);

else

oddData.push_back(value);

}

 

saveNumbers(evenData, "g.txt", "Even Numbers");

saveNumbers(oddData, "h.txt", "Odd numbers");

 

}

 

void FileManager::saveNumbers(vector<int> data, string fileName, string comment)

{

ofstream outputFile;

outputFile.open(fileName);

if (outputFile.is_open())

{

outputFile << comment << endl;

cout << comment << endl;

 

for (int i = 0; i < (int)data.size(); ++i)

{

outputFile << data[i] << " ";

cout << data[i] << " ";

}

outputFile.close();

cout << endl << endl;

}

else

cout << "can't open file";

   }

}

 

//main.cpp

using namespace std;

int main(int argc, const char * argv[])

{

 

FileManager fileManager = FileManager();

char* str = fileManager.readFromFile();

 

fileManager.findAndSaveNumbers(str);

_getch();

    return 0;

}

 

 

 

6. Результат выполнения программы.

Результат выполнения программы приведен на рисунке 3.

Рис. 3. Результат программы.

Литература.

1. ГОСТ 2.105-95 Единая система конструкторской  документации. Общие требования  к текстовым документам

2. ГОСТ 2.106-95 Единая система конструкторской  документации. Текстовые документы

3. Ашарина И.В. Объектно-ориентированное  программирование в С++. Лекции и упражнения. Москва: Горячая Линия – Телеком. 2008 – 320 с. ISBN: 978-5-9912-0038-7.

4. Павловская Т.А. С/С++. Программирование  на языке высокого уровня. Санкт-Петербург: Питер. 2003 – 461 с. ISBN: 5-94723-568-4.

5. Иванова Г.С., Ничушкина  Т.Н., Пугачев Е.К. Объектно-ориентированное  программирование: Учебник для вузов. Москва: МГТУ имени Н.Э. Баумана. 2001 – 320 с. ISBN 5-7038-1525-8.

6.

 

 


Информация о работе Сохранение данных в двоичных файлах