Смекни!
smekni.com

Протоколы и стандарты объектно-ориентированного программирования (стр. 1 из 6)

OLE

DDE

Clipboard

РЕФЕРАТ

по дисциплине "Теория проектирования трансляторов"

на тему Протоколы и стандарты объектно-ориентированного программирования

Выполнен студентом группы АП-1-91 Маслюковым А.О.

СОДЕРЖАНИЕ

Предисловие

MS Windows и новый метод разработки программ

Динамический обмен данными

OLE-технология

Заключение

Список литературы

Приложение 1.Пример использования OLE-технологии

Предисловие

Наиболее распространенным языком программирования последне-

го десятилетия безусловно является С. Этому способствовали такие

его особенности, как лаконичность, мощность, гибкость, мо-

бильность. Вместе с тем, стремительное усложнение приложений, для

реализации которых применяются традиционные процедурно-ориентиро-

ваннные языки программирования и, в частности С, заставляют гово-

рить об определенном кризисе в их использовании, связанном преж-

де всего с недостаточной надежностью и выразительной способностью.

Подобных недостатков во многом лишены языки объектно-ориен-

тированнго программирования (ООП), в сонове которыхлежит идея мо-

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

Отдельно взятый класс рассматривается как совакупность множества

данных и операций над ними, причем доступ к элементам данных

класса возможен только посредством операций этого класса. Уста-

новление четкой взаимозависимости между данными и операциями ве-

дет к большой целостности данных и значительно повышает надеж-

ность программ по сравнению с традиционными языками программиро-

вания. Кроме того, идея программирования с помощью классов во

многом использует тот же подход, который позволяет людям формиро-

вать модели объектов реального мира.

Впервые идеи ООП были реализованы в середине 60-х годов в

языке программирования Симула-67. Последний, однако, не нашел в

то время широкого распространения как в силу своей относительно

меньшей производительности по сравнению с традиционными языками

типа FORTRAN, ALGOL, PL/1 так и, возможно, неадекватности предла-

гаемых средств решаемым в то время задачи. Еще одним важным огра-

ничением для распространеия Симулы-67 стали трудности, с которы-

ми пришлось столкнуться большинству программистов при его изуче-

нии. Дело в том, что наряду с целым рядом безусловных достоинств,

идеи ООП обладают и одним существенным недостатком - они далеко

не просты для понимания и особенно для освоения с целью практи-

ческого использования.

С++ - развитие С.

С++ - это объектно-ориентированыый язык, то есть язык, поз-

воляющий программисту оперировать объектами некоторых типов,

предварительно им определенным. Название языка "С++" отражает

эволюционный характер изменения языка С (запись "++", в языке С,

означает, что к какой-то переменной прибавляется единица). Он

имеет еще более мощные и гибкие средства для написания эффектив-

ных программ, чем С, от которого он произошел. Человек, програм-

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

тех возможностей, которые предоставляет С++.

Но не менее важным является то, что такой распространенный и

универсальный язык, как С, сохранен в качестве основы. С прост,

эффективен, переносим. Чего только нет в языке С: строковых дан-

ныхнет, матриц нет, средств параллельного программирования тоже

нет. Нет даже ввода-вывода.

Типы, операции и операторы С очень близки к тому, с чем мы

имеем дело в Ассемблере,- числа, адреса, арифметические и логи-

ческие действия, циклы... Кроме того, многие особенности С нед-

вусмысленно намекаю компилятору, как сократить код и время испол-

нения программы. Эти характерные черты языка С позволяют напи-

сать эффективно работающий и не слишком сложный компилятор. И хо-

тя в машинных кодах на разных компьютерах элементарные операции

обозначаютс по-разному, вряд ли разработчику компилятора придет в

голову интерпретировать простейшие выражения каким-нибудь ориги-

нальным способом. Именно поэтому язык С "идет везде и на всем",

программы, написанные на нем, работают эффективно, и их можно пе-

реносить с одного компьютера на другой.

Большинство языков программирования созданы для решения оп-

ределенного круга задач. В них не только не хватает определенных

типов данных и функций, но и много лишнего с точки зрения челове-

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

зированные типы данных или операторы, требующие нетривиальной

поддержки, затрудняют изучение языка и мешают вашей работе, если

вы ими не собираетесь пользоваться. Поэтому С, в котором нет ни-

чего лишнего, популярен среди широкого круга программистов. Соот-

ветствующие библиотеки могут добавить к средствам языка специали-

зированные функции для работы со строками, файлами, списками, ус-

тройствами ввода-вывода, математическими объектами и т.д. Остает-

ся только выбрать то, что нужно лично вам. Заголовочные файлы об-

легчают использование библиотек, предоставляют полезные типы дан-

ных, глобальные переменные, макроопределения... Они во многом ус-

траняют противоречие между эффективностью программы и удобством

использования библиотечных функций. Они также позволяют не повто-

рятся и не писать по нескольку раз одно и тоже в различных прог-

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

мирования, он имеет возможности низкого уровня, позволяющие "иг-

рать без правил". В зависимости от устройства и операционной сис-

темы вашей машины вы можете "влезть" в видеопамять или использо-

вать системные программы, находящиеся в оперативной памяти.

В любом случае вы можете рассматривать код собственной прог-

раммы как данные, а массив данных как код функции, квадратную

матрицу как вектор, а текст как бинарное дерево. Что бы ни нахо-

дилось в памяти - это всего лишь последовательная цепочка чисел.

Если вы не боитесь риска - можете делать все, что вам вздумается.

Современные прграммисты выбирают С не только из-за его преи-

муществ. В настоящее время мы имеем дело с цепной реакцией: чем

больше написано на С, тем больше на нем напишут еще. Это одна из

причин, почему язык С++ сохраняет С в качестве подмножества.

По мнению автора С++, Бьерна Страуструпа, различие между

идеологией С и С++ заключается примерно в следующем: программ на

С отражает "способ мышления" процессора, а С++ - способ мышления

программиста. Отвечая требованиям современного программирования,

С++ делает акцент на разработке новых типов данных, наиболее пол-

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

приложения. На С пишут библиотеки функций, С++ позволяет созда-

вать библиотеки классов. Класс является ключевым понятием С++.

Описание класса содержит описание данных, требующихся для пред-

ставления объектов этого типа, и набор операций для работы с по-

добными объектами.

В отличие от традиционных структур С или Паскаля, членами

класса являются не только данные, но и функции. Функции-члены

класса имеют привилегированный доступ к данным внутри объектов

этого класса и обеспечивают интерфейс между этими объектами и ос-

тальной программой. При дальнейшей работе совершенно не обяза-

тельно помнить о внутренней структуре класса и мехагизме работы

"встроенных функций". В этом смысле класс подобен электрическому

прибору - мало кто знает о его устройстве, но все знают, как им

пользоваться.

Часто в целях повышения эффективности и упрощения структуры

программы приходится заставлять ее работать с разнородными объек-

тами так, как если бы они имели один и тотже тип. Например, ок-

ружность и квадрат естественно рассматривать как варианты геомет-

рической фигуры. Полезно составлять списки фигур, нарисованных на

экране, или функций, которые их размножают, двигают и т.д. О точ-

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

ких фигур "не знает", что в нем находится - отрезки или звездоч-

ки. Не знает этого и компилятор. Но все время, пока вы рисуете

эти объекты, неизбежно приходится "помнить", что они из себя

представляют. Конечно, возможности низкого уровня позволяют "за-

бывать" и "вспоминать" когда и как нам заблагорассудится, но при

этом компилятор теряет контроль над осмысленностью действий.

Использование производных классов и виртуальных функций поз-

воляет избежать рискованной техники и не заботится о том, в ка-

кой форме объект типа "геометрическая фигура" хранит информацию о

том, круг он или квадрат. (Кроме возможностей ООП, создание ти-

пов данных "треугольник" или "квадрат" как производные от базово-

го класса "геометрическая фигура" отражает логическую связь поня-

тий). Виртуальные функции, по существу, определяют, что именно

можно делать с объектом, а не то, как это делать. Создавая класс

"геометрическая фигура", мы можем включить в него виртуальные

функции рисования, увеличения, поворота. С использованием этих

функций можно создать еще один член класса.

Затем можно разработать библиотеку программ интерактивной

графики, снабдив ее средствами диалого, функциями вроде дополне-

ния некоторой области экрана одинаковыми геометрическими фигура-

ми и т.д. Библиотечные функции будут вызывать функции-члены клас-

са "геометрическая фигура": рисования, движения, поворота,увели-

чения. А после того, как мы все это напишем, откомпилируем, спря-