Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Виртуальные функции

Читайте также:
  1. Cудeбныe функции князя и вeчe
  2. I. Правосознание: понятие, структура, функции и виды.
  3. I. Сущность, формы, функции исторического знания.
  4. II. Правовая культура: понятие, функции и виды.
  5. II. Функции Аппарата Правительства
  6. II. Функции школьной одежды
  7. II.2.2. Функции
  8. Int nod (int, int); - прототип нашей функции.
  9. Internet, его функции. Web-броузеры. Поиск информации в Internet.
  10. IV. Правотворчество: понятие, функции, виды. Стадии законотворческого процесса.

На рис. 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, либо . Show и . 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;

Begin

Delay(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. МАТЕРИАЛЬНЫЙ И ТЕПЛОВОЙ БАЛАНСЫ СУШИЛКИ.| Одиночные и двойные формирующие линии (ОФЛ и ДФЛ): геометрия, электротехнические параметры, диэлектрики для заполнения.

lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав