Конспект лекций по дисциплине «Высокоуровневые методы информатики и программирования» для студентов специальности 080801 «Прикладная информатика в экономике»



Содержание1.Теоретические основы объектно-ориентированного программирования 1.1. От процедурного программирования к объектному
Структурное программирование
Метод пошаговой детализации
Пример 1.1. Процедурная декомпозия (программа
1.2. Основные принципы и этапы объектно-ориентированного программирования
Ограничение доступа
Иерархия «целое/часть»
Иерархия «общее/частное»
Объектно-ориентированные языки программирования.
Таблица 1.1. Сравнительные характеристики моделей ООП в некоторых средах программирования
Ограничение доступа
Этапы разработки программных систем с использованием ООП.
1.3.Объектная декомпозиция
Пример 1.2.
Колонка 1 - Колонка 3
Пример 1.3. Декомпозиция объекта (Блок колонок)
Пример 1.4. Простейший графический редактор
Пример 1.5. Объектная декомпозия (программа «Записная книжка»)
1.4.Объекты и сообщения
Класс Окно
Ограничение доступа.
Конец описания.
Класс Файл
1.6.Основные средства разработки классов
Пример 1.8.
Класс Окно_меняющее_цвет – родитель: класс Окно
Простой полиморфизм.
Пример 1.9.
Класс Окно_с_текстом – родитель: класс Окно
Сложный полиморфизм или создание полиморфных объектов.
Пример 1.10. Сложный полиморфизм
Класс Сообщение
Пример 1.12. Наполнение (класс Функция)
Класс Триада
Класс Функция
1.7. Дополнительные средства и приемы разработки классов
Делегирование методов.
Пример 1.13. Делегирование методов (класс Фигура)
Класс Фигура1
Конец описания.
Класс Фигура2
Класс Методы_рисования
Контейнерные классы.
Пример 1.14.
Класс Элемент
Класс Список
Пример 1.15.
Класс Список
Конец описания.
Параметризованные классы.
Пример 1.16.
Шаблон классов Список(Тип_элемента)
Список (Запись1)
2.Средства объектно-ориентированного программирования в языке Borland Pascal 7.0
2.1.Определение классов
Type = object
Begin End
Пример 2.17. Описание класса (класс Окно)
Program WinOb
Writeln(Cf,' - ',GetSizeX,' - ',GetSizeY )
Writeln(Winvar.Cf,' - ', Winvar.GetSizeX,' - ',Winvar.GetSizeY )
Type Rec = Record
В результате использования механизма наследования отпадает необходимость заново описывать уже существующие в классе-родителе пол
Field identifier expected
Type =Object(
Program SymbOb
Cf,Cs, {цвет фона и символов} Col,Line:byte
Procedure MakeWin
Пример 2.19. Использование наследования (классы Окно и Символ)
Type Symb = Object(Win)
Procedure Print
Присваивание объектов
Var Winvar : Win
Var Winvar : ^Win
Winvar := Symbvar
Простой полиморфизм
Type Lot = Object(Symb)
Begin Symbvar.Init(1,1,80,25,7,1,40,12,'A')
Сложный полиморфизм.
Program MetVirt
Procedure Run
End; Procedure Win.Print; Begin End
Пример 2.22. Использование процедуры с полиморфным объектом
Program PrPolOb
Procedure Print; virtual
Var V1:Win; V2:Symb; V3:Lot
TypeOf: TypeOf
SizeOf: SizeOF
Const V1:Win=(X1:20;Y1:5;X2:40;Y2:15;Cf:12)
2.4.Динамические объекты
New (); б) функция :=New
New (, ()); б) функция := New
Function HeapFunc(size:Word):integer; far
Пример 2.23. Динамический объект с динамическим полем и контролем выделения памяти
Program DinObj
Constructor Init(An:Vaw)
End; Constructor WinD.Init
Begin HeapError:=@HeapFunc
Пример 2.24. Статический объект с динамическим полем и контролем выделения памяти
Var W :WinD
Begin HeapError:=@HeapFunc
Пример 2.25. Использование динамических объектов (программа «Снежинки»)
Program SnowOb
Constructor Init
V^[1]:=Random(GetmaxX); V^[2]:=Random(GetmaxY)
End; Constructor Snow1.Init; Begin Snow.Init; Vh:=Vhn End
Var S : array[0..N] of ^Snow
2.5.Создание библиотек классов
Unit ; Interface
Begin {раздел инициализации} {вызовы конструкторов экспортируемых объектов} End
Пример 2.26. Размещение описания класса в модуле
Следует иметь в виду, что только после создания модуля Obj_unit.tpu скрытые поля и методы с помощью директивы private будут недо
Field identifier expected
2.6.Композиция и наполнение
Пример 2.27. Использование объектных полей
Program Compos
Procedure Print
End; Procedure Win.Init
Пример 2.28.
Program MoveCir
Procedure Out
Procedure Control
Procedure CrCr(P1,P2:Cp)
End; Var i,j:integer
Clrscr; Writeln('Введите:':20)
Write('размер зоны по оси Y - '); readln(ly)
Write('задержку - '); readln(d)
2.7.Разработка программ с использованием объектно-ориентированного программирования на языке Borland Pascal 7.0
Пример 2.29. Программа «Текстовые эффекты»
На первом этапе
Второй этап
На третьем этапе
End; Procedure Cchar.Print
Procedure LinMovX.Tie
Procedure LinMovY.Move
V[1]:=pi; for i:=2 to L do V[i]:=V[i-1]+D
Var Sx1,Sx2:LinMovX; Sy1,Sy2:LinMovY; Sc1,Sc2:LinMovCir
Создание приложений Windows Семейство операционных систем Windows с точки зрения программиста
Системная поддержка виртуального пространства памяти до 4 Гбайт для каждого приложения Win32.
Возможность одновременной работы с несколькими приложениями и/или несколькими функциями приложений (многозадачность).
Стандартный графический интерфейс с пользователем
Независимость программ от аппаратуры (в том числе - универсальная графика).
Возможность обмена данными между приложениями.
Совместимость с ранее разработанным программным обеспечением
DLL (Dynamic Link Library
Структура приложения Windows
Технология разработки приложений Windows в средах Delphi и С++Builder
WM_CHAR. В зависимости от того, какая именно кнопка мыши была нажата, этот метод может вызывать: обработчик события OnKeyPress
Пример 3.30.
Unit MainUnit
InPutEdit, OutPutEdit: TEdit
Var MainForm: TMainForm
End; {обработчик события «нажатие клавиши Enter при вводе значения»} Procedure TMainForm.InPutEditKeyPress(Sender: TObject
MessageDlg('Значение содержит недопустимые символы.', mtError, [mbOk], 0)
Procedure TMainForm.NextButtonClick(Sender: TObject)
Program Example1
Пример 3.31. Приложение «Возведение чисел в квадрат» (вариант 2)
MessageDlg("Строка содержит недопустимые символы."
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
Объектная модель Delphi Pascal
Определение класса
Type = class(
Borland Pascal 7.0
Constructor TNum.Create
Destructor Destroy; override
Destructor TNum.Destroy
Таблица 3.2. Особенности работы с объектами в Delphi
Var A, B:TNum
Пример 3.32.
Form1: Name:=MainForm; Caption:='Графический редактор “Окружность”'; Bevel1
Unit Circul
End; Procedure TMyCircul.Clear
End; Procedure TMainForm.ImageMouseDown(Sender: TObject
C.Draw; {изобразить объект с заданными параметрами} end
End; Procedure TMainForm.ColorButtonClick(Sender: TObject)
Особенности реализации полиморфизма
Виртуальные методы
Динамические методы.
Абстрактные методы.
Пример 3.33.
Unit Figure
Перегрузка методов.
Перегруженный метод
Type TSomeClass = class
Type T1 = class(TObject)
Type T1 = class(TObject)
Type T1=class
A.Value :=n
Unit Circul
MyObject[k+2,s] :=1
Пример 3.35.
Unit MasByte
Function Delete(Ind:byte):byte
Индексируемые свойства (свойства со спецификацией index).
Type CMas=class
Ссылка на класс (метакласс).
Type TClass=class of TObject
Методы класса.
Type MyClass=class(TObject)
Механизм определения типов на этапе выполнения программы.
Таблица 3.3. Структура ТВМ
ShortString(Pointer(Pointer(Integer(TEdit) - 32)^)^).
Пример 3.36.
Unit Spisok
IOEdit.Text:=inttoStr((v as TNumber).MyNum)
Type TMyClass=class
Пример 3.37. Делегирование методов (графический редактор «Окружности и квадраты» - вариант 2)
1: C.Draw:=C.DrawSquare
Begin if Cnil then
Unit Figure
Begin if Cnil then
Библиотека стандартных классов Delphi
Procedure CleanupInstance
Function ClassType: TClass
Procedure Dispatch(var Message)
Function FieldAddress(const Name: ShortString): Pointer
Function SafeCallException(ExceptObject: TObject
Оконные элементы управления
Графические элементы управления
Type TMainForm = class(TForm)
Пример 3.38. Использование отношения «старший-младший» (приложение «Определение вида четырехугольника»)
Type TMainForm = class(TForm)
End; Procedure TMainForm.AllEditKeyPress(Sender: TObject; var Key: Char)
S:=chr(ord('A')+ActiveControl.TabOrder div 2)
Создание и обработка сообщений и событий
Type TMessage=record
Const Mes1 = WM_USER
Генерация сообщения.
WParam, LParam:LongInt):LongInt
Пример 3.39.
Message wm_mymessage
Form2.Perform (WM_MYMESSAGE,Longint(MessageEdit.Text),0)
Пример 3.40.
Message wm_mymessage
Управление циклом обработки сообщений.
Пример 3.41.
ProgressBar.Parent := Self
Button.Left:=60; Button.Top:=65
Обработка исключений
Структура фрагментов с исключениями
Создание исключений
Type Exception = class(TObject)
Constructor CreateRes(Ident: Integer; Dummy: Extended = 0)
Constructor CreateHelp(const Msg: string; AHelpContext: Integer)
Constructor CreateResHelp(Ident: Integer; AHelpContext: Integer)
Генерация исключений
Обработка исключений
Unit MasByte
Procedure SetEl(Ind:byte;m:byte)
Function TMasByte.GetEl(Ind:byte):byte