Objective-C: განსხვავება გადახედვებს შორის
[შეუმოწმებელი ვერსია] | [შეუმოწმებელი ვერსია] |
შიგთავსი ამოიშალა შიგთავსი დაემატა
მ Robot: Interwiki standardization |
მ Robot: Cosmetic changes |
||
ხაზი 14:
|თავი1 =
|სახელი1 = პარადიგმა
|მონაცემი1 = [[
|თავი2 =
|სახელი2 = გამოქვეყნების თარიღი
ხაზი 20:
|თავი3 =
|სახელი3 = პშემქმნელი
|მონაცემი3 = [[
|თავი4 =
|სახელი4 = კომპანია
ხაზი 29:
|თავი6 =
|სახელი6 = მთავარი ვერსიები
|მონაცემი6 = [[
|თავი7 =
|სახელი7 = ენების გავლენით
|მონაცემი7 = [[Smalltalk]], [[
|თავი8 =
|სახელი8 = ენებზე ზეგავლენა
|მონაცემი8 = [[
}}
'''Objective-C''' არის [[
დღევანდელ დღეს იგი უმთავრესად გამოიყენება [[Apple]]-ის [[Mac OS X]]-სთვის და [[iPhone OS]]-თვის: მაინც თუ არ ეყრდობიან OpenStep სტანდარტს.
Objective-C არის [[Cocoa API]]-ის მთვარი პროგრამირების ენა, მაინც თუ იგი გამოყენებული იყო [[NeXT]]-ის [[NeXTSTEP OS]]-ის მთავარ ენად. ზოგადი Objective-C პროგრამები რომლებიც არ ხმარობემ ამ ბიბლიოთეკებს შესაძლოა კომპილირებული იყვნენ ნებისმიერი [[
== ისტორია ==
1980 წლებში, პროგრამების შექმნის მიღებული მეთოდი იყო სტრუქტურული პროგრამირება. სტრუქტურული პროგრამირება, პროგრამების პატარა ნაწილებად დაყოფვას ადვიელებს, რომ დიდ პროგრამებზე მუშაობა საკმაოდ ადვილი დარჩეს. მაგრამ რახან პროგრამების მოცულობა იზდებოდა და იზდებოდა სტრუქტურული პროგრამირება საკმარისი აღარ იყო, სამაგიროდ იწერებოდა უფრო მეტი და მეტი პროცედურები (ფუნქციები), რაც პროგრამების კოდს ართულებდა და ამავე დროს კოდის ხელმეორედ გამოყენების უნარს.
[[
სიმართლე რომ ვთაქათ, [[Smalltalk]]-ს ამ პრობლემების უმრავლესი პუნქტი უკვე მოგვარებული ჰქონდა; მსოფლიოში არსებული ზოგიერთი ყველაზე კომპლექსური სისტემები [[Smalltalk]]-ში იყო დაწერილი.
ხაზი 57:
ორივე გაეწნო [[Smalltalk]]-ს როდესაც ისინი 1981 წელს იყვნენ ITT Corporation’s Programming Technology Center-ში კოქსი დაინტერესდა არსებული კოდის ხელახლა გამოყენების პრობლემებით.
იგი დარწმუნდა რომ ენა როგორიცაა [[Smalltalk]]-ი არა ეფექტური აღმოჩდებოდა ITT-ს სისტემირი პროგრამისტებისთვის.
კოქსმა წამოიწყო [[
მან მალე მიიღო გამოსაყენი ვერსია რომელსაც [[
ამასობაში, 1982 წელს, [[ტომ ლოვი|ლოვი]] აიყვანეს Schlumberger Research-ში და მას შესაძლებლობა მიეცა რომ პირველი Smalltalk-80-ის კომერციული ვერსია ეშოვა, რაც მის გამოგონებაზე ზეგავლენა მოახდინა.
ხაზი 66:
მიუხედავად იმისა რომ მან ხაზი გაუსვა იმას რომ კოდის ხელმეორედ გამოყენების პრობლების გადაწყვეტისთვის ენაზე მეტია საჭირო, Objective-C ხშირად აღმოჩდა შედარებული სხვა ენებთან მხოლოდ შესაძლებლობების ფონზე.
=== პოპულარობა NeXT-ის მეშვეობით ===
Apple-ის დატოვების შემდეგ, [[სტივ ჯობი|სტივ ჯობმა]] დააარსა კომპანია [[NeXT|NeXT-ი]].
ხაზი 79:
== სინტაქსი ==
Objective-C არის ძალიან thin [[
ასე რომ, შესაძლოა ნებისმიერი [[
Objective-Cის სინტაქსი მოდის Smalltalk-იდან. არა ობიექტზე-ორიენტირებული ოპერაციების სინტაქსი
(ცვლადები, ინსტრუქციები, ფუნქციის ახწერა, ფუნქციის გამოყენება) არის იგივე რაც [[
=== მესეჯები ===
Objective-Cის [[
[[Simula]]-ს პროგრამირების სტილი, რომელიც გამოყენებულია [[C++]]ში, სემანტიკურად ხაზგასმით განსხვავდება.
Objective-Cში მეთოდემის დაძახება არ ხდემა, არამედ მათ უგზავნით მესეჯებს, ეს კონცეფტი განლაგებს თუ როგორ სრულდება მეთოდის კოდის შესრულება.
ხაზი 108:
ორივე პროგრამირების სტილს მიაჩნია თავისი პლიუსები და მინუსები.
[[Simula]]-ს ნაირი ობიექტზე-ორიენტირება მრავალ მემკვიდრეობას და კოდის ჩქარ შესრულებას უმართავს ხელს კომპილირების დროს ინფორნმაციების შეერთებით სადაც შესაძლოა მაგრამ არა აქვს [[
იგი აგრეთვე იძულებულს ხდის რომ ყოველივე მეთოდს ქონდეს მისი იმპლემენტაცია გარდა იმ შემთხვევაში თუ იგი ვირტუალურია, (იმპლემენტაცია მაინც საჭიროა რომ მეთოდის მოხმარება შეიძლებოდეს).
[[Smalltalk]]-ის ნაირი [[
მესეჯის გაგზავნის მექანიზმი არ ხდის აუცილებელს რიმ გარკვეული ობიექტი ახწერილი იყოს კომპილირების დროს.
([[ტიპის დინამიკურად მინიჭება|ტიპის დინამიკურად მინიჭების]] შესახემ ქვემოთ იხილეთ ნუთუ რა უპირატესობა მოაქვს მას [[
უნდა შევნიშნოთ რომ, მესეჯების გარკვევის დროის გამო Objective-Cს მესეჯების გაგზავნა და მიყება მინიმუმ სამჯერ უფრო ნელია ვიდრე [[C++]]ის ვირტუალური მეთოდის გამოყენებით.[1]
=== ინტერფეისები და იმპლემენტაციები ===
Objective-C აიძულებს პროგრამისტს რონ კლასის ინტერფეისი და იმპლემენტაცია იყოს დაყოფილი კოდის სხვადასხვა ბლოკსი. მიღებული წესის მიხედვით, ინტერფეისი არის დაწერილი თავ ფაილში (header) (გაფართოება .h) და იმპლემენტაცია კი კოდის ფაილში (გაფართოება .m).
==== ინტერფეისი ====
უმრავლეს შემთხვევაში, კლასის ინტერფეისი არის ახწერილი თავ ფაილში (header file). მიღებული წესის მიხედვით თავ ფაილის (header file) სახელი არის კლასის სახელი.
ხაზი 159:
</source>
შეამჩნიეთ რომ instanceMethod2WithParameter წარმოადგენს Objective-Cის დასახელებული პარამეტრის (named parameter) შესაძლებლობას რომელიც არ არსებობს [[
დაბრუნული ცვლადის ტიპი შესაძლოა იყოს ნებისმიერი C-ს ტიპი, მითითება Objective-Cს ზოგად ობიექტთან, ან მითითება სპეციფიკურ ტიპთან როგორიცაა NSArray *, NSImage *, or NSString *.
ხაზი 173:
==== იმპლემენტირება ====
ინტერფეისი მარტო აღნიშნავს კლასის ინტერფეისს და არა თითონ მეთოდებს; მთავარი კოდი იწერება იმპლემეტირების დროს. იმპლემენტირების ფაულების გაფართოება არის .m.
ხაზი 189:
მეთოდები აწერებიან თავიანთი ინტერფეისის ახწერის მიხედვით.
Objective-Cს და [[
<source lang="objc">
ხაზი 217:
მაგრამ, შიდა ფენაში მეთოდის ახწერილი სახელი იშვიათად გამოიყენება, და უმეტეს შემთხვევაში მესეჯების მექანიზმით (Objective-C runtime ბიბლიოთეკის მიხედვით) იხმარება მეთოდები - რომელი მეთოდის დაძახება მოხდება აუცილებელი არაა ცნობილი [[პროგრამის შერწყმა|პროგრამის შერწყმის]] დროს (link time): მიმღები კლასი (რომელიც მესეჯს იღებს) პროგრამის მოქმედების დროს იგებს.
==== ნიმუშის შექმნა ====
როცა Objective-Cში კლასი დაწერილია, მისი ნიმუშის შექმნა შესაძლო ხდება. ეს ხდება ახალი ობიექტისთვის საკმარისი მეხსიერების ნაყოფის მიცემით და მისი მონაცემის მინიჭებით. სანამ ეს ორი ეტაპი არ არის გავლილი ობიექტი ვერ იმოქმედებს. ეს ტიპიურად ერ ხაზი კოდით ხდება:
ხაზი 244:
=== პროტოკოლები ===
Objective-C იქნა დახვეწილი [[NeXT]] კომპანიაში,მას დაემატა მრავალი მემკვიდრების მხარდეჭერა სპეციფიკაციის დროს და არა იმპლემენტაციის დროს (ობიექტზე პროგრამირების კონცეპტი), [[პროტოკოლი (ობიექტზე პროგრამირება)
== რესურსები ინტერნეტში ==
* {{en}}[http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ Introduction to The Objective-C Programming Language (Apple Developer Connection)]
ხაზი 266:
{{პროგრამირების_ენები}}
[[კატეგორია:დაპროგრამების ენები]]
|