Programowanie urządzeń mobilnych Apple Materiały dydaktyczne. Michał Dudkiewicz Błażej Zyglarski
|
|
- Halina Kołodziej
- 8 lat temu
- Przeglądów:
Transkrypt
1 Programowanie urządzeń mobilnych Apple Materiały dydaktyczne Michał Dudkiewicz Błażej Zyglarski Wydział Matematyki i Informatyki UMK 2012 i
2 Spis treści 1) Podstawy środowiska XCode i języka Objective-C 1 a. Wymagana wiedza wstępna 1 b. Cel dydaktyczny 1 c. Tematyka wykładu i laboratorium 1 d. Zadania 2 e. Prezentacja 6 2) Klasy, obiekty, dziedziczenie i zaawansowane cechy Objective-C 17 a. Wymagana wiedza wstępna 17 b. Cel dydaktyczny 17 c. Tematyka wykładu i laboratorium 17 d. Zadania 18 e. Prezentacja 22 3) Programowanie na iphone interfejs użytkownika 32 a. Wymagana wiedza wstępna 32 b. Cel dydaktyczny 32 c. Tematyka wykładu i laboratorium 32 d. Zadania 33 e. Prezentacja 37 4) Storyboard i inne elementy projektowania interfejsu 44 a. Wymagana wiedza wstępna 44 b. Cel dydaktyczny 44 c. Tematyka wykładu i laboratorium 44 d. Zadania 45 e. Prezentacja 51 5) Animacje UIKit 60 a. Wymagana wiedza wstępna 60 b. Cel dydaktyczny 60 c. Tematyka wykładu i laboratorium 60 d. Zadania 61 e. Prezentacja 65 6) Przechowywanie danych w IOS 71 a. Wymagana wiedza wstępna 71 b. Cel dydaktyczny 71 c. Tematyka wykładu i laboratorium 71 d. Zadania 72 ii
3 e. Prezentacja 75 7) CoreImage 81 a. Wymagana wiedza wstępna 81 b. Cel dydaktyczny 81 c. Tematyka wykładu i laboratorium 81 d. Zadania 82 e. Prezentacja 84 8) AudioToolbox i CoreAudio 89 a. Wymagana wiedza wstępna 89 b. Cel dydaktyczny 89 c. Tematyka wykładu i laboratorium 89 d. Zadania 90 e. Prezentacja 92 9) CoreGraphics / Quartz2D 98 a. Wymagana wiedza wstępna 98 b. Cel dydaktyczny 98 c. Tematyka wykładu i laboratorium 98 d. Zadania 99 e. Prezentacja )OpenGLES i GLKit 110 a. Wymagana wiedza wstępna 110 b. Cel dydaktyczny 110 c. Tematyka wykładu i laboratorium 110 d. Zadania 111 e. Prezentacja )Wzorce projektowe, Tabele 119 a. Wymagana wiedza wstępna 119 b. Cel dydaktyczny 119 c. Tematyka wykładu i laboratorium 119 d. Zadania 120 e. Prezentacja )XML i sieć w ios 133 a. Wymagana wiedza wstępna 133 b. Cel dydaktyczny 133 c. Tematyka wykładu i laboratorium 133 d. Zadania 134 e. Prezentacja ) Sensory, dlaczego Twój smartfon jest smart? 144 a. Wymagana wiedza wstępna 144 b. Cel dydaktyczny 144 c. Tematyka wykładu i laboratorium 144 d. Zadania 145 iii
4 e. Prezentacja )Integracja z IOS 156 a. Wymagana wiedza wstępna 156 b. Cel dydaktyczny 156 c. Tematyka wykładu i laboratorium 156 d. Zadania 157 e. Prezentacja )Integracja z IOS a. Wymagana wiedza wstępna 165 b. Cel dydaktyczny 165 c. Tematyka wykładu i laboratorium 165 d. Zadania 166 e. Prezentacja 168 iv
5 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 1/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
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 2/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
7 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[]) { Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 3/6 3/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
8 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 MaszynaLosujaca : NSObject 4) Kod źródłowy klasy #import MaszynaLosujaca -(int)losuj:(int)zakres{ return 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 4/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
9 #import "MaszynaLosujaca.h" int main(int argc, const char * argv[]) { 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ść NSMutableArray * numery; 2) Nie zapomnij o użyciu żeby wygenerować metody typu get i set dla tego 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 5/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
10 -(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 6/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
11 #import "Fraction.h" #import Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; if ( self ) { [self setnumerator: r: n anddenominator: d]; return self; -(void) print { printf( "%i/%i", numerator, denominator ); -(void) setnumerator: (int) n { numerator = n; -(void) setdenominator: (int) d { denominator = d; Podstawy środowiska XCode i wprowadzenie do języka Objective-C Wykład 1 Popularność Objective-C Miejsce w rankingu popularności języków programowania (void) setnumerator: (int) n anddenominator: (int) d { numerator = n; denominator = d; Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) 2 C jako podstawa Objective-C C jest językiem bazowym dla Objective-C Poza tym można również używać C++ Zorientowany obiektowo Rozszerzenie C Enkapsulacja Dziedziczenie Polimorfizm 3 4 Nazewnictwo plików Dodawanie plików nagłówkowych.h Pliki nagłówkowe. Deklaracje klas, typów, funkcji, stałych.m Pliki źródłowe zawierające kod C i Objective-C.mm Pliki źródłowe zawierające dodatkowo (poza kodem C i Objective-C) również kod C++ #import To samo co #include Ale gwarantuje dodanie pliku tylko raz /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
12 Podstawowe typy danych Klasy Typ Przykład Stałej Znaki formatowania char a, \n %c short int - %hi, %hx, %ho unsigned short int - %hu, %hx, %ho int 12, -97, 0xFFE0, 1077 %i, %x, %o unsigned int 12u, 100U, 0xffffu %u, %x, %o long int 12L, -200l, 0xffffL %li, %lx, %lo unsigned long int 12UL, 100ul, 0xffeeUL %lu, %lx, %lo long long int 0xe5e5e5e5LL, 500ll %lli, %llx, %llo unsigned long long int 12ull, 0xffeeULL %llu, %llux, %llo float 12.34f, 3.1e-5f, 0x1p3 %f, %e, %g, %a double 12.34, 3.1e-5, ox.1p3 %f, %e, %g, %a long double 12.34L, 3.1e-5l %Lf, %Le, %Lg, %La id nil %p 7 Klasa Enkapsulacja danych Metody pracy na danych Obiekt Instancja klasy Własna kopia w pamięci Wskaźniki do metod klasy 8 Klasa w Objective-C Interfejs Interfejs (*.h) Deklaracja Definiuje zmienne instancji Definiuje metody związane z Implementacja (*.m) Implementacja kodu metod 9 10 Klasa w Objective-C Dziedziczenie Dziedziczenie jako sposób na zbudowanie hierarchii obiektów /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
13 Dziedziczenie Przykładowa ścieżka dziedziczenia elementów interfejsu użytkownika Nazwy klas Muszą być unikalne Na przykład pisząc aplikację o nazwie KalendarzKowalskiego można użyć klas KKTabela KKListowanie 13 NS UI Prefiksy jako odpowiednik paczek z języka Java 14 Typowanie Silne konkretne typy Słabe kolekcje obiektów Metody w Objective-C Metody instancji Zakres działania wybrana instancja klasy Wymaga instancji klasy Używamy wskaźników (*) id implikuje użycie wskaźnika. Metody klas Nie wymaga instancji klasy Metody w Objective-C Objective-C jest wrażliwy na wielkość liter Ważna wielkość liter w nazewnictwie metod Metody w Objective-C Typ metody - minus metoda instancji + plus metoda klasy Sygnatura metody składa się zwykle z kliku słów kluczowych, opisujących zmienne /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
14 Metody w Objective-C Typ zwracany Metody w Objective-C Słowa kluczowe sygnatury Nazwa metody: insertobject:atindex: Metody w Objective-C : Dwukropek deklaruje obecność parametru Metody w Objective-C Typy parametrów Metody w Objective-C Nazwy parametrów Wywołanie metody Wywołanie metody odbywa się przez wysłanie do obiektu wiadomości (messaging object) Wiadomość to napis składający się z sygnatury metody i parametrów Zamknięty w nawiasach kwadratowych razem z obiektem do którego jest kierowana 23 [obiekt wiadomosc] 24 10/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
15 Wywołanie metody Zwykłe wysłanie wiadomości Wywołanie metody Pobieranie wartości Zagnieżdżone wysłanie wiadomości Obiekt myappobject ma metody do Pobierania tablicy (thearray) Pobierania obiektu do wstaiwenia (objecttoinstert) Przekazywanie argumentów Zwracane wartości Obiekty jako wskaźniki - (int)magicnumber; - (void)saysomething:(nsstring *)greeting; - (int)magicnumber { return 42; - (void)saysomething:(nsstring *)greeting { NSLog(@"%@", greeting); 27 int interestingnumber = [someobject magicnumber]; 28 Wysyłanie wiadomości do siebie Tworzenie obiektów Pamięć jest alkowana dynamicznie + (id)alloc; zdef. w NSObject - (id)init; inicjalizacja właściwości wartościami początkowymi /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
16 Właściwości obiektu Ustawianie i pobieranie stanu właściwości obiektu z wykorzystaniem syntaktyki. -(type)propertyname -(void)setpropertyname:(type) Klasa jako obiekt Klasa w Objective-C jest w rzeczywistości traktowana jako obiekt typu Class Dlatego może posiadać metody (metody klasy) Metody klas Używane jako metody fabrykujące nowe obiekty klas Używane do przekazywania współdzielonych informacji Przykłady Metody klasy NSString Implementacja Przykład Implementacja klasy MyClass Z metodą fabrykującą createmyclasswithstring: Nazwy metod odpowiadają tym z interfejsu /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
17 Interfejs Implementacja Wiązania Objective-C jest językiem dynamicznym Wiązania późne. Wywoływana jest metoda z klasy obiektu, który rzeczywiście jest wskazywany przez wskaźnik Zmienne Dobra praktyka natychmiastowe inicjalizowanie zmiennych skalarnych BOOL success = NO; int magicnumber = 42; Wskaźniki na obiekty są automatycznie inicjalizowane jako nil. 39 Do nil można wysłać wiadomość i nic się nie dzieje 40 Obiektowe typy danych NSString Ciągi znaków Typ Opis Stałe NSObject Klasa bazowa obiektów Objective-C NSString Ciągi Napis NSMutableString Ciągi znaków o zmiennej długości NSNumber Przechowuje wszelkie typy liczbowe NSInteger NSArray Tablice NSMutableArray Tablice o zmiennej liczbie elementów NSData Dane (bajty) NSMutableData Dane o zmiennym rozmiarze NSHashTable Słownik NSError Błędy NSException Wyjątki NS. 41 Wsparcie dla ciągów znaków znanych z C Zalecane uzycie obiektów NSString Wbudowane zarządzanie pamięcią Ciągi dowolnej długości Unicode Formatowanie (styl printf) 42 13/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
18 NSString NSString *fromcstring = [NSString stringwithcstring:"jakis ciag znakow" encoding:nsasciistringencoding]; Kolekcje NSArray, NSSet i NSDictionary. NSString *mystring zapis"; NSString *anotherstring = [NSString stringwithformat:@"%d %@", NSArray NSArray + (id)arraywithobject:(id)anobject; + (id)arraywithobjects:(id)firstobject,...; - (id)initwithobjects:(id)firstobject,...; Niezmienna Używanie tablicy Używanie tablicy Sortowanie Tworzona jest nowa tablica /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
19 NSMutableArray Zmiennej długości Dodawanie i usuwanie elementów NSSet Zbiór nieuporządkowany obiektów Niezmienny Sortowanie w miejscu NSSet Tylko jedna referencja do jednego obiektu NSDictionary Zapamiętywanie par. Obiektu mogą być kluczami, ale wtedy muszą dawać możliwość skopiowania się przez NSDictionary. 51 Stały 52 NSDictionary NSMutableDictionary Zmienny /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
20 nil w kolekcjach Nie można dodać NSNull klasa singleton. Reprezentuje brak obiektu Zakończenie KONIEC /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
21 Temat 2. Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C Wymagana wiedza wstępna: 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ć język C 6) Znać zasady zarządzania pamięcią w komputerze 7) Znać pojecie wskaźnika 8) Znać podstawowe narzędzia tworzenia aplikacji konsolowych w C 2) Student powinien 1) Znać jezyk Java lub C# lub C++ Cel dydaktyczny 1) Student musi 1) Umieć tworzyć klasy Objective-C 2) Umieć tworzyć hierarchę klas w Objective-C 3) Umieć wykorzystywać późne wywołanie metod w Objective-C 4) Umieć korzystać z kolekcji 5) Umieć tworzyć własne inicjalizatory 6) Znać typ id 2) Student powinien 1) Umieć korzytstać z kategorii klas 2) Umieć definiować kategorie klas 7) Umieć używać wbudowanych struktur danych Objective-C 3) Student może 3) Umieć definiować protokoły 4) Umieć definiować bloki kodu Zakres tematyczny wykładu i laboratorium Niniejsze zajęcia wprowadzają szereg zaawansowanych zagadnień związanych z programowaniem w czystym Objective-C, naświetlając możliwości tego języka pod kontem różnic do innych znanych języków programowania obiektowego. Zostaną przedstawione zaawansowane metody deklaracji klas oraz rozszerzania klas istniejących. Konwencje nazewnictwa klas, obiektów, zmiennych i metod Składowe publiczne, prywatne i chronione alloc + init Właściwości zadeklarowane Zachowanie właściwości (readonly, readwrite, atomic, nonatomic, strong, retain) Praca z własną instancją zmiennej Przechowywanie obiektów w pamięci Silne referencje i słabe referencje NSCopying i (copy) Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 1/5 17/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
22 Protokoły i ich deklaracja i implementacja klas z nimi zgodnych Dziedziczenie protokołów Definicja i użycie kategorii - rozszerzanie własności klas Implementacja kategorii w plikach zewnętrznych Kategorie a nazewnictwo metod Kategorie anonimowe Użycie rozszerzania klas do ukrywania prywatnych elementów klasy. Bloki kodu Bloki kodu i dostęp do zmiennych Załączniki 1. Prezentacja_2.pdf - slajdy prezentacji wykładu Zadania na laboratorium Zadanie 1 Rozszerz klasę MaszynaLotto z poprzednich ćwiczeń, dodając do niej kategorię, pozwalającą na wylosowanie dodatkowo jeszcze jednej liczby z zakresu liczb (jak w grze Lotto z plusem). Użyj do tego kategorii ObjectiveC 1) Kategorię możesz zaimplementować wewnątrz istniejącego pliku lub stworzyć nową parę plików (MaszynaLotto+Plus.h i MaszynaLotto+Plus.m) 2) Wewnątrz nowopowstałych klas zdefiniuj metodę (NSNumber*)plus; #import MaszynaLotto (Plus) -(NSNumber *)plus{ int n = arc4random()%self.numery.count; return [self.numery Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 2/5 18/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
23 3) Zaimportuj do pliku main.m plik nagłówkowy kategorii. Teraz możesz korzystać z klasy MaszynaLotto i wywoływać na niej metodę plus #import <Foundation/Foundation.h> #import "MaszynaLosujaca.h" #import "MaszynaLosujaca+Plus.h" int main(int argc, const char * argv[]) { MaszynaLosujaca * m = [[MaszynaLosujaca alloc]init]; NSNumber * plus = [m losuj]; printf("plus: %d\n",(int)plus.integervalue); for(int i =0;i<6;i++){ NSNumber * l = [m losuj]; printf("%d\n",(int)l.integervalue); return 0; Zadanie 2 Stwórz nową klasę MaszynaMulti, która będzie rozszerzała klasę MaszynaLotto z poprzednich ćwiczeń. MaszynaMulti ma mieć możliwość losowania z 80 liczb. Podpowiedzi 1) W inicjalizatorze klasy MaszynaMulti uzupełnij brakujące liczby #import MaszynaMulti -(id)init{ self= [super init]; if(self){ for(int i = 50;i<=80;i++){ [self.numery addobject:[nsnumber numberwithint:i]]; return 2) W pliku nagłowkowym pamiętaj o zaimportowaniu pliku MaszynaLosująca.h Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 3/5 19/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
24 #import MaszynaMulti : MaszynaLosujaca 3) Skorzystaj z tej klasy tak jak w poprzednich przypadkach MaszynaMulti * m = [[MaszynaMulti alloc]init]; for(int i =0;i<20;i++){ NSNumber * l = [m losuj]; printf("%d\n",(int)l.integervalue); Zadanie 3 (samodzielne) W podobny sposób skonstruuj klasę MaszynaMiniLotto. Zadanie 4 Zadeklaruj tablicę, i umieść w niej obiekty MaszynaLotto, MaszynaMulti i MaszynaMiniLotto. Wylosuj jedną z nich i sprawdź, którą. Na tej podstawie ustal jaką ilość liczb wylosować. Podpowiedzi 1) Sprawdzenie jakiej klasy jest obiekt może być dokonane za pomocą metody iskindofclass if ([maszyna iskindofclass:[maszynamulti class]]){ n=20; Zadanie 5 Dodaj do klasy MaszynaLotto metodę -(void)losujwszystkie; W metodzie tej wylosuj i wypisz n liczb. n ma być określone jako właściwość klasy (ustawiana w inicjalizatorze). W metodzie main z zadania 4 rzutuj wszystkie obiekty na typ MaszynaLotto* i spróbuj na takim obiekcie uruchomić tę metodę. Do poszczególnych klas dodaj nowe implementacje metody losujwszystkie, tak aby wypisywały informację o typie losowania a następnie wywoływały przeładowaną metodę. Podpowiedzi 1) Modyfikacja meody main powinna wyglądać tak MaszynaLosujaca * maszyna = (MaszynaLosujaca*)[maszyny objectatindex:(arc4random()%maszyny.count)]; [maszyna losujwszystkie]; 2) metoda losujwszystkie ma korzystać w właściwości int ilosc; 3) Przeładowanie metody losujwszystkie w klasie MaszynaMultiMulti -(void)losujwszystkie{ printf("%s\n","multimulti"); [super losujwszystkie]; Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 4/5 20/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
25 Zadania samodzielne Zadanie 6 Utworzyć klasę ONP obliczającą wartość wyrażenia podanego w odwrotnej notacji polskiej. W tym celu należy wykorzystać strukturę stosu. W metodzie main() pobierz ze standardowego wejścia ciąg znaków. Następnie zainicjuj instancję klasy ONP z wykorzystaniem jedynego konstruktora przyjmującego jako parametr obiekt NSString* zawierający wyrażenie. Ponadto klasa powinna posiadać metodę wyznaczwartosc, która zwróci wartość wyrażenia. Należy założyć, że w wyrażeniu będą tylko liczby całkowite, jeden operator jednoargumentowy - zmieniający znak liczby oraz dwa operatory dwuargumentowe + i * reprezentujące dodawanie i mnożenie. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 5/5 21/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
26 #import "Fraction.h" #import Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; if ( self ) { [self setnumerator: r: n anddenominator: d]; return self; -(void) print { printf( "%i/%i", numerator, denominator ); -(void) setnumerator: (int) n { numerator = n; -(void) setdenominator: (int) d { denominator = d; Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C Wykład 2 Unikalne nazwy klas wewnątrz aplikacji Aplikacji / użytych frameworków / całego Objective-C Prefiksy -(void) setnumerator: (int) n anddenominator: (int) d { numerator = n; denominator = d; Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) 2 Nazewnictwo klas Nazwy metod Własne klasy 3 literowe prefiksy. RAB - Rovio, aplikacja Angry Birds UPZ - UMK, aplikacja Planer Zajęć Jasne znaczenie i unikalne nazwy wewnątrz klas. stringafterfindingandreplacingalloccurrencesoft hisstring:withthisstring: Reszta jasno ma pokazywać co klasa reprezentuje RABAnimation UPZTable 3 strreplacingstr:str: stringbyreplacingoccurrencesofstring:withstring: 4 Zmienne Nazwy metod zgodne z konwencją Unikalne wewnątrz tego samego zakresu int interestingnumber = 42; int interestingnumber = 44; Przy tworzeniu klasy zgodnej z protokołem Przy tworzeniu metod typu getter i setter Tworzenie obiektów Alloc + init int interestingnumber = 42; { int interestingnumber = 44; 5 new Metody fabrykujące 6 22/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
27 Właściwości obiektu Ustawianie i pobieranie stanu właściwości obiektu z wykorzystaniem syntaktyki. -(type)propertyname -(void)setpropertyname:(type) Właściwości zadeklarowane Składnik klasy posiadający cechy pola i metody Sposób na zastąpienie deklaracji i implementacji metod get i Set w interfejsie klasy. Typ, nazwa, zachowanie 7 8 Właściwości zadeklarowane Każda właściwość specyfikuje metody o nazwach: nazwawlasciwosci (odczyt) setnazwawlasciwosci: (zapis) Właściwości zadeklarowane W implementacji klasy należy użyć dyrektywy aby wygenerować te metody Właściwości zadeklarowane Oszczędzają czas Ułatwiają stworzenie metod typu pobierz/ustaw Zachowanie właściwości readonly - (getter=isfinished) BOOL finished; /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
28 Zachowanie (atomic) NSObject Metody getter / setter zapewniają, że operacje na tych właściwościach będą wykonane atomowo, w przypadku jednoczesnego wywołania z różnych wątków Właściwości (Properties) Standardowo atomic atomic nie znaczy bezpieczny dla wątków. nonatomic pobieranie i ustawianie bez gwarancji Lazy accessor Opóźnienie inicjalizacji obiektu Przechowywanie obiektów Na stosie Tak długo, dopóki mamy do nich dostępne wskaźniki. Praca z własną instancją zmiennej Jeśli kompilator sam generuje którąkolwiek z metod dostępowych, to generuje również tą zmienną. Jeśli nie, to sami jesteśmy odpowiedzialni za tą zmienną Przechowywanie obiektów Przechowywanie obiektów /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
29 Przechowywanie obiektów Silne referencje Silne referencje Słabe referencje Słaba referencja nie implikuje własności i odpowiedzialności między obiektami i nie utrzymuje takiego obiektu przy życiu Słabe referencje Słaba referencja nie implikuje własności i odpowiedzialności między obiektami i nie utrzymuje takiego obiektu przy życiu. Deklarowanie właściwości Domyślne Atrybut strong jest domyślny Słabe /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
30 Lokalne zmienne Również są domyślnie strong Zmienne lokalne słabe Taką zmienną można również zadeklarować jako zmienną słabą. Zmienna zachowuje silną referencję tak długo Aż jest dostępna w zasięgu widoczności. Aż zostanie wykonane przypisanie nowego obiektu albo nil. 25 Istnieje szansa, że obiekt może zostać usunięty z pamięci (jeśli zostaną usunięte do niego referencje silne. Wówczas zmienna jest ustawiana na nil. 26 Zmienne lokalne słabe Do zmiennej jest jakaś silna referencja (copy) Aby Właściwość była zawsze przechowywana w silnej własnej kopii (strong) Obiekt zostanie usunięty po usunięciu silnej referencji Do zmiennej nie ma silnej referencji Obiekt zostanie usunięty od razu po zaalokowaniu (copy) Protokoły Obiekt, który przypisywany do zmiennej takiej właściwości musi Deklarują metody, które mogą być zaimplementowane przez klasę. Być zgodny z protokołem NSCCopying Deklarują interfejs Klasa może być zgodna z Protokołem poprzez implementację zadeklarowanych w nim metod. czyli dać się skopiować 29 Przykład: Używane do implementowania metod potrzebnych w obiektach wykorzystywanych później do różnych celów (np. delegaty) 30 26/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
31 Protokoły Deklaracja protokołu Deklaracja, że klasa będzie implementowała / będzie zgodna z protokołem Nie ma zmiennych instancji Nie mają klasy bazowej Odpowiednie metody muszą być zdefiniowane Deklaracja użycia protokołu Deklaracja protokołu Obiekt może być klasy dowolnej Ale musi być zgodny z protokołem! Mogą specyfikować metody wymagane i opcjonalne Użycie metody opcjonalnej W przypadku chęci skorzystania z metody opcjonalnej, należy sprawdzić, czy obiekt ją implementuje Dziedziczenie protokołów Protokoły mogą dziedziczyć, Tzn. Jeden protokół musi być musi być zgodny z drugim /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
32 Modyfikacja istniejących klas Deklaracja kategorii Dodanie metody do istniejącej klasy Użycie kategorii Nawet jeśli nie mamy dostępu do implementacji klasy oryginalnej XYZPerson+XYZPersonNameDisplayAdditions.h Nie ma różnicy w stosunku do standardowo zmodyfikowanego kodu implementacji klasy Implementacja kategorii XYZPerson+XYZPersonNameDisplayAdditions.m Użycie kategorii.m Kategorie a nazewnictwo metod Nie jest zdefiniowane która metoda zostanie wykonana, jeśli nazwy metod powtórzą się w obrębie Klasy - Kategorii Kategorii 1 - kategorii 2 Należy uważać, szczególnie przy tworzeniu metod dla klas obcych. Problem również w przypadku kompilacji kodu z nowszymi wersjami Klas frameworków. 41 Kategorie a nazewnictwo metod Nie jest zdefiniowane która metoda zostanie wykonana, jeśli nazwy metod powtórzą się w obrębie Klasy - Kategorii Kategorii 1 - kategorii 2 Należy uważać, szczególnie przy tworzeniu metod dla klas obcych. Problem również w przypadku kompilacji kodu z nowszymi wersjami Klas frameworków /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
33 Rozszerzenia klas Rozszerzenia klas Kategorie anonimowe Pozwalają na dodanie do klasy własnych właściwości i zmiennych instancji Deklarowane w bloku implementacji oryginalnej klasy. 43 Deklarowane w bloku implementacji oryginalnej klasy. 44 Użycie rozszerzania klas do ukrywania prywatnych elementów klasy Pierwotny interfejs klasy jest używany do zdefiniowania zachowania i interakcji z klasą jako interfejs publiczny Rozszerzenie klasy dodaje do niej prywatne metody, do użycia wewnątrz jej implementacji. Użycie rozszerzania klas do ukrywania prywatnych elementów klasy Pierwotny interfejs Rozszerzenie Redeklaracja zmiennych Użycie rozszerzania klas do ukrywania prywatnych elementów klasy Kompilator wygeneruje metody Getter jako publiczną Setter jako prywatną, dostępną wewnątrz klasy. Bloki Element języka. Oznaczany znakiem karetki ^ Prywatność zapewniana jest przez zadeklarowanie rozszerzenia klasy wewnątrz kodu źródłowego implementacji Klasy /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
34 Bloki Można zadeklarować zmienną (podobnie jak wskaźnik do funkcji), która będzie skojarzona z blokiem. Bloki Można wywołać wykonanie bloku. Można przekazać blok jako argument metody Są obiektami, więc można je wstawić na przykład do kolekcji Bloki Mogą przyjmować argumenty i zwracać wartości Bloki Można przechwycić wartości zmiennych widocznych w zakresie, w którym definiowany jest blok Bloki Blok przechwytuje wartości zmiennych Wartość oryginalnej zmiennej jest nietknięta Blok nie może zmienić wartości oryginalnej zmiennej Blok nie może zmienić wartości zmiennej przechwyconej (zadeklarowana jako const) block Variables Modyfikator pozwalający na współdzielenie dostępu do zmiennej pomiędzy oryginalną metodą a blokiem /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
35 Blok jako argument metody Właściwość dla bloku Dobra praktyka jeden blok jako ostatni argument Zakończenie KONIEC 57 31/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
36 Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS Wymagana wiedza wstępna: 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ć język C 6) Znać zasady zarządzania pamięcią w komputerze 7) Znać pojecie wskaźnika 8) Znać podstawowe narzędzia tworzenia aplikacji konsolowych w C 9) Znać jezyk Java lub C# lub C++ 10) Umieć tworzyć klasy Objective-C 11) Umieć tworzyć hierarchę klas w Objective-C 12) Umieć wykorzystywać późne wywołanie metod w Objective-C 13) Umieć korzystać z kolekcji 2) Student powinien 1) Umieć tworzyć własne inicjalizatory 2) Znać typ id Cel dydaktyczny 1) Student musi 1) Umieć tworzyć i konfigurować projekty IOS 2) Korzystać z StoryBoard i rozmieszczać elementy na Widokach 3) Umieć stworzyć własny kontroler widoku 4) Tworzyć referencje do obiektów znajdujących się na widoku 5) Obsługiwać domyślne interakcje z obiektami za pomocą własnych metod 6) Znać zasady korzystania 2) Student może 1) Umieć tworzyć własne kontrolki 2) Znać zasady wykorzystania ARC 3) Znać zasady wykorzystania delegatów Zakres tematyczny wykładu laboratorium Niniejsze zajęcia naświetlą sposób tworzenia i uruchamiania aplikacji na urządzenia mobilne pracujące pod kontrolą systemu IOS. Pokażą również jak korzystać z symulatora IOS. Zostanie poruszony temat dostępnych kontrolek systemowych oraz sposoby korzystania z nich. Składniki dobrej aplikacji Xcode Struktura kodu aplikacji IOS Deployment target i wersje Xcode i IOS framework Kompilatory - GCC / LLVM ARC - automatyczne zliczanie referencji Kolejność projektowania interfejsu - samowystarczalne widoki Połączenie między kontrolerem widoku (ViewController) a elementami UI. Apple Mobile Device Programming - 1/5 32/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
37 UIKit - podstawy Załączniki 1. Prezentacja_3.pdf slajdy z prezentacji 2. Tworzenie_aplikacji_iPhone.mp4 - film pokazujący jak stworzyć prosty program w Xcode z uwzględnieniem dodania elementów interfejsu użytkownika i obsługi związanych z nimi akcji. Exercises Exercise 1 Stwórz projekt pustej aplikacji iphone (Single View Application). Na automatycznie stworzonym widoku ustaw obiekty z biblioteki kontrolek 1) UIButton - przyciski cyfr i działań 2) UITextField - wyświetlanie wyniku Podpowiedzi 1) Widok możemy edytować otwierając domyślnie stworzony plik MainStoryBoard.storyboard 2) Obiekty umiesczamy na widoku poprzez przeciągnięcie ich z biblioteki obiektów Apple Mobile Device Programming - 2/5 33/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
38 Zadanie 2 Stwórz własną klasę KalkViewController, i ustaw ją jako kontrolera widoku kalkulatora. Podpowiedzi 1) Klasa powinna dziedziczyć z UIViewController #import UMKTViewController : 2) Ustawienia klasy jako kontrolera należy wykonać w oknie właściwości widoku. Zadanie 3 Zaimplementuj metody WcisniencieCyfry i WcisnienicieDzialania i skojarz je z odpowiednimi przyciskami. Dodaj ReferencingOutlet do pola tekstowego. Podpowiedzi Apple Mobile Device Programming - 3/5 34/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
39 1) Skojarzenie akcji z metodą następuje poprzez przeciągnięcie akcji z listy akcji do kodu metody w klasie kontrolera. 2) Dodaj pola wynik, dopisujemy i dzialanie, aby pamiętać, jaki jest aktualny wynik i jakie jest aktualne działanie i czy jesteśmy w trybie wpisywania liczby, czy już zaczynamy następną #import UMKTViewController : (weak, nonatomic) IBOutlet UITextField (atomic) double (atomic) bool (atomic) int dzialanie; - (IBAction)WicisniecieCyfry:(id)sender; - Apple Mobile Device Programming - 4/5 35/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
40 3) W przypadku wciśnięcia cyfry sprawdź, który przycisk został wciśnięty (na podstawie tekstu na nim umieszczonego - (IBAction)WicisniecieCyfry:(id)sender { UIButton* b = (UIButton*)sender; if(self.dopisujemy){ self.poleliczbowe.text= [NSString stringwithformat:@"%@%@", self.poleliczbowe.text, b.titlelabel.text]; else{ self.dopisujemy=true; self.poleliczbowe.text = b.titlelabel.text; 4) W przypadku wciśnięcia przycisku = wykonaj obliczenie, korzystając z klas stworzonych na ćwiczeniach nr 1. Zadania samodzielne Zadanie 1 Dodaj do kalkulatora przycisk wstecz. Zaimplementuj za pomocą NSMutableArray nieskończoną pamięć Zadanie 2 Dodaj obsługę dzielenia przez 0 Zadanie 3 Dodaj przycisk Pamięć i Zerowanie wraz z odpowiednią funkcjonalnością. Apple Mobile Device Programming - 5/5 36/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
41 #import "Fraction.h" #import Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; if ( self ) { [self setnumerator: r: n anddenominator: d]; return self; -(void) print { printf( "%i/%i", numerator, denominator ); -(void) setnumerator: (int) n { numerator = n; -(void) setdenominator: (int) d { denominator = d; -(void) setnumerator: (int) n anddenominator: (int) d { numerator = n; denominator = d; Programowanie dla iphone projektowanie interfejsu użytkownika Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) Wykład 3 Składniki dobrej aplikacji Wspaniała Innowacyjna Zoptymalizowana Łącząca Dostępna Zlokalizowana Zaprojektowana 2 Wspaniała Dobre pierwsze wrażenie Intuicyjna (praca z nią powinna być oczywista) Wciągająca Umożliwia robienie rzeczy, które dotychczas nie były możliwe Ekscytująca Innowacyjna 3 4 Innowacyjna Zoptymalizowana Wysoka jakość Wysoka wydajność Zintegrowana z funkcjonalnością telefonu. Specyficzna dla IOS??? /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
42 Łącząca iphone + ipad + imac Uzupełniające się części Synchronizująca się zawartość. Dostępna Każdy może tego użyć Dla osób upośledzonych 1 na 5 użytkowników. Wprowadzona do frameworków IOS 7 8 Zlokalizowana Dostępna w różnych językach Dobrze zaprojektowana Jak wygląda? Jak działa? Niech działa jak magia. Niech ipad będzie notatnikiem albo mapą Wymagania Mac Xcode Urządzenie IOS do testowania /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
43 XCode XCode Tworzenie aplikacji Projektowanie Interfejsu użytkownika Testowanie Optymalizacja Publikowanie w AppStore Deployment target Kompilator Starać się używać najnowszych (aktualna i poprzednia) Kiedyś GCC Aktualnie LLVM Szybki (2xgcc) Lepsza optymalizacja kodu ARC Inne nowe możliwości języka Storyboarding Nawigacja i ekrany aplikacji powinny być określone na początku Każdy widok powinien być samowystarczalny. Xcode pierwsza aplikacja Domyślnie zdefiniowany jest jeden widok początkowy /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
44 Okno główne Gdzie startuje aplikacja? Funkcja main w main.m Tworzenie Interfejsu Użytkownika Kontrolki UI Navigation Bar Toolbar Tab Bar Image View Map View Table View Buttons Alerts Kontrolki UI Outlets Text Field Search Bar Scope Bar Segmented Control RefreshControll Slider Stepper Switch 23 Połączenie między kontrolerem widoku (ViewController) a elementami UI. W zasadzie: połączenie między dwoma obiektami /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
45 Projekt aplikacji Papierowy prototyp Widok aplikacji zamienić to wszystko na aplikację UIKit Jak zaprojektować aplikację Żeby zaoszczędzić czas Żeby jak najlepiej spożytkować kod View Controller View Controller // Blok budujący aplikację. View prezentacja danych dla aplikacji Całość aplikacji to hierarchia widoków. View Cotrollers System elementy SDK Content tworzone samodzielnie Containers - Widoki i przepływ aplikacji. View Controller nie powinien być zależny od innych widoków System Controlers Okienko Twiettera Wybór obrazu Tworzenie wiadomości Content controllers Tabela Widok specyficzny dla aplikacji /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
46 Container controllers Pasek przycisków Split View (master detail) Przejścia między controlerami. IOS>5 Container Master Detail (Split View Controller) Split View Controller Container Controller Root View Controller Navigation View Controller Detail View Controller Podklasa UIViewController Dodawanie view Controllers Container to view controller Automatyczne przekazywanie wywołań metod (typu widok został załadowany itp.) Przykład Architektura Container view controller Enkapsulacja dzieci Uważać na hierarchię kontrolerów Nie tworzyć cykli przejść /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
47 Dobrze zaprojektowany widok Zakończenie KONIEC /173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
48 Temat 4. Storyboard i element interfejsu użytkownika Gra w kulki- część 1 Wymagana wiedza wstępna: 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ć język C 6) Znać zasady zarządzania pamięcią w komputerze 7) Znać pojecie wskaźnika 8) Znać podstawowe narzędzia tworzenia aplikacji konsolowych w C 9) Umieć tworzyć klasy Objective-C 10) Umieć tworzyć hierarchę klas w Objective-C 11) Umieć wykorzystywać późne wywołanie metod w Objective-C 12) Umieć korzystać z kolekcji 13) Umieć tworzyć własne inicjalizatory 14) Umieć tworzyć i konfigurować projekty IOS 15) Korzystać z StoryBoard i rozmieszczać elementy na Widokach 16) Umieć stworzyć własny kontroler widoku 17) Tworzyć referencje do obiektów znajdujących się na widoku 18) Obsługiwać domyślne interakcje z obiektami za pomocą własnych metod 19) Znać zasady korzystania 2) Student powinien 1) Znać jezyk Java lub C# lub C++ 2) Znać zasady działania delegatów i hostów 3) Znać typ id Cel dydaktyczny 1) Student musi 1) Umieć definiować przejścia (Segue) i z nich korzystać 2) Umieć otwierać i zamykać widoki modalne za pomocą przejść 3) Tworzyć własne klasy rozszerzające kontrolki z UIKit 4) Dodawać i usuwać obiekty z widoku za pomocą kodu 5) Znać zasady korzystania 2) Student powinien 1) Rozumieć ideę MVC - model - view - controller 2) Rozumieć ideę delegata dla widoku (kontrolera) Zakres tematyczny wykładu laboratorium Niniejsze zajęcia pokażą w jaki sposób tworzyć wielowidokowe aplikacje dla urządzeń IOS. Pokazane zostaną sposoby tworzenia własnych widoków, przeładowywania klas widoków, tworzenia własnych kontrolerów widoków. Pokazane zostaną zasady geometrii w UIKit. Storyboarding - etapy tworzenia nawigacji i struktury aplikacji Samowystarczalność widoków. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 1/7 44/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
49 Przejścia (segue) zdefiniowane pomiędzy kolejnymi widokami. Przekazywanie danych między scenami i przesyłanie danych spowrotem - wykorzystanie delegatów i hostów Kontrolki UIKit Hierarchia klas kontrolek - UIView jako cegiełka budowy aplikacji Właściwości UIView Koordynaty UIView Wymiary ekranów urządzeń Apple UIView zarządzanie widokiem i podwidokami UIView zdarzenia akcji - UIResponder Geometria widoków (frame, bounds, center) Tworzenie widoku z pomocą StoryBoard i programistycznie Programistycznie Tworzenie podklas UIView Metody inicjalizacyjne, rysowania i wyglądu podklasy UIView Alternatywy dla tworzenia podklas Wydajność widoków Praca z dotykiem widoku Załączniki 1. Prezentacja_4.pdf - slajdy prezentacji wykładu 2. Praca ze storyboard.mp4 - film pokazujący jak edytować StoryBoard i tworzyć przejścia między widokami. Zadania na Laboratorium Stwórz projekt gry Uciekająca kulka Zasady gry. Gra polega na śledzeniu i blokowaniu ruchów kulki. Kulka porusza się w losowo wybranym kierunku. Jeśli wypadnie poza krawędź ekranu, gra kończy się. Aby zapobiec wypadnięciu, należy na krawędzi ekranu ustawić blokadę, tak aby przeciąć tor ruchu kulki. Kulka odbije się od blokady i będzie kontynuowała ruch w nowym kierunku. Program ma rozpoczynać się od menu, w którym można rozpocząć grę. Po przegranej, gra ma powrócić do menu. Zadanie 1. Stwórz nowy projekt aplikacji (SingleView) dla iphone. Do StoryBoard dodaj 2 widoki. Stwórz 2 klasy dziedziczące z UIViewController, odpwiedzialne za pracę z tymi widokami. 1) MainView - MainViewController 2) GameView - GameViewController Widok MainView ma być widokiem startowym. W widoku GameView stwórz referencję do obsługiwanego widoku Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 2/7 45/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
50 Podpowiedzi 1) Po dodaniu widoku do StoryBoard, klasę Kontrolera wybieramy we właściwościach Widoku, umieszczonych w prawym panelu XCode. 2) Zanim ustawimy klasę jako klasę Kontrolera Widoku, należy upewnić się, czy taką klasę posiadamy (klasa musi dziedziczyć z UIViewController i być dodana do projektu) 3) Referencję do widoku stworzymy przeciągając pole Referencing Outlet z jego właściwości do kodu kontrolera widoku. Zadanie 2. W widoku MainView dodaj przycisk, pełniący funkcję uruchamiania gry ( Rozpocznij grę ). Dodaj do niego akcję kliknięcia, zakładając, że delegatem jest MainViewController. Między MainView a widokiem gry dodaj modalne przejście (Segue) i nazwij je sgame Zaprogramuj wykonanie tego przejścia po dotknięciu przycisku. Podpowiedzi. 1) Przyciski i elementy dodajemy do widoku, przeciągając je z biblioteki dokumentów 2) Aby dodać Segue przeciągnij prawym przyciskiem myszy między widokami. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 3/7 46/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
51 3) Identyfikator Segue jest bardzo ważny - za jego pomocą wybieramy przejścia do kolejnych widoków 4) Aby dodać kod obsługi zdarzenia dla przycisku, należy przeciągnąć odpowiednią akcję z listy możliwych zdarzeń na okno z kodem Controlera widoku zawierającego przycisk. 5) Kod uruchamiający wybrane przejście to uruchomiona na obiekcie klasy Kontrolera widoku metoda: performseguewithidentifier:sender: - (IBAction)StartGame:(id)sender { [self performseguewithidentifier:@"sgame" sender:self]; Zadanie 3. Dodaj do StoryBoard kolejne kilka widoków (i odpowiadające im klasy Kontrolerów Widoków) 1) HelpViewController i HelpVIew 2) AboutViewController i AboutView 3) TopScoresViewController i TopScoresView Do każdego z widoków dodaj przejścia, na każdym z nich wstaw przycisk pozwalający na powrót do poprzedniego widoku. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 4/7 47/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
52 Podpowiedzi 1) Każdy przycisk powinien mieć oprogramowaną akcję w klasie Kontrolera widoku na którym jest umieszczony 2) Kod akcji zamknięcia widoku powinien być wykonany na obiekcie kontrolera tego widoku i ma postać [self dismissviewcontrolleranimated:yes completion:nil]; Zadanie 4. Stwórz klasę Kulka, dziedziczącą z klasy UIImageView. W inicjalizaotrze załaduj plik z obrazkiem kulki i wstaw go do własnego widoku. Stworzony obiekt tej klasy dodaj do widoku GameView. Podpowiedzi 1) Jeżeli obiekt nowej klasy ma być umieszczany na widoku, powinien dziedziczyć z klasy UIView (lub pośrednio z niej dziedziczyć - UIImageView spełnia ten warunek) #import Kulka : 2) Do klasy kulki należy dodać pole, w którym będzie przechowywany obrazek prezentujący kulkę. Przez wzgląd na późniejsze zadania, należy wykorzystać tu typ UIIMageView. Obiekt przechowywany w tym polu będzie później dodany jako podwidok widoku kulki. Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 5/7 48/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
53 W pliku retain) UIImageView * iv; W pliku iv; 3) W standardowo zaimplementowanej w klasie funkcji initwithframe należy dodać kod inicjalizujący i umieszczający obrazek kulki. - (id)initwithframe:(cgrect)frame { UIImage* i = [UIImage imagenamed:@"b_green.png"]; UIImageView * tiv = [[UIImageView alloc]initwithimage:i]; [tiv setframe: CGRectMake( tiv.frame.origin.x, tiv.frame.origin.y, tiv.frame.size.width/4, tiv.frame.size.height/4)]; self = [super initwithframe: CGRectMake( 230, 200, tiv.frame.size.width, tiv.frame.size.height)]; if (self) { self.iv = tiv; [self addsubview:iv]; return self; 4) Pamiętaj, że aby wykorzystać grafikę, należy 1) Dodać ją do projektu 2) Zawsze dodawać dwie wersje - plik.rozszerzenie - w zwykłej rozdzielczości i plik@2x.rozszerzenie w rozdzielczości dwukrotnie większej dla wyświetlaczy retina 3) Korzystać w kodzie z nazewnictwa dla standardowej rozdzielczości 4) Przy dodawaniu grafiki do projektu zadbać o to, aby były zaznaczone cele (Target), w których paczkach grafika ma być zawarta 5) Zadbać o to, aby nazwy plików były unikalne w obrębie całego projektu (nieistotne nazewnictwo katalogów) 5) Dodanie obiektu kulki do widoku gry sprowadza się do zainicjalizowania go i dodania za pomocą funkcji addsubview: k= [[UMKKULKIKulka alloc]init]; self.widok addsubview:k]; Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 6/7 49/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
54 Zadania samodzielne. Zadanie 1. Uzupełnij bezpośrednio na StoryBoard widoki AboutView - o opis autora programu i HelpView o instrukcję programu. Skorzystaj z obietów z biblioteki obiektów. Zadanie 2. Dodaj do GameView (za pomocą kodu) obiekt ImageViewController z teksturą. Zadbaj o to, aby obiekt ten był zawsze w odległości 20 pikseli od krawędzi ekranu, oraz odpowiednią kolejność elementów na ekranie. Zadanie 3. Dodaj do GameView właściwość Ograniczenie, dziedziczący z UIImageView, wyświetlający kwadrat i zadbaj aby był umieszczony na samym dole hierarchii obiektów Programowanie Urządzeń Mobilnych Apple - materiały do laboratorium - 7/7 50/173 Programowanie Urządzeń Mobilnych Apple - materiały dydaktyczne
Temat 4. Storyboard i element interfejsu użytkownika Gra w kulki- część 1
Temat 4. Storyboard i element interfejsu użytkownika Gra w kulki- część 1 Wymagana wiedza wstępna: 1) Student musi 1) Umieć stworzyć projekt aplikacji konsolowej w XCode z wykorzystaniem Objective-C 2)
Bardziej szczegółowoKlasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoTemat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C
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
Bardziej szczegółowoProgramowanie dla iphone projektowanie interfejsu użytkownika
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoTemat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS
Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS Wymagana wiedza wstępna: 1) Student musi 1) Umieć stworzyć projekt aplikacji konsolowej w XCode z wykorzystaniem Objective-C
Bardziej szczegółowoGLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoTemat 13. Czujniki Dlaczego Twój Smartfon jest taki smart?
Temat 13. Czujniki Dlaczego Twój Smartfon jest taki smart? Wymagana wiedza wstępna: 1) Student musi 1) Umieć stworzyć projekt aplikacji konsolowej w XCode z wykorzystaniem Objective-C 2) Umieć skompilować
Bardziej szczegółowoProgramowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński
Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński Plan Prezentacji. Programowanie ios. Jak zacząć? Co warto wiedzieć o programowaniu na platformę ios? Kilka słów na temat Obiective-C.
Bardziej szczegółowoProgramowanie dla ios
Programowanie dla ios Dane techniczne System operacyjny: okrojona wersja Mac OS X Mobilna wersja przeglądarki Safari Początkowe wspierane tylko aplikacje webowe Od czerwca 2008 dostępne SDK Dystrybucja
Bardziej szczegółowoProgramowanie dla ios
Programowanie dla ios Architektura systemu Cocoa Touch Media Core Services Core OS Architektura systemu Core OS, Core Services - podstawowe interfejsy: typy danych dostęp do plików dostęp do sieci wątki...
Bardziej szczegółowoPolitechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios
Politechnika Poznańska, Instytut Informatyki, TWO/GE Programowanie dla ios 13 stycznia 2012 Urządzenia ios Urządzenie Data prezentacji iphone 9.01.2007/06.2007 ipod touch 5.09.2007 iphone 3G 9.06.2008
Bardziej szczegółowoPROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
Bardziej szczegółowoProgramowanie dla iphone Storyboarding i własne elementy interfejsu użytkownika
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoPrzechowywanie danych w IOS
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoWykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Bardziej szczegółowoProgramowanie dla ios
Programowanie dla ios Trochę historii 1 kwietnia 1976 r. - zostaje założona firma Apple Computer Company przez Steve a Jobsa, Stevena Wozniaka i Ronalda Weyna a W lipcu 1976 rozpoczęłą się sprzedaż Apple
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoJava: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
Bardziej szczegółowoMateriały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Bardziej szczegółowoObiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Bardziej szczegółowoProgramowanie zaawansowane
Programowanie zaawansowane Ćwiczenie 6 Komunikacja silnie typowana I. Utwórz aplikację okienkową realizującą proste obliczenia arytmetyczne. Obsługa zdarzeń w aplikacji typu Windows Form Application odbywa
Bardziej szczegółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoProgramowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
Bardziej szczegółowoWstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Bardziej szczegółowoFrameworki IOS. Wykład 14. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoPHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoWprowadzenie do Objective-C
Wprowadzenie do Objective-C Historia rozszerzenie składni C o elementy obiektowe powstał na początku lat 80-tych zainspirowany SmallTalk iem wstecznie kompatybilny z C Historia Steve Jobs po odejściu z
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoZmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowo2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Bardziej szczegółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoDokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Bardziej szczegółowoWykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty
Bardziej szczegółowoC++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Bardziej szczegółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoWiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego
Bardziej szczegółowoWYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
Bardziej szczegółowoStrona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Bardziej szczegółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoJęzyk C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Bardziej szczegółowoWykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Bardziej szczegółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoZaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowoISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Bardziej szczegółowoOBC01/TOPMOB Projektowanie w języku Objective-C
Szkolenie skierowane do: Programistów zaczynających pracę z platformą ios na urządzeniach iphone oraz ipad. Tematy zajęć: Dzień 1 1. Wprowadzenie Zarys historyczny NextStep oraz rozwój Apple ios Historia
Bardziej szczegółowoLaboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Bardziej szczegółowoKonwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoDzięki szkoleniu. Dni: 3. Opis: Adresaci szkolenia
Kod szkolenia: Tytuł szkolenia: IOS/START Programowanie ios - szybki start Dni: 3 Opis: Adresaci szkolenia Szkolenie adresowane jest do programistów, którzy chcą od podstaw poznać język Objective- C oraz
Bardziej szczegółowoProgramowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści
Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop. 2017 Spis treści Wprowadzenie 13 Poznawanie języka Swift 13 Dokąd zmierza Objective-C? 13 Przygotowania
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoWskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych
Bardziej szczegółowoLaboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
Bardziej szczegółowoASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3
3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0
Bardziej szczegółowoKurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Bardziej szczegółowoDźwięk w IOS. Wykład 8. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoJava Język programowania
Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja
Bardziej szczegółowoPROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
Bardziej szczegółowoKażdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni
Język obiektowy był krokiem ewolucji w programowaniu komputerów. Powstał w wyniku rozwoju języków strukturalnych i zmiany podejścia do problemów informatycznych. Cały otaczający świat składa się z obiektów.
Bardziej szczegółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)
Bardziej szczegółowoTemat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Bardziej szczegółowoMATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
Bardziej szczegółowoPodstawy technologii WWW
Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,
Bardziej szczegółowoUtworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia
Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia nowego projektu (poniżej są utworzone projekty) Po kliknięciu
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Bardziej szczegółowoAplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski
Aplikacje mobilne Pliki zasobów, grafiki, menu, podpinanie zdarzeń dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski Pliki zasobów Jak już robiliśmy wcześniej sporo rzeczy w Androidzie umieszczamy
Bardziej szczegółowoDziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.
Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik
Bardziej szczegółowoPodstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoWstęp do programowania obiektowego. Wykład 2
Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe
Bardziej szczegółowoProgramowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Bardziej szczegółowoSWIFT. Zaawansowane Programowanie Obiektowe
SWIFT Zaawansowane Programowanie Obiektowe Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje
Bardziej szczegółowoTechnologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Bardziej szczegółowoTypy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości
Bardziej szczegółowoProjektowanie aplikacji internetowych laboratorium
Projektowanie aplikacji internetowych laboratorium Programowanie w języku Java Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 7 (zrzuty ekranów pochodzą z wersji
Bardziej szczegółowoPodstawy algorytmiki i programowania - wykład 4 C-struktury
1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy
Bardziej szczegółowoPolitechnika Poznańska Wydział Budowy Maszyn i Zarządzania
1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych
Bardziej szczegółowoWskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Bardziej szczegółowoC++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.
C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowo