1) Student musi 1) Znać j
Transkrypt
1) Student musi 1) Znać j
Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C Wymagana wiedza wstępna: 1) Student musi 1) Znać język C 2) Znać zasady zarządzania pamięcią w komputerze 3) Znać pojecie wskaźnika 4) Znać podstawowe narzędzia tworzenia aplikacji konsolowych w C 2) Student powinien 1) Znać język C++ 2) Znać podstawy programowania obiektowego 3) Student może 1) Znać język Java lub C# Cel dydaktyczny 1) Student musi 1) Umieć stworzyć projekt aplikacji konsolowej w Xcode z wykorzystaniem Objective-C 2) Umieć skompilować i uruchomić program w Xcode 3) Skorzystać z podstawowych klas i funkcji Objective-C 4) Nauczyć się zasad wywoływania metod w Objective-C 5) Znać zasady implementacji obiektów w Objective-C 6) Znać podstawowe proste typy danych oraz podstawowe obiektowe typy danych 2) Student powinien 1) Umieć zaimplementować własną klasę w Objective-C 2) Rozumieć różnicę między metodami klasy a metodami obiektu 3) Umieć operować interfejsami 4) Znać zasady dziedziczenia 5) Rozumieć różnicę między metodami klasy a obiektu 6) Znać zasady dotyczące wiązań w Objective-C 3) Student może 1) Umieć tworzyć i wykorzystywać metody fabrykujące Zakres tematyczny i laboratorium. Niniejsze zajęcia wprowadzają studenta do świata jęyzka Objective-C, który oparty jest na znanych wcześniej standardach języków C i C++. Student nauczy się tutaj podstawowej obsługi środowiska Xcode i napisze proste programy z wykorzystaniem tego jezyka Poruszane zagadnienia: • C jako podstawa Objective-C • Nazewnictwo plików • Dodawanie plików nagłówkowych • Obiektowe typy danych - klasa a obiekt • Interfejs (*.h) • Implementacja (*.m) • Dziedziczenie jako sposób na zbudowanie hierarchii obiektów Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 1/6 • • • • • • • • • • • • Zasady dotyczące nazewnictwa klas w projektach Objective-C Prefiksy jako odpowiednik paczek z języka Java Zarezerwowane prefiksy Apple Typowanie (silne, słabe), typ id Metody instancji (-) i ich zakres działania Metody klas (+) i ich zakres działania Słowa kluczowe sygnatury Obiekty jako wskaźniki Właściwości obiektu Ustawianie i pobieranie stanu właściwości obiektu z wykorzystaniem syntaktyki "." Metody fabrykujące Wiązania późne w ObjectiveC Załączniki 1. Prezentacja_1.pdf - slajdy prezentacji wykładu 2. Pokaz Xcode.mp4 - film pokazujący jak stworzyć pierwszy projekt w Xcode Zadania na Laboratorium Zadanie 1 Stwórz nowy projekt Xcode. Jako typ wybierz aplikację konsolową. Wypisz na standardowe wyjście napis „Hello Xcode!” Podpowiedzi. 1) Aplikację tworzymy wbierając Create a new Xcode project w ekranie startowym Xcode. 2) W kolejnym oknie Xcode możemy wybrać odpowiedni typ aplikacji. W niniejszym zadaniu wybieramy Command Line Tool z sekcji OSX. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 2/6 3) Standardowo zostanie stworzona zwykła aplikacja C, dlatego należy zwrócić uwagę, aby na kolejnym ekranie kreatora wybrać aplikację typu Foundation 4) Kod pełnej aplikacji (czyli zawartość pliku *.m) powinna wyglądać tak #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 3/6 NSLog(@"Hello, Xcode!"); } return 0; } Zadanie 2 Stwórz klasę Objective-C, MaszynaLosujaca, posiadającą metodę -(int)losuj:(int)zakres, losującą z zadanego zakresu liczby i wypisz 20 takich liczb na standardowe wyjście. Podpowiedzi 1) Do losowania użyj funkcji arc4random 2) Klasa MaszynaLosujaca powinna dziedziczyc z klasy NSObject. -(int)losuj:(int)zakres{ return arc4random()%zakres; } 3) Kod źródłowy prawidłowego pliku nagłówkowego #import <Foundation/Foundation.h> @interface MaszynaLosujaca : NSObject -(int)losuj:(int)zakres; @end 4) Kod źródłowy klasy #import "MaszynaLosujaca.h" @implementation MaszynaLosujaca -(int)losuj:(int)zakres{ return arc4random()%zakres; } @end 5) Tworzenie obiektu klasy MaszynaLosujaca * m = [[MaszynaLosujaca alloc]init]; 6) Wywoływanie metod na obiekcie klasy [m losuj:43]; 7) Kompletny kod pliku main.m #import <Foundation/Foundation.h> Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 4/6 #import "MaszynaLosujaca.h" int main(int argc, const char * argv[]) { @autoreleasepool { MaszynaLosujaca * m = [[MaszynaLosujaca alloc]init]; for(int i =0;i<20;i++){ int l = [m losuj:43]; printf("%d\n",l); } } return 0; } Zadanie 3 Napisz program Lotto, który wylosuje bez powtórzeń 6 liczb z 49. Użyj do tego celu własnej klasy MaszynaLotto z metodą -(NSNumber)losuj. Podpowiedzi 1) Do przechowywania numerów do wylosowania wykorzystaj NSMutableArray. Zadeklarują ją jako właściwość klasy, @property(nonatomic) NSMutableArray * numery; 2) Nie zapomnij o użyciu dyrektywy @synthesize żeby wygenerować metody typu get i set dla tego pola. @synthesize numery; 3) Zainicjalizuj pole numery we własnoręcznie stworzonym inicjalizatorze klasy. -(id)init{ self= [super init]; if(self){ self.numery= [[NSMutableArray alloc] initWithCapacity:49]; for(int i = 1;i<=49;i++){ [self.numery addObject:[NSNumber numberWithInt:i]]; } } return self; } 4) Losując obiekt z tej tablicy pamiętaj o jego usunięciu, tak aby w tablicy przy każdym losowaniu zostawało mniej elementów. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 5/6 -(NSNumber*)losuj{ int w= arc4random()%self.numery.count; NSNumber * n = [self.numery objectAtIndex:w]; [self.numery removeObject:n]; return n; } Zadania samodzielne Zadanie 1 Napisz program, który będzie realizował zadanie kalkulatora (dodawanie, odejmowanie, mnożenie i dzielenie. Każde działanie ma być pobrane ze standardowego wejścia. Dla każdego działania ma być stworzony obiekt klasy Działanie i przekazany do obiektu klasy Kalkulator. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 6/6