PROJEKT INŻYNIERSKI AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE
|
|
- Krystian Orłowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE Wydział Inżynierii Metali i Informatyki Przemysłowej PROJEKT INŻYNIERSKI pt. Opracowanie aplikacji dla systemu Apple ios do obróbki zdjęć z użyciem frameworka Cocoa Touch oraz Quartz 2D Imię i nazwisko dyplomanta: Adrian Malina Kierunek studiów: Informatyka Stosowana Profil dyplomowania: Systemy Informatyki Przemysłowej Nr albumu: Opiekun: dr Magdalena Kopernik Podpis dyplomanta: Podpis opiekuna: Kraków 2012
2 Oświadczam, świadomy(- a) odpowiedzialności karnej za poświadczenie nieprawdy, że niniejszy projekt inżynierski wykonałem(- am) osobiście i że nie korzystałem(- am) ze źródeł innych niż wymienione w pracy. Kraków, dnia... Podpis dyplomanta... Strona 2
3 Spis treści: 0. Wstęp 4 Część I teoretyczna 1. System operacyjny Apple ios Historia systemu ios Architektura systemu ios 7 2. Środowisko Xcode 4 oraz język Objective-C Środowisko programistyczne Xcode Język Objective-C Przekazywanie komunikatów Interfejs i implementacja Akcesory Tworzenie obiektów Zarządzanie pamięcią Instruments Cel projektu 19 Część II projekt aplikacji do obróbki grafiki 4. Frameworki użyte w projekcie Cocoa Touch Quartz 2D Core Image Opis aplikacji Interfejs programu Struktura programu Okno pobierania zdjęcia z aparatu lub galerii Dostępne filtry graficzne Testowanie aplikacji i dyskusja wyników Wnioski i podsumowanie 37 Spis ilustracji 38 Spis tabel 38 Bibliografia 39 Strona 3
4 0. Wstęp Rosnąca popularność urządzeń mobilnych przyczyniła się do powstania nowoczesnych systemów operacyjnych wyposażonych w zestaw zaawansowanych środowisk programistycznych i frameworków służących do zwiększania efektywności pracy programisty nad projektem zapewniając sprawdzoną i stabilną funkcjonalność. Pomimo wcześniejszego istnienia kilku rozbudowanych systemów operacyjnych przeznaczonych dla urządzeń mobilnych (takich jak BlackBerry OS, czy Windows Mobile) prawdziwy wzrost popularności tych urządzeń przyniósł Apple iphone zaprezentowany na konferencji Macworld w 2007 roku. Początkowo nie wyróżniał się on na tle konkurencji, wręcz był on funkcjonalnie zacofany w stosunku do istniejących produktów (włączając w to brak możliwości instalowania zewnętrznych aplikacji), jednak spójny wygląd, oraz wyjątkowo prosta obsługa przyczyniły się do ponad sześciu milionów aparatów pierwszej generacji. Udostępnienie SDK (ang. Software Development Kit) zintegrowanego z IDE XCode oraz wprowadzenie cyfrowego modelu dystrybucji oprogramowania App Store przyczyniło się do gwałtownego rozwoju rynku aplikacji mobilnych. Tylko w pierwszych stu dniach działania usługi App Store osiągnięto wynik 200 milionów pobrań aplikacji. Skuteczność tego modelu dystrybucji oprogramowania natychmiast zauważyła konkurencja otwierając Google Android Market, Nokia Ovi Store czy też BlackBerry App World, jednak to Apple wciąż pozostaje niekwestionowanych liderem jeśli chodzi o przychód ze sprzedaży. O potędze rynku aplikacji mobilnych może świadczyć fenomen gry Angry Birds pobranej ponad pół miliarda razy. Framework Cocoa Touch wraz ze zintegrowanym środowiskiem programistycznym XCode oraz język Objective-C stały się obok Android SDK najbardziej pożądanymi umiejętnościami na rynku programowania urządzeń mobilnych, spychając królującą dotychczas Javę ME. Przedstawiona praca opisuje realizację projektu aplikacji do obróbki graficznej z wykorzystaniem warstwy systemu graficznego Quartz realizującego obsługę grafiki dwuwymiarowej. Strona 4
5 Część I - Teoretyczna Strona 5
6 1. System Operacyjny Apple ios 1.1 Historia systemu ios System Apple ios wywodzi się bezpośrednio z systemu Apple Mac OS X [1], który przeznaczony jest na komputery typu Macintosh. Początkowo były one wyposażone w procesory IBM PowerPC typu RISC, jednak z powodu problemów z dostawami, oraz wysoką ceną zostały one wyposażone w procesory o architekturze Intel x86. Mac OS X był nowym systemem [2], odcinającym się od architektury Mac OS Classic. Wywodzi się on z projektu NeXT przeznaczonego dla stacji roboczych, który to był oparty o architekturę Mach oraz 4.4BSD (Rysunek 1.). Jako natywny język programowania użyto obiektowo zorientowanego Objective-C. NeXT BSD 4.4 Rhapsody (1997) MacOS X (1999) ios (2007) Rysunek 1. Schemat rozwoju systemu ios (opracowanie własne na podstawie Kernelthread [2]). W 1997 roku podupadająca firma Apple postanowiła ponownie zatrudnić Steve a Jobsa, który postanowił wykupić swoją firmę NeXT Inc., po czym rozpoczął rozwój systemu Rapsody mającego być kontynuacją systemu Mac OS Classic przeznaczonego dla komputerów Macintosh. Duży nacisk położono na możliwość uruchamiania oprogramowania z klasycznej wersji systemu, jednocześnie wdrażając całkiem inną, Uniksową architekturę. Stabilna wersja systemu MacOS X 10.0 została wydana w 2001 roku. Mobilny system Apple ios, który początkowo nie posiadał nazwy własnej w prostej linii wywodzi się z biurkowego MacOS X. Został wydany w 2007 roku wraz z premierą pierwszego iphone a. Pierwsze wydanie ios systemu było zamknięte na aplikacje zewnętrze i nie posiadało publicznego SDK, co było główną przyczyną krytyki iphone a. Zestaw aplikacji ograniczał Strona 6
7 się jedynie do obsługi wiadomości tekstowych, kalendarza, galerii zdjęć, aparatu, kalkulatora, giełdy, map, pogody, notatek, zegara, telefonu, maila, przeglądarki internetowej i obsługi muzyki. Wraz z drugim wydaniem w 2008 roku Apple upubliczniło App Store a wraz z nim zestaw narzędzi programistycznych. Cyfrowy model dystrybucji oprogramowania stał się zamknięty, gdyż App Store jest jedyną, zgodną z licencją możliwością zainstalowania zewnętrznych aplikacji, jednak wysokie wymagania stawiane programistom w procesie akceptacji aplikacji do wirtualnego sklepu ograniczają dostępność do wadliwego, bądź złośliwego oprogramowania. 1.2 Architektura systemu ios Architektura systemu ios i MacOS X w dużej mierze jest wspólna, jednak wydzielono z Cocoa API warstwę dla urządzeń mobilnych Cocoa Touch, oraz uproszczono inne składniki systemu, bądź się ich pozbyto (jak np. maszyny wirtualnej Javy). System ios udostępnia cztery warstwy abstrakcji frameworków(rysunek 2.) [3], do których może odwoływać się programista. Cocoa Touch Media Services Core Services Core OS Jądro Środowisko jądra MACH System plików Sieć BSD Obsługa I/O Sterowniki Rysunek 2. Schemat budowy systemu ios (opracowanie własne na podstawie Techtopia [3]). Każda wyższa warstwa zwiększa poziom abstrakcji rozwiązania dostarczając przy tym narzędzia przyczyniające się do zmniejszenia nakładu pracy programisty oraz zredukowania objętości kodu, co bezpośrednio przyczynia się do poprawy jakości wytwarzanego oprogramowania. Strona 7
8 Przykładowo warstwa Cocoa Touch dostarcza framework Adress Book UI (AdressUI.framework) zapewniający integrację z książką adresową systemu. Tę samą funkcję może realizować framework Address Book (AdressBook.framework) z warstwy Core Services. Jednak wysoce abstrakcyjna warstwa z Cocoa Touch dostarcza nam domyślnie cztery kontrolery wraz z gotowym interfejsem graficznym do ich obsługi, których wywołanie i obsługa ogranicza się do kilku linijek kodu. Framework niższej warstwy abstrakcji ogranicza się jedynie do bezpośrednich odwołań do bazy danych książki adresowej pozostawiając nam realizację reszty zadań samodzielnie (np. stworzenie GUI). Warstwa Cocoa Touch jest najwyższą warstwą abstrakcji dostępną w systemie ios. Jej głównymi zadaniami są: obsługa rysowania elementów graficznego interfejsu użytkownika, zarządzanie cyklem życia aplikacji i wielozadaniowością oraz przechwytywanie i rozpoznawanie gestów wielodotykowych. Poza tym pozwala na integrację aplikacji z Mapami Google, książką adresową, obsługę wiadomości tekstowych i i, komunikację między wieloma urządzeniami, a także dostarcza możliwość włączenia do aplikacji reklam z platformy iad firmy Apple. Niższą warstwą jest warstwa multimedialna (ang. Media Services) zawierająca frameworki do renderowania grafiki i tekstu oraz obsługę audio. Do najważniejszych z nich można zaliczyć Core Animations, Core Audio, Core Text, OpenAL, OpenGL ES oraz (użyty w moim projekcie) Quartz 2D wraz z podlegającym mu frameworkiem Core Image, które dostarczają wydajne środowisko do renderowania grafiki 2D z użyciem GPU. Warstwa usług podstawowych (ang. Core Services) dostarcza najbardziej istotne usługi dla działania systemu, do których odwołują się warstwy wyższego poziomu. Kluczowymi frameworkami dostarczonymi przez Core Services są: Foundation Framework najważniejszy framework używany przy pracy z Objective- C. Jest zestawem klas mającym na celu przyśpieszenie pracy z językiem Objective-C. Klasy dostarczane przez niego rozpoczynają się od liter NS od nazwy systemu NextStep. Core Foundation Framework oparty o język C dostarcza podstawową funkcjonalność taką jak typy danych, kolekcje, praca ze Stringami, komunikację socketową i obsługę portów, wątki itp. Core Data Framework - zarządza modelem przechowywania danych. Zamiast pisać strukturę przechowywania danych ręcznie, modeluje się je z pomocą graficznych narzędzi Xcode. Przy wykonywaniu aplikacji wymodelowana struktura danych jest tworzona i zarządzana za pomocą tego frameworku. Dane są przechowywane przy Strona 8
9 pomocy bazy SQLite, a framework zapewnia sprawdzanie poprawności typów danych, sprawdzania spójności między relacjami, wsparcie dla grupowania, filtrowania i organizowania danych w pamięci. Core Location Framework zbiera informacje o położeniu za pomocą GPS, stacji bazowych GSM oraz sieci WiFi. Biblioteki SQLite dostarczają lekkie i wydajne środowisko SQL, którego obsługą zajmuje się Core Data Framework. Programista ios rzadko odwołuje się do warstwy Core Services bezpośrednio szukając rozwiązania prostszego, dostarczonego przez wyższe warstwy abstrakcji. Ostatnią warstwą jest warstwa bazowa systemu Core OS która odwołuje się bezpośrednio do sprzętu. Obsługuje urządzenia takie jak Akcelerometr, Bluetooth, a także zapewnia obsługę akcesoriów zewnętrznych wpinanych do urządzenia za pomocą 30- pinowego wejścia, bądź przez Bluetooth. Najważniejszą częścią tej warstwy jest System. System oparty jest o hybrydowe jądro Darwin (Tabela 1.) [4] przystosowane do pracy pod 32-bitową architekturą typu RISC ARM (ang. Advanced RISC Machine). Łączy ono mikrojądro Mach 3, oraz wiele elementów systemu 4.4BSD takich jak stos sieciowy, czy wirtualne systemy plików. Dzięki włączeniu krytycznych usług do jądra można zachować wysoką wydajność dla najważniejszych zadań (jak w jądrach monolitycznych). Natura mikrojądra natomiast zapewnia modułowość, bez potrzeby wkompilowania całej funkcjonalności do jądra opcjonalne moduły mogą działać w przestrzeni użytkownika. MACH BSD Mikrojądro Mach zarządza zasobami takimi jak użycie procesora, pamięci, planowanie wykonywania procesów oraz dostarcza infrastrukturę do komunikacji z innymi warstwami systemu operacyjnego. Warstwa BSD dostarcza obsługę systemów plików, sieci, systemu bezpieczeństwa UNIX, modelu procesów BSD (sygnały, ID procesów itp.), zgodność z API POSIX a oraz wątki POSIX owe pthreads. Tabela 1. Opis warstw jądra (opracowane na podstawie osxbook.com [4]) Poza UNIXowym hybrydowym jądrem warstwa System dostarcza zestaw narzędzi bazowych. Za pomocą biblioteki LibSystem (napisanej w języku C) mamy dostęp do obsługi wątków (POSIX), sieci (BSD), systemu plików, wejścia/wyjścia, usług DNS, informacji lokalizacyjnych, zarządzania pamięci czy też funkcji matematycznych. Strona 9
10 2. Środowisko Xcode 4 oraz język Objective-C W tym rozdziale zostały przedstawione dwa główne narzędzie do tworzenia aplikacji dla systemu ios środowisko programistyczne Xcode [5], wraz z jego narzędziami pomocniczymi, oraz język Objective-C przeznaczony do programowania w dedykowanym dla ios SDK. 2.1 Środowisko programistyczne Xcode Xcode [5] jest zintegrowanym środowiskiem programistycznym przeznaczonym do rozwoju oprogramowania na platformę MacOS X oraz ios. Poza edytorem kodu i kompilatorem zawiera narzędzia do debugowania, kontroli wersji, emulator urządzeń ios a, a także narzędzia do badania wydajności, diagnostyki połączeń sieciowych, Bluetooth, USB. Środowisko obsługuje wiele języków programowania w tym: C, C++, Objective-C, Java, Python, Ruby. Potrafi ono tworzyć pliki wykonywalne uruchamiające się jednocześnie na platformie PowerPC, a także Intel x86. W przypadku aplikacji na ios docelową architekturą jest ARM. Rysunek 3. Podstawowe narzędzia środowiska Xcode 4 (zrzut ekranu) Podstawowym zestawem aplikacji są: Xcode zintegrowane środowisko programistyczne. Instruments zestaw narzędzi debbugerskich. Dashcode narzędzie do tworzenia widgetów przystosowanych do systemowego Dashboarda (specjalnej przestrzeni, w której można je umieszczać), a także do tworzenia małych narzędzi dla przeglądarki Safari oraz Mobile Safari. Quartz Composer środowisko do programowania wizualnego. Efekty graficzne tworzy się składając z gotowych komponentów diagramy. Powstające kompozycje Strona 10
11 mogą być wyeksportowane do postaci wtyczki i użyte w zewnętrznych programach. Za pomocą akcji Automatora stworzony efekt może być zaaplikowany do dowolnego zdjęcia, filmu, czy też kontrolki w aplikacji. Niestety na chwilę obecną nie można ich użyć bezpośrednio przez SDK ios. W porównaniu do poprzednich wersji Xcode a wersja 4 została znacząco zmieniona [5]. Interfejs programu został zunifikowany. Wielookienkowy tryb pracy został sprowadzony do jednego okna roboczego. Projektant interfejsu aplikacji Interface Builder - został zintegrowany z głównym oknem aplikacji. Aby zaprogramować wybraną akcję (tzw. Outlet) wystarczy przeciągnąć kontrolkę do okna edytora klas. Moduł Assistant służący do modelowania baz danych pozwala na wizualne projektowanie struktury bazy. Co więcej każda zmiana w diagramie powoduje automatyczne generowanie kodu klas służących do obsługi danych. W gestii programisty pozostają jedynie ewentualne drobne poprawki. Okno programu Xcode 4 (Rysunek 4.) domyślnie składa się z kilku głównych paneli, choć jest w dużym stopniu konfigurowalne. Lewa strona górnego panelu służy do sterowania procesem wykonywania aplikacji można wybrać rodzaj kompilacji (Run, test, profile, analyse), zatrzymać aplikację, wybrać urządzenie docelowe (skonfigurowane urządzenie fizyczne, bądź też symulator), przeskakiwać między pułapkami. Prawa strona odpowiada za włączanie paneli środowiska. Nawigacja Edytor kodu Debuggowanie Biblioteki Inspektor Rysunek 4. Okno programu Xcode 4. Strona 11
12 Panel nawigacji (Rysunek 5.) [6] służy do przeglądania zasobów projektu. W zależności od wybranej ikony można nawigować w różny sposób: Rysunek 5. Panel nawigacji (ze strony ios Developer Library [6]). Project navigator pozwala na przeglądanie projektu wyświetlając jego zawartość jako pliki. Widok umożliwia tworzenie nowych plików, dołączanie frameworków do projektu, oraz przeglądanie plików wynikowych działania projektu. Symbol navigator dostarcza hierarchiczny schemat klas, metod, atrybutów i innych struktur związanych z paradygmatem programowania obiektowego. Pozwala na łatwą refaktoryzację oraz enkapsulację kodu. Search navigator wyszukiwarka fraz. Issue navigator pokazuje błędy i ostrzeżenia związane z kodem projektu a także proponuje rozwiązania problemów. Debug navigator zawiera podstawowe narzędzia debuggerskie. Breakpoints navigator pomaga w przeskakiwaniu między pułapkami podczas wykonywania programu. Log navigator dostarcza interfejs do przeglądania logów tworzonych podczas kompilacji oraz podczas czasu pracy aplikacji. Edytor kodu posiada wiele pomocniczych funkcjonalności przyspieszających pracę z kodem, takich jak automatyczne formatowanie kodu, generowanie wcięć, sugerowanie i poprawianie kodu oraz dostęp do dokumentacji online. Dzięki funkcji Assistant editor możemy podzielić okno edytora na dwie części i jednocześnie poruszać się po pliku nagłówkowym i implementacji w przypadku edycji klas. Uruchamiając plik widoku (.xib lub.nib) możemy w prosty sposób tworzyć akcje przeciągając jedynie wybraną kontrolkę (np. Button) do okna edycji klasy. Assistant uzupełni kod tworząc twz. outlet o wybranych parametrach. Co więcej Assistant editor pozwala na graficzne tworzenie modeli relacyjnych baz danych i ich późniejszy eksport w formie klas używających frameworka Core Data. Panel Inspektora wyświetla informacje o obecnie edytowanym pliku takie jak kodowanie, rodzaj znaków zakończenia linii czy też ścieżkę pliku. Strona 12
13 Panel Bibliotek (Rysunek 6.) [6] zawiera gotowe elementy, które można wykorzystać w tworzonym projekcie. Zakładka File Template zawiera gotowe schematy plików takich jak klasy, widoki, kontrolery. Code Snippets zawiera kawałki kodu, które można używać wielokrotnie, np. deklaracje struktur obiektowych (klasy, typy wyliczeniowe, unie, struktury), pętle, bloki wyjątków, bloki switch czy też alokowanie pamięci. Rysunek 6. Panel bibliotek (opracowanie własne na podstawie ios Developer Library [6]). Panel Objects jest zbiorem funkcji i kontrolek frameworka Cocoa Touch, które zostały opisane w Rozdziale 4.1. Panel Media dostarcza nam dostęp do zawartości multimedialnej projektu, takich jak pliki graficzne, audio i wideo. W nowym Xcode [7] wprowadzono także nowy kompilator Apple LLVM Compiler 2.0 dla języków C, Objective-C oraz C++, który jest znacznie szybszy od używanego wcześniej GCC. Podświetlanie składni oraz uzupełnianie kodu jest realizowane przez ten sam parser co podczas kompilacji, a nie przez wewnętrzny parser środowiska, dzięki czemu już podczas edycji kodu eliminujemy możliwe błędy kompilacji. 2.2 Język Objective-C Język Objective-C [8-10] powstał jako rozszerzenie obiektowe języka C za wzór przyjmując pierwszy w pełni język obiektowy Smalltalk. Aby odróżnić elementy obiektowe języka od klasycznej składni C użyto symboli nawiasów kwadratowych [] oraz Klasa składa się z dwóch plików pliku nagłówkowego.h (ang. header), oraz pliku.m (ang. implementation) zawierającego definicje metod. Do języka wprowadzono także własne typy na wzór typów z czystego C, z których najważniejszy jest id, będący referencją do obiektu. Dla programisty popularnych języków obiektowych jak Java, czy C++, których obiektowość jest oparta o język Simula składnia zaczerpnięta ze Smalltalka może wydawać się dziwna. Strona 13
14 2.2.1 Przekazywanie komunikatów W języku Objective-C nie wykonuje się operacji wywołując metody, a wysyła komunikaty. Aby wysłać komunikat method do obiektu object z argumentem argument należy użyć następującej składni: [obiect method:argument]; co odpowiada wywołaniu metody w C++: obiect -> method(argument); Możliwe jest także używanie komunikatów zagnieżdżonych (w przypadku więcej niż dwóch komunikatów przyjęto konwencję zapisywania ich w wielu linijkach): [obiect method:[obiect2 method2]]; Bardzo charakterystyczne jest przekazywanie komunikatów z wieloma parametrami. Wywołanie metody zdefiniowanej tak: -(int) zmienpolozeniex:(int)x Y:(int)y Z:(int)z; odbywa się następująco: [obiect zmienpolozeniex:5 Y:15 Z:25]; Takie przekazanie komunikatu nie ma swojego odpowiednika w języku C++ w wywoływaniu metody Interfejs i implementacja Pliki nagłówkowe i implementacja klasy przypomina tę znaną z języka C++. Obrazowy interfejs i implementację przedstawia Tabela 2. przyklad.h #ifndef przyklad h #define przyklad h C++ przyklad.cpp #include <iostream>; #include "przyklad.h"; class Przyklad { private: int zmienna; public: // metody statyczne static typ metodastatyczna(); // metody obiektu typ metoda(typ parametr, typ parametr2); }; typ Przyklad::metodaStatyczna(){ // ciało metody return zmienna; } typ Przyklad::metoda(typ parametr, typ parametr2){ // ciało metody return zmienna; } #endif Strona 14
15 przyklad.h #import Przyklad : NSObject{ //zmienne int zmienna; } // metody klasy +(typ)metodastatyczna; //metody obiektu -(typ)metoda:(typ)parametr Objective- C przyklad.m #import Przyklad +(typ) metodastatyczna{ // ciało metody return zmienna; } -(typ)metoda:(typ)parametr kilkaparametrow:(typ)parametr2{ // ciało metody return zmienna; Tabela 2. Porównanie schematycznego wyglądu klasy w językach C++ i Objective- C Słowo w języku Objective-C jest odpowiednikiem deklaracji w pliku nagłówkowym w języku C++ (nie należy go mylić ze słowem interface znanym z języków Java i C#, które deklarują abstrakcyjną reprezentację klasy w języku Objective-C odpowiedzialne są za to protokoły Podobnie jak w języku C++ zmienne i metody mają swój poziom widoczności (co określają Odpowiednikiem słowa kluczowego static w Objective-C jest symbol +. Metodę opatrzoną tym symbolem nazywamy metodą klasową Akcesory Tradycyjny zapis gettera i settera wygląda następująco: [obiekt setzmienna: (void)zmienna]; // setter wyjscie = [obiekt zmienna]; // getter Przyjęło się, iż nie używa się prefiksu get. Od wprowadzenia Objective-C 2.0 istnieje możliwość używania notacji z kropką: obiekt.zmienna = (typ)zmienna2; // setter wyjscie = obiekt.zmienna; // getter Należy pamiętać, iż w jednym projekcie powinno się używać jednej konwencji odwoływania się do obiektu. W języku Objective-C zmienne obiektu są zmiennymi prywatnymi w związku z czym trzeba utworzyć odpowiedni akcesor: -(typ) metoda:(typ)zmienna { return [self innametoda: zmienna]; } Strona 15
16 co odpowiadało by w C++: typ metoda (typ)zmienna { return this -> innametoda(zmienna); } Tworzenie obiektów Istnieją dwa główne sposoby tworzenia obiektów. Pierwszy z nich jest bardziej automatyczny i tworzy obiekty samozwalniające (ang. autorelease) się: typ* nowyobiekt = [typ zmienna]; Drugi zagnieżdżony sposób jest sposobem niskopoziomowym: typ* nowyobiekt = [[typ alloc] init]; Metoda alloc rezerwuje pamięć i instancję obiektu określonego typu, a metoda init dokonuje wstępnej konfiguracji obiektu, jak ustawianie zmiennych instancji. Używając typów wbudowanych Objective-C przeważnie nie znamy szczegółów tego procesu. Jednak wiele klas posiada wiele wersji metody init, np. klasa NSNumber: NSNumber* nowyobiekt = [[NSNumber alloc] initwithfloat:5.2]; Zarządzanie pamięcią W porównaniu do takich języków jak Java, czy C# Objective-C nie oferuje Garbage Collectora do 5-tej wersji ios SDK. Jeżeli alokujemy pamięć dla obiektu musimy pamiętać o zwalnianiu pamięci po zakończeniu pracy z obiektem. Do śledzenia alokacji i ewentualnych wycieków pamięci można użyć narzędzi Instruments opisanych w Rozdziale 2.3. Najprostsze operacje zarządzania pamięcią to alokowanie i zwalnianie pamięci (Rysunek 7. (a)). Do tego służą metody alloc oraz release: typ *nowyobiekt = [[typ alloc] init ]; // alokujemy pamięć [argument release]; // zwalniamy pamięć (a) (b) (1) (0) [obj alloc] [obj release] (1) (0) (0) [obj alloc] [obj autorelease] [obj release] (c) (1) (0) (1) (0) [obj alloc] [obj autorelease] [obj retain] [obj release] Rysunek 7. Sposoby zarządzania pamięcią (opracowanie własne). Strona 16
17 Aby zwolnić pamięć można oprócz release użyć metody autorelease, która zwalnia obiekt, ale nie robi tego natychmiastowo (Rysunek 7. (b)). Szary kwadrat oznacza, iż obiekt istnieje w pamięci, natomiast (1) oraz (0) określa czy istnieje dostęp do obiektu. Trzecia metoda (Rysunek 7. (c)). umożliwia alokację obiektu, skonfigurowanie go i automatyczne zwolnienie z pamięci, jednak dostęp do obiektu jest zachowywany przez metodę retain. Jest to przydatne w momencie kiedy chcemy uzyskać dostęp do obiektu ostatni raz. Po wywołaniu metody retain obiekt zostanie usunięty z pamięci. W Objective-C 2.0 został wprowadzony mechanizm odśmiecający pamięć nazywany Automatic Reference Counting. 2.3 Instruments Narzędzie Instruments składa się z wielu modułów(rysunek 8.) służących do badania jakości wytwarzanego oprogramowania, które przedstawia w formie wykresów, ale także umożliwia dostęp do dokładnych danych w formie logów tekstowych. Rysunek 8. Narzędzie Instruments dostępne moduły (zrzut ekranu). Moduły odpowiedzialne są za: Allocations śledzi alokowanie pamięci przez konkretne obiekty Strona 17
18 Leaks - poszukuje wycieków pamięci i prowadzi statystyki alokacji pamięci przez obiekty Activity Monitor monitor aktywności prowadzi statystyki dotyczące użycia procesora, pamięci, dysku czy sieci. Automation pozwala na tworzenie skryptów, które symulują interakcje z interfejsem użytkownika aplikacji Energy Diagnostics zbiera informacje na temat zużycia energii przez procesor, wyświetlacz, moduły Bluetooth, WiFi i GSM. Network Connections analizuje ruch sieciowy Core Animations bada wydajność renderowania animacji przy pomocy frameworka Core Animations OpenGL ES Analysis wyszukuje i analizuje problemy z wydajnością renderowania grafiki z użyciem OpenGL ES Instruments umożliwia śledzenie wykonywania programów dla urządzeń fizycznych z systemem ios oraz MacOS X, a także pozwala na pracę z symulatorem systemu ios. Strona 18
19 3. Cel projektu Celem niniejszego projektu jest stworzenie aplikacji do podstawowej obróbki zdjęć dla systemu ios z możliwością pobierania zdjęć z wbudowanej kamery bądź też z galerii zdjęć. W celu zrealizowania projektu posłużono się środowiskiem programistycznym Xcode 4 wraz z zainstalowanym ios SDK 5. Założono, iż interakcja między użytkownikiem a urządzeniem mobilnym ma być zrealizowana za pomocą frameworka Cocoa Touch, a stworzona aplikacja powinna być oparta o wzorzec projektowy Model-Widok-Kontroler. Renderowanie grafiki ma być zaimplementowane poprzez graficzne frameworki Quartz 2D oraz Cocoa Touch, a sama aplikacja ma umożliwiać pobieranie zdjęć bezpośrednio za pomocą aparatu wbudowanego w urządzenie. Strona 19
20 Część II - Projekt aplikacji do obróbki zdjęć Strona 20
21 4. Frameworki użyte w projekcie Założeniem przy projektowaniu aplikacji mobilnej na system ios było maksymalne wykorzystanie możliwości dostarczanych wraz z SDK firmy Apple a co za tym idzie zminimalizowanie implementacji własnych funkcji do niezbędnego minimum. Użyte SDK [3] w wersji 5-tej dostarcza ważną nowość przy projektowaniu aplikacji mianowicie framework Core Images, który wcześniej był dostępny jedynie dla biurkowej linii systemów Apple Mac OS X. 4.1 Cocoa Touch Framework Cocoa Touch jest obiektowym frameworkiem napisanym głównie w języku Objective-C służącym przede wszystkim do implementacji interakcji pomiędzy użytkownikiem a urządzeniem. Cocoa Touch implementuje wzorzec projektowy Model-Widok-Kontroler (Rysunek 8.) [12]. Model jest zestawem klas odpowiadających za reprezentację danych. Wszystkie funkcje operujące na zbiorach danych powinny być zawarte w nim. Model nie odpowiada za graficzną reprezentację danych, nie musi nawet wiedzieć, że takowa istnieje. Całość danych zawartych w modelu powinna być zhermetyzowana. Kontroler Model Widok Rysunek 9. Wzorzec projektowy Model- Widok- Kontroler [12]. Widok odpowiada za graficzną reprezentację programu w środowisku Xcode widok tworzy się za pomocą projektanta interfejsu Interface Buildera. Do stworzenia podstawowego interfejsu wystarczą proste operacje typu przeciągnij i upuść w tej pracy jedynie kilka widoków zostało wzbogaconych o własny kod. Większość interakcji realizuje wprowadzony przez SDK 5 Storyboard [13] narzędzie służące do tworzenia i dodawania interakcji za pomocą graficznego edytora. Storyboard (Rysunek 10.) rozwiązuje znaczną część problemów z nawigacją między widokami w projekcie występującymi w poprzednich wersjach SDK. Strona 21
22 Rysunek 10. Schemat widoków utworzonych za pomocą Storyboard (zrzut ekranu). Strona 22
23 Kontroler jest łącznikiem pomiędzy widokiem a reprezentacją danych. Odpowiedzialny jest za logikę aplikacji oraz za komunikację pomiędzy modelem a widokiem. Najważniejszą klasą w aplikacji jest klasa AppDelegate. Zawiera ona okno główne oraz domyślne metody mówiące o cyklu życia aplikacji. #import AppDelegate : UIResponder (strong, nonatomic) UIWindow Klasa ta domyślnie tworzy nową instancję okna, która automatycznie poszukuje głównego kontrolera widoków klasy RootViewController. Klasa ta nie jest niczym innym jak kontrolerem widoku utworzonego przez Storyboarda, który znajduje się w pliku MainStoryboard.storyboard, będącego plikiem XML. W przypadku tej aplikacji realizowany jest widok stron z klasy UIPageViewController. #import RootViewController : UIViewController (strong, nonatomic) UIPageViewController Framework Cocoa Touch dostarcza pokaźny zestaw domyślnych obiektów. Zawarte są w nim między innymi: Kontrolki: o Label etykieta tekstowa, o Button przycisk dotykowy, o Text Field pole tekstowe o Slider suwak, o Switch przełącznik stanu, Widoki: o Table View widok tabeli (wiersze), o Image View widok obrazka, o Text View widok tekstu, o Web View zagnieżdżony widok strony internetowej, o Map View widok mapy, Rozpoznawanie gestów: o Tap Guesture gest pukania, o Pinch Guesture - gest szczypania, Strona 23
24 o Rotation Guesture gest obracania, o Swipe Guesture gest przesuwania, o Pan Guesture gest rozsuwania palców, o Long Press Guesture gest długiego przytrzymania palców, Obiekty i kontrolery o View Controller kontroler widoku, o Table View Controller kontroler widoku tabeli, o Navigation Controller kontroler widoku nawigacji, o Tab Bar Controller kontroler widoku kart, o Page View Controller kontroler widoku stron, Aby móc określić interakcje między obiektem a jego graficzną formą należy nadać obiektowi ujście (ang. outlet) bądź akcję. Ujście pozwala na odwołanie się do obiektu w celu, np. zmiany jego właściwości (np. zmiana etykiety tekstowej), natomiast akcja pozwala na określenie, która metoda klasy może być wywoływana bezpośrednio z widoku. #import Filters : UIView { UISlider *rotate; // definicja obiektu (nonatomic, retain) IBOutlet UISlider *rotate; // ustawiamy outlet -(IBAction)doRotate:(id)sender; // definicja metody do której można przypisać akcję Po poprawnym ustaleniu w kodzie outletów oraz akcji możliwe będzie za pomocą projektanta interfejsów ustalenie interakcji (przez przeciągnięcie ikony plusa do odpowiedniej kontrolki w widoku). 4.2 Quartz 2D Framework Quartz 2D [14] jest dwuwymiarowym silnikiem renderującym dla systemów MacOS X dostarczającym podstawowych funkcji graficznych takich jak rysowanie prymitywów, przezroczystość, cienie, zarządzanie kolorami czy anty-aliasing. Pomimo, iż w projekcie nie został on bezpośrednio użyty to jest on podstawą dla innych frameworków systemu ios, takich jak Core Animation, Core Video, OpenGL ES oraz użyty w moim projekcie Core Images. Strona 24
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ół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 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 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ół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ół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ół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ół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ół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ół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: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych
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ółowoCzym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa
1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma
Bardziej szczegółowoKrótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.
GRZEGORZ FURDYNA Krótka Historia Co to jest NetBeans? Historia Wersje NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły NetBeans Profiler Narzędzie do projektowania GUI Edytor NetBeans
Bardziej szczegółowoProgramowanie Urządzeń Mobilnych. Laboratorium nr 7, 8
Programowanie Urządzeń Mobilnych Laboratorium nr 7, 8 Android Temat 1 tworzenie i uruchamianie aplikacji z użyciem Android SDK Krzysztof Bruniecki 1 Wstęp Platforma Android jest opartym na Linuxie systemem
Bardziej szczegółowoTemat 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ółowoJava jako język programowania
Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)
Bardziej szczegółowoBUDOWA APLIKACJI NA PLATFORMĘ IPHONE/IPAD. dr inż. Marcin Tomana
BUDOWA APLIKACJI NA PLATFORMĘ IPHONE/IPAD dr inż. Marcin Tomana ipod Touch ipod nano - najpopularniejsze urządzenie do odtwarzania muzyki - ograniczone jednak funkcje! ipod Touch - to możliwości prawie
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ółowoDokument Detaliczny Projektu
Dokument Detaliczny Projektu Dla Biblioteki miejskiej Wersja 1.0 Streszczenie Niniejszy dokument detaliczny projektu(ddp) przedstawia szczegóły pracy zespołu projektowego, nad stworzeniem aplikacji bazodanowej
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoPlan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym
1 Wprowadzenie do środowiska Oracle APEX, obszary robocze, użytkownicy Wprowadzenie Plan Administracja obszarem roboczym 2 Wprowadzenie Co to jest APEX? Co to jest APEX? Architektura Środowisko Oracle
Bardziej szczegółowoAndroid - wprowadzenie. Łukasz Przywarty 171018
Android - wprowadzenie Łukasz Przywarty 171018 Ramowy plan prezentacji Czym jest Android: definicja, krótka historia. Architektura systemu. Architektura aplikacji. Właściwości systemu. Środowisko deweloperskie.
Bardziej szczegółowoObiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
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ółowoCechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;
14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi
Bardziej szczegółowoPlan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy
Plan Podstawy narzędzia Application Builder, 2 budowa strony, kreatory Architektura Tworzenie Tworzenie formularza tabelarycznego Budowa strony 2 Architektura Aplikacja kolekcja stron połączonych ze sobą
Bardziej szczegółowoTworzenie oprogramowania
Tworzenie oprogramowania dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1 Tworzenie oprogramowania dla systemów wbudowanych Program wykładu: Tworzenie aplikacji na systemie wbudowanym. Konfiguracja
Bardziej szczegółowoProjektowanie, tworzenie aplikacji mobilnych na platformie Android
Program szkolenia: Projektowanie, tworzenie aplikacji mobilnych na platformie Android Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Projektowanie, tworzenie aplikacji mobilnych
Bardziej szczegółowoZacznij Tu! Poznaj Microsoft 2012. Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska
Zacznij Tu! Poznaj Microsoft 2012 Visual Basic Michael Halvorson Przekład: Joanna Zatorska APN Promise, Warszawa 2013 Spis treści Wstęp...................................................................vii
Bardziej szczegółowoCzym są właściwości. Poprawne projektowanie klas
Z akcesorów get i set korzysta każdy kto programuje w C#. Stanowią one duże udogodnienie w programowaniu obiektowym. Zapewniają wygodę, bezpieczeństwo i znacząco skracają kod. Akcesory są ściśle związane
Bardziej szczegółowoXQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Bardziej szczegółowoREFERAT PRACY DYPLOMOWEJ
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany
Bardziej szczegółowoInstalacja SQL Server Express. Logowanie na stronie Microsoftu
Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy
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ółowoForum Client - Spring in Swing
Forum Client - Spring in Swing Paweł Charkowski. 0. Cel projektu Celem projektu jest próba integracji Spring Framework z różnymi technologiami realizacji interfejsu użytkownika, oraz jej ocena. Niniejszy
Bardziej szczegółowoCzęść I Rozpoczęcie pracy z usługami Reporting Services
Spis treści Podziękowania... xi Wprowadzenie... xiii Część I Rozpoczęcie pracy z usługami Reporting Services 1 Wprowadzenie do usług Reporting Services... 3 Platforma raportowania... 3 Cykl życia raportu...
Bardziej szczegółowoKurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Bardziej szczegółowoKonspekt pracy inżynierskiej
Konspekt pracy inżynierskiej Wydział Elektryczny Informatyka, Semestr VI Promotor: dr inż. Tomasz Bilski 1. Proponowany tytuł pracy inżynierskiej: Komunikator Gandu na platformę mobilną Android. 2. Cel
Bardziej szczegółowoJava w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA
Java w 21 dni / Rogers Cadenhead. Gliwice, cop. 2016 Spis treści O autorze 11 Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA Dzień 1. Rozpoczynamy przygodę z Javą 21 Język Java 21 Programowanie obiektowe 24 Obiekty
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy
Bardziej szczegółowoProgramowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Bardziej szczegółowoBudowa aplikacji ASP.NET z wykorzystaniem wzorca MVC
Akademia MetaPack Uniwersytet Zielonogórski Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Krzysztof Blacha Microsoft Certified Professional Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Agenda:
Bardziej szczegółowo16) Wprowadzenie do raportowania Rave
16) Wprowadzenie do raportowania Rave Tematyka rozdziału: Przegląd wszystkich komponentów Rave Tworzenie nowego raportu przy użyciu formatki w środowisku Delphi Aktywacja środowiska Report Authoring Visual
Bardziej szczegółowoStruktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski
Struktura systemu operacyjnego Schemat budowy systemu operacyjnego model warstwowy Schemat budowy systemu operacyjnego części składowe Większość systemów operacyjnych opiera się o koncepcję jądra, która
Bardziej szczegółowoREFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką
REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką Autor: Paweł Konieczny Promotor: dr Jadwigi Bakonyi Kategorie: aplikacja www Słowa kluczowe: Serwis
Bardziej szczegółowoJavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska
JavaFX - wprowadzenie JavaFX Wydział Informatyki i Zarządzania Politechnika Wrocławska Definicja JavaFX - wprowadzenie Definicja Historia JavaFX Script Rich Internet Application JavaFX - rodzina technologii
Bardziej szczegółowoPodstawy technologii cyfrowej i komputerów
BESKIDZKIE TOWARZYSTWO EDUKACYJNE Podstawy technologii cyfrowej i komputerów Budowa komputerów cz. 2 systemy operacyjne mgr inż. Radosław Wylon 2010 1 Spis treści: Rozdział I 3 1. Systemy operacyjne 3
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ółowoCUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki
Bardziej szczegółowoInstrukcja obsługi. Karta video USB + program DVR-USB/8F. Dane techniczne oraz treść poniższej instrukcji mogą ulec zmianie bez uprzedzenia.
Instrukcja obsługi Karta video USB + program DVR-USB/8F Dane techniczne oraz treść poniższej instrukcji mogą ulec zmianie bez uprzedzenia. Spis treści 1. Wprowadzenie...3 1.1. Opis...3 1.2. Wymagania systemowe...5
Bardziej szczegółowoJava. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
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ółowoZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia
ZP/ITS/11/2012 Załącznik nr 1a do SIWZ ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia Przedmiotem zamówienia jest: Przygotowanie zajęć dydaktycznych w postaci kursów e-learningowych przeznaczonych
Bardziej szczegółowoWykład Ćwiczenia Laboratorium Projekt Seminarium
WYDZIAŁ ELEKTRONIKI KARTA PRZEDMIOTU Nazwa w języku polskim Języki programowania Nazwa w języku angielskim Programming languages Kierunek studiów (jeśli dotyczy): Informatyka - INF Specjalność (jeśli dotyczy):
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ółowoTworzenie prezentacji w MS PowerPoint
Tworzenie prezentacji w MS PowerPoint Program PowerPoint dostarczany jest w pakiecie Office i daje nam możliwość stworzenia prezentacji oraz uatrakcyjnienia materiału, który chcemy przedstawić. Prezentacje
Bardziej szczegółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Bardziej szczegółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowoTworzenie aplikacji Web Alicja Zwiewka. Page 1
Tworzenie aplikacji Web Alicja Zwiewka Page 1 Co to są web-aplikacje? Aplikacja internetowa (ang. web application) program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową
Bardziej szczegółowoDokument Detaliczny Projektu
Dokument Detaliczny Projektu Dla Biblioteki miejskiej Wersja 1.0 Streszczenie Niniejszy dokument detaliczny projektu(ddp) przedstawia szczegóły pracy zespołu projektowego, nad stworzeniem aplikacji bazodanowej
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ółowoWprowadzenie do biblioteki klas C++
Instrukcja laboratoryjna nr 7 Programowanie w języku C 2 (C++ poziom zaawansowany) Wprowadzenie do biblioteki klas C++ WxWidgets mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz dr inż. Wilk-Jakubowski
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ółowoCOMARCH IT AKADEMIA. Programista VBA w Microsoft Excel (microbootcamp)
COMARCH IT AKADEMIA Programista VBA w Microsoft Excel (microbootcamp) Cele szkolenia 1. Poznanie zasad rzemiosła i sztuki programowania w VBA. 2. Zdobycie umiejętności czytania kodu ze zrozumieniem. 3.
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ółowoPoczątki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8
Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick
Bardziej szczegółowoSystem zarządzający grami programistycznymi Meridius
System zarządzający grami programistycznymi Meridius Instytut Informatyki, Uniwersytet Wrocławski 20 września 2011 Promotor: prof. Krzysztof Loryś Gry komputerowe a programistyczne Gry komputerowe Z punktu
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowo1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
Bardziej szczegółowoDiagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.
Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze
Bardziej szczegółowoSYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)
(opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie
Bardziej szczegółowoSpriteKit. Biblioteka do tworzenia gier wbudowana w SDK. Wspiera grafikę 2D w oparciu o sprite y
SpriteKit SpriteKit Biblioteka do tworzenia gier wbudowana w SDK Wspiera grafikę 2D w oparciu o sprite y SpriteKit HelloWorld SpriteKit HelloWorld SpriteKit AppDelegate identyczny jak w innych szablonach
Bardziej szczegółowoTo sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski, okna, menu) i
Aleksandra Dębiecka To sposób w jaki użytkownik wchodzi w interakcje z systemem. To sposób w jaki użytkownik wchodzi w interakcje z systemem. Środowisko graficzne używa kombinacji graficznych elementów(przyciski,
Bardziej szczegółowoJęzyki i paradygmaty programowania - 1
doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.edu.pl http://www.tjeleniewski.wstt.edu.pl Cele przedmiotu Umiejętność zastosowania i oceny przydatności paradygmatów
Bardziej szczegółowoTworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski
Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski Agenda Dlaczego PhoneGap i co to jest? Możliwości PhoneGap Jak pisać aplikacje z PhoneGap? Konfiguracja i przykład aplikacji
Bardziej szczegółowo<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>
Wersja [Uwaga: Niniejszy wzór dostarczony jest w celu użytkowania z Unified Process for EDUcation. Tekst zawarty w nawiasach kwadratowych i napisany błękitną kursywą
Bardziej szczegółowoSzczegółowy opis zamówienia:
Szczegółowy opis zamówienia: Rok 2016 budowa stron w html5 (8h v + 4h ćw) 8 szt. html5 - zaawans. (7h v + 5h ćw) 8 szt. programowania w java script (9h v + 7h ćw) 8 szt. java script zaawans (8h v + 4h
Bardziej szczegółowoTutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.
AGH, EAIE, Informatyka Winda - tutorial Systemy czasu rzeczywistego Mirosław Jedynak, Adam Łączyński Spis treści 1 Wstęp... 2 2 Przypadki użycia (Use Case)... 2 3 Diagramy modelu (Object Model Diagram)...
Bardziej szczegółowoMariusz Trzaska Modelowanie i implementacja systemów informatycznych
Mariusz Trzaska Modelowanie i implementacja systemów informatycznych Notka biograficzna Dr inż. Mariusz Trzaska jest adiunktem w Polsko-Japońskiej Wyższej Szkole Technik Komputerowych, gdzie zajmuje się
Bardziej szczegółowoINŻYNIERIA OPROGRAMOWANIA
INSTYTUT INFORMATYKI STOSOWANEJ 2013 INŻYNIERIA OPROGRAMOWANIA Inżynieria Oprogramowania Proces ukierunkowany na wytworzenie oprogramowania Jak? Kto? Kiedy? Co? W jaki sposób? Metodyka Zespół Narzędzia
Bardziej szczegółowoProgramowanie Obiektowe GUI
Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu
Bardziej szczegółowoNarzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl
Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z
Bardziej szczegółowoOpis szybkiego uruchomienia programu APBSoft
Opis szybkiego uruchomienia programu APBSoft www.telmatik.pl Program APBSoft należy instalować z otrzymanej płyty CD albo pobrać ze strony www.telmatik.pl. W drugim przypadku program dostarczany jest w
Bardziej szczegółowoWykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Bardziej szczegółowoRys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:
1. QT creator, pierwsze kroki. Qt Creator wieloplatformowe środowisko programistyczne dla języków C++, JavaScript oraz QML, będące częścią SDK dla biblioteki Qt. Zawiera w sobie graficzny interfejs dla
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ół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ółowoAnaliza i projektowanie aplikacji Java
Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowoKomputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl
Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki
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ół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ół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ółowoArchitektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.
Architektura Systemu Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu. Architektura jest zbiorem decyzji dotyczących: organizacji systemu komputerowego,
Bardziej szczegółowotel. (+48 81) 538 47 21/22 fax (+48 81) 538 45 80 Cel przedmiotu
0-68 Lublin tel. (+48 8) 538 47 / fax (+48 8) 538 45 80 Przedmiot: Programowanie aplikacji Rok: 4 Semestr: 7 Rodzaj zajęć i liczba godzin: Studia stacjonarne Studia niestacjonarne Wykład 30 4 Ćwiczenia
Bardziej szczegółowoProgramowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoMiędzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4
Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Agnieszka Holka Nr albumu: 187396 Praca magisterska na kierunku Informatyka
Bardziej szczegółowo