Objective-C

Objective-C
Парадигмаоб'єктно-орієнтоване програмування, мультипарадигмальне програмуванняd, class-based programmingd і Рефлексія
Дата появи1986
ТворціTom Love & Brad Cox
РозробникApple Inc.
Останній реліз
Система типізаціїстатична, динамічна типізація[d] і слабка типізація[d]
Основні реалізаціїClang, GCC
Під впливом відSmalltalk, C
Вплинула наTOM, Java, Objective-J
Операційна системаCross-platform
Звичайні розширення файлів.h, .m, .mm або .C
ВебсайтThe Objective-C Programming Language

Objective-C — ("Обджектів Сі") рефлективна, високорівнева об'єктно-орієнтована мова програмування загального призначення, розроблена у вигляді набору розширень стандартної С.

Мова програмування Objective-C, розроблена на початку 1980-х років, була основною мовою, що використовувалася компанією NeXT для операційної системи NeXTSTEP, від якої пішли macOS і iOS.

На даний час використовується в основному у macOS та GNUStep — середовищах, розроблених на основі стандарту OpenStep, та Cocoa — бібліотеки компонентів для розробки програм. Програму на Objective-C, що не використовує цих бібліотек, можна скомпілювати для будь-якої платформи, яку підтримує gcc компілятор з підтримкою Objective-C.

Objective-C є розширенням С, і тому будь-яку програму на С можна скомпілювати компілятором Objective-C.

ООП в Objective-C включає інтерфейси, класи, категорії. Реалізовано одиничне, невіртуальне спадкування. Немає єдиного базового класу для всіх об'єктів. Всі методи в класі — віртуальні. Категорія — парадигма, яка дозволяє описувати інтерфейс з методами, які «необов'язково» імплементувати.

Синтакс Objective-C породжений одночасно від С та Smalltalk. Від останньої взято основний семантичний конструкт мови — замість виклику методу об'єктові надсилається повідомлення. Наприклад, якщо клас об'єкта obj імплементує метод doJob, то говориться, що об'єкт відкликається на повідомлення doJob. Щоб надіслати повідомлення doJob цьому об'єктові, потрібно написати:

[obj doJob];

Такий механізм дозволяє надсилати повідомлення навіть до тих об'єктів, які не підтримують їхньої обробки. Такий підхід відрізняється від тих, що використовуються в статично типізованих мовах С++ чи Java.


© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search