КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Нові концепції програмування
Підходи та прийоми Основні моделі програмування · Імперативне програмування · Структурне програмування · Функціональне програмування · Логічне програмування · Об' єктно - орієнтоване програмування o Програмування, засноване на класах o Програмування, засноване на прототипах o Суб' єктно - орієнтоване програмування · Структурне програмування · Процедурне програмування · Декларативне програмування · Апплікатівное програмування · Узагальнене програмування · Доказове програмування · Породжує програмування · Аспектно- орієнтоване програмування · Агентно- орієнтоване програмування · Рекурсія · Автоматні програмування · Подієво - орієнтоване програмування · Компонентно- орієнтоване програмування · Літературне програмування
За останні роки у сфері програмного забезпечення відбувся ряд значних змін. У результаті пошуку нових ідей програмування було розроблено три нові концепції програмування: · об' єктно - орієнтоване програмування (ТОП); · уніфікована мова моделювання (UML); · спеціалізовані засоби розробки програмного забезпечення. У деру чергу, розвиток об' єктно - орієнтованого методу програмування обумовлений обмеженістю інших методів програмування, розроблених раніше. Для того, щоб зрозуміти й оцінити значення ТОП, необхідно розібратися, в чому полягає ця обмеженість та яким чином вона проявляється в традиційних мовах програмування. Потреба нових концепцій створення програмного забезпечення З качану 60-х років ХХ століття завдяки появі високопродуктивних компіляторів мов високого рівня розробка програм стає індустрією. Залишається позаду година, коли програми розроблялися вченими з університетів самотужки або в невиликих лабораторіях. З" являються потужні корпорації із випуску програмного забезпечення, в штаті яких тисячі - висококласних програмістів. Для налагодження співпраці між ними при розробці серйозних програмних продуктів виникає потреба у встановленні певних механізмів взаємодії між різними програмними модулями. Така взаємодія може бути досягнута лише при наданні модулям властивості функціональності (тобто здатності поводити собі згідно до обставин та команд). З іншої сторони потреба в існуванні певних важелів керування програмними модулями виникає також з бажання використовувати одні і ті ж програмні модулі в різних проектах - при розробці різного програмного забезпечення. Така властивість називається переносимістю програмного коду. Вона має неабияке значення на ринку розробників програмного забезпечення, за яким, віриться, великі перспективи. Появу і технічну реалізацію нових концепцій програмування активно стимулювала робота багатьох фірм над створенням принципово нових програмних інтерфейсів (наприклад, операційні системи-оболонки з графічним інтерфейсом). Об’єктно - орієнтований підхід традиційно використовується в науці і техніці при розв" язуванні масштабних завдань. Застосування його до програмування отримало назву об" єктно - орієнтованого програмування (ТОП). Java як остаточне втілення ТОП Далі розглянемо реалізацію головних зрозуміти ТОП на прикладі мови програмування Java. Java вибрана тому, що, крім унікальної інтегровності з Internet, вона ще й розроблялася як повністю об" єктно - орієнтована мова програмування (скажімо, З++, Delphi маєть деякі відступи від ТОП у своєму синтаксисі, зумовлені, в деру чергу, прагненням прийнятності синтаксису своїх необ" єктно - орієнтованих попередників). Будь- які типи даних Java -програми починаючи від базових і закінчуючи самою програмою розглядаються з точки зору ТОП. Отже, короткий екскурс в ТОП. Означення класу Для того, щоб зрозуміти поняття класу, необхідно мати уявлення про ТОП. "ТОП - це більше філософія програмування, ніж набір інструкцій або ключових слів мови Java" [1]. Спробуємо продемонструвати доречність ТОП на практиці медичного працівника. При призначенні пацієнту в ході лікування певного хіміопрепарату лікар враховує такі фактори: · протипоказання при певних видах захворювань; · застереження для певної категорії пацієнтів (наприклад, вагітність); · реакції різних систем людського організму (центральна нервова система, серцево-судинна система, дерматологічні захворювання, ендокринна система, гематологічна система, респіраторна система і інші, зумовлені, наприклад, певними дозуваннями); · можливість передозування, токсикологія; · взаємодія з іншими хіміопрепаратами; · фармакодинаміка та фармакокінетика (тривалість і порядок дії); · механізм дії. Але з іншої сторони він не враховує наступне (принаймні це його цікавить набагато менше): · торгівельні фірми, які займаються продажем даного хіміопрепарату; · технологія промислового виробництва даного хіміопрепарату; · ім’я вченого - автора хіміопрепарату. І взагалі, в уяві лікаря хіміопрепарат - не сукупність хімічних речовин та ланцюжок потрібних реакцій, а зручно упакований предмет з детальною документацією щодо застосування. Тобто людина у своєму житті використовує цілком реальні об" єкти - одиниці, не заглиблюючись у їх внутрішню будову і це набагато простіше. Далі наведемо дещо розширене означення класу. Означення. Класом називається деяка абстрактна сутність, що задовольняє наступні вимоги: · клас повинний володіти добрі продуманим інтерфейсом, тобто способом взаємодії. Інтерфейс повинний надавати споживачу можливість виконати будь-яку операцію, що підтримує клас; · клас повинний символізувати концепцію в проблемній області, тобто він повинний грунтуватися на чомусь реальному; · клас повинний містити в собі усе, що може вимагатися від нього іншими класами; · клас повинний бути винятково надійним. Клас повинний відсіювати некоректні команди. Наприклад, неможливо виконати команду - призначити аспірин для лікування астматичного пацієнта. Тепер про ті, як такі міркування ТОП виглядають в Java. Отже, слідуючи ТОП, клас - це єдина можливість створити новий тип даних. Означення типу даних (класу) виглядає таким чином: class MyClass { // тут розміщуються елементи класу }
Елементами класу можуть бути: змінні класу та методи. Змінні класу Змінні класу (називаються ще властивостями, полями, членами) використовуються для опису властивостей класу. Розглянемо клас, що описує хіміопрепарат: class Drug { // далі означуються змінні класу // назва хіміопрепарату String m_sTitle; // концентрація хіміопрепарату в плазмі (міліграм/мл) double m_dPlasmaDrugConcentration; // неперервне введення boolean m_bIntravenousInfusion; // швидкість неперервного введення double m_dInfusionRate; // доза при введенні з перервами double m_dDose; // година між введеннями хіміопрепарату у випадку з перервами double m_dDosingInterval; } Зрозуміло, що назва - важлива характеристика хіміопрепарату, також важливим є порядок дозування. Методи класу Елементи класу, які є функціями, називаються методами класу. Як показ повного дотримання концепцій ТОП в Java є ті, що усі функції повинні бути методами якогось класу (наприклад, в Delphi такого немає). Розглянемо означення методу на прикладі import java.lang.String; class Drug { // далі означуються змінні класу // назва хіміопрепарату String m_sTitle; // концентрація хіміопрепарату в плазмі (міліграм/мл) double m_dPlasmaDrugConcentration; // неперервне введення boolean m_bIntravenousInfusion; // швидкість неперервного введення double m_dInfusionRate; // доза при введенні з перервами double m_dDose; // година між введеннями хіміопрепарату у випадку з перервами double m_dDosingInterval; // далі - методи класу // призначене дозування (міліграм/хв) double DosingRate() { if (m_bIntravenousInfusion) { return m_dInfusionRate; } else return m_dDose / m_dDosingInterval; } // AverageDrugConcentration - середня концентрація // хіміопрепарату (міліграм/мл) double AverageDrugConcentration(double dClearance) { return DosingRate() / dClearance; } } class Patient { String m_sName; // прізвище та ім" я пацієнта boolean m_bMale; // чоловік чи boolean m_bFemale; // жінка int m_nAge; // вік double m_dHeight; // зріст в см double m_dPlasmaCreatinine; // (міліграм/дл) double m_dRenalFunctionClearance; // значення очищення з таблиці ренальної функції Drug m_Drug; // хіміопрепарат, що призначається // методи класу // // вага в кг double BodyWeight() { if (m_bMale) { return 0.73 * m_dHeight - 59.42; } else { // для жінок return 0.65 * m_dHeight - 50.74; } } double BodySurfaceArea() { return Math.sqrt((m_dHeight * BodyWeight()) / 3600); } // CreatinineClearance - очищення креатініну (мл/хв) double CreatinineClearance() { if (m_bMale) { return(m_dPlasmaCreatinine * 72); } else { return 0.85(m_dPlasmaCreatinine * 72); } } // очищення (мл/хв) double Clearance() { return m_dRenalFunctionClearance * BodyWeight(); } } Опис методу починається з означення типу об’єкту, що повертається методом. Якщо метод не повертає об’єктів, то тип об’єкту, що повертається, буде void. Тип об" єкту, що повертається, вказується перед іменем методу. За іменем методу в круглих дужках міститься список так званих формальних параметрів (аргументів) методу. Якщо метод не містить аргументів, то список повинний бути порожнім. Якщо метод повертає щось (на відміну від void), то його тіло повинне містити ключове слово return, за яким – об’єкт, що повертається.
Дата добавления: 2014-01-04; Просмотров: 772; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |