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


 

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

66719. Классификация отраслей промышленности 50.33 KB
  Производственную сферу образуют отрасли: непосредственно создающие материальный продукт промышленность и строительство сельское и лесное хозяйство; доставляющие материальный продукт потребителю транспорт и связь; связанные с продолжением процесса производства...
66720. Классификация грузовых автотранспортных средств 1.4 MB
  Именно поэтому грузовые автомобили относятся к числу наиболее востребованных типов спецтехники. Универсальность функциональная гибкость и рыночная ликвидность все эти факторы способствуют повышенному спросу на технику для грузоперевозок к числу которой относятся грузовые автомобили...
66721. Ковда Виктор Абрамович 276.5 KB
  В этом отношении почвоведение получило приоритетность в отношении изучения почвенных ресурсов для жизнеобеспечения населения. Из всех объединений почвоведов к началу 1922 года сохранился только почвенный отдел ВЭО в Петрограде.
66722. Колегія Павла Галагана 119 KB
  Українська інтелектуальна еліта має формуватися на національній ідеї, що є джерелом культурно-історичної динаміки нації, отже, й система освіти має ґрунтуватися на глибокій і цілісній національній основі. Одним з осередків формування інтелектуальної еліти українського народу є середні загальноосвітні...
66723. Разработка комплексной диагностики системы управления таможенного органа 309 KB
  Хозяйствующий субъект является открытой системой, взаимодействующей с внешней средой. Внешняя среда оказывает влияние как на эффективность организации в целом, так и на его ключевые подсистемы.
66724. Перевозки грузов автомобильным транспортом 123.5 KB
  За последнее десятилетие существенно изменились экономические связи в стране. Директивные методы управления уступают рыночным отношениям. Грузовой транспорт стал работать в условиях развивающейся конкуренции. Повышаются требования к срокам доставки грузов, что влияет и на процессы подготовки и приемку грузов.
66725. АЛЕКСЕЙ АНДРЕЕВИЧ РОДЕ 246 KB
  Труды А.А. Роде — не просто источник исчерпывающей информации по многим конкретным проблемам почвоведения. По ним можно учиться глубокому творческому подходу к познанию сложнейших проблем мироздания, высокой принципиальности в отстаивании своих убеждений...
66726. ЛАЗЕРНЫЕ ПРИНТЕРЫ 242.5 KB
  Лазерные принтеры менее требовательны к бумаге, чем, например, струйные, а стоимость печати одной страницы текстового документа у них в несколько раз ниже. При этом недорогие модели лазерных и светодиодных монохромных принтеров уже способны конкурировать...