Разработка объектно-ориентированного приложения с использованием класса Directory

Описание:
Доступные действия
Введите защитный код для скачивания файла и нажмите "Скачать файл"
Защитный код
Введите защитный код

Нажмите на изображение для генерации защитного кода

Текст:

МИНОБРНАУКИ РОССИИ

Филиал ФГБОУ ВО

«Московский государственный университет

информационных технологий, радиотехники и электроники»

в г. Ставрополе

(филиал МИРЭА в г. Ставрополе)

КАФЕДРА «АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ»

КУРСОВАЯ РАБОТА

Тема: «Разработка объектно-ориентированного приложения с
использованием класса
Directory»

по дисциплине: «Программирование»

Выполнил студент группы ИВТ-141  25.05.2015г.  Новосельцев Д.Е. _______

         дата                    ф.и.о.                      подпись

Проверил 26.05.2015г.   Воротникова Т.С.  ___________

                            дата                      ф.и.о.                               подпись

Оценка __________________________

Ставрополь, 2015


ЗАДАНИЕ ПО КУРСОВОМУ ПРОЕКТУ

МИНОБРНАУКИ РОССИИ

Филиал ФГБОУ ВО

«Московский государственный университет

информационных технологий, радиотехники и электроники»

в г. Ставрополе

(филиал МИРЭА в г. Ставрополе)

КАФЕДРА «автоматизированные системы управления»

Специальность 09.03.01 «Информатика и вычислительная техника»

ГРУППА ИВТ-141

ЗАДАНИЕ

ПО КУРСОВОМУ ПРОЕКТУ

СТУДЕНТ: Новосельцев Дмитрий Евгеньевич

1. Тема проекта: Разработка объектно-ориентированного приложения с использованием класса Directory

2. Срок сдачи студентом законченного проекта: 26 мая 2015 года

3. Исходные данные по проекту:

Информационная запись о файле в каталоге содержит поля: имя файла, расширение, дата и время создания, атрибуты «только чтение», «скрытый», «системный», размер файла на диске. Для моделирования каталога реализовать класс Directory, содержащий название родительского каталога, количество файлов в каталоге, список файлов в каталоге. Один элемент списка включает в себя информационную запись о файле, дату последнего изменения, признак выделения и признак удаления. Реализовать методы добавления файлов в каталог и удаления файлов из него; метод поиска файла по имени, по расширению, по дате создания; метод вычисления полного объема каталога. Реализовать операцию объединения и операцию пересечения каталогов (см. задание 1). Реализовать операцию генерации конкретного объекта Group (группа), содержащего список файлов, из объекта типа Directory. Должна быть возможность выбирать группу файлов по признаку удаления, по атрибутам, по дате создания.

4. Содержание разделов курсового проекта (наименование разделов)

ВВЕДЕНИЕ…………………………………………………………………………………………..4

ТЕОРИЯ…………………………………………………………………………………....…………5

ПРОЕКТИРОВАНИЕ……………………………………………………………………………....14

ЗАКЛЮЧЕНИЕ……………………………………………………………………………………..21

СПИСОК ЛИТЕРАТУРЫ………………………………………………………………….....……22

7. Дата выдачи задания: 13 февраля 2015 года

            Руководитель курсового проекта _______________(______________________)

                                                                                
                             (подпись, фамилия и инициалы)                                                                       
                                                           

            Студент_________________(_______________________)

                                                                  (подпись, фамилия и инициалы)


СОДЕРЖАНИЕ

ВВЕДЕНИЕ. 4

1 Объектно-ориентированное программирование. 5

1.1 Понятие и свойства ООП.. 5

1.2 Описание класса. 7

1.3 Конструкторы и деструкторы.. 9

1.4 Функции. 11

1.5 Дружественные функции класса. 12

2 Проектирование приложения, содержащего класс Directory   14

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

2.2 Реализация класса Directory. 15

2.3 Реализация методов класса Directory. 17

заключение. 21

Список используемой литературы.. 22


ВВЕДЕНИЕ

В данной курсовой работе основной целью является изучение и реализация классов на языке программирования C++. В процессе реализации изучить материал Win-Api для работы с файлами и каталогами. Понять принципы работы библиотек необходимых для выполнения задания.

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

Для комфортной работы пользователя с программой, осуществить дружественный и легкий в освоении интерфейс.


1 Объектно-ориентированное программирование

1.1 Понятие и свойства ООП

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

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

-     определение классов;

-     создание свойств, методов, а также методов доступа get и set;

-     управление доступом к классам, свойствам, методам и методам доступа;

-     создание статических свойств и методов;

-     создание структур с перечислением;

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

-     работа с наследованием, включая переопределение элементов класса.

Понятия и термины: Атрибут - это характеристика, назначенная элементу класса (например, свойству или методу) в определении класса. Атрибуты часто используются для определения того, будет ли свойство (или метод) доступно для кода в других частях программы. Например, private (закрытый) и public (открытый) — это атрибуты. Закрытый метод может вызываться только кодом внутри класса, а открытый метод может вызываться любым кодом в программе.

-     Класс — это определение структуры и поведения объектов определенного типа (как шаблон или схема объектов для этого типа данных).

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

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

-     Тип данных — это тип информации, который может хранить та или иная переменная. Как правило, термин тип данных имеет то же значение, что и класс.

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

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

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

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

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

1.2 Описание класса

Когда мы говорим об объектах, мы говорим, что они являются экземплярами классов. Что это означает? Рассмотрим следующую аналогию. Практически все компьютерные языки имеют стандартные типы данных; например, в C++ есть целый тип int. Мы можем определять переменные таких типов в  наших программах:

int kol_file;

int razmer;

int put_num;

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

Таким образом, класс является описанием совокупности сходных между собой объектов. Это соответствует нестрогому в техническом смысле пониманию термина «класс»: например, Prince, Sting и Madonna относятся к классу рок-музыкантов. Не существует конкретного человека с

именем «рок-музыкант», однако люди со своими уникальными именами являются объектами этого класса, если они обладают определённым набором характеристик. Объект класса часто также называют экземплярами класса.

Классы могут быть глобальными, то есть объявленными вне любого блока, либо локальными, объявленными внутри блока.

Некоторые особенности локального класса:

-     внутри локального класса можно использовать типы, статические и локальные переменные, внешние функции и элементы перечислений из области, в которой он описан, запрещается использовать автоматические переменные из этой области;

-     локальный класс не может иметь статических элементов;

-     методы этого класса могут быть описаны только внутри класса;

-     если один класс вложен в другой, они не имеют каких-либо особых прав доступа к элементам друг друга и могут обращаться к ним только по общим правилам.

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

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

Все методы и свойства класса, объявление после спецификатора доступа private (закрытый, внутренний член класса) будут доступны только внутри класса, то есть функциям-членам данного класса и друзьям класса, как функциям, так и классам. Этот вид доступа принят в классе по умолчанию.

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

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

Поля класса:

-     могут иметь любой тип, кроме типа этого же класса;

-     могут быть описаны с модификатором const, при этом они инициализируются только один раз и не могут изменяться;

-     могут быть описаны с модификатором static.

1.3 Конструкторы и деструкторы

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

-     конструктор не возвращает значений, даже типа void, нельзя получить указатель на конструктор;

-     класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации;

-     конструктор, вызываемый без параметров, называется конструктором по умолчанию;

-     конструкторы не наследуются;

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

-      содержать только один из конструкторов;

-     если не указано ни одного конструктора, компилятор создаст его автоматически;

-     конструкторы нельзя описывать с модификаторами const, virtual, static;

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

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

-     для локальных объектов – при выходе из блока, в котором они объявлены;

-     для глобальных – как часть процедуры выхода из main;

-     для объектов, заданных через указатели, деструктор вызывается неявно при использовании операции delete;

При выходе из области действия указателя на объект автоматический вызов деструктора объекта не производится. Имя деструктора начинается с тильды (~), непосредственно за которой следует имя класса.

Деструктор:

-     не имеет аргументов и возвращаемого значения;

-     не может быть объявлен как const или static;

-     не наследуется;

-     может быть виртуальным.

Если деструктор явным образом не определен, компилятор автоматически создает пустой деструктор.

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

1.4 Функции

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

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

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

Рассмотрим составные части определения:

[класс] тип имя ([список_параметров])[throw (исключения)]

{ тело функции }

-     с помощью необязательного модификатора класс можно явно задать область видимости функции, используя ключевые слова extern (глобальная видимость во всех модулях программы) и static (видимость только в пределах модуля, в котором определена функция);

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

-     список параметром определяет величины, которые требуется передать в функцию при ее вызове. Элементы списка параметров разделяются запятыми. Для каждого параметра, передаваемого в функцию, указывается его тип и имя;

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

1.5 Дружественные функции класса

Как было отмечено ранее, механизм управления доступом позволяет выделить внутренние private, защищенные protected и общедоступные public компоненты классов. Причем внутренние компоненты локализованы в классе и не доступны извне, а защищенные – доступны только компонентным функциям класса и его наследникам. Такое ограничение доступа к внутренним и защищенным компонентам класса может оказаться неоправданно строгим. Оно может существенно сужать возможности наследования других классов от данного и сокращать количество вариантов его использования. Кроме того, бывают случаи, когда функции, не являющиеся компонентными, должны иметь возможность обращаться к внутренним компонентам класса. В такой ситуации класс может предоставить особые привилегии определенным внешним функциям или компонентным функциям другого класса. Эти функции получили название дружественных.

По определению, дружественной функцией класса называется функция, которая, не являясь компонентом некоторого класса, имеет доступ ко всем его компонентам, в том числе внутренним. Функция не может стать другом класса «без его согласия». Для получения «прав друга» функция должна быть описана в теле класса со спецификатором friend. Именно при наличии такого описания класс предоставляет функции права доступа к защищенным и внутренним компонентам.

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

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

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


2 Проектирование приложения, содержащего класс Directory

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

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

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

-     имя файла.

-     Расширение.

-     дата и время создания.

-     атрибут «только чтение».

-     атрибут «скрытый».

-     атрибут «системный».

-     размер файла на диске.

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

-     по имени.

-     по расширению.

-     по дате создания.

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

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

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

Программа должна демонстрировать использование всех функций и методов.

Программа должна загружать массивы из файла, сохранять изменения в файлах.

2.2 Реализация класса Directory

Для начала необходимо создать класс Directory, в состав которого войдут переменные содержащий название родительского каталога, количество файлов в каталоге, список файлов в каталоге, путь к каталогу и объём каталога в байтах. Для этого были созданы переменные string name_kot; int kol_file = 0; long int size_katalog = 0; string put_katalog; которые были добавлены в спецификаторе public: для дальнейшего использования вне класса, а именно в главной программе.

В качестве информационной записи выступает структура data_file, вследствие чего был выведен массив структур KATALOG[50] для заполнения данными пятьюдесятью файлами каталога. Листинг объявления структуры data_file и класса Directory приведён ниже.


struct data_file

{

     string name; string tip; string data_sozd[6]; string data_izm;

     bool atr_read; bool atr_skr; bool atr_sys; bool vibor; bool ydalenie;

     long int razmer;

};

class Directory {

private: data_file KATALOG[50];

public:

     string name_kot; int kol_file = 0; long int size_katalog = 0; string put_katalog;

     bool zapoln(string put);

     void vivod();

     void dobavlenie();

     string ydalenie();

     void poisk();

     void peresechenie(Directory peresech);

     void obedinenie(Directory obedin);

     void grupirirovYdal(Directory &group);

     void vivodGroup();

     void grupirirovAtre(Directory &group);

     void grupirirovData(Directory &group);

};

Так как структура data_file KATALOG[50]; находится в приватном доступе класса Directory, то для обращения к этой структуре необходим конструктор или метод, для присвоения первоначальных значений переменным структуры KATALOG. В связи с тем, что пользователь при запуске программы указывает количество каталогов с которыми он будет работать конструктор в качестве заполнения данными не является обходимым. Листинг создания в главной программе объекта класса Directory представлен ниже:

cout << "Введите колличество каталогов: ";

cin >> kol_katal;

Directory *katalog = new Directory[kol_katal];

Directory group[3];


Так как в задании указано реализовать конкретный объект Group (группа), содержащий список файлов, из объекта типа Directory. С помощью которого должна быть возможность выбирать группу файлов по признаку удаления, по атрибутам, по дате создания. То создаётся массив из трёх элементов класса Directory, для хранения файлов по признаку удаления, по атрибутам, по дате создания.

Программный код разбит на 3 файла состоящие из “KR.cpp” – главная программа, “clas.cpp” – объявление класса, “clas2.cpp” – реализация методов класса.

Связь файлов между собой в проекте показана на рис.1


Рисунок 1 – связь файлов проекта

2.3 Реализация методов класса Directory

Реализация методов класса определена в файле “clas2.cpp”. К нему подключается файл, содержащий сам класс “clas.cpp”,в котором описываются методы и функции класса Directory. Рассмотрим некоторые из них:

void Directory::vivod(){

     system("cls");

     cout << "Операция вывода каталога: " << name_kot << endl;

     cout << "_____________________________________________________________";

     for (int i = 0; i < kol_file; i++){

         cout << "Имя файла: " << " " << " " << "| " << KATALOG[i].name << endl;

cout << "Расширение: " << " " << " " << "| " << KATALOG[i].tip << endl;

cout << "Дата и время создания: " << " " << "| " << KATALOG[i].data_sozd[0] << "." << KATALOG[i].data_sozd[1] << "." << KATALOG[i].data_sozd[2] << " " << KATALOG[i].data_sozd[3] << ":" <<

KATALOG[i].data_sozd[4] << ":" << KATALOG[i].data_sozd[5] << endl;

         cout << "Дата и время изменения: " << "| " << KATALOG[i].data_izm << endl;

         cout << "Атрибут «только чтение»:" << "| " << KATALOG[i].atr_read << endl;

         cout << "Атрибут «скрытый»: " << " " << "| " << KATALOG[i].atr_skr << endl;

         cout << "Атрибут «системный»: " << " " << "| " << KATALOG[i].atr_sys << endl;

         cout << "Размер файла: " << " " << " " << "| " << KATALOG[i].razmer << endl;

         cout << "____________________________________________________________";

     }

     cout << "Колличество файлов: " << kol_file << " | Общий размер каталога: " << size_katalog << " байт" << endl;

     cout << "____________________________________________________________";

     system("pause");

}

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

void Directory::peresechenie(Directory peresech){

     USES_CONVERSION;

     int kol_f;

     string Put, BUFF, Put2;

     Put2 = peresech.put_katalog + "Пересечение с " + name_kot;

     LPCWSTR a1 = A2W((Put2 + "*.*").c_str());

     WIN32_FIND_DATA FindFileData1;

     HANDLE hf1;

     hf1 = FindFirstFile(a1, &FindFileData1);

     if (hf1 != INVALID_HANDLE_VALUE){

         do{

              if ((FindFileData1.cFileName[0]) != "."){

                   BUFF = W2A(FindFileData1.cFileName);

     remove((Put2 + "" + BUFF).c_str());

}

} while (FindNextFile(hf1, &FindFileData1) != 0);

FindClose(hf1);

}

CreateDirectory(A2W(Put2.c_str()), NULL);

Put = put_katalog + "Пересечение с " + peresech.name_kot;

LPCWSTR a = A2W((Put + "*.*").c_str());

WIN32_FIND_DATA FindFileData;

HANDLE hf;

hf = FindFirstFile(a, &FindFileData);

if (hf != INVALID_HANDLE_VALUE){

     do{

         if ((FindFileData.cFileName[0]) != "."){

              BUFF = W2A(FindFileData.cFileName);

              remove((Put + "" + BUFF).c_str());

         }

     } while (FindNextFile(hf, &FindFileData) != 0);

     FindClose(hf);

}

CreateDirectory(A2W(Put.c_str()), NULL);

kol_f = 0;

for (int i = 0; i < kol_file; i++){

     for (int j = 0; j < peresech.kol_file; j++){

         if ((KATALOG[i].name == peresech.KATALOG[j].name) && (KATALOG[i].tip == peresech.KATALOG[j].tip)){

                   CopyFile(A2W((put_katalog + "" + KATALOG[i].name + "." + KATALOG[i].tip).c_str()), A2W((Put + "" + KATALOG[i].name + "." + KATALOG[i].tip).c_str()), true);

                   CopyFile(A2W((put_katalog + "" + KATALOG[i].name + "." + KATALOG[i].tip).c_str()), A2W((Put2 + "" + KATALOG[i].name + "." + KATALOG[i].tip).c_str()), true);

cout << "Имя файла: " << " " << " " << "| " << KATALOG[i].name << endl;

cout << "Расширение: " << " " << " " << "| " << KATALOG[i].tip << endl;

cout << "Дата и время создания: " << " " << "| " << KATALOG[i].data_sozd[0] << "." << KATALOG[i].data_sozd[1] << "." << KATALOG[i].data_sozd[2] << " " << KATALOG[i].data_sozd[3] << ":" << KATALOG[i].data_sozd[4] << ":" << KATALOG[i].data_sozd[5] << endl;

cout << "Дата и время изменения: " << "| " << KATALOG[i].data_izm << endl;

cout << "Атрибут «только чтение»:" << "| " << KATALOG[i].atr_read << endl;

cout << "Атрибут «скрытый»: " << " " << "| " << KATALOG[i].atr_skr << endl;

cout << "Атрибут «системный»: " << " " << "| " << KATALOG[i].atr_sys << endl;

cout << "Размер файла: " << " " << " " << "| " << KATALOG[i].razmer << endl;

cout << "____________________________________________________";

kol_f++;

}

}

}

cout << "Колличество файлов: " << kol_f << endl;

cout << "____________________________________________________________";

system("pause");

}

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


заключение

В процессе реализации были выполнены следующие задачи:

-     изучен процесс реализации классов на языке программирования C++. В

-     изучен материал Win-Api для работы с файлами и каталогами.

-     Усвоен принципы работы библиотек необходимых для выполнения задания.

-     Осуществлён комфортный и легкий в освоении интерфейс.

Таким образом все поставленные задачи были выполнены, а цель достигнута


Список используемой литературы

1.  Основы объектно-ориентированного программирования [Электронный ресурс]. – Режим доступа: http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f35.html. – Заглавие с экрана. – (Дата обращения: 22.05.2015г.).

2.  Объектно-ориентированное программирование – Википедия [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование#. – (Дата обращения: 22.05.2015г.).

3.  Павловская, Т.А. С/C++ Программирование на языке высокого уровня / Т.А. Павловская. – СПб.: Питер, 2003. – 461с.: ил.

4.  Лафоре, Р. Объектно-ориентированное программирование в С++ / О. Лафоре. – 4-е изд. – СПб.: Питер, 2004. – 923с.

Информация о файле
Название файла Разработка объектно-ориентированного приложения с использованием класса Directory от пользователя Гость
Дата добавления 5.5.2020, 18:07
Дата обновления 5.5.2020, 18:07
Тип файла Тип файла (zip - application/zip)
Скриншот Не доступно
Статистика
Размер файла 274.17 килобайт (Примерное время скачивания)
Просмотров 365
Скачиваний 127
Оценить файл