69111

Основні концепції об’єктно-орієнтованої методології програмування. Базові поняття об’єктна-орієнтованого програмування. Класи і об’єкти в мові Pascal

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-09-30

79.5 KB

9 чел.

Лекція 20.Тема: Основні концепції об’єктно-орієнтованої мед отології програмування.

                            Базові поняття об’єктна-орієнтованого програмування.Класи і об’єкти в мові Pascal.

План:

1. Основні концепції об'єктно-орієнтованої методології програмування

2. Базові поняття об'єктно-орієнтованого програмування

3. Класи і об'єкти в мові Раsсаl

1. Основні концепції об'єктно-орієнтованої методології програмування

Методологія об'єктно-орієнтованого програмування виникла як результат природної еволюції мов структурного програмування. 3 погляду цієї методології програма є сукупністю об'єктів, кожен об'єкт є екземпляром певного класу, а класи утворюють ієрархію успадкування [4].

2. Базові поняття об'єктно-орієнтованого програмування

Пояснимо поняття, що були використані у визначенні об'єктно-орієнтованої методології. Об'єкт — це реальна або абстрактна сутність, яка моделює частину навколишньої дійсності. Отже, кожний реальний предмет — це об'єкт. Прикладами реальных об'єктів є автомобіль, літак, завод, людина, матриця, вектор тощо. Ті самі слова: «автомобіль», «літак», «людина» тощо позначають не об'єкти, а класи, коли йдеться не про конкретний автомобіль, літак або людину, а, наприклад, про автомобиль або літак як різновид транспортного засобу і про людину як біологічний вид. Отже, клас є абстракцією множини об'єктів, що мають спільні властивості і поведінку. Транспортний засіб і біологічний вид — це теж класи. Відношення між літаком і транспортним засобом або між видом «homo sapiens» і біологічним видом взагалі є відношенням успадкування, або відношенням «є» (англ. «is а»): літак є різновидом транспортного засобу, вид «homo sapiens» є різновидом біолгічного виду. Коли клас В є різновидом класу А, то А називається класом-предком, В — класом-нащадком.

3 погляду програмування об'єкт складається з атрибутів і методів. Атрибути описують властивості об'єкта у певний момент часу, методи — властиву для об'єкта поведінку. Всі об’єкти, що є екземплярами одного класу, мають однаковий набір атрибутів і методів. Значення атрибутів зберігаються в змінних, а дії методів описуються в процедурах або функціях. Тому клас може бути визначений як набір оголошень змінних-атрибутів і підпрограм-методів. Визначені всередині класу елементи даних називаються змінними-членами класу, процедури і функції – функціями-членами, або методами класу. Оголошення класу називається його інтерфейсом, а опис його методів – реалізацією. Як правило, інтерфейс класу відокремлюється від його реалізації.

Об’єктно-орієнтоване програмування ґрунтується на трьох концепціях: інкапсуляції, успадкування і поліморфізму. Інкапсуляція – це механізм, який дозволяє захистити атрибути й методи від некоректного використання. Згідно з принципами інкапсуляції атрибути класу не можуть бути доступними для екземплярів інших класів безпосередньо. Доступ до атрибутів має здійснюватися лише через методи класу. Наприклад, доступ до двигуна автомобіля можна здійснити лише за допомогою методів «завести», «вимкнути», «перемкнути швидкість» тощо. Саме эавдяки інкапсуляції можна отримати зиск у разі відокремлення інтерфейсу класу від його реалізації. Адже інкапсуляція дає можливість зробити програми, що використовують об'єкти певного класу, незалежними від способу реалізації цього класу.

Успадкування дозволяє систематизувати подібні класи на підставі їх спільних властивостей. Клас, що містить атрибути, методи, спільні для групи подібних один до одного класів, називається базовим класом, або класом-предком. Класи, що успадковують властивості і функціональні особливості базового класу, називаються похідними класами, або класами-нащадками. Як уже зазначалося, успадкування застосовують для класів, пов'язаних семантичним відношенням «є». Іншими словами, вважається, що екземпляр похідного класу водночас є екземпляром базового класу. Це дає можливість об'єктам-нащадкам використовувати атрибути і методи об'єктів-предків як свої власні (хоча слід зазначити, що деякі мови програмування, наприклад С++, дозволяють встановлювати обмеження на доступ до атрибутів і методів предків з боку методів нащадків). Найважливішою властивістю успадкування є те, що воно дає можливість уникнути повторень коду, адже спільний для множини подібних класів код може бути винесений в методи їх спільного предка. За допомогою механізму успадкування можна побудувати ієрархію класів.

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

3. Класи і об'єкти в мові Раsсаl

Наведемо синтаксис оголошення класу в мові Раsсаl. Зазначимо, клас називається об'єктним типом даних і позначається ключовим словом object.

type     <ім’я об’єктного типу> =object

<оголошення атрибутів>;

<заголовки методів>;

 еnd;

Тут <ім’я об’єктного типу> - довільний ідентифікатор; object - слово, зарезервоване для позначення об'єктного типу даних; <оголошення атрибутів> — перелік оголошень змінних будь-яких припустимих типів; <заголовки методів> — заголовки будь-яких процедур або функцій.

Після того як клас оголошено, його можна використовувати для створення екземплярів класу, тобто статичних або динамічних змінних об'єктного типу. Зрозуміло, що оголошення класу має передувати оголошенню і використанню екземпляра цього класу. Наведемо синтаксис оголошення екземплярів об'єктного типу в мові Раsсаl:

var <ім’я змінної-екземпляра>: <ім’я об’єктного типу>;

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

procedure <ім’я об’єктного типу>.<ім’я процедури (параметри)>;

begin

  {иіло процедури}

end;

function <ім’я об’єктного типу>.<ім’я функції (параметри)>:<тип>;

begin

  {тіло функції}

end;

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

<ім’я змінної-екземпляра>.<ім’я методу>(<список аргументів>)

Так само здійснюється доступ до атрибутів об’єктів певного класу з методів іншого класу:

<ім’я змінної-екземпляра>.<ім’я атрибуту>

Отже, призначення методів – реалізація дій над елементами даних об’єктного типу. Методи об’єктного типу мають прямий доступ до атрибутів цього типу, оскільки вони містяться в одній області видимості. Тому, коли метод звертається до атрибутів того об’єктного типу, якому належить він сам, складені імена не використовуються.

Приклад 6.8.

Розробимо об’єкт «вектор», атрибутами якого є одновимірний масив і його розмірність (масиви розглядатимуться в розділі 7). Опишемо такі методи об’єктного типу, як ініціалізація та відображення вектора, а також обчислення скалярного добутку двох векторів.

Unit Unit6_2;       {модуль (файл unit6_2. pas)}

interface       {розділ інтерфейсу}

uses crt;

type

  mas=array[1..10] of integer;

  vector=object;      {об’єктний тип vector }

     n: integer;       {розмірність вектора}

     vec: mas;       {значення елементів вектора}

     name: char;      {ім’я вектора}

     procedure init (ch: char);     {ініціалізація даних}

     procedure showvec (ch: char);    {відображення значень елементів}

     procedure scalar (v: vector);    {скалярне множення векторів}

  end;

implementation      {розділ реалізації методів}

{--------------------------------- метод ініціалізації вектора ---------------------------------}

procedure vector, init (ch: char);

  var i: integer;

  begin

     name: char;

     write (‘input the number of vector’, name, ‘components:’);

     readln (n);

     writeln (‘input’, n, ‘components’);

     for i:=1 to n do

        read (vec[i]);

     end;

{--------------------------------- метод виведення вектора ---------------------------------}

procedure vector, showvec (ch: char);

var i: integer;

begin

  name: char;

  writeln (‘vector’, name, ‘ : ’);

  for i:=1 to n do write (vec[i], ‘ ’);

  writeln;

end;

{---------------------- метод обчислення скалярного добутку векторів ----------------}

procedure vector, scalar (v: vector); {v – екземпляр об’єктного типу }

var sum,       {скалярний добуток векторів}

     i: integer;       {параметр циклу}

begin

if n<>v.n then begin      {коли розмірності векторів різні}

  writeln (‘scalar product is not computable: ’);

  writeln (‘vector lengths are different’);

  readln;

  exit;

end

else       {коли розмірності векторів однакові}

begin

  sum:=0;

  for i:=1 to n do      {скалярний добуток векторів}

     sum:=sum+vec[i]*v.vec[i];

  writeln (‘scalar product = ’, sum);

end;

end;

end.        {кінець модуля}

program ex6_2;     {програма роботи з об’єктом «вектор»}

uses crt, Unit6_2;

var v1, v2: vector;      {об’єкти-вектори}

begin

  clrscr;

  writeln (‘create vectors’);

  v1.unit (‘A’);      {ініціалізація вектора А}

  v2.unit (‘B’);      {ініціалізація вектора В}

  v1.showvec (‘A’);      {виведення вектора А}

  v2.showvec (‘B’);      {виведення вектора В}

  v1.scalar(v2);    {обчислення скалярного добутку векторів}

end.

Висновки

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

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

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

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

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

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

Розробляючи структуровані програми, слід дотримуватися таких правил: правила простоти (створення програм починати з простої програми), правила пакетування (кожну дію можна замінити двома послідовними діями), правила вкладення (кожну дію можна замінити будь-якою структурою керування).

Для перетворення неструктурованих програм у структуровані використовуються методи дублювання кодів програми, введення змінної стану і мулевих ознак.

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

Модуль складається із заголовка, інтерфейсної, реалізаційної й ініціалізаційної частин. Для означення модуля та його частин використовуються зарезервовані слова unit, interface, implementation.

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

Об’єкт – це реальна або абстрактна сутність, що моделює частину навколишньої дійсності. З погляду програмування об’єкт складається з атрибутів і методів. Атрибути описують властивості об’єкта у певний момент часу, методи – властиву об’єкту поведінку.

Клас є абстракцією множини об’єктів, що мають спільні властивості і поведінку.

Об’єктно-орієнтоване програмування ґрунтується на концепціях інкапсуляції, успадкування і поліморфізму.

Інкапсуляція – це механізм, який дозволяє захистити атрибути і методи об’єкта від некоректного використання.

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

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

Контрольні питання

1. Основні концепції об'єктно-орієнтованої методології програмування

2. Базові поняття об'єктно-орієнтованого програмування

3. Класи і об'єкти в мові Раsсаl


 

А также другие работы, которые могут Вас заинтересовать

75679. Стилистическая оценка вариантов управления 68.32 KB
  Стилистический интерес вызывают те варианты управления которые получают функционально-стилевое закрепление [замечания студенту замечания в адрес студента книжн. В стилистическом комментарии нуждаются архаизующиеся варианты управления: отмстить поруганную дочь П. Для носителей языка выбор нужной формы управления в таких случаях не представляет сложности но те кто изучает русский язык как неродной ошибаются в выборе предлогов и падежных форм в подобных словосочетаниях.
75680. Стилистическое использование однородных членов предложения 76.47 KB
  Особая полнота и точность перечисления однородных понятий обязательное требование к языку законов постановлений в официально-деловом стиле: Все граждане имеют равные права в семейных отношениях. Блоки однородных членов в книжных стилях строятся как правило из словоформ обозначающих однотипные понятия. В книжных стилях перечисление нередко выглядит как длинная цепочка однородных членов причем в их сочиненном ряду как правило преобладает бессоюзная связь.
75681. Стилистическое использование различных типов сложного предложения 88.91 KB
  Не останавливаясь подробно на синтаксисе устной формы разговорной речи отметим что при письменном ее отражении в художественных текстах и прежде всего в драматургии наиболее широко используются бессоюзные сложные предложения. Попробуем предикативные единицы объединенные в сложные бессоюзные предложения в цитированном отрывке связать с помощью союзов: Думаю что ничего у нас не выйдет. У него дела много так что ему не до меня поэтому и внимания не обращает. Из этого конечно не следует что в художественной речи отражающей...
75682. Стилистическая оценка параллельных синтаксических конструкций 127.53 KB
  Редактор прочитал рукопись и написал рабочую рецензию. Редактор прочитав рукопись написал рабочую рецензию. Редактор прочитавший рукопись написал рабочую рецензию. Редактор закончил чтение рукописи и приступил к написанию рабочей рецензии.
75683. Стилистическая оценка заимствованных слов 118.35 KB
  Заимствования из древних языков греческого латинского тюркизмы галлицизмы слова из голландского немецкого английского полонизмы украинизмы и др. В средствах массовой информации полюбили слова популизм популист используя их однако совсем не так как это принято на Западе. Примеров такого толкования слова можно привести множество вот один из них: . Словари иностранных слов не успевают освоить новые заимствования поэтому читатель не владеющий английским нередко оказывается беспомощным встречая непонятные слова в газетах...
75684. Лексические образные средства 219.96 KB
  Понятие образности речи Слова образность образный используются в стилистике в разных значениях. Образность в широком смысле этого слова как живость наглядность красочность изображения неотъемлемый признак всякого вида искусства форма осознания действительности с позиций какого-то эстетического идеала образность речи частное ее проявление. Стилистика рассматривает образность речи как особую стилевую черту которая получает наиболее полное выражение в языке художественной литературы. Более узкое понимание образности речи основано...
75685. Фоника. Понятие фоники. Значение звуковой организации речи 365.48 KB
  Понятие фоники Фоника раздел стилистики изучающий звуковую сторону речи. В отличие от фонетики представляющей собой раздел языкознания который изучает способы образования и акустические свойства звуков того или иного языка фоника наука об искусстве звуковой организации речи. Под фоникой понимают также звуковую организацию речи т. При этом говорят о фонике того или иного произведения исследуя например фонику поэмы стихотворения анализируя эстетическую функцию различных фонетических средств прежде всегозвуков речи.
75686. СТИЛИСТИКА СЛОВООБРАЗОВАНИЯ 189.65 KB
  Русский язык отличается исключительным богатством словообразовательных ресурсов, обладающих яркой стилистической окраской. Это обусловлено развитой системой русского словообразования, продуктивностью оценочных суффиксов, придающих словам разнообразные экспрессивные оттенки
75687. Стилистика имени числительного 164.35 KB
  Однако этот графический способ обозначения числа количества здесь уже не является единственным: параллельно могут быть использованы и словесные обозначения чисел количества что открывает пути к функционально-стилевому применению числительных.