Лекции Практические и лабораторные занятия Курсовая работа (проект) Самостоятельная работа студента




Скачать 1.86 Mb.
страница 1/7
Дата 11.10.2016
Размер 1.86 Mb.
  1   2   3   4   5   6   7

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ имени ШАКАРИМА г. СЕМЕЙ

Документ СМК 3 уровня

УМКД

УМКД 042-39. 1.ХХ/03- 2013

УМКД

Учебно-методические материалы по дисциплине

«Программирование II»


Редакция №____от_____


УЧЕБНО-МЕТОДИЧЕСКИИ КОМПЛЕКС

ДИСЦИПЛИНЫ

«Программирование II»

для специальности 5В011100 – «Информатика »
УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ

Семей


2013

СОДЕРЖАНИЕ

  1. Глоссарий

  2. Лекции

  3. Практические и лабораторные занятия

  4. Курсовая работа (проект)

  5. Самостоятельная работа студента

  1. ГЛОССАРИИ


Абстрагирование (abstraction). Метод решения задач, при котором объекты разного рода объединяются общим понятием (концепцией). Затем сгруппированные сущности рассматриваются как элементы единой категории. Несущественная информация игнорируется.

Абстрактный класс (abstract с1аss). Класс, который не используется для создания экземпляров. Он служит исключительно для порождения других классов. В языке С++ этот термин относится к классам, которые содержат хотя бы один чисто виртуальный метод. В языке Java абстрактным считается класс, явно объявленный с ключевым словом abstract. См. также отложенный класс.

Абстрактный метод (abstract method) Метод, который явно объявлен с ключевым словом abstract. Такие методы должны быть переопределены до их вызова.

Автоматическое управление памятью (automatic storage manedgement). Алгоритм распределения памяти, при котором исполнительная система нижнего уровня отвечает за нахождение и повторное использование недоступных (а следовательно, ненужных) блоков памяти. Из рассматриваемых в этой книге языков только Smalltalk и Java обеспечивают автоматическое управление памятью. См. также: сборка мусора.

Базовый класс (base с1аss). Класс, из которого порождается другой класс. Синонимы: класс-предок, надкласс, родительский класс.

Глобальная переменная (g1оЬа1 variable). Переменная, к которой потенциально разрешен доступ из любого места программы.

Деструктор (destructor) . Метод, который вызывается непосредственно перед тем, как освобождается память, занимаемая объектом. Деструктор может выполнять любые необходимые действия. Имя деструктора конструируется из символа “тильда” (~), за которым следует имя класса1.

Динамическая переменная (dynamic variable). Переменная, для которой память выделяется явной командой пользователя. Противопоставляется автоматической переменной, память для которой отводится автоматически при входе в процедуру.

Динамический тип данных (daynamic tуре). Тип данных, связанный со значением, которое содержится в переменной в текущий момент. Он не обязательно совпадает со статическим типом данных, присвоенном переменной при ее объявлении. В объектно-ориентированных языках программирования динамический тип, как правило, является потомком статического типа.

Динамическое связывание (dynamic binding). Связывание имени и атрибута, которое производится во время выполнения программы, а не во время компиляции.

Закрытый метод (рrivate method). Метод, который не предназначен для вызова извне объекта. Более конкретно: получатель сообщения, которое приводит к вызову такого метода, должен быть обязательно объектом того же класса, которому принадлежит отправитель сообщения (см. ключевое слово self). Противопоставляется открытым методам.

Идентификатор метода (method designator). Идентификатор имени метода. Используется как имя процедуры или функции в выражении типа пересылки сообщения. Идентификатор метода применяется при поиске подходящего метода при пересылке сообщения. В общем случае, зная только идентификатор метода, невозможно определить из текста программы, какой именно метод будет активизирован во время выполнения. Синоним: селектор сообщения.

Идентификатор поля объекта (object field designator). Идентификатор (возможно, составной), который определяет поле внутри объекта.

Иерархия (hierarchy). Структура, упорядоченная по подчиненности в соответствии с некоторым набором правил. В объектно-ориентированном программировании иерархия обычно образуется связями “класс-подкласс”.

Иерархии классов (class hierarchy). Иерархия, образуемая классами в соответствии с их взаимосвязью “класс-подкласс”. См. также иерархия.

Иерархия объектов (object hierarchy). В языке Оbject Pascal - последовательность объектных типов, связанных через наследование. Синоним: иерархия классов.

Инкапсуляция (encapsulation). Техника, при которой информация прячется внутри структуры подобно тому, как данные, связанные с экземпляром класса, прячутся внутри класса.

Класс (с1аss). Абстрактное описание данных и поведения для совокупности похожих объектов, представители которой называются экземплярами класса. Синоним: объектный тип данных.

Класс-предок (аncestor с1аss) Тип данных, из которого производится наследование. Класс, указанный при определении объектного типа, называется непосредственным предком. Синонимы: базовый класс, надкласс.

Композиция (composition). Техника, при которой новый объект получается композицией, объединением старых и новых частей. Противопоставляется наследованию.

Конструктор (constructor). Метод, используемый для создания нового объекта. Обеспечивает решение двух задач: он выделяет память под новую переменную и гарантирует, что переменная инициализируется надлежащим образом. Описывая конструктор, программист влияет на процесс инициализации.

Контейнерные классы (соntainer сlasses). Классы, которые используются как структуры данных, содержащие набор элементов. Примеры контейнерных классов: списки, множества, таблицы

Метакласс (metaclass). Класс объекта-класса. Для каждого класса имеется ассоциированный с ним метакласс. Объект-класс является правило, единственным экземпляром метакласса. Метаклассы позволяют специфировать поведение классов. Без них все классы (но не экземпляры классов!) стали бы вести себя идентично.

Метапрограммирование (metaprogramming). Стиль программирования, который интенсивно использует метаклассы. При этом семантика языка и смысл различных конструкций видоизменяются средствами самого же языка программирования..

Метод (method). Процедура или функция, связанная с классом (или объектным типом), вызываемая в стиле пересылки сообщений.

Наследование (inheritance). Свойство объектов, посредством которого экземпляры класса получают доступ к данным и методам классов-предков без их повторного определения. См. также: класс-предок.

Объектно-ориентированное программирование, ООП (object-oriented programming). Стиль разработки программ, который состоит в делегировании обязанностей независимым взаимодействующим агентам. Характеризуется использованием пересылки сообщений и классов, организованных в иерархию (иерархии) наследования.

Объектный тип данных (object type). В языке Оbject Раscal — структура, аналогичная записи (record), которая наряду с полями данных содержит поля процедур и функций (то есть методы). Синоним: класс.

Объявление метода (method declaration). Часть объявления класса, которая относится к конкретному методу.

Парадигма (раradigm). Базовая модель конкретного способа организации информации. Объектно-ориентированная парадигма делает упор на поведении и обязанностях.

Параметризованные классы (parametrized classes). Классы, в определении которых некоторые типы данных оставлены неопределенными. До создания экземпляров класса происходит доопределение неизвестных типов.

Переопределение метода (override). Действие, которое происходит, когда метод подкласса имеет то же самое имя, что и метод надкласса. Метод подкласса имеет приоритет по сравнению с методом надкласса. Обычно во время связывания сообщений и методов выбирается переопределенный метод.

Селектор сообщения (message selector). Текстовая строка, которая идентифицирует сообщение при пересылке сообщений. Она используется для того, чтобы найти соответствующий метод (что является частью процесса поиска требуемого метода). Синонимы: селектор, селектор метода, идентификатор метода.

Сообщение (message). Текстовая строка, которая определяет требуемое действие при пересылке сообщений. Эта строка используется для того, чтобы найти соответствующий ей метод (что является частью процесса поиска требуемого метода). Синонимы: селектор, селектор сообщения, селектор метода, идентификатор метода.

Экземпляр (instance). В языке С++ - переменная типа с1аss. В языке Object Pascal - объектная переменная. В языке Smalltalk - конкретный пример структуры общего вида, определяемой классом. Синоним: объект.

  1. ЛЕКЦИИ


Лекция 1

Тема: Объектно-ориентированное программирование. Основные принципы ООП.

Цель: Рассмотреть основные понятия и принципы ООП.

Объектно-ориентированное программирование (ООП) зародилось в языках программирования Паскаль, Ада, С++. До появления ООП технология создания компьютерных программ базировалась на процедурном программировании, в котором основой программ являлись функции и процедуры, т.е. действия. Созданная т.о. компьютерная программа отличалась четким алгоритмом работы – последовательностью действий по достижению поставленной цели. В ООП основной точкой опоры при проектировании программы является – объект.

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

Объектом назовем понятие, абстракцию или любой предмет с четко очерченными границами, который имеет смысл в контексте рассматриваемой прикладной проблемы. Объекты могут наследовать характеристики и поведение других объектов, называемых родительскими или предками. Наличие механизма наследования является самым существенным различием между обычным программированием на Pascal ООП программированием в Delphi.

Основным понятием ООП является понятие класса: классом – называют особую структуру, которая может иметь в своем составе поля, методы и свойства.



Наследование. В терминах Паскаль объект наиболее схож с типом Record, который является структурированным типом для объединения нескольких связанных элементов под одним именем.

Процесс, с помощью которого один тип наследует характеристики другого типа, называется наследованием. В Delphi все классы являются потомками класса TObject.



Свойства объекта. Совокупность данных и методов их чтение и записи называются свойством. Свойства объектов можно устанавливать в процессе проектирования, а также можно изменять программно во время выполнения программы. (В процессе проектирования приложений в среде программирования Delphi можно просматривать значения некоторых из этих данных в окне Инспектора Объектов и изменять эти значения).

События и их обработка. Средой взаимодействия объектов являются сообщения, генерируемые в результате наступления различных событий. Событие – это взаимодействие на объект. Событие наступает в результате действий пользователя (перемещение курсора, нажатие кнопки и т.п.). В каждом объекте определено множество событий, на которые он может реагировать. В конкретных объектах могут быть определены обработчики каких-то из этих событий. К написанию этих обработчиков и сводится основное программирование с помощью Delphi.

Таким образом, можно определить объект как совокупность свойств и методов, а также событий, на которые он может реагировать. Внешнее управление объектом осуществляется через обработчики событий. Эти обработчики обращаются к методам и свойствам объекта. Начальные значения данных объекта могут задаваться также в процессе проектирования установкой различных свойств. В результате выполнения методов объекта могут происходить новые события, воспринимаемые другими объектами программы или пользователем.



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

  1. Дайте определение ООП.

  2. Что называется объектом?

  3. Дайте определение события

Лекция 2

Тема: Объектно-ориентированное программирование. Инкапсуляция. Наследование. Полиморфизм. Описание объектового типа. Виртуальные методы.

Цель: дать понятие инкапсуляции, классов и методов.

Объектно-ориентированное, или объектное, программирование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.

Объектно-ориентированное программирование базируется на трех важнейших принципах, придающих объектам новые свойства. Этими принципами являются инкапсуляция, наследование и полиморфизм.

1. Инкапсуляция - это объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта (свойствами), а алгоритмы - объектными методами или просто методами.

Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются. В результате замена или модификация алгоритмов и данных, инкапсулированных в объект, как правило, не влечет за собой плохо прослеживаемых последствий для программы в целом (в целях повышения защищенности программ в ООП почти не используются глобальные переменные).

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

2. Наследование - есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.

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



3. Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В рамках ООП поведенческие свойства объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, то есть объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.

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

Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения.

Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами, и любые его наследники могут предоставлять конкретную реализацию этого способа.

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

  1. Назовите три принципа ООП и дайте им определение

  2. Что означает виртуальный метод

Лекция 3

Тема: Динамическое создание объектов. Конструкторы и деструкторы. Скрытые поля и методы.

Цель: ввести понятие конструкторов и деструкторов.

Динамическое создание объектов. Динамические объекты предоставляют такие элементы, как свойства и методы, во время выполнения, а не во время компиляции. Это позволяет создавать объекты для работы со структурами, не соответствующими статическому типу или формату. Динамические объекты обеспечивают удобный доступ к динамическим языкам, таким как IronPython и IronRuby. С помощью динамического объекта можно ссылаться на динамический скрипт, интерпретируемый во время выполнения.

Список команд, позволяющих динамически создавать объекты:

Создание кнопки – CreateTextButton ("inlabel","outlabel$,x,y,w,h,text")

Создание текстового объекта - CreateText("inlabel","outlabel$,x,y,text")

Создание текста с полосой прокрутки - CreateParagraph("inlabel","outlabel$,x,y,w,h,text")

Создание круга - CreateCircle("inlabel","outlabel$,x,y,w,h,r,g,b")

Создание прямоугольника - CreateRectangle("inlabel","outlabel$,x,y,w,h,r,g,b")

Создание линии (относительное позиционирование) - CreateLine("inlabel","outlabel$,x,y,w,h,r,g,b")

Создание прямоугольника (абсолютное позиционирование) - CreateLineAB("inlabel","outlabel$,x1,y1,x2,y2,r,g,b")

Создание активной области - CreateHotSpot("inlabel","outlabel$,x,y,w,h")

Создание скрипта - CreateScript("inlabel","outlabel$")

Конструкторы и деструкторы

В объектно-ориентированном программировании конструктор класса (от англ. constructor, иногда сокращают ctor) — специальный блок инструкций, вызываемый при создании объекта. Конструктор схож с методом, но отличается от метода тем, что не имеет явным образом определённого типа возвращаемых данных, не наследуется, и обычно имеет различные правила для рассматриваемых модификаторов. Их задача — инициализировать члены объекта и определить инвариант класса, сообщив в случае некорректности инварианта. Корректно написанный конструктор оставит объект в «правильном» состоянии

Некоторые языки программирования различают несколько особых типов конструкторов:


  • конструктор по умолчанию — конструктор, не принимающий аргументов;

  • конструктор копирования — конструктор, принимающий в качестве аргумента объект того же класса (или ссылку из него);

  • конструктор преобразования — конструктор, принимающий один аргумент (эти конструкторы могут вызываться автоматически для преобразования значений других типов в объекты данного класса).

Деструктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти).

Для объявления деструктора в Delphi используется ключевое слово destructor. Имядеструктора может быть любым, но рекомендуется всегда называть деструктор Destroy.

В Delphi все классы являются потомками, по крайней мере, класса TObject, поэтому, для корректного освобождения памяти, необходимо перекрывать деструктор, используя директиву override.

Практически всегда деструктор делается виртуальным. Делается это для того, чтобы корректно (без утечек памяти) уничтожались объекты не только заданного класса, а и любого производного от него. Например: в игре уровни, звуки и спрайты могут создаваться загрузчиком, а уничтожаться — менеджером памяти, для которого нет разницы между уровнем и спрайтом.



Скрытые поля и методы.

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



name="имя поля"

id="имя поля"

value="значение" />

Свойства JavaScript, полезные для работы со скрытыми полями, это disabled, form, id, name и value. Во многих задачах, требующих сохранения информации о состоянии, без скрытых полей обойтись трудно. Использование скрытых полей для сохранения информации о состоянии элементы управления несет в себе потенциальную опасность — их содержимое может без труда увидеть и случайно или намеренно изменить любой конечный пользователь.

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


  1. Что представляет собой конструктор ?

  2. Какие типы конструкторов различают?

  3. Что представляет собой деструктор?

Лекция 4

Тема: Теоретические основы объектно-ориентированного программирования. От процедурного программирования к объектному. Основные принципы и этапы ООП. Объектная декомпозиция.

Цель: познакомить с теоретическими основами ООП, дать понятие объектной декомпозиции.

Объектно-ориентированное, или объектное, программирование (в дальнейшем ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы. При объектно-ориентированном подходе программные задачи распределяются между объектами программы. Объекты обладают определенным набором свойств, методов и способностью реагировать на события (нажатие кнопок мыши, интервалы времени и т.д.) Чтобы проект можно было считать объектно-ориентированным, объекты должны удовлетворять некоторым требованиям. Этими требованиями являются инкапсуляция, наследование и полиморфизм.



Инкапсуляция - это объединение в единое целое данных и алгоритмов обработки этих данных.

Наследование - есть свойство объектов порождать своих потомков.

Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами.

ООП центральным является понятие класса. Класс – это шаблон, по которому создаются объекты определенного типа. Класс объединяет в себе данные и методы их обработки.



Объекты — это экземпляры определенного класса.

Элементы управления — это объекты, используемые при разработке пользовательского интерфейса.

Первые программы были организованы очень просто. Они состояли из собственно программы на машинном языке и обрабатываемых данных. Сложность программ ограничивалась способностью программиста одновременно мысленно отслеживать последовательность выполняемых операций и местонахождение большого количества данных.

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

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

Были сформулированы основные принципы выполнения разработки:

1. принцип нисходящей разработки, рекомендующий на всех этапах вначале определять наиболее общие моменты, а затем поэтапно выполнять детализацию (что позволяет последовательно концентрировать внимание на небольших фрагментах разработки);

2. собственно структурное программирование, рекомендующее определенные структуры алгоритмов и стиль программирования (чем нагляднее текст программы, тем меньше вероятность ошибки);

3. принцип сквозного структурного контроля, предполагающий проведение содержательного контроля всех этапов разработки.


Метод пошаговой детализации заключается в следующем:

определяется общая структура программы в виде одного из трех вариантов:



последовательности подзадач (например, ввод данных, преобразование данных, вывод данных);

альтернативы подзадач (например, добавление записей к файлу или их поиск);

повторения подзадачи (например, циклически повторяемая обработка данных).

Основные принципы и этапы ООП.

В теории программирования ООП определяется как технология создания сложного программного обеспечения, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств

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

В основу ООП положены следующие принципы:

1) абстрагирование;

2) ограничение доступа;

3) модульность;

4) иерархичность;

5) типизация;

6) параллелизм;

7) устойчивость.

Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:

а) интерфейс – совокупность доступных извне элементов реализации абстракции (основные характеристики состояния и поведения);

б) реализация – совокупность недоступных извне элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).

Иерархия - это ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархий при разработке программных систем.

В ООП используются два вида иерархии.

1. Иерархия «целое/часть» – показывает, что некоторые абстракции включены в рассматриваемую абстракцию, как ее части, например, лампа состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования (на логическом уровне – при декомпозиции предметной области на объекты, на физическом уровне - при декомпозиции системы на модули и при выделении отдельных процессов в мультипроцессной системе).

2. Иерархия «общее/частное» – показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол – конкретный вид стола», а «столы – конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.

Объектная декомпозиция.

Объектной декомпозицией называют процесс представления предметной области задачи в виде совокупности функциональных элементов (объектов), обменивающихся в процессе

выполнения программы входными воздействиями (сообщениями).

Каждый выделяемый объект предметной области отвечает

за выполнение некоторых действий, зависящих от полученных сообщений и

параметров самого объекта.

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

В процессе решения задачи объект, получив некоторое сообщение, выполняет заранее определенные действия, например, может изменить собственное состояние, выполнить некоторые вычисления, нарисовать окно или график и, в свою очередь, сформировать сообщения другим объектам. Таким образом, процессом решения задачи управляет последовательность сообщений. Передавая эти сообщения от объекта к объекту, программа выполняет необходимые действия.

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


  1. В чем заключается метод пошаговой детализации

  2. Основное достоинство ООП

  3. Какие принципы положены в основу ООП

  4. Какие виды иерархии используются в ООП.

  5. Что называется объектной декомпозицией?

Лекция 5

Тема: Теоретические основы объектно-ориентированного программирования. Объекты и сообщенния. Классы. Основные средства разработки классов. Дополнительные средства разработки классов.

Цель: ввести понятие класса и познакомить с дополнительными средствами разработки классов

Каждый объект, получая сообщения должен определенным образом «реагировать» на них, выполняя заранее определенные для каждого типа сообщения действия.

Реакция объекта на сообщение может зависеть от его состояния, так объект Файл, получив сообщение «Добавить запись», прежде, чем добавлять запись, должен проверить, открыт ли соответствующий файл, и при закрытом файле должен выдать пользователю отказ на выполнение операции добавления.

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

Наличие внутреннего состояния объектов означает, что порядок выполнения операций имеет существенное значение, т. е. объект может моделироваться с применением теории конечных автоматов.



Поведение объектов, характеризуется определенным набором реакций на получаемые сообщения и часто зависит от состояния объекта.

Классы.


В любой системе функционирует множество объектов. Некоторые из них «похожи» и однотипны. Однотипные объекты объединяются в классы.

Все объекты одного и того же класса обладают одинаковым интерфейсом и реализуют этот интерфейс одним и тем же способом. Два объекта одного класса в ООП могут отличаться только текущим состоянием, причем всегда теоретически возможно так изменить состояние одного объекта, чтобы он стал равным другому объекту.

Индивидуальные объекты называются экземплярами класса, а класс в ООП — это шаблон по которому строятся объекты. Названия классов в ООП пишутся с большой буквы, а названия объектов — с маленькой.

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

Тип — это область определения некой величины, т.е. множество ее возможных значений и набор применимых операций. Тип может задаваться классом.

Важнейшим свойством классов в ООП и их принципиальным отличием от абстрактных типов данных (встроенных в язык программирования) является наследование. Наследование — это отношение между классами, при котором один класс разделяет структуру или поведение одного или нескольких других классов.

Основные средства разработки классов.

Базовый класс, производный класс или оба класса могут иметь конструкторы и/или деструкторы.

Если у базового и у производного классов имеются конструкторы и деструкторы. То конструкторы выполняются в порядке наследования, а деструкторы - в обратном порядке.

Конструктор базового класса выполняется раньше конструктора производного класса.

Деструктор производного класса выполняется раньше деструктора базового класса.

Когда инициализация проводится только в производном классе, аргументы передаются обычным образом. Однако при необходимости передать аргумент конструктору базового класса ситуация несколько усложняется, так как все необходимые аргументы базового и производного классов передаются конструктору производного класса. Затем, используя расширенную форму объявления конструктора производного класса, соответствующие аргументы передаются дальше в базовый класс.

Синтаксис передачи аргументов из производного в базовый класс:

Конструктор_произв_класса (список-арг): базов_класс(список-арг)

{

// тело конструктора производного класса



}

Обычно конструкторы базового и производного классов не используют один и тот же аргумент. Если необходимо передать каждому конструктору класса один или несколько аргументов, то надо передать конструктору производного класса все аргументы, необходимые конструкторам обоих классов. Затем конструктор производного класса передает конструктору базового класса те аргументы, которые ему требуются.



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

  1. Чем характеризуется состояние объекта

  2. Чем характеризуется поведение объектов

  3. По какому принципу объединяются объекты в классы

  4. Какие объекты называются экземплярами класса

Лекция 6

Тема: Среда визуального программирования. Формы приложения. Компоненты формы.

Цель: знать что представляет собой форма приложения и основные компоненты формы

Визуальное программирование — способ создания программы для ЭВМ путём манипулирования графическими объектами вместо написания её текста.

Необходимо различать:



  • графический язык программирования — который прежде всего язык программирования (со своим синтаксисом)

  • визуальные средства разработки — как правило, под ними подразумевают средства проектирования интерфейсов или какую либо CASE-систему для быстрой разработки приложений или SCADA-систему для программирования микроконтроллеров.

Языки визуального программирования могут быть дополнительно классифицированы в зависимости от типа и степени визуального выражения, на следующие типы:

  • языки на основе объектов, когда визуальная среда программирования предоставляет графические или символьные элементы, которыми можно манипулировать интерактивным образом в соответствии с некоторыми правилами;

  • языки, в интегрированной среде разработки которых на этапе проектирования интерфейса применяются формы, с возможностью настройкой их свойств. Примеры: Delphi и C++ Builder фирмы Borland, С#

  • языки схем, основанные на идее «фигур и линий», где фигуры (прямоугольники, овалы и т. п.) рассматриваются как субъекты и соединяются линиями (стрелками, дугами и др.), которые представляют собой отношения. Пример: UML.

В современных разработках делаются попытки интегрировать подход визуального программирования с программированием потоков данных, чтобы иметь непосредственный доступ к состоянию программы для онлайновой отладки, или автоматизированная генерация и документирование программы. Языки потоков данных также позволяют делать автоматическое распараллеливание, которое может стать одним из величайших достижений программирования в будущем.

Формы приложения.

Форма - это важнейший визуальный компонент. Формы представляют собой видимые окна Windows и являются основной частью практически любого приложения.

Формы приложения Delphi делятся на модальные и немодальные. Первая отличается тем, что она приостанавливает выполнение той процедуры, которая ее вызвала, и продолжается до того времени, пока пользователь не закроет ее. Еще одним отличительным фактом является то, что модальную форму невозможно переключить курсором мыши на любые другие формы этого приложения, до тех пор, пока модальную форму не закроет сам пользователь. В итоге для того, чтобы продолжить работу с приложением, пользователь обязан выполнить определенные действия, которые предлагаются модальной формой.

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

Для работы с формой предназначен компонент Form класса TForm. С создания формы начинается конструирование приложения. В форме размещаются визуальные компоненты, образующие интерфейсную часть приложения, и системные (невизуальные) компоненты.

Компоненты формы.

Свойства формы определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки.

YPE="TEXT"
Текстовое поле в одну строку длину которого можно определить использованием атрибута SIZE, а введённую по умолчанию строку — с помощью атрибута VALUE. Может использоваться в двух вариантах: с аргументом "TEXT" (обычные условия ввода данных) или с аргументом "PASSWORD" (вместо символов ввода в поле высвечиваются скрытые символы).

TYPE="CHECKBOX"
Компонент — один из вариантов форм выбора, принимающий одно из двух устойчивых положений: «выбрано» или «не выбрано». Каждый из компонентов формы типа CHECKBOX создаёт логическую пару: «имя элемента / его состояние». Для установки значения по умолчанию (отмечен либо нет) используют атрибуты так, как указано ниже.

TYPE="RADIO"

Компонент RADIO (или так называемая «радиокнопка») очень похож на предыдущий, но переменная может принимать лишь одно значение из представленного множества.



TYPE="BUTTON"

Компонент — кнопка, клик на которой приводит к запрограммированному в обработчике (скрипт на сервере) действию. С помощью атрибута NAME компоненту присваивается уникальное имя, атрибут VALUE определяет надпись на кнопке.



TYPE="RESET"

Компонент — кнопка, клик на которой приводит к очистке заполненных полей. Синтаксис исключительно прост, а действие имеет локальный характер (то есть просто очищаются все поля формы, а на сервер не передаётся никакой информации).



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

  1. Дайте определение формы

  2. На какие две группы делятся формы приложения Delphi

  3. Чем они отличаются

Лекция 7

Тема: Среда визуального программирования. Событийно-управляемое программирование. Событие и процедура обработки события.

Цель: дать определение событийно-управляемому программированию.

Программирование как область деятельности бурно развивается. Если несколько лет назад о создании своих собственных программ под Windows рядовому программисту оставалось только мечтать, так как практически единственным инструментом разработки ориентированных на работу в Windows программ был Borland C++ for Windows, явно предназначенный для профессионалов, то сейчас, благодаря появлению Delphi, возможность создания программ под Windows стала реальностью.Delphi — это среда разработки программ, ориентированных на работу в Windows. В качестве языка программирования в Delphi используется объектно-ориентированный язык Object Pascal, который можно рассматривать как дальнейшее развитие Turbo Pascal 7.0.В основе идеологии Delphi лежат технологии визуального проектирования и событийного программирования, применение которых позволяет существенно сократить время разработки и облегчить процесс создания приложений — программ, работающих в среде Windows.

 Событийно-управляемое программирование - объектно-ориентированное программирование, при котором задаются реакции программы на различные события. Эволюция языков системного программирования asm->c->c++->java->python/jscript?

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

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

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

Ранее нами было рассмотрено понятие типа как совокупности объектов. Заметим, что произвольное семейство (действительных в нашем частном случае) объектов может быть параметризовано (или, иначе, концептуализировано) не только типами, но и событиями.



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

  1. Что такое событийно-управляемое программирование

  2. Что понимают под событием обработки события

  3. Что такое событие

Лекция 8

Тема: Среда визуального программирования. Компоненты библиотеки VCL Delphi. Кнопки, индикаторы, управляющие элементы библиотеки VCL Delphi. Компоненты ввода и отображения текстовой информации.

Цель: Познакомить с компонентами библиотеки VCL Delphi.
Библиотека визуальных компонентов содержит множество классов, которые вы можете использовать в своих приложениях. Она написана на языке Object Pascal и непосредственно связана с интегрированной средой разработки Delphi. В частности, все кнопки, расположенные на палитре компонент являются ни чем иным, как представлением визуальных компонент VCL. Использование стандартных объектов при создании приложений не только уменьшает сроки разработки, но и снижает количество ошибок. Отрицательным же следствием их применения является увеличение размера программы. Библиотека VCL содержит несколько сотен классов, образующих древовидную иерархию. Рассмотрим фрагмент такой иерархии: TObject – базовый класс иерархии. В нем нет полей, но заданы методы, определяющие основу поведения любого объекта, – создание, уничтожение объекта, обработку сообщений. Все классы, как стандартные, так и создаваемые программистом, прямо или косвенно наследуются от TObject. Их можно разделить на визуальные и невизуаьные. Визуальные классы предназначены для организации взаимодействия с пользователем, невизуальные – для хранения и обработки данных.

Exception – является базовым классом для обработки исключительных ситуаций, которые возникают, например, при попытке деления на нуль, выходе за пределы выделенной области памяти, обращении к не существующему файлу и т.д. В Object Pascal реализован механизм обработки исключений, а VCL включает почти сотню классов для представления всех исключительных ситуаций.

TPersistent – является предком всех классов, которые могут иметь раздел published (элементы, заданные в этом разделе, отображаются в инспекторе объектов). Опубликованные свойства объектов сохраняются при записи на диск.

TList – предназначен для хранения произвольного количества элементов разных типов и доступа к ним по индексу аналогично массиву. Для хранения данных предназначены и другие потомки TPersistent, например классы TStack, TCollection, TStrings и их потомки. Для сохранения данных и объектов на внешних носителях предназначен класс TStream и его производные.

TComponent – является предком визуальных и невизуальных компонентов (таких, как объект-приложение TApplication). Потомки TComponent могут отображаться в палитре компонентов, быть владельцами других компонентов и помещаться на форму.

TControl – задает основные свойства всех визуальных компонентов. От него наследуются так называемые элементы управления – кнопки, метки, списки, флажки. Через эти элементы осуществляется диалог с пользователем. Те элементы, которые могут получить фокус ввода (воспринимают ввод с клавиатуры), наследуются от TControl через TWinControl

Перечень компонентов ввода и отображения текстовой информации:



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


  1. Что содержит библиотека визуальных компонентов

  2. Что дает использование стандартных объектов при создании приложений

  3. Назовите некоторые компоненты

Лекция 9

Тема: Среда визуального программирования. Компоненты отображения табличных данных. Компоненты отображения иерархических данных. Компоненты – меню.

Цель: познакомить с компонентами отображения табличных данных

Среда разработки Delphi ориентирована, прежде всего, на создание программ для Windows. При этом большое внимание уделяется возможности визуальной разработки приложений с помощью большого набора готовых компонентов Delphi, позволяющих избежать ручного кодирования. Компоненты Delphi охватывают практически все аспекты применения современных информационных технологий. Конечно, для работы в Delphi прежде всего требуется изучить базовые компоненты Delphi, которые требуются при подготовке практически любого приложения.

Для отображения табличных данных можно использовать компонент TStringGrid, в целом не плохой, но имеющий ряд ограничений:

1. События клика мышкой и выделения ячейки не распространяются на "фиксированные ячейки". Поэтому, в частности, ни коим образом нельзя отсортировать данные в таблице по какому-то признаку. (Как, например, делаем в проводнике windows в режиме показа "Таблица". Щёлкаем по "Вид" и всё упорядочивается по "виду"...)

2. Внешний вид немного староват и груб. Сравнить хотя бы с той же таблицей в windows 7.

3. На последнем скриншоте видна всплывающая подсказка, что чисто невозможно в TStringGrid.



К компонентам отображения иерархических данных относится древовидный список (TreeView). Кроме того, в библиотеке Juce имеется специальный компонент для отображения файлов в заданной директории в виде древовидного списка — FileTreeComponent (его класс унаследован от TreeView).

Эти компоненты служат для отображения каких-либо иерархических данных (например, структура предприятия, файлов и директорий в корневом каталоге, оглавления документов и т.п.) в виде дерева, в котором пользователь может выбрать нужный ему узел или узлы. С каждым узлом могут быть связаны какие-либо данные. Узел представляет собой элемент древовидного списка с включёнными в него дочерними элементами (субэлементами), которые могут быть видны, если узел открыт, либо скрыты. При удалении узла удаляется как родительский, так и все дочерние элементы. Тем самым, компонент с TreeView служит для управления множеством элементов.

Для создания элемента древовидного списка служит класс TreeViewItem. Это абстрактный класс, содержащий ряд виртуальных функций. Рассмотрим пример класса, наследующего TreeViewItem, — TTreeViewItem

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


  1. Какой компонент используется для отображения табличных данных

Лекция 10

Тема: Среда визуального программирования. Отображение графической и мультимедиа – информации. Системные диалоги. Организация управления приложением. Диспетчеризация действий.

Цель: знать компоненты для работы с графической информацией

Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает обращение к канве - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой, облегчающие задачу программиста.

В работе с графикой в Delphi в распоряжении программиста находятся канва (холст, полотно - свойство Canvas Delphi компонентов), карандаш (свойство Pen), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство канвы Font. Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы.

Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты! Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер.

Основное свойство такого объекта как Canvas Delphi - Pixels[i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на канве происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет. Например, выполнение оператора


Image1.Canvas.Pixels[100, 100]:=clRed;

приведёт к рисованию красной точки с координатами [100, 100]. Узнать цвет пиксела можно обратным присвоением:

Color:=Image1.Canvas.Pixels[100, 100];

Тип TColor определён как длинное целое (LongInt). Его четыре байта содержат информацию о долях синего (B), зелёного (G), и красного (R) цветов. В 16-ричной системе это выглядит так: $00BBGGRR. Доля каждого цвета может меняться от 0 до 255. Поэтому чтобы отобразить максимально красную точку, ей нужно присвоить цвет $000000FF.

 Для стандартных цветов в Delphi определён набор текстовых констант. Увидеть его можно, открыв в Инспекторе Объектов свойство Color, например, той же Формы.

Итак, классическое приложение Windows должно иметь хотя бы одно окно. Окно приложения должно уметь выполнять целый ряд важных операций. Оно должно правильно отображать себя на экране, уметь взаимодействовать с другими окнами и операционной системой, управлять размещенными на нем элементами управления, реагировать на разнообразные события.

В среде разработки Delphi понятие окна приложения совмещено с понятием формы. По существу это одно и то же. Просто формой называется окно приложения на этапе разработки. Форме при разработке и окну при выполнении приложения соответствует один и тот же экземпляр класса, тем не менее, введение понятия "форма" представляется оправданным.

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

Самые важные из них заключаются в том, что форма умеет взаимодействовать с инструментами среды разработки (Палитрой компонентов, Инспектором объектов и т. д.) и размещенными на ней компонентами. Первое из названных свойств обеспечивается возможностями, унаследованными от базового класса иерархии VCL TComponent. Второе свойство обеспечено механизмами самого класса формы.

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

Для хранения каждой формы проекта используются два файла. Файл с расширением dfm хранит описание свойств формы и размещенных на ней компонентов. Для хранения исходного кода класса формы и ее компонентов предназначен файл модуля с расширением раз.

Формы играют исключительно важную роль в процессе создания приложения. Они обеспечивают создание пользовательского интерфейса с одной стороны, и хранение программной логики приложения — с другой. Хотя форма и является потомком класса TComponent, она не присутствует в Палитре компонентов. Для создания новой формы проекта необходимо использовать команду New Form из меню File или Репозиторий, где хранятся прототипы часто используемых форм. Это говорит о роли формы в процессе разработки приложения — на нее возложено гораздо больше обязанностей, чем на обычный компонент.



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

  1. Что представляет собой Canvas Delphi

  2. Какие инструменты для работы с графикой вы знаете?

Лекция 11

Тема: Объектная модель Delphi Pascal. Определение класса. Особенности реализации переопределения методов. Виртуальные методы. Абстрактные методы. Перегрузка методов.

Цель: дать понятие объектной модели, познакомить с определением класса

Объектная модель Delphi Pascal по сравнению с моделью, использованной Borland Pascal 7.0., является более полной. Она включает:



  • ограничение доступа к полям и методам за счет определения собственного интерфейса к каждому полю класса (5 типов секций при объявлении класса, свойства);

  • более развитые механизмы реализации полиморфных методов (абстрактные, динамические методы);

  • средства работы с метаклассами (переменные метаклассов, методы классов, механизм RTTI);

  • возможность делегирования методов (указатели на методы) и т. д.
  1   2   3   4   5   6   7


База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница
Автореферат
Анализ
Анкета
Бизнес-план
Биография
Бюллетень
Викторина
Выпускная работа
Глава
Диплом
Дипломная работа