Objective-C – podstawy języka.

W prawdzie artykuł na temat języka Objective-C opublikowałem na tym blogu dłuższą chwilę temu, przyszedł czas na jego mały refactoring. W ostatnim czasie uzupełniłem nieco informacji na temat tego języka. Mam nadzieję, że dzięki temu, jeszcze szybciej zrozumienie go i zaczniecie pisać programy.

Poniżej w tym poście możecie znaleźć część nowej treści dodanej do wczęśniejszych notatek o Objective-C

Objective-C jest to rozszerzenie języka C, wprowadzające obiektowość. Oprócz frameworka Cocoa systemu Mac OS X, nie jest raczej szerzej wykorzystywany. Język ten wzorowany był na Smalltalk’u.

Czym Objective-C różni się od C i C++?

Objective-C wprowadza do języka C m.in.:

  • Symbol [] – służy do wywoływania metod,
  • Symbol @ – wykorzystuje się do definiowania struktur specyficznych dla Objective-C,
  • Nowe typy, jak np typ id. ( typ id jest wskaźnikiem do obiektu ),
  • Wszystie klasy niejawnie dziedziczą po klasie Object (podobnie jak w Javie),
  • Podobny składniowo do Smalltalka, z niego przejął też częściowo możliwości,
  • Dziedziczenie wyłącznie jednokrotne (klasa nie może dziedziczyć po więcej niż jednej klasie), lecz istnieje mechanizm @protocol, którego odpowiednikiem w Javie są interfejsy, dzięki czemu, de facto, klasa może być dzieckiem jednej klasy oraz dodatkowo implementować jakiś interfejs.
  • Obiekt niezainicjalizowany (pusty) jest reprezentowany przez słowo kluczowe nil.
  • Dynamiczna typizacja przy deklaracji obiektu, nie definiuje się stricte jego typu. Mówi się jedynie, że zmienna będzie reprezentowała obiekt. Decyzja jakiego typu to jest obiekt dokonuje się podczas pracy programu.

Dodałem brakujący opis modyfikatorów dostępu do artykułu:

Modyfikatory dostępu Objective-C

Podobnie jak w języku Java, mamy do dyspozycji 4 poziomy widoczności atrybutów klasy.

ModyfikatorZasięg
@privateatrybut widoczny jedynie dla metod klasy, która go zadeklarowała
@protectedatrybut widoczny dla metod klasy, która go zadeklarowała, oraz dla jej klas potomnych
@publicatrybut widoczny „na zewnątrz” klasy
@packagezasięg pakietowy, widoczny w jednostce w której opisana jest implementacja klasy

Dodałem także małą ściągawkę – z podsumowaniem najbardziej podstawowych konstrukcji języka:

Kod w Objective-CWyjaśnienie działania
Kwadrat* kwadrat;
Deklaracja wskaźnika do obiektu klasy Kwadrat
id obiekt = [Klasa alloc];
Stworzenie nowej instancji klasy Klasa poprzez alokacje pamięci i inicjalizację jej składowych wartością 0 (zero)
id obiekt = [[Klasa alloc] init];
Stworzenie nowej instancji i inicjalizacja jej składowych poprzez wykonanie funkcji (id)init.
[obiekt metoda];
Wywołanie bezparametrowej metody “metoda” obiektu “obiekt”.
[kwadrat ustawWspolrzedne:20.0 :30.0];
Wywołanie metody “ustawWspolrzedne” przyjmującej 2 parametry, które są nienazwane, przez co metoda nie jest bardzo czytelna.
[prostokąt ustawSzerokosc:100 dlugosc:50];
Tutaj widzimy metodę, która została zadeklarowana jako “ ustawSzerokosc:dlugosc:”.
BOOL wolna;
wolna = [maszyna jestWolna];
Wywołanie metody zwracającej wartości typu BOOL z przypisaniem jej rezultatu do zmiennej.
[figura ustawKolor:[innaFigura pobierzKolor]];
Przykład zagnieżdżania wyrażeń.

Dodaj komentarz