ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Модулі та об'єкти в мові Турбо Паскаль 7.0
         

     

    Інформатика, програмування

    Міністерство освіти Російської Федерації

    Митний коледж

    Оренбурзький Державний Аграрний Університет

    Бузулуцькому представництво

    Курсова робота < p> з дисципліни "Основи алгоритмів та програмування"

    Модулі та об'єкти в мові Турбо Паскаль 7.0

    Керівник роботи

    ________________Сімонова С.В.

    "______"________________ 2002р.

    Виконавець

    Студент гр. 34 АСОІ і У

    ______________Кіслінскій С.В.

    "______"________________ 2002р.

    Бузулук 2002

    Зміст < p> Вступ ... .............................................. ..............< br>................................. стор 3

    1 Модулі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .......... стор 4

    1.1 Структура модулів ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ........... стор 6

    1.2 Заголовок модулів і зв'язок модулів один з одним ... ... .... ... Стор 8

    1.3 Інтерфейсна частина ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 9

    1.4 частина, що виконується ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 10

    1.5 ініціює частина ... ... ... ... ... ... ... ... ... .... ... ... ... ... ... ... стор 11

    1.6 Компіляція модулів ... ... ... ... ... ... ... ... ... ... ... ... ... ....... ... стор 12

    1.7 Доступ до оголошеним в модулі об'єктів ... ... ... ... ... .......... стор 14

    1.8 Стандартні модулі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 15

    2 Об'єкти ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. стор 17

    2.1 Основні принципи ООП ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 19

    2.2 Інкапсуляція ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... Стор 20

    2.3 Спадкування ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 22

    2.4 Поліморфізм ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 24

    Висновок ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 26

    Список використаних джерел ... ... ... ... ... ... ... ... ... ... ... ... ... .. стор 27

    Додаток А ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... стор 28

    Введення

    У 1992 році фірма Borland International випустила два пакетипрограмування на використанні мови Паскаль, - Borland Pascal 7.0 і
    Turbo Pascal 7.0.

    Пакет Borland Pascal 7.0 враховує багато новітні досягнення впрограмування та практиці створення програм і включає в себе три режимироботи: у звичайному режимі операційної системи MS DOS, у захищеному режимі
    MS DOS та в середовищі Windows. Володіючи розширеними можливостями, пакет Borland
    Pascal 7.0 проте вимагає для використання всіх своїх можливостейдосить велику пам'ять - приблизно 30 Мбайт на жорсткому диску і не менш 2
    Мбайт оперативної пам'яті.

    Пакет Turbo Pascal 7.0 має обмежені можливості ідозволяє працювати тільки в звичайному режимі MS DOS. Початківцюпрограмісту, мабуть, доцільно почати вивчення мови та середовищасаме з цього пакета.

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

    середу програмування дозволяє створювати тексти програм,компілювати їх, знаходити помилки й оперативно їх виправляти, компонуватипрограми з окремих частин, включаючи стандартні модулі, налагоджувати івиконувати налагоджену програму.

    У даній роботі будуть описані основні можливості мови, робота вінтегрованому середовищі, набір стандартних модулів.

    Паскаль (чудовий мова програмування, який щодопростий у вивченні, досить ясний і логічний і, будучи першим вивчаються мовоюпрограмування, привчає до хорошого стилю. Паскаль виховує дисциплінуструктурного програмування та програмування взагалі краще, ніж іншімови програмування, такі, як, наприклад Бейсік.

    Паскаль - гнучкий і розвинений відносно типів даних мова.
    Привабливі його рекурсивні можливості, а також підтримка технологіїоб'єктно-оріентрованного програмування.
    1 Модулі

    Модуль (це автономно компільовані програмна одиниця, що включаєв себе різні компоненти розділу описів (типи, константи, змінні,процедури та функції) і, можливо, деякі виконуються операториініціації частини.

    Наявність модулів в Turbo Pascal дозволяє програмувати іналагоджувати програму по частинах, створювати бібліотеки підпрограм і даних,скористатися можливостями стандартних модулів, практичнонеобмежено збільшувати кодову (що містить коди команд) частина програми.

    Модуль містить опису типів даних, змінних і інших об'єктів,а також підпрограми, які використовуються в різних програмах.
    Підпрограму має сенс включати до складу модуля в тому випадку, коли вонареалізує дію, яку доводиться виконувати досить часто.
    Підпрограми, що входять в модуль, можна написати, налагодити і відкомпілюватиодин раз, а використовувати багато разів.

    Модулі являють собою прекрасний інструмент для розробкибібліотек прикладних програм і потужний засіб модульногопрограмування. Важлива особливість модулів полягає в тому, щокомпілятор Турбо Паскаля розміщує їх програмний код в окремому сегментіпам'яті. Максимальна довжина сегмента не може перевищувати 64 Кбайта, однаккількість одночасно використовуваних модулів обмежується лише доступноюпам'яттю, що дає можливість створювати дуже великі програми.

    Доступ до описів, функцій та процедур модуля забезпечуєоператор використання Uses, в якому вказується ім'я модуля. Цейоператор розміщується в розділі описів програми, відразу після заголовка.
    Якщо в програмі використовується не один модуль, а декілька, необхідновказати імена всіх модулів, перерахувавши їх через кому. Виняткомє модуль System, посилання на який є необов'язковим. Цей модульмістить, зокрема, процедури файлового введення/виводу, процедури іфункції для роботи з рядками і деякі інші.

    Модуль починається заголовком unit unit_name; де unit_name - ім'я модуля, яке вибирається відповідно доправилами Паскаля. Файл, що містить модуль, зобов'язаний мати те ж ім'я, що ймодуль.

    Розберемо як приклад модуль з описом гіперболічнихфункцій, яких немає в числі вбудованих функцій мови Паскаль, але ціфункції досить часто з'являються у прикладних задачах, і тому маєсенс включити їх до складу бібліотечного модуля. Доступ до функцій з цьогомодуля забезпечує оператор використання Uses, в якому вказується ім'ямодуля. Отже, сам модуль виглядає наступним чином.

    ($ N +) unit hyp_fun; interface type

    Float = Extended; function sinh (x: Float): Float; function cosh (x: Float): Float; function tanh (x: float): Float; implementation var t: Float; function sinh (x: Float): Float; begin t: = Exp (x); sinh: = 0.5 * (t - 1.0/t); end; function cosh (x: Float): Float; begin t: = Exp (x); cosh: = 0.5 * (t + 1.0/t); end; function tanh (x: Float): Float; begin t: = Exp (2.0 * x); tanh: = (t - 1.0)/(t + 1.0); end; end.

    Зарезервовані слова interface і implementation тут граютьважливу роль. Кожен модуль має частини (секції), озаглавлені цимисловами. Секція interface (вона називається інтерфейсній секцією) міститьопису констант, типів, змінних і процедур, доступних з викликаєпрограми або модуля. Секція implementation (секція реалізації) міститьвихідний код програми. Вона може також містити локальні описи, такіяк var t: Real; з нашого прикладу.

    Кожен модуль починається з зарезервованого слова unit ізакінчується словом end, за який слід крапка. Для цього end НЕпотрібно відповідного слова begin, хоча можна і поставити йогобезпосередньо перед end. Оператор type на початку нашого модуля визначаєтип Float, який в даному випадку еквівалентний типу Extended. Вказавши,праворуч від знаку рівності будь-який інший еквівалентний тип, можна змінититочність обчислення гіперболічних функцій.

    1.1 Структура модулів

    Модуль має наступну структуру:

    | Unit module_name |
    | Interface |
    | Інтерфейсна секція |
    | Implementation |
    | Секція реалізації |
    | Секція ініціалізації |

    Рис. 1. Структура модуля

    Тут Unit (зарезервоване слово (одиниця), починає заголовокмодуля; name (ім'я модуля (правильний ідентифікатор). Interface --інтерфейсна секція - містить ті описи типів, змінних і іншихоб'єктів даних, які можна використовувати в інших програмах абомодулях. Секція реалізації починається з зарезервованого словаimplementation. Всі описи, що містяться в секції реалізації, єлокальними, їх область дії - даний модуль. Тут же міститисяповні описи функцій і процедур модуля. Остання частина модуля - секціяініціалізації. Вона може бути порожньою і містити тільки зарезервованеслово end або включати в себе виконуються оператори, які виконуютьнеобхідні дії з ініціалізації (наприклад, за привласнення початковихзначень змінним) модуля.

    В якості прикладу розглянемо модуль func1/см. додаток А /,розширює обчислювальні можливості Турбо Паскаля, тому що він міститьфункції, відсутні в стандартних модулях системи. Серед «стандартних»функцій - синус (Sin), косинус (Cos), арктангенс (ArcTan), експонента
    (Exp), натуральний логарифм (Ln), квадрат числа (Sqr) і квадратний коріньз нього (Sqrt). У модулі func1 є тангенс (Tan), арксинус (ArcSin) іарккосинус (ArcCos), функції перекладу градусної заходи в радіани і навпаки
    (Degrees_to_Radians, Radians_to_Degrees), набір гіперболічних функцій
    (Sinh, Cosh, Tanh), а також десятковий логарифм (Log10) і довільнаступінь числа (Power).

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

    У нашому прикладі інтерфейсна секція містить опису речовоготипу float, а також константу Infinity - «нескінченно велике значення».
    Нескінченність тут розуміється, зрозуміло, у сенс машинної арифметики,як значення, близьке до максимально допустимого для типу Extended. Даліслідують заголовки функцій модуля.

    Секція реалізації містить константи, що використовуються в підпрограма -функціях. Потім ідуть повні описи функцій. Обчислення тангенсавикористовує «класичне» визначення цієї функції як відношення синуса докосинус. Враховано також наближення значення тангенса до нескінченності припевних значеннях аргументу. У цьому випадку функція повертає
    «Машинну нескінченність».

    При програмуванні арксинус і арккосинус слід враховувати те,що ці функції - багатозначні. У нашому випадку обчислюється «головнезначення », яке лежить в інтервалі [- (/ 2, (/ 2] (для арксинус) або [0, (] (дляарккосинус) радіан. Для цього використовуються формули, відомі з курсуелементарної математики.

    При обчисленні гіперболічних функцій враховується теобставина, що вже при відносно невеликих значеннях аргументуобчислення експоненти призводить до арифметичного переповнення. У цьомувипадку функція повертає «нескінченне» значення.

    1.2 Заголовок модуля та зв'язок модулів один з одним

    Заголовок модуля складається з зарезервованого слова Unit (наступного за ним ім'я модуля. Для правильної роботи середовища Турбо Паскаля іможливості підключення засобів, що полегшують розробку великих програм,це ім'я повинне збігатися з ім'ям дискового файлу, в який поміщаєтьсявихідний текст модуля. Якщо, наприклад, маємо заголовок

    Unit Global; то вихідний текст відповідного модуля повинен розміщуватися удисковому фото GLOBAL.PAS. Ім'я модуля служить для його зв'язки з іншимимодулями й основною програмою. Цей зв'язок встановлюється спеціальнимпропозицією

    Uses

    Тут Uses - зарезервоване слово (використовує);

    - список модулів, з якими встановлюється зв'язок;елементами списку є імена модулів, відокремлюються один від одногокомами, наприклад:

    Uses CRT, Graph, Global:

    Якщо оголошення Uses ... використовується, воно повинне відкривати розділописів основної програми. Модулі можуть використовувати інші - модулі.
    Пропозиція Uses в модулях може випливати або відразу за зарезервованимсловом Interface, або відразу за словом Implementation.

    1.3 Інтерфейсна частина

    Через інтерфейс здійснюється взаємодія основної програми змодулем (модуля з модулем). В інтерфейсі вказуються константи, типи,змінні, процедури та функції, які можуть бути використані основнийпрограмою (модулем) при виклику цього модуля.

    Інтерфейсна частина відкривається зарезервованим словом Interface. Уцій частині містяться оголошення всіх глобальних об'єктів модуля (типів,констант, змінних та підпрограм), які мають стати доступнимиосновної програми і/або інших модулів. При оголошенні глобальнихпідпрограм в інтерфейсній частині вказується тільки їхній заголовок, наприклад:

    Unit Cmplx;

    Interface

    type

    complex = record

    re, Im: real

    end;

    Procedure AddC (x, у: complex; var z: complex);

    Procedure MulC ( x, у: complex; var z: complex);

    Якщо тепер в основній програмі написати пропозицію

    Uses Cmplx;то в програмі стануть доступними тип Complex і дві процедури (AddC і МulCз модуля Cmplx.

    Відзначимо, що оголошення підпрограм в інтерфейсній частиниавтоматично супроводжується їхньою компіляцією з використанням далекого;моделі пам'яті. Таким чином, забезпечується доступ до підпрограм зосновної програми й інших модулів.

    Слід врахувати, що всі константи і змінні, оголошеніінтерфейсній частині модуля, так само як і глобальні константи і змінніосновної програми, зберігаються компілятором Турбо Паскаля в загальний сегментданих (максимальна довжина сегмента 65536 байт). Порядок появирізних розділів оголошень і їх кількість може бути довільним. Якщов інтерфейсній частини оголошуються зовнішні підпрограми або підпрограми вмашинних кодах, їх тіла (тобто зарезервоване слово External, в першійвипадку, і машинні коди разом зі словом Inline (у другому) повинніслідувати відразу за їх заголовками в виконуваної частини модуля (не вінтерфейсній). У інтерфейсній частини модулів не можна використовувати випереджаючийопис.

    У інтерфейсах різних модулів неприпустимо циклічний зверненняодин до одного, тому що компілятор в цьому випадку не може встановити зв'язків.

    1.4 частина, що виконується

    частина, що виконується включає всі підпрограми модуля. Вона може такожвключати локальні мітки, константи, типи і змінні.

    частина, що виконується починається зарезервованим словом
    Implementation і містить опису підпрограм, оголошених в інтерфейснійчастини. У ній можуть оголошуватися локальні для модуля об'єкти --допоміжні типи, константи, змінні і блоки, а також (мітки, якщовони використовуються в ініціації частини.

    Опису підпрограми, оголошеної в інтерфейсній частині модуля, увиконуваної частини повинен передувати заголовок, у якому можна опускатисписок формальних змінних (і тип результату для функції), так як вонивже описані в інтерфейсній частини. Але якщо заголовок підпрограми наводитьсяу повному вигляді, тобто зі списком формальних параметрів і оголошеннямрезультату, він повинен збігатися із заголовком, оголошеним в інтерфейснійчастини, наприклад:

    Unit Cmplx;

    Interface type complex = record; re, im: Real; end;

    Procedure AddC (x, у: complex ; var r: complex);

    Implementation

    Procedure AddC; begin z.re: = x.re + y.re; z, im: = x.Im * y. im; end; end.

    Локальні змінні і константи, а також всі програмні коди,породжені при компіляції модуля, поміщаються в загальний сегмент пам'яті.

    На відміну від інтерфейсів модулів у виконавчих частинах модулівдопустимо циклічний звернення один до одного, тому що все одно взаємодіяздійснюється через інтерфейси, і тут не виникає проблеми звстановленням необхідних зв'язків.

    1.5 ініціює частина

    У деяких випадках перед зверненням до модуля слід провести йогоініціалізацію (наприклад, встановити зв'язок з тими чи іншими файлами здопомогою процедури Assign, ініціалізувати якісь змінні і т.д.).
    Необхідні дії можна виконати в секції ініціалізації модуля. Цясекція починається словом begin, після якого йдуть виконуються оператори,а потім поміщається слово end. (з крапкою), наприклад: begin

    Assign (F1, 'FILE1.DAT'); end.

    У ініціації частини розміщуються виконуються оператори, які містятьлише певну частину програми. Ці оператори виконуються до передачіуправління основній програмі і звичайно використовуються для підготовки їїроботи. Наприклад, у них можуть ініціюватися змінні, відкриватися потрібніфайли, встановлюватися зв'язки з іншими ПК по комунікаційних каналах ітощо:

    Unit FileText;

    Interface

    Procedure Prlnt (t: string);

    Implementation var f: Text ; const name = 'OUTPUT. TXT ';

    Procedure Print; begin

    WriteLn (f, s); end;

    (Початок ініціації частини:) begin

    Assign (f, name);

    Rewrite (f);

    (Кінець ініціації частини:) end.

    Слід мати на увазі, що оператори секції ініціалізації виконуютьсяєдиний раз у момент запуску програми.

    Якщо ініціалізація модуля не потрібна, то в секції міститься лишеслово end.

    1.6 Компіляція модулів

    У середовищі Турбо Паскаля є засоби, керуючі способомкомпіляції модулів і полегшують розробку великих програмних проектів. УЗокрема, визначені три режими компіляції: COMPILE, Макєєв і BUILD. Режимивідрізняються тільки способом зв'язку, компіляції модуля або основноїпрограми з іншими модулями, оголошеними в пропозиції USES.

    При компіляції модуля або основної програми в режимі COMPILE всезгадуються упропозиції USES модулі повинні бути попередньовідкомпілювати, і результати компіляції поміщені в однойменні файли зрозширенням. TPU. Наприклад, якщо в програмі (модулі) є пропозиція

    Uses Global;то на диску в каталозі, оголошеному опцією UNIT DIRECTORIES, вже повинензнаходитися файл GLOBAL.TPU. Файл з розширенням TPU (від англ. Turbo Pascal
    Unit) створюється в результаті компіляції модуля.

    У режимі МАКЕЄВ компілятор перевіряє наявність TPU-файлів для кожногооголошеного модуля. Якщо який-небудь із файлів не виявлений, системанамагається відшукати однойменний файл з розширенням. PAS, тобто файл із вихіднимтекстом модуля, і, якщо. PAS-файл знайдений, приступає до його компіляції.
    Крім того, в цьому режимі система стежить за можливими змінамивихідного тексту будь-якого використовуваного модуля. Якщо в PAS-файл (вихіднийтекст модуля) внесені які-небудь зміни, то незалежно від того, чи євже в каталозі відповідний TPU-файл чи ні, система здійснює йогокомпіляцію перед компіляцією основної програми. Більше того, якщо змінивнесені в інтерфейсну частину модуля, то будуть перекомпіліровать також і всеінші модулі, які звертаються до нього. Режим Макєєв, таким чином, істотнополегшує процес розробки великих програм з безліччю модулів:програміст позбавляється від необхідності стежити за відповідністюіснуючих TPU-файлів їх початкового тексту, тому що система робить цеавтоматично.

    У режимі BUILD існуючі TPU-файли ігноруються, і системанамагається відшукати (і компілювати) відповідний PAS-файл для кожногооголошеного в пропозиції USES модуля. Після компіляції в режимі BUILDпрограміст може бути впевнений у тому, що враховані всі зроблені ним змінив будь-якому з модулів.

    Підключення модулів до основної програми і їхня можлива компіляціяздійснюються в порядку їх оголошення в пропозиції USES. При переході дочергового модулю система попередньо відшукує всі модулі, на яківін посилається. Посилання модулів один на одного можуть утворювати деревоподібнуструктуру будь-якої складності, однак забороняється явне або непряме зверненнямодуля до самого себе. Наприклад, недопустимі такі оголошення:

    Unit A; Unit B;

    Interface Interface

    Uses S; Uses A;

    Implementation Implementation end. end.

    Це обмеження можна обійти, якщо «сховати» пропозицію USES ввиконувані частини залежних модулів:

    Unit A; Unit B;

    Interface Interface

    Implementation Implementation

    Uses B; Uses A; end . end.

    Справа в тому, що Турбо Паскаль дозволяє посилання на часткововідкомпілювалися модулі, що приблизно відповідає випереджальномуопису підпрограми. Якщо інтерфейсні частини будь-яких двох модулівнезалежні (це неодмінна умова!), Турбо Паскаль зможеідентифікувати всі глобальні ідентифікатори в кожному з модулів, післячого відкомпілює тіла модулів звичайним способом.

    1.7 Доступ до оголошеним в модулі об'єктах

    Нехай, наприклад, ми створюємо модуль, що реалізує арифметикукомплексних чисел (нагадаю, що така арифметика ні в стандартному Паскалі,ні в Турбо Паскалі не передбачена). На жаль, у Турбо Паскалі не можнавикористовувати функції, значення яких мали б структурований тип
    (запис, наприклад), тому арифметика комплексних чисел реалізуєтьсячотирма процедурами:

    (UNIT Cmplx);

    INTERFACE

    {................... ..........................}

    type

    complex = record;

    re, Im: real;

    end

    Procedure AddC (x, у: complex: var z:complex);

    Procedure SubC (x, у: complex; var z:complex);

    Procedure MulC (x, у: complex; var z:complex);

    Procedure DIvC (x, у: complex; var z:complex);

    const

    з: complex = (re: 0.1; Im: -1);

    IMPLEMENTATION

    (. .........-. - .......... - - - --...... )

    PROCEDURE AddC;

    begin

    z.re: = x.re + y.re;

    z. Im: = x. im + у. Im;

    end (AddC);

    PROCEDURE SubC;

    begin

    z. Re: = x.re - y. re;

    z. im: = x.Im - y. Im;

    end (SubC);

    PROCEDURE MulC;

    begin

    z.re: = x.re * y. re - x.im *y.im;

    z.lm: = x.re * y.im + x.im *y.re;

    end (MulC);

    PROCEDURE DivC;

    var zz: real;

    begin

    zz: = sqr (y.re) + sqr (y.im);

    z.re: = (x.re * y.re + x.im *y.im)/zz;

    z.lm: = (x.re * y.im - x.lm *y.re)/zz;

    end (DIvC):

    END.

    Текст цього модуля слід помістити в файл CMPLX.PAS. Його можнавідкомпілювати, створивши TPU-файл, після чого програмі стануть доступніпроцедури з нової бібліотеки.

    1.8 Стандартні модулі

    У Турбо Паскалі є вісім стандартних модулів, в якихміститься велика кількість різноманітних типів, констант, процедур і функцій.
    Цими модулями є SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBO3 і
    GRAPHS. Модулі GRAPH, TURBOS і GRAPHS містяться в однойменних ТPU-файлах,інші входять до складу бібліотечного файлу TURBO.TPL. Лише один модуль
    SYSTEM підключається до будь-якої програми автоматично, всі іншістають доступні тільки після вказівки їхніх імен у списку, наступного засловом USES. Нижче наводиться коротка характеристика стандартних модулів.
    Модуль SYSTEM (до нього входять всі процедури і функції стандартного Паскаля,а також вбудовані процедури і функції Турбо Паскаля, які не увійшли доінші стандартні модулі (наприклад, INC, DEC, GETDIR і т.п.). Як вжезазначалося, модуль SYSTEM підключається до будь-якої програми незалежно відтого, оголошено чи він в пропозиції USES чи ні, тому його глобальніконстанти, змінні та підпрограми вважаються вбудованими в Турбо Паскаль.
    Модуль PRINTER робить доступним висновок текстів на матричний принтер. У ньомувизначається файлова мінлива LST типу TEXT, яка зв'язується злогічним пристроєм PRN. Після підключення модуля може бути виконана,наприклад, така програма:

    Uses Printer; begin

    WriteLn (LST, 'Турбо Паскаль');

    end.

    Модуль CRT. У ньому зосереджені процедури та функції, що забезпечуютькерування текстовим режимом роботи екрану. За допомогою що входять в модульпрограм можна переміщати курсор в довільну позицію екрану, міняти колірсимволів, що виводяться і навколишнього їх фону, створювати вікна. Крім того, вмодуль включені також процедури «сліпого» читання клавіатури і управліннязвуком. Модуль GRAPH містить великий набір типів, констант, процедур іфункцій для управління графічним режимом роботи екрану. За допомогоюпідпрограм, що входять в модуль GRAPH, можна створювати різноманітніграфічні зображення і виводити на екран текстові написи стандартнимиабо розробленими програмістом шрифтами. Підпрограми модуля GRAPH післявідповідної установки можуть підтримувати різні типи апаратнихграфічних засобів. Налаштування на наявні в розпорядженні програмістатехнічні засоби графіки здійснюється спеціальними програмами --драйверами, які не входять до бібліотечного файл GRAPH.TPU, алепоставляються разом з ним. Модуль DOS. У модулі зібрані процедури іфункції, що відкривають доступ програмам до засобів дискової операційноїсистеми MS DOS. Модуль OVERLAY. Він необхідний при розробці громіздкихпрограм з перекриттями. Як вже говорилося, Турбо Паскаль забезпечуєстворення програм, довжина яких обмежується лише доступної оперативноїпам'яттю ПК. Для більшості IBM-сумісних ПК доступна програмі пам'ятьстановить близько 580 Кбайт (без інструментальних оболонок типу Norton
    Commander і без самої системи Турбо Паскаль). Пам'ять такого розмірудостатня для більшості застосувань, тим не менше, використання програмз перекриттями знімає це обмеження. Два бібліотечних модуля TURBO3 і
    GRAPH3 введені для сумісності з ранньої версією 3.0 системи Турбо
    Паскаль.

    2 Об'єкти

    Базовим в об'єктно-орієнтованому програмуванні є поняттяоб'єкта. Об'єкт має певні властивості. Стан об'єкта задаєтьсязначеннями його ознак. Об'єкт «знає», як вирішити певні завдання,тобто має у своєму розпорядженні методами рішення. Програма, написана звикористанням ООП, складається з об'єктів, які можуть взаємодіятиміж собою.

    Раніше зазначалося, що програмна реалізація об'єкта представляєсобою об'єднання даних та процедур їх обробки. У Турбо Паскалі єтип object, який можна вважати узагальненням структурного типу record.
    Змінні об'єктного типу називаються примірниками об'єкта. Тут потрібнауточнення - примірник лише формально можна назвати змінної. Його описдається в пропозиції опису змінних, але в дійсності екземпляр --щось більше, ніж звичайна змінна.

    На відміну від типу «запис», об'єктний тип містить не лише поля,описують дані, а також процедури та функції, опису якихмістяться в описі об'єкта. Ці процедури і функції називаються методами.
    В описі об'єкта фактично містяться лише шаблони звернень до методів,які необхідні компілятору для перевірки відповідності кількостіпараметрів та їх типів при зверненні до методів. Ось приклад опису об'єкту: type

    Location = object

    X, Y: Integer; procedure Init (InitX, Inity: Integer); function GetX: Integer; function GetY: Integer; end ;

    Тут описується об'єкт, який може використовуватися в подальшому,скажімо, в графічному режимі і який призначений для визначенняположення на екрані довільного графічного елементу. Об'єкт описуєтьсяза допомогою зарезервованих слів object ... end, між якими знаходятьсяопису полів і методів. У нашому прикладі об'єкт містить два поля длязберігання значень графічних координат, а також опису процедури і двохфункцій - це методи даного об'єкта. Процедура призначена для завданняпервинного положення об'єкта, а функції - для зчитування йогокоординат.

    зарезервоване слово private дозволяє обмежити доступ до полівоб'єкта. У наступному прикладі доступ до змінних X і Y можливий тількичерез методи об'єктного типу Location: type

    Location = object procedure Init (InitX, Inity: Integer); function GetX: Integer; function GetY: Integer; private

    X, Y: integer ; end;

    У секції private можуть знаходиться і методи об'єкта.

    Повний опис методів, тобто опис їх реалізації, повиннезнаходиться після опису об'єкту. Імена методів складові і складаються зімені об'єкта та імені методу, розділених крапкою: procedure Location. Init (InitX, Inity: Integer); begin

    X: = InitX;

    Y: = InitY; end;

    fuction Location. GetX: Integer; begin

    GetX: = X; end;

    fuction Location. GetY: Integer; begin

    GetY: = Y; end;

    Після того як об'єкт описаний, в програмі можна використовувати йогоекземпляри, тобто змінні зазначеного об'єктного типу: var

    GrMarket: Location;

    2.1 Основні принципи ООП

    Елементи об'єктно-орієнтованого програмування з'явилися впочатку 70-х в мові моделювання Симула, потім отримали свій розвиток, і вНині ООП належить до числа провідних технологійпрограмування. У Турбо Паскалі підтримка цієї технології з'явилася,починаючи з версії 5.5 (1989 рік).

    Основна мета ООП, як і більшості інших підходів допрограмування, - підвищення ефективності розробки програм. Ідеї ООПвиявилися плідними і знайшли застосування не тільки в мовахпрограмування, але і в інших областях Computer Science, наприклад, угалузі розробки операційних систем.

    Поява об'єктно-орієнтованого програмування було пов'язано зтим спостереженням, що комп'ютерні програми являють собою описдій, які виконуються над різними об'єктами. У ролі останніх можутьвиступати, наприклад, графічні об'єкти, записи в базах даних абосукупності числових значень. У традиційних методах програмуваннязміна даних або правил і методів їх обробки часто призводило донеобхідність значної зміни програм. Будь-яке істотнезміна програми - це велика неприємність для програміста, тому щопри цьому збільшується ймовірність помилок, внаслідок чого зростаєчас, необхідний для «доведення» програми. Використання ООП дозволяєвийти з такої ситуації з мінімальними втратами, зводячи необхіднумодифікацію програми до її розширення і доповнення. Одразу зауважу, що ООПне є панацеєю від всіх бід програмістських, але його цінність якпередової технології програмування безсумнівна. Вивчення ідей і методівоб'єктно-орієнтованого програмування - не дуже просте завдання,однак освоєння ООП може істотно спростити розробку і налагодженняскладних програм.

    Ми вже звикли використовувати у своїх програмах процедури та функціїдля програмування тих складних дій з обробки даних, якідоводиться виконувати багаторазово. Використання підпрограм свого часубуло важливим кроком на шляху до підвищення ефективності програмування.
    Підпрограма може мати формальні параметри, які при зверненні до неїзамінюються фактичними параметрами. У цьому випадку є небезпека викликупідпрограми з неправильними даними, що може призвести до збою програми іїї аварійного завершення при виконанні. Тому природним узагальненнямтрадиційного підходу до програмування є об'єднання даних іпідпрограм (процедур і функцій), призначених для їх обробки.

    2.2 Інкапсуляція

    У Турбо Паскалі засоби об'єктно-орієнтованого програмуванняпов'язані з трьома зарезервованими словами: OBJECT CONSTRUCTOR і DESTRUCTORі двома стандартними директивами: PRIVATE і VIRTUAL.

    зарезервоване слово OBJECT використовується для опису об'єкту.
    Опис об'єкта має міститися в розділі опису типів, наприклад: type

    Tpoint = object

    X, Y: Integer; (Координати точки)

    Color: word; (Колір крапки)

    Visible: Boolean; (Ознака світності)

    Procedure Setlocation (NewX, NewY: integer);

    (Визначає нове положення, точки на екрані)

    Procedure SetCoforfNewColor: word); (Встановлює колір точки)

    Procedure SetVislble (VIS: Boolean);

    (Виводить або гасить точку)

    Procedure GetLocatIon (var Xloc, YLoc: integer);

    (Повертає координати точки)

    Function GetColor: word;

    (Повертає колір точки)

    Function GetVislble: Boolean;

    (Повертає ознака світності точки)

    end; (Кінець опису об'єкту ТРOINT)

    В цьому прикладі описується об'єкт TPOINT, що представляє собоюдані та методи (процедури та функції), необхідні для роботи зграфічними крапками на екрані ПК. Зауважимо, що інкапсульованими об'єктпроцедури і функції називаються методами. Як бачимо, кожна точкахарактеризується деяким набором даних (своїми координатами X та У, кольором
    COLOR і ознакою світності VISIBLE). Над цими даними визначені всінеобхідні алгоритмічні дії. За допомогою цих змінних можназдійснювати всі передбачені, в об'єкті дії, наприклад, длязмінних типу TPOINT можна висвітити або погасимо, будь-яку точку,перемістити її по екрану, змінити колір.

    Неважко помітити, що опис об'єкта і використання об'єктнихзмінних багато в чому схоже на опис і використання записів:інкапсульованими в об'єкті дані і методи стають доступні за допомогоюоператора приєднання WITH або за допомогою складових

    імен, наприклад: if Point.GetVisible then Polnt.SetVisible (False);

    При описі об'єкта спочатку, описуються всі інкапсульованими вньому дані, а потім - методи доступу до цих даних. В якості методіввикористовуються процедури і функції, а також конструктори і деструктори.

    Таким чином, вказівка методів при описі об'єкта подібно до їхвипереджальному опису. Оскільки дані і методи інкапсульовані в одномуоб'єкті, всі дані автоматично стають глобальними, по відношенню добудь-яким методам і можуть використовуватися в них довільним чином. Точнішекажучи, будь-який метод об'єкта працює з невидимим оператором WITH,що забезпечує йому доступ до всіх полях (як ми побачимо далі, поля можутьслідувати в оголошенні типу і після оголошення методу і в цьому сенсі небути для нього глобальними). При зверненні до методу йому передаєтьсяособливий ідентифікатор SELF, що представляє собою узагальнене ім'я екземпляраоб'єкта. Будь-який метод може використовувати ідентифікатор SELF, щоб явновказати на що належить об'єкту метод або поле. Наприклад: ТзОВ type = record

    XY: integer;

    end;

    TPoint = object

    X, Y: integer;

    Procedure lnit (Coo: TCoo);

    end;

    Procedure TPofntfCoo: TCoo):

    begin

    with Coo do

    begin

    Self.X: = X;

    Self.Y: = Y;

    end;

    end;

    2.3 Спадкування

    Будь-який об'єкт може бути оголошений нащадком раніше описаного об'єкта.
    У цьому випадку він успадковує всі дані і методи об'єкта-батька і можедоповнювати їх своїми даними і методами. При оголошенні об'єкта-нащадка засловом OBJECT в круглих дужках вказується ім'я об'єкта-батька. В об'єктаможе бути скільки завгодно нащадків, але тільки один батько. При оголошенніоб'єкта-нащадка TUNE перераховані лише ті дані і методи, яких бракуєв об'єкті-батьків TPOINT, решта TLINE автоматично успадковує відсвого батька.

    Таким чином, опис об'єкта-нащадка TLINE еквівалентно такомуопису об'єкта TLINE_ANOTHER: type

    TLine_Another = object

    X, Y Integer; (Координати початку лінії)

    Color word; (Колір лінії)

    Visible Boolean; (Ознака світності)

    XE.YE: Integer; (Координати другого кінця)

    Procedure SetLocation (NewX, NewY: integer); < p> (Визначає нове положення початку лінії)

    Procedure SetColor (NewColor: word);

    (Встановлює колір лінії)

    Procedure SetVIsible (Vis: Boolean) ;

    (Виводить або гасить лінію)

    Procedure GetLocation (var XLoc, YLoc: integer);

    (Повертає координати початку лінії) < p> Function GetColor: word;

    (повертає колір лінії)

    Function GetVisible: Boolean;

    (Повертає признак світності лінії)

    Procedure SetLIneLocationfxl.X1, Y1, x2, y2: integer);

    (Визначає нове положення лінії на екрані)

    Procedure GetLineLocatlon ( var x11, y1l, x2l, y2l): integer);

    (Повертає координати лінії)

    Procedure SetLineVJsible (vis: Boolean);

    (Виводить або гасить лінію)) end; (Кінець опису об'єкту TLIne_Another)

    З цього прикладу видно головна перевага успадкування: приописі об'єкта-нащадка вам немає необхідності заново описувати вжещо існують в об'єкті-батьків поля та методи. Нащадок просто використовуєїх потрібним чином для реалізації необхідних від нього дій все, у чомупотребує нащадок, (це описати специфічні для нього поля методи,відсутні в об'єкті-батьків.

    Спадкування поширюється на будь-які об'єкти, в тому числі іоб'єкти-нащадки: якщо як батька вказано ім'я об'єкта, який сампо собі є нащадком, новий об'єкт успадковує всі властивості свогобатька та всі властивості своїх прабатьків. Таким чином, спадкуваннязабезпечує створення дерева споріднених об'єктів.

    Як і будь-яке інше дерево, дерево об'єктів має «корінь» (об'єктщо є предком всіх інших об'єктів ієрархії, і «гілки»породжені від нього нащадки. У міру пересування від кореня до гілок іпереходу з гілки на гілку об'єкти розростаються в своїх розмірах,приєднуючи до себе все нові і нові поля та методи. Якщо ієрархія об'єктівдобре продумана, на кожному її рівні до об'єкта-батькові додаються лишеполя та методи, тому в такому розростанні насправді немаєнічого поганого. Більш того, компонувальник Турбо Паскаля ретельно перевіритьскомпільованій програму і видалить з неї все зайве - у тому числі ввиконувану програму (ЕХЕ-файл) не будуть включені методи, які з якихосьнебудь причин не використовуються в програмі.

    Механізм успадкування (це, мабуть, найпотужніше властивість ООП. Безуспадкування об'єкти перетворюються на просту комбінацію даних іпідпрограм, що не дає якісних переваг в порівнянні зтрадиційними для Паскаля процедурами і модулями. Навпаки, механізмуспадкування дозволяє будувати бібліотеку за принципом «від простого - доскладного ». Вводячи за допомогою успадкування новий об'єкт до своєї бібліотеки,програміст в максимальній мірі використовує вже створені (і, можливо,налагоджені) раніше об'єкти. Такий принцип конструювання програмназивається висхідним програмуванням. На відміну від спадногопрограмування, він не дає можливості поетапного створення програми.
    Дрібні деталі реалізації об'єктів затуляють собою генеральний алгоритм,тому при використанні ООП рекомендується поєднання підходів: методамиспадного програмування генеральний алгоритм розчленовується на рядщодо великих і закінчених у смисловому відношенні фрагментів
    (модулів), а реалізація цих фрагментів може грунтуватися на об'єктно -орієнтованому програмуванні.

    2.4 Поліморфізм

    Об'єкт-нащадок може не тільки доповнювати поля і методи батька, алеі замінювати методи батька на нові (замінювати поля з батьків не можна!).
    Наприклад, замість правила SETLINEVISIBLE

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status