Programowanie urządzeń mobilnych Apple Materiały dydaktyczne. Michał Dudkiewicz Błażej Zyglarski

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie urządzeń mobilnych Apple Materiały dydaktyczne. Michał Dudkiewicz Błażej Zyglarski"

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 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ółowo

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Klasy 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ółowo

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C

Temat 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ółowo

Programowanie dla iphone projektowanie interfejsu użytkownika

Programowanie 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ółowo

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

Temat 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ółowo

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

GLKit. 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ółowo

Temat 13. Czujniki Dlaczego Twój Smartfon jest taki smart?

Temat 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ółowo

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Programowanie 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ółowo

Programowanie dla ios

Programowanie 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ółowo

Programowanie dla ios

Programowanie 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ółowo

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Politechnika 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ółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE 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ółowo

Programowanie dla iphone Storyboarding i własne elementy interfejsu użytkownika

Programowanie 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ółowo

Przechowywanie danych w IOS

Przechowywanie 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ółowo

Podstawy Programowania Obiektowego

Podstawy 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ółowo

Wykład 5: Klasy cz. 3

Wykł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ółowo

Programowanie dla ios

Programowanie 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ółowo

Wykład 8: klasy cz. 4

Wykł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ółowo

Java: 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 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ółowo

Materiały do zajęć VII

Materiał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ółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt 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ółowo

Programowanie zaawansowane

Programowanie 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ółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : 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ółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie 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ółowo

Wstęp do Programowania, laboratorium 02

Wstę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ółowo

Frameworki IOS. Wykład 14. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.

Frameworki 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ółowo

PHP 5 język obiektowy

PHP 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ółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY 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ółowo

Wprowadzenie do Objective-C

Wprowadzenie 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ółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘ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ółowo

Zmienne, stałe i operatory

Zmienne, 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ółowo

Techniki 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 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ółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdował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ółowo

2 Przygotował: mgr inż. Maciej Lasota

2 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ółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

1 Podstawy c++ w pigułce.

1 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ółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

Dokumentacja do API Javy.

Dokumentacja 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ółowo

Wykł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 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ółowo

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

C++ - 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ółowo

Swift (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.) 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ółowo

Wiadomoś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 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ółowo

WYKONANIE 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. 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ółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona 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ółowo

Swift (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.) 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ółowo

Język C++ zajęcia nr 2

Ję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ółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykł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ółowo

1. 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? 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ółowo

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane 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ółowo

Lab 9 Podstawy Programowania

Lab 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ółowo

Szablony klas, zastosowanie szablonów w programach

Szablony 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ółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - 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ółowo

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

ISO/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ółowo

OBC01/TOPMOB Projektowanie w języku Objective-C

OBC01/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ółowo

Laboratorium 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. 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ółowo

Podstawy programowania skrót z wykładów:

Podstawy 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ółowo

Informatyka 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 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ółowo

Aplikacje w środowisku Java

Aplikacje 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ółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje 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ółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy 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ółowo

Dzięki szkoleniu. Dni: 3. Opis: Adresaci szkolenia

Dzię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ółowo

Programowanie 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 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ółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA 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ółowo

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.

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. 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ółowo

PLAN 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 ), 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ółowo

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Laboratorium 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ółowo

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

ASP.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ółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs 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ółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz 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ółowo

Dźwięk w IOS. Wykład 8. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.

Dź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ółowo

Wykład 4: Klasy i Metody

Wykł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ółowo

Java Język programowania

Java 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ółowo

PROE 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 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ółowo

Każ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

Każ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ółowo

Programowanie współbieżne i rozproszone

Programowanie 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ółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 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ółowo

MATERIAŁY DO ZAJĘĆ II

MATERIAŁ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ółowo

Podstawy technologii WWW

Podstawy 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ółowo

Utworzenie 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 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA 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ółowo

Aplikacje 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 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ółowo

Dziedziczenie. 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. 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ółowo

Podstawowe 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. 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ółowo

1 Podstawy c++ w pigułce.

1 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ółowo

Wstęp do programowania obiektowego. Wykład 2

Wstę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ółowo

Programowanie obiektowe - 1.

Programowanie 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ółowo

SWIFT. Zaawansowane Programowanie Obiektowe

SWIFT. 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ółowo

Technologie obiektowe

Technologie 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ółowo

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Typy 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ółowo

Projektowanie aplikacji internetowych laboratorium

Projektowanie 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ółowo

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Podstawy 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ółowo

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Politechnika 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ółowo

Wskaź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. 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ółowo

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

C++ - 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ółowo

Programowanie 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 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ółowo

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ - 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