М. А. Оновлення змісту дисципліни «Основні напрямки розвитку в комп’ютерній галузі» Постановка проблеми

Вид материалаДокументы

Содержание


Аналіз останніх досліджень та публікацій.
Постановка завдання.
Виклад основного матеріалу.
Принцип спадкування
Модифікатор доступу
Protected Friend
Перспективи подальших досліджень.
Подобный материал:
УДК 378.147

© 2006

Бондаренко М. А.


Оновлення змісту дисципліни «Основні напрямки розвитку в комп’ютерній галузі»


Постановка проблеми. Дисципліна «Основі напрямки розвитку в комп’ютерній галузі» є одною з основних в підготовці магістрів спеціальності 8.010104.36 «Комп’ютерні технології в управлінні та навчанні». Вона включає в себе об’єктно орієнтоване програмування (ООП).

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

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

В зв’язку з появою нового підходу в програмуванні, дисципліна «Основі напрямки розвитку в комп’ютерній галузі» має бути оновлена.

Аналіз останніх досліджень та публікацій. В роботі [3] розглядаються основні напрямки розвитку в комп’ютерної галузі, серед яких одним з найцікавіших є об’єктно орієнтоване програмування. У 2002 р. корпорація Microsoft започаткувала середовище .NET. У публікаціях [1, 2] розглядаються питання об’єктно орієнтованого програмування взагалі. В даній статті розглядається об’єктно орієнтоване програмування, в основі якого лежить три принципи: інкапсуляція, спадкування та поліморфізм, які розглядаються спільно з навчальним процесом в Українській інженерно-педагогічний академії (УІПА).

Постановка завдання. У рамках зазначеної проблеми слід розглянути питання оновлення змісту дисципліни «Основі напрямки розвитку в комп’ютерній галузі» в рамках сучасного об’єктно орієнтованого програмування, а також утворення та використання елементів керування користувача. Слід розглянути інноваційні напрямки розвитку платформи .NET, середовище розробки Visual Studio 2005, класи, об’єкти та утворення нових елементів користувача.

Виклад основного матеріалу. В УІПА для підготовки магістрів спеціальності 8.010104.36 «Комп’ютерні технології в управлінні та навчанні» кафедра «Інформатики та комп’ютерні технології» застосовує інноваційні технології в дисципліні «Основні напрямки розвитку в комп’ютерній галузі».

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

В 2002 р. корпорація Microsoft офіційно оголосила про випуск нового операційного середовища .NET Framework і середовища розробки Visual Studio.NET.

У цей час платформа .NET реалізована для операційної системи Windows, однак не прив’язана до неї й допускає реалізацію для інших операційних систем.

Платформа .NET – це сукупність програмних засобів, що забезпечують інноваційних спосіб розробки додатків і їхнє виконання в спеціалізованому операційному середовищі .NET Framework. Архітектура платформи .NET у узагальненому виді подана на рис. 1 [3].

В цей час Visual Studio 2005 не є єдиним середовищем розробки для платформи .NET. Так , компанія Borland запропонувала свою інноваційну систему Borland Delphi 2005 з мовами програмування Delphi, C# і компілятором DCCIL [2]. Ще близько 20 незалежних компаній оголосили про свої плани реалізації різних мов програмування для платформи .NET.

Розглянемо складові платформи .NET більш детально [3].

Після розробки додатка на високорівневій мові, вона компілюється в спеціальну проміжну мову , названу MSIL (або просто IL)- Microsoft Intermediate Language (Проміжна мова корпорації Microsoft). Ця мова не зв’язана з будь якою конкретною системою машинних команд і тому додаток для платформи .NET виходить незалежним від конкретних реалізацій операційної системи й апаратної платформи (рис.2).

Інноваційний компілятор для .NET створює додатковий модуль DLL (Dynamic Link Library – бібліотека динамічних зв’язків) або подвійний модуль EXE ( від Executive- модуль, що виконується). Такі модулі називаються складанням (assembly). Складання містить код проміжною мовою MSIL і метадані , які описують всі типи, використовувані в модулі. Крім типів метадані описують і саме складання. Ця частина даних називається маніфестом (manifest). У ньому втримується інформація про поточну версію складання, про обмеження по безпеці, про підтримувану природну мову, а також список всіх зовнішніх складань, які необхідні, для виконання. Складання може вміщувати один або декілька подвійних файлів. У складанні з одного файлу (single file assembly) утримується маніфест, метадані і код на MSIL. У складанні з декількох файлів (multifile assembly) один файл містить маніфест, що описує складання (а також MSIL–код і метадані, а всі інші файли – тільки метадані й MSIL-код.

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





Рис. 1. Архітектура платформи .NET




Рис. 2. Компіляція високорівневих мов для .NET


Класом в ООП називається деяка структура, що поєднує у своєму складі змінні та процедури (функції). Змінні, залежно від свого призначення, називаються полями (field) і властивостями (property). Процедури й функції називаються методами (methods). Будь-який метод працює тільки зі змінними, які визначені у середині класу та з параметрами, що передаються методу. Складові класу (змінні та процедури) називаються членами класу (members).

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

Наприклад, визначимо клас «Студент» у такий спосіб.

Властивості класу:

– Prizv (прізвище, ім’я, по батькові). Тип даних – рядок символів;

– Stat (стать). Тип даних – булівський;

– Rik (рік народження). Тип даних – короткий цілочисельний;

– Grup (група). Тип даних - рядок символів;

– Stip (розмір стипендії) Тип даних - короткий цілочисельний.

Методи класу:

– StandStip (призначити стандартну стипендію). Без параметрів;

– PidvStip (призначити підвищену стипендію). Параметр – розмір стипендії;

– NoStip (зняти стипендію). Без параметрів.

– InshaGrupa (перевести в іншу групу). Параметр – назва групи.

Тепер створимо об’єкти класу «Студент», тобто такої ж структури, як і клас «Студент», з такими ж методами, але вже з конкретними значенням властивостей (рис. 3).

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

Інкапсуляція (Encapsulation) – принцип, відповідно до якого деталі реалізації класів мають бути захованими від користувачів цих класів. Інакше кажучи, користувачеві буде невідомою реалізація методу, та доступ до властивостей.

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




Рис. 3. Клас «Студент» і об’єкти класу


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

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

У підсумку класичного спадкування створюється ієрархічна модель класів (дерево спадкування) (рис. 4).

Концепцію класичного спадкування називають концепцією узагальнення-спеціалізації. По мірі руху вниз по дереву спадкування об’єкти повинні ставити більше конкретними (спеціалізованими). Найбільш загальний випадок відповідає вершині дерева. Клас «Людина» являє собою найбільш загальну категорію. При розгляді класичного спадкування може виникнути питання – а чи може який-небудь клас успадкувати атрибути від декількох класів (так зване множинне спадкування)? Теоретично – так (і така можливість реалізована, наприклад, у мові С++). Однак на практиці дозвіл множинного спадкування породжує велику кількість проблем. Тому в мовах програмування для .NET множене спадкування заборонене.

Таблиця

Значення модифікаторів доступу


Модифікатор доступу

Рівень доступу

Елементи, до яких застосовується модифікатор

Підтримується в мовах

VB

C#

Java #

Public

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

Інтерфейси, модулі, класи, процедури, властивості, змінні, константи, події

Так

Так

Так

Protected

Похідні класи.
Елементи доступні тільки в межах свого класу або похідних класів

Інтерфейси, модулі, класи, процедури, властивості, змінні, константи, події

Так

Так

Так

Friend
( в C# – internal)

Збірка.
Елементи доступні тільки в межах однієї збірки

Інтерфейси, модулі, класи, процедури, властивості, змінні, константи, події

Так

Так

Ні

Protected Friend

Об’єднання Protected та Friend.
Елементи доступні тільки в межах однієї збірки, або похідних класів

Інтерфейси, модулі, класи, процедури, властивості, змінні, константи, події

Так

Так

Ні

Private

Поточний контекст.
Елементи доступні тільки в межах тій структури (клас, модуль, процедура), в якій вони визначені

Інтерфейси, модулі, класи, процедури, властивості, змінні, константи, події

Так

Так

Так

Принцип поліморфізму тісно пов’язаний із принципом спадкування. Ми відмітили, що похідний клас успадковує від базового всі його властивості та методи. Однак, оскільки кожний похідний клас є самостійною структурою, від них може знадобиться своя специфічна реалізація методів з базового класу. Така можливість зміщати («перекривати»,«перевантажувати») реалізацію методу з базового класу іншою реалізацією в похідному класі й називається поліморфізмом (у перекладі «поліморфізм» – багато форм). Наприклад, ми розробили клас «Людина» із властивостями «Прізвище», «Стать», «Рік народження» та методом ShowInfo(«Показати інформацію»). Цей метод не має параметрів і виводить на екран дисплею інформацію про властивості об’єкта класу «Людина». Потім ми розробили на базі цього класу похідний клас «Студент» із властивостями «Назва ВНЗ», «Факультет», «Група», «Стипендія» тощо.




Рис. 4. Ієрархічна модель класів (дерево спадкування)

Оскільки клас «Студент» успадкував всі властивості та методи класу «Людина», то в ньому буде доступний метод ShowInfo. Однак, він не зможе вивести всю інформацію про студента, тому що вір був реалізований для базового класу «Людина». Скориставшись можливістю поліморфізму, визначимо в класі «Студент» власний метод ShowInfo, який буде заміщати метод базового класу. Це означає, що коли метод ShowInfo застосовується до об’єктів класу «Студент», буде відкликаний метод із класу «Студент». Якщо ж метод ShowInfo застосовується до об’єктів базового класу «Людина» або інших класів-спадкоємців (якщо він там не заміщений), то буде викликаний метод базового класу.

У деяких випадках буває необхідно заборонити створення об’єктів якого-небудь класу. Наприклад, якщо ми розробляємо систему обліку кадрів ВНЗ, то швидше за все створимо такі класи як «Студент», «Викладач», «Співробітник» тощо. Всі вони будуть класами-спадкоємцями базового класу «Людина».

Однак створювати об’єкти самого класу «Людина» безглуздо – в обліку кадрів немає такого поняття як «людина». Призначення такого класу – тільки бути батьком для інших класів.

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

Застосовуючи такі інноваційні технології, магістри спеціальності 8.010104.36 у цьому році виконали та захистили магістерські роботи у цьому напрямку.

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

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

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


Література

1. М. Вайсфельд. The Object Oriented Thought Process (Second Edition).– М: Куди-образ, 2005.– 336 с.

2. Andrew Troelsen. C# and .NET platform.- СПб: Питер, 2006.– 796с.

3 М. А. Бондаренко. Основні напрямки розвитку в комп’ютерній галузі.

– Харків: ФОП., 2006.– 696с.


Бондаренко М.А.

Оновлення змісту дисципліни «Основі напрямки розвитку в комп’ютерній галузі»

Розглядається питання оновлення змісту дисципліни «Основі напрямки розвитку в комп’ютерній галузі» з використанням об’єктно орієнтованого програмування в системі Microsoft .NET як інноваційної технології сучасного програмування.


Бондаренко Н.А.

Обновление содержания дисциплины «Основные направления развития в компьютерной отрасли»

Рассматриваются вопросы обновления содержания дисциплины «Основные направления развития в компьютерной отрасли» с использованием объектно ориентированного программирования в системе Microsoft .NET как инновационной технологии современного программирования.


N.A. Bondarenko

The improvement of curriculum of the subject «Basic directions of development in computer science»

The questions of the improvement of curriculum of the subject «Basic directions of development in computer science» of the problems of object oriented programming for Microsoft .NET platform as innovation technologies in modern programming are discussed.


Стаття надійшла до редакції. 02.09.2006р.