68939

Історія об’єктно-орієнтованого програмування

Лекция

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

Оскільки стимулом розробки мови C++ було об’єктно-орієнтоване I програмування (ООП), необхідно розуміти його основні принципи. Обєктно-орієнтоване програмування — досить могутній механізм. З моменту винаходу комп’ютера методології програмування різко змінилися, в основному із-за зростаючої складності програм.

Украинкский

2014-09-28

35.5 KB

4 чел.

Лекція № 1

Тема: Історія об'єктно-орієнтованого програмування

План

  1.  Історія ООП.
  2.  Інкапсуляція.
  3.  Поліморфізм.
  4.  Наслідувнаня.

Історія ООП

Оскільки стимулом розробки мови C++ було об'єктно-орієнтоване I програмування (ООП), необхідно розуміти його основні принципи. Об'єктно-орієнтоване програмування — досить могутній механізм. З моменту винаходу комп'ютера методології програмування різко змінилися, в основному із-за зростаючої складності програм. Наприклад, програми для перших комп'ютерів були послідовностями машинних команд, записаних в двійковому коді за допомогою перемикання тумблерів на передній панелі машини. Поки довга програм не перевищувала декількох сотень рядків, цей підхід залишався цілком працездатним. Проте у міру збільшення розміру програм виникла необхідність в новому способі програмування, і з'явилася мова асемблера, що дозволяє закодувати машинні інструкції за допомогою символів. Розмір програми продовжував збільшуватися, тому програмістам знадобилася могутніша мова, що дозволяє справлятися з складними алгоритмами. Як відомо, першою широко поширеною мовою програмування виявився FORTRAN. Не дивлячись на те що створення цього (мови свого часу було величезним кроком вперед, FORTRAN важко назвати ясним I і виразною мовою, що дозволяє створювати прості і наочні програми.

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

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

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

Для підтримки об'єктно-орієнтованого програмування мова повинна володіти трьома властивостями: інкапсуляцією, поліморфізмом і наслідуванням.

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

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

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

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

Поліморфізм

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

Цей принцип розповсюджується і на програмування. Наприклад, допустимо, що в програмі визначені три разных типу стека. Один стек складається з цілих чисел, інший — з символів, а третій — з чисел з плаваючою крапкою. Завдяки поліморфізму програмістові досить визначити функції push() і рор(), які можна застосовувати до будь-якого типу стека. У програмі необхідно створити три різні версії цих функцій для кожного різновиду стека, але імена цих функцій повинні бути однаковими. Компілятор автоматично вибере правильну функцію, грунтуючись на інформації про тип даних, що зберігаються в стеку. Таким чином, функції push() і pop () - інтерфейс стека — однакові, незалежно від типу стека. Конкретні варіанти цих функцій визначають конкретні реалізації (методи) для кожного типу даних.

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

Перші об'єктно-орієнтовані мови були такими, що інтерпретуються, тому поліморфізм був динамічним. Проте мова C++ є компільованою. Таким чином, в мові C++ підтримується як динамічний, так і статичний поліморфізм.

Наслідування

Наслідування (inheritance) — це процес, в ході якого один об'єкт може набувати властивостей іншого. Він має велике значення, оскільки підтримує концепцію класифікації (classification). Якщо подумати, всі знання організовані за принципом ієрархічної класифікації. Наприклад, антонівка відноситься в класу "яблука", який у свою чергу є частиною класу "фрукти", що входить в клас "їжа". Якби класифікації не існувало, ми не змогли б точно описати властивості об'єктів. Проте при цьому необхідно указувати тільки унікальні властивості об'єкту, що дозволяють виділити його серед інших об'єктів даного класу. Саме цей принцип лежить в основі механізму наслідування, що дає можливість вважати конкретний об'єкт специфічним екземпляром більш загального різновиду. Надалі ми переконаємося, що Наслідування є важливим аспектом об'єктно-орієнтованого програмування.


 

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

78265. Аномалии конституции. Спазмофилия. Гипервитаминоз D у детей 137 KB
  Наличие у ребенка определенного типа диатеза еще не означает что он обречен на ту или иную патологию к которой он предрасположен потому что именно у детей по мере созревания физиологических барьеров а также профилактических мероприятий давление наследственных факторов может ослабнуть. Аллергическое поражение кожи у детей первых 3х месяцев жизни раньше рассматривали как экссудативнокатаральный диатез. Этот диатез встречается у 50 детей первых 2х лет жизни. ткани этих детей повышенно гидрофильны и одновременно гидролабильны.
78266. Гнойно-воспалительные заболевания у детей 164 KB
  В этих случаях с момента рождения у ребенка могут выявляться такие заболевания как везикулопустулез пузырчатка внутриутробная пневмония менингит сепсис и др. Однако основным путем является инфицирование ребенка после рождения. При необильном высыпании общее состояние ребенка не нарушено аппетит сохранен температура тела нормальная и реже субфебрильная а при обильном высыпании появляются симптомы интоксикации. Пузырчатка новорожденного Она развивается чаще в первые 2 недели жизни ребенка.
78267. Острые пневмонии у детей 135 KB
  Некоторые из них в том числе острые пневмонии являются одной из причин смертности детей в раннем возрасте хотя от пневмоний дети не должны умирать. Дети в этом возрасте длительное время находятся в горизонтальном положении что приводит к застою кровообращения в задненижних отделах легких и к более легкому возникновению пневмонии. Возникновению пневмонии способствуют также другие факторы а именно: несоблюдение эпидемиологического режима то есть инфицирование ребенка; неполноценное питание и плохой уход; охлаждение или перегревание...
78268. НИВЕЛИРОВАНИЕ. ГЕОМЕТРИЧЕСКОЕ НИВЕЛИРОВАНИЕ 27.54 KB
  Одиночные ходы и системы ходов должны опираться не менее чем на два исходных пункта. Проложение замкнутых ходов опирающихся на один исходный пункт допускается лишь при особой необходимости. При приложении нивелирных ходов для определения высот пунктов аналитических сетей относительно исходной основы со средними квадратическими погрешностями...
78269. Тахеометрическая съемкаемка 9. 163.31 KB
  При производстве тахеометрической съемки используют геодезический прибор тахеометр предназначенный для измерения горизонтальных и вертикальных углов длин линий и превышений. Для выполнения тахеометрической съемки используются также тахеометры с номограммным определением превышений и горизонтальных проложений линий. Производство тахеометрической съемки Тахеометрическая съемка выполняется с пунктов съемочного обоснования их называют станциями.
78270. Состав камеральных работ 166.31 KB
  Стороны угла проектируют на лимб с использованием подвижной визирной плоскости зрительной трубы. Она образуется визирной осью трубы при её вращении вокруг горизонтальной оси. Данную плоскость поочередно совмещают со сторонами угла ВА и ВС последовательно направляя визирную ось зрительной трубы на точки А и С...
78271. Определение положения точек земной поверхности, системы координат 125.83 KB
  Определение положения точек земной поверхности системы координат Топографическое изучение земной поверхности заключается в определении положения ситуации и рельефа относительно математической поверхности Земли т. в определении пространственных координат характерных точек необходимых и достаточных для моделирования местности. Модель местности может быть представлена в виде геодезических чертежей изготовление которых называют картографированием и аналитически в виде совокупности координат характерных точек. Для построения моделей...
78272. Масштабы топографических карт планов 25.89 KB
  Масштаб карты это отношение длины отрезка на карте к его действительной длине на местности. Масштаб от немецкого мера и Stb палка отношение длины отрезка на карте плане аэро или космическом снимке к его действительной длине на местности. Именованный словесный масштаб вид масштаба словесное указание того какое расстояние на местности соответствует 1 см на карте плане снимке. Так как длины линий на местности принято измерять в метрах а на картах и планах в сантиметрах то масштабы удобно выражать в словесной форме...
78273. Нивелирование трассы 50.9 KB
  Закрепление трассы по высоте Вдоль всей разбитой на местности трассы но за пределами зоны работ закрепляются точки называемые реперами. Чтобы не пропустить пикеты и плюсовые точки нивелировщик должен иметь пикетажный журнал трассы. За связующие точки принимают пикеты или плюсовые точки но чтобы расстояние между ними не более 150 м а превышения несколько меньше длины рейки. Нивелирование трассы Отсчеты по рейкам установленным на связующие точки берут в следующей последовательности: 1 по черной стороне рейки на заднюю точку Зч; 2 по...