Читайте также:
|
|
На рис. 5 изображена схема конвективной сушилки, состоящей из устройства для транспортирования материала (ленточный конвейер, вагонетки и т. д.), вентилятора и калориферов.
Обозначим массовый расход влажного материала, поступающего на сушку, GH (кг/ч), массовый расход высушенного материала GK (кг/ч), начальную и конечную влажность материала (мас. %) соответственно через W1 и W2, а количество влаги, удаляемой при сушке, через W (кг/ч).
Тогда материальный баланс процесса можно представить равенством
(4)
для количества сухого вещества
(5)
или
(6)
Сопоставление равенства (4) и (5) дает
(7)
Обозначим количество абсолютно сухого воздуха или газа, поступающего на сушку, L (кг/ч), а влагосодержание (кг влаги на 1 кг абсолютно сухого воздуха) до поступления в сушилку через х1 и на выходе из сушилки х2.
Рис. 5. Схема конвективной сушилки:
1 — корпус сушилки; 2 — материал; 3 — ленточный транспортер; 4 — дополнительный калорифер; 5 — основной калорифер; 6 — вентилятор.
Материальный баланс влаги
(8)
откуда расход сухого воздуха
(9)
Удельный расход воздуха (расход на 1 кг испаряемой при сушке влаги)
(10)
Тепловой баланс конвективной сушки составим по тому же рис. 5. На сушку поступает влажный материал в количестве Gc + W (кг/ч), который расположен на конвейере массой G т (кг/ч). В сушилку подается L (кг/ч) абсолютно сухого воздуха. При подогреве воздуха в калорифере к нему подводится Q к (кДж/ч) теплоты, а в сушильной камере дополнительно может быть подведено Q д (кДж/ч) теплоты.
Обозначим:
Gc — количество высушенного материала, кг/ч;
сс —удельная теплоемкость высушенной части материала, кДжДкг · К);
ст — удельная теплоемкость транспортирующих устройств, кДж/(кг · К);
tн — температура до сушки, ºС;
св — теплоемкость воды, кДжДкг · К);
tk — температура материала после сушки, °С;
tт.н, tт.к — температура транспортирующих устройств на входе в сушильную камеру и на выходе из нее, °С;
i 0— удельная энтальпия воздуха на входе в сушильную камеру, кДж/кг;
i 1 — удельная энтальпия воздуха после нагревания в калорифере, кДж/кг;
i 2 — удельная энтальпия на выходе из сушилки, кДж/кг;
Q n — потери теплоты в окружающее пространство, кДж/ч.
Тепловой баланс процесса можно представить уравнением
(11)
Из этого равенства можно определить расход теплоты на сушку
(12)
Оглавление
ООП: Виртуальные функции................................................................................................................................................................. 1
Контрольные вопросы.................................................................................................................................................................................. 3
Лекция № 30
Виртуальные функции
В программе концепция полиморфизма реализуется при помощи виртуальных методов. Виртуальный метод объявляется в базовом объектном типе и в порожденных от базового типах. После его объявления должно быть помещено зарезервированное слово virtual.
Виртуальный метод (виртуальная функция) — это метод (или функция) объекта, который может быть переопределён в объектах-наследниках так, что конкретная реализация метода для вызова будет определяться только во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит родителю или наследнику, в котором метод объявлен.
Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа.
Рассмотрим пример 5, указанный ниже. Объектовые типы Tp и Tc содержат поля и методы для рисования, стирания и передвижения точек и окружностей на экране дисплея. Эти два объектовых типа связаны отношениями наследования и содержат одноимённые методы Show (нарисовать), Hide (удалить с экрана) и Moveto (передвинуть). Для различных геометрических фигур алгоритмы методов Show и Hide существенно отличаются. Алгоритм метода Moveto для обеих фигур одинаков (удалить фигуру со старого места, изменить координаты размещения фигуры и нарисовать ту же фигуру на новом месте).Естественным является желание определить метод Moveto для объектового типа Tp и наследовать этот метод без переопределения во всех типах объектов-потомков. Поясним невозможность такого подхода в данной проблеме без дополнительных затрат.Допустим, что метод Moveto определён только в объектовом типе Tp. Если имеются экземпляры двух объектов: var P: Tp; C: Tc;, то вызов метода P.Moveto начнёт своё выполнение с метода Tp.Hide. Последующие действия метода Moveto приведут к ожидаемому результату. Теперь рассмотрим вызов C.Moveto. Экземпляр типа-потомка вызывает унаследованный метод Moveto, который жёстко связан с методами Tp.Show и Tp.Hide. Методы Show, Hide, Moveto были откомпилированы в одном контексте – в одном объектовом типе Tp. Поэтому метод Moveto всегда будет вызывать методы Tp.Show и Tp.Hide. Связь этих методов является статической, так как она была определена при компиляции. Методы С.Show и С.Hide вызваны не будут. Вызов С.Moveto приведёт к перемещению точки.Если мы хотим иметь один метод Moveto для различных объектов, необходимо разорвать статическую связь этого метода с методами Show иHide и обеспечить возможность для метода Moveto вызывать либо методы Tp.Show и Tp.Hide, либо Tс. Show и Tс. Hide в зависимости от того, какой объект вызывает метод Moveto. Такой механизм называют динамическим или поздним связыванием в отличие от статического или раннего связывания. Он достигается введением виртуальных методов.Для определения метода как виртуального после заголовка метода в объектовом типе указывается служебное слово VIRTUAL. При виртуализации методов должны выполняться следующие условия:1) если прародительский объектовый тип описывает метод как виртуальный, производные типы метод с тем же именем также должны описывать как виртуальный;2) заголовок в заново определённом виртуальном методе не может быть изменён;3) если объектовый тип содержит виртуальный метод, он должен содержать хотя бы один метод-конструктор;4) метод-конструктор должен быть применён к экземпляру объекта до первого вызова виртуального метода;5) каждый экземпляр объекта должен быть инициализирован отдельным вызовом конструктора;6) сам конструктор не может быть виртуальным. Пример 5. Текст программы, использующий виртуальные методы, может быть следующим:Uses Crt, Graph;Var gd,gm: integer;Type Tp = Object X,y,c: integer;Constructor Init (ax,ay,ac: integer);
Procedure Show; Virtual;
Procedure Hide; Virtual;
Procedure Moveto (dx,dy: integer);
End;Constructor Tp. Init;
Begin X:=ax; y:=ay; c:=ac End;Procedure Tp. Show;
Begin Putpixel(x,y,c); End;Procedure Tp. Hide;
Begin Putpixel(x,y,Getbkcolor) End;Procedure Tp. Moveto;
BeginDelay(1000); Hide;
X:=x+dx; y:=y+dy; Show End; Type Tc = Object (Tp) R: integer;Constructor Init (ax,ay,ac,ar: integer);
Procedure Show; Virtual;
Procedure Hide; Virtual;
End;Constructor Tc. Init;
Begin Inherited(ax,ay,ac); R:=ar End;Procedure Tc. Show;
Begin Setcolor(c); Circle(x,y,r) End;Procedure Tc. Hide;
Begin Setcolor(Getbkcolor); Circle(x,y,r) End;Var P: Tp; C: Tc;BeginGd:=Detect;Initgraph(Gd,Dm,’d:\bp\bgi’);P. Init (100,120,yellow);
P. Show; P. Moveto (50,50);
Readln;C.Init (200,300,Green,150);
C. Show; C.Moveto (10,10);
Readln;ClosegraphEnd. Пример 6. Пример использования виртуальных методов при работе с вектором и матрицей (предусмотрим ввод значений элементов рассматриваемой структуры данных, нахождение в структуре элемента с минимальным значением и вывод результата).const nmax=10;type tvect = array[1..nmax] of real;tmatr = array[1..nmax,1..nmax] of real; vect = object n:integer;{фактический размер вектора, количество строк матрицы } min: real; a: tvect; constructor init; procedure inpt; virtual; {ввод} procedure obr; virtual; {нахождение минимального элемента} procedure out; {вывод} procedure work;{полная обработка структуры данных} end;constructor vect. init; begin end;procedure vect. inpt;var i: integer;begin writeln('n=?'); readln(n); for i:=1 to n do begin write('a[i]-?'); readln(a[i]) end;end;procedure vect. obr;var i: integer;begin min:=a[1]; for i:=2 to n do if a[i]<min then min:=a[i]end;procedure vect. out;begin writeln('min=',min:7:3) end;procedure vect. work;begin inpt; obr; out end; type matr =object(vect) m: integer; {количество столбцов матрицы} b: tmatr; procedure inpt; virtual;{ввод} procedure obr; virtual;{нахождение мин. элемента} end;procedure matr. inpt;var i,j: integer;begin writeln('n,m=?'); readln(n,m); for i:=1 to n do for j:=1 to m do begin writeln('b[i,j]=?'); readln(b[i,j]) end;end;procedure matr. obr;var i,j: integer;begin min:=b[1,1]; for i:=1 to n do for j:=1 to m do if b[i,j]<min then min:=b[i,j]end; var ObjVect: vect; ObjMatr: matr;begin ObjVect. init; ObjVect. work; ObjMatr. init; ObjMatr. work;readln end.Контрольные вопросы
1. Дайте определение понятию «виртуальная функция».
Дата добавления: 2014-12-18; просмотров: 35 | Поможем написать вашу работу | Нарушение авторских прав |
<== предыдущая лекция | | | следующая лекция ==> |
ВОПРОС № 5. МАТЕРИАЛЬНЫЙ И ТЕПЛОВОЙ БАЛАНСЫ СУШИЛКИ. | | | Одиночные и двойные формирующие линии (ОФЛ и ДФЛ): геометрия, электротехнические параметры, диэлектрики для заполнения. |