Ввод-вывод с произвольным доступом 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввод-вывод с произвольным доступом



Под понятием произвольного доступа к файлу подразумевается ряд различных моментов:

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

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

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

Для позиционирования потока используются функции seekg() и seekp().

Разница между ними в том, что первая перемещает позицию чтения в потоке, а вторая устанавливает новую позицию в выходном потоке. Если используется поток типа fstream, и он открыт в режиме чтения-записи, то все равно, какую функцию применять для позиционирования.

Для определения текущей позиции tellg() и tellp(). Первая возвращает позицию чтения во входном потоке, а вторая – позицию в выходном потоке.

 

Контрольные вопросы:

1. Какие виды строк существуют в C++?

2. Как объявить C-строку?

3. Как осуществляется ввод-вывод строк?

4. Какие операции над строками вы знаете?

5. Перечислите операции над символами?

6. Перечислите стандартные потоки ввода-вывода?

7. Как создать файловый поток?


Лекция 28 Классы

Цели лекции: Изучение реализации классов на С++.

 

Объектно-ориентированный подход к программированию.

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

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

 

Класс

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

С точки зрения синтаксиса, класс в С++ - это структурированный тип, образованный на основе уже существующих типов. В этом смысле класс является расширением понятия структуры. В простейшем случае:

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

 

Определение класса

ключ_класса имя_класса                       // заголовок класса

{ список компонентов класса}; // тело класса

 

ключ_класса имя_класса -– одно из слов class, struct, union;

имя_класса идентификатор

 

Список компонентов (или членов класса - member) – это в простейшем случае определения и описания типизированных данных и принадлежащих классу функций.

Определения разнотипных данных в списке отделяется ‘;’, если данные однотипные, их идентификаторы можно перечислить через запятую, аналогично как в структурах.

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

Функции – члены класса (member functions), называют методами класса или компонентными функциями.

Данные класса (data members), называют компонентными данными или элементами данных класса.

Класс – это тип, который служит для определения переменных класса - объектов (экземпляров) класса.

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

Примеры.

struct date // дата

 

{ int month,day,year; // поля: месяц, день, год

void set(int,int,int); // метод – установить дату

void get(int*,int*,int*); // метод – получить дату

void next(); // метод – установить следующую дату

void print(); // метод – вывести дату

};

struct complex // комплексное число

 

{double re,im;

double real(){return(re);}

double imag(){return(im);}

void set(double x,double y){re = x; im = y;}

void print(){cout<<“re = “<<re; cout<<“im = “<<im;}

};

 

Для описания объекта класса (экземпляра класса) используется конструкция:

имя_класса имя_объекта;

date today,my_birthday; //объявление двух объектов

date *point = &today; // указатель на объект типа date

date clim[30]; // массив объектов

date &name = my_birthday; // ссылка на объект

 

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

 

Первый - с помощью “уточненных” имен:

имя_объекта. имя_данного;

имя_объекта. имя_функции(фактические параметры); Например:

complex x1,x2;

x1.re = 1.24;

x1.im = 2.3;

x2.set(5.1,1.7);

x1.print();

И с использованием указателя на объект

указатель_на_объект–>имя_компонентного данного

указатель_на_объект–> имя_функции(фактические параметры);

complex *point = &x1; // или point = new complex;

point –>re = 1.24;

point –>im = 2.3;

point –>print();

Второй способ с помощью “квалифицированных” имен:

 

<имя объекта>. <имя класса>:: <имя компонента>

<имя объекта>. <имя класса>:: <вызов компонентной функции >

указатель_на_объект–><имя класса>:: <имя компонента>

указатель_на_объект–><имя класса>:: <вызов функции >

 



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 137; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.240.21 (0.009 с.)