Kasutaja:ÜllarK/Objective-C

Allikas: Vikipeedia
ÜllarK/Objective-C
Faililaiend .h, .m, .mm, .M
Paradigma Reflektiivne, Objektorienteeritud, Klassipõhine
Väljalaskeaeg 1984
Looja Tom Love, Brad Cox
Tüüpimine Staatiline, Dünaamiline, Nõrk
Mõjutatud keeltest Groovy, Java, Nu, Objective-J, TOM, Swift[1]
Veebileht developer.apple.com

Objective-C on üldotstarbeline ja objektorienteeritud programmeerimiskeel, mis lisab Smalltalkile omases stiilis programmide esile kutsumise programmeerimiskeelele C. See oli põhiline keel, mille alusel töötasid Apple erinevad OS süsteemid ja nendele vastavad rakendustarkvara liideseid Cocoa ja Cocoa Touch 2014. aastani, mil tutvustati uut programmeerimiskeelt Swift.[2] Objective-C arendati esmalt välja vara 1980-ndatel. Viimast hakati kasutama põhilise keelena operatsioonisüsteemis NeXTSTEP, mille aluseid on kasutatatud ka macOS ja iOS väljaarendamisel.[3]

Ajalugu[muuda | muuda lähteteksti]

Objective-C loodi peamiselt Tom Love ja Brad Coxi koostööl nende endi firmas Productivity Products International.[4] Enne firma asutamist olid mõlemad varasemalt ITT’s kokku puutunud Smalltalkiga. Cox oli tol ajal huvitunud probleemist tõelise taaskasutatavusega tarkvara kujunduses ja programmeerimises. Ta täheldas, et programmeerimiskeel Smalltalk osutub väärtustamatuks ehitustalaks süsteemide arendajatele ITT’s. Brad Cox hakkas kirjutama programmeerimiskeele C eelkäijat, lisades sinna Smalltalki omadusi. Varsti oli tal töötav C programmerimiskeelele implimenteeritud objektorienteeritud laiendus nimega “OOPC”.[5] Love palgati aastal 1982 Schmlumberger Researchi poolt, kus tal oli võimalus ligipääseda Smalltalk-80-le, mis edendas nende tulevast leiutist veelgi. Cox näitas, et vahetatavad tarkvara elemendid vajavad paari praktilist muudatust. Endi valminud produkti kommertsialiseerimiseks, lõid nad firma PPI.

Süntaks[muuda | muuda lähteteksti]

Objective-C programmeerimiskeel

Objective-C on programmeerimiskeele C range alamhulk. See tähendab, et on võimalik koostada ükskõik milline C baasil kirjutatud programm, kasutades Objective-C kompilaatorit ning kaasates keele C koodi Objective-C klasside sees.[6][7] Objective-C süntaks tuleneb Smalltalkist. Kõik süntaksid, mida kasutatakse väljaspool objektorienteeritud operatsioone, on samad, mis programmeerimiskeelel C, ning objektorienteeritud operatsioonid kasutavad tunnuseid ja meetodeid, mis on omased Smalltalkile.

Sõnumid[muuda | muuda lähteteksti]

Objective-C objektorienteeritud programmeerimismudeli aluseks on sõnumite edastamine eri objektide vahel, mitte traditsiooniline meetod (Simula), kus objekt kutsutakse esile nime järgi. Nende kahe kontseptsiooni erinevus on see, kuidas kood, millega viidatakse kas meetodile või sõnumile, on täitnud käsku. Keeled, mis on ülesehitatud Simula stiilis, kasutavad meetodi nimesid, mis enamus juhtudel on seotud kompilaatori sihtklassi koodjaotusega. Objective-C ja Smalltalk sõnumi sihtmärk lahendatakse käitusel, kus objekt, mis võtab sõnumit vastu, ka tõlgib sõnumit. Mõlemal programmeerimisstiilil on enda tugevused ja nõrkused. Näiteks C++, mis kasutab objektorienteeritud programmeerimist Simula stiilis, võimaldab mitut pärimist ja kiiremat täitmist, kuid see ei toeta vaikimisi dünaamilist köitmist. Samuti sunnib see kõiki meetodeid omama vastavat rakendamist, juhul kui need ei ole abstraktsed. Objective-C kasutatav Smalltalk stiilis programmeerimine võimaldab sõnumid jätta teostamata, aga meetod on ikkagi lahendatud selle juurutamise ajal. Sõnumi edastamine ei vaja ka objekti määratlemist kompileerimise ajal, kuid endiselt on vaja rakendada meetodi kutsumist tuletatud objektis, et seda näha oleks.

Liidesed ja teostused[muuda | muuda lähteteksti]

Objective-C nõuab, et klassi liides ja teostus oleks eraldatud deklareeritud koodiplokkides. On tekkinud harjumus, kus arendajad paigutavad liidese päisefaili ja teostuse koodifaili. Päisefailid lõppevad tavaliselt .h lõppmärgisega ning need on sarnased C päisefailidega, samas kui rakendamise failid, mis lõppevad tavaliselt .m lõppmärgisega, võivad olla sarnased C koodifailidega.

Liides[muuda | muuda lähteteksti]

Teistes programmeerimiskeeltes kutsutakse seda klassi deklaratsiooniks. Objective-C määratletakse klassi liides tavalsielt päisefailis. Üldiseks tavaks on päisefaili nimetamine klassi nime järgi.

Rakendamine[muuda | muuda lähteteksti]

Liides deklareerib ainult klassi liidese, mitte meetodeid endeid: tegelik kood kirjutatakse rakendusfaili. Rakendusfailidel on tavaliselt lõppmärgis .m, mis algselt tähendasid sõnumeid (inglise keeles Messages).[8] Erinevad meetodid kirjutatakse nende liidese deklaratsioonide abil.

Keelevariandid[muuda | muuda lähteteksti]

Objective-C++[muuda | muuda lähteteksti]

Objective-C++ on keelevariant Objective-C-st, mis on aktsepteeritud kasutajapoolse liidese GNU kompilaatorikogu ja Clang poolt. Objective-C++ suudab kompileerida lähtfaile, kasutades C++ ja Objective-C süntaksite kombinatsiooni. Objective-C++ lisab C++ laiendid, mida Objective-C lisab C-le. Kuna siiani pole erinevate keelefunktsioonide semantika ühtlustamiseks midagi tehtud, peavad kehtima teatud piirangud:

  • C++ klassil ei ole võimalik tuleneda Objective-C klassist ja vastupidi.
  • Nimeruume, mis on kasutusel C++, ei saa Objective-C deklaratsioonis deklareerida.
  • Kõik Objective-C deklaratsioonid võivad ilmuda ainult globaalses ulatuses, mitte C++ nimeruumis.
  • Objective-C klassidel ei saa olla C++ klasside muutujaid, millel puudub vaikimisi konstruktor või millel on üks või enam virtuaalset meetodit. Kuid viited, mis on suunatud C++ objektile, saab kasutada piiranguteta muutujatena.
  • C++ semantikat, mis on määratletud väärtuste järgi, ei saa rakendada Objective-C objektidele, millele pääseb juurde ainult osutite kaudu.

Objective-C 2.0[muuda | muuda lähteteksti]

2006. aasta Worldwide Developers Conference raames avalikustas Apple "Objective-C 2.0". See on redigeering Objective-C keelest, mis hõlmab ka tänapäevaseid prügikoristusi, süntaksi [9] ja tööaja jõudluse täiustusi[10] ning 64-bitiste süsteemide tuge.

Viited[muuda | muuda lähteteksti]

  1. "Chris Lattner's Homepage". Juuni 2014. Vaadatud 20. detsembril 2019.
  2. "App Frameworks". Apple. Juuni 2014. Vaadatud 20. detsembril 2019.
  3. Amit Singh (detsember 2003). "A Brief History of Mac OS X". Vaadatud 20. detsembril 2019.
  4. Caleb Garling (9. september 2013). "iPhone Coding Language Now World's Third Most Popular". Wired. Vaadatud 20. detsembril 2019.
  5. Brad Cox. "The object oriented pre-compiler: programming Smalltalk 80 methods in C language". New York, ACM. Vaadatud 20. detsembril 2019.
  6. "White Objective-C Code". Apple. April 23 2013. Vaadatud Detsember 20, 1019. {{netiviide}}: kontrolli kuupäeva väärtust: |vaadatud= ja |aeg= (juhend)
  7. Erica Sadun (25. november 2011). "Objective-C Boot Camp". informIT. Vaadatud 20. detsembril 2019.
  8. Mark Dalrymple; Scott Knaster. Learn Objective-C on the Mac. "The .m extension originally stood for "messages" when Objective-C was first introduced, referring to a central feature of Objective-C.". Lk 9.{{raamatuviide}}: CS1 hooldus: mitu nime: autorite loend (link)
  9. "Objective-C 2.0: more clues". https://web.archive.org/web/20090618184513/http://lists.apple.com/archives/Objc-language/2006/Aug/msg00039.html. 10. august 2006. Vaadatud 20. detsembril 2019. {{netiviide}}: välislink kohas |väljaanne= (juhend)
  10. "Re: Objective-C 2.0". Apple. 30. mai 2010. Vaadatud 20. detsembril 2019.