ПОТОЦИ2
| Информационни технологии | 2009-12-04 | 110 сваляния |
9. ПОТОЦИ
Въведение
В програмирането много важно място заемат операциите, свързани с обмен на данни. Към тази група принадлежат входно-изходните операции, файловите операции, прехвърляне на данни между различни области от паметта и др. Практически няма програма, в която да не се налага използуване на такива операции.
В езика С операциите, свързани с обмен на данни, не са част от ядрото на езика, а се реализират чрез множество библиотечни функции (printf, scanf, gets, getchar, fprintf, putchar и много други). Този подход е крачка напред в сравнение с използуването на специализирани оператори (както e в някои по-стари езици), тъй като дава възможност на програмиста да създава нови функции, съобразно конкретните нужди и по този начин да разширява възможностите на езика.
В езика C++ възможността за използуване на споменатите функции е запазена, но успоредно с това операциите за обмен на данни имат и обектно-ориентирана реализация, базирана върху един обобщен модел на тези операции, който схематично е представен на фиг. 9.1.

Потоците (streams) са обекти, които поддържат обмена на данни между източниците и приемниците. Всеки поток има своя вътрешна структура и реализира специфични действия в зависимост от особеностите на конкретните източници и приемници на данни. Обектно-ориентираната технология позволява тези специфични особености на различните потоци да бъдат скрити за крайния потребител. В резултат на това, използувайки потоците, програмистът работи с обобщени оператори, без да се интересува от детайлите, свързани с тяхното действие. Ще поясним това с един пример: Нека stream е изходен поток (поток, който е свързан с определен приемник на данни), а х и у са променливи на някои от основните типове (int, float, double и пр.). Тогава, чрез конструкцията stream<<х<<у;, променливите х и у ще бъдат "вмъкнати" в потока stream. Това ще доведе до прехвърляне на техните стойности в приемника на данни, с който е свързан потокът. Този приемник може да бъде екранът (с екрана е свързан потокът cout), определен файл, буфер в паметта и др. Потокът stream автоматично разпознава типовете на данните и реализира всички необходими действия, чрез които се осъществява прехвърлянето на данните в приемника. Операторът << може да бъде предефиниран така, че да се прилага не само върху основните типове, но и върху типове (класове), дефинирани от потребителя. Същото се отнася и за оператора >>, чрез който се реализират входни операции.
В тази глава ще бъдат разгледани основните характеристики на потоците в C++ и чрез няколко примера ще бъде, илюстрирано тяхното използуване. Основа на изложението в главата е библиотеката от класове iostream на BORLAND C++, чрез която се реализират потоците.
9.1. ОРГАНИЗАЦИЯ НА БИБЛИОТЕКАТА IOSTREAM.
Класовете, формиращи библиотеката iostream са подредени в йерархия, състояща се от два паралелни клона. В първия клон са класовете, които са производни на класа streambuf, a във втория клон са класовете, които са производни на класа ios.
Класът streambuf притежава методи за буфeриране и обработка на неформатирани данни. Този клас е базов за два други класа с имена filebuf и strstreambuf (фиг.9.2), които наследяват методите на streambuf и се използуват
Тагове от реферата: програмиранет, потоц, операиит, свързни, много











