Zaawansowane wyszukiwanie
  Strona Główna » Sklep » Języki programowania » C » Moje Konto  |  Zawartość Koszyka  |  Do Kasy   
 Wybierz kategorię
Algorytmy Wzorce UML
Bazy danych
Bezpieczeństwo
Bioinformatyka
Biznes Ekonomia Firma
Chemia
DTP Design
E-biznes
Ekonometria
Elektronika Elektrotechnika
Energetyka
Fizyka
GIS
Grafika użytkowa
Hardware
Informatyczne systemy zarządzania
Informatyka w szkole
Internet
Języki programowania
  Ajax
  Asembler
  ASP ASP.NET
  C
  C#
  C++
  C++ Builder
  CGI Perl
  Chmura obliczeniowa
  CVS
  Delphi
  Eclipse
  Fortran
  Java Hibernate GWT
  JavaScript
  JBuilder
  JSP JavaServlet
  PHP
  Programowanie mobilne
  Programowanie w Windows
  Prolog
  Python Django
  Ruby Rails
  Turbo Pascal
  Visual Studio
Matematyka
Multimedia
Obsługa komputera
Office
Poradniki
Programowanie gier
Programy inżynierskie
Programy matematyczne
Serwery
Sieci Firewalle Protokoły
Słowniki
Systemy operacyjne
Technika
Telekomunikacja
Tworzenie stron WWW

Zobacz pełny katalog »
 Wydawnictwo:
 WKiŁ
Volkswagen Golf VI, Golf Plus, Golf VI Variant

Volkswagen Golf VI, Golf Plus, Golf VI Variant

73.50zł
55.13zł
Objective-C Podstawy 59.00zł 43.07zł
Objective-C Podstawy

Tytuł: Objective-C Podstawy
Autor: Christopher Fairbairn, Collin Ruffenach, Johannes Fahrenkrug
ISBN: 978-83-246-4144-4
Ilość stron: 392
Data wydania: 05/2012
Format: 168x237
Wydawnictwo: HELION
Cena: 59.00zł 43.07zł


Wejdź pewnym krokiem w świat programowania Apple.

Jeszcze parę lat temu nie do pomyślenia było, że aplikacje na urządzenia mobilne mogą stanowić tak intratny interes. Jednak urządzenia te podbiły rynek w mgnieniu oka i dziś trudno wyobrazić sobie życie bez nich. Co więcej, dały one jeszcze większe możliwości działania różnym projektantom - praktycznie wszystkie wyposażone są w aparat fotograficzny, odbiornik GPS oraz czujniki położenia. To peryferia, o których programiści tworzący aplikacje na standardowe komputery mogą tylko pomarzyć. Zastanawiasz się, jak wykorzystać ten potencjał?

Ta książka dostarczy Ci odpowiedzi. W trakcie lektury nauczysz się tworzyć atrakcyjne aplikacje na platformę iOS. Jest ona wykorzystywana w urządzeniach firmy Apple, których nikomu nie trzeba przedstawiać. Podczas tworzenia aplikacji dla tej platformy będziesz korzystał z języka Objective-C oraz środowiska XCode 4. Zawarta tu wiedza i liczne przykłady krok-po-kroku pozwolą Ci błyskawicznie opanować trudniejsze partie materiału. Książka ta jest idealną pozycją dla wszystkich programistów chcących rozpocząć przygodę z platformą iOS.

Sprawdź:

  • jak przygotować środowisko pracy XCode
  • jaka jest składnia języka Objective-C
  • jak uruchomić swoją pierwszą aplikację

Twój przewodnik do pierwszej aplikacji na system iOS!

Rozdziały:

Część I. Rozpoczęcie pracy z Objective-C (21)
1. Twoja pierwsza aplikacja iOS (23)

  • 1.1. Wprowadzenie do narzędzi programistycznych na platformę iOS (24)
    • 1.1.1. Dostosowanie struktur Cocoa do potrzeb urządzeń mobilnych (25)
  • 1.2. Dostosowanie swoich oczekiwań (26)
    • 1.2.1. Specyfikacja sprzętowa na koniec 2011 roku (26)
    • 1.2.2. Spodziewaj się zawodnego połączenia z internetem (27)
  • 1.3. Przygotowanie prostej gry Coin Toss w Xcode (28)
    • 1.3.1. Wprowadzenie do środowiska IDE firmy Apple - Xcode (29)
    • 1.3.2. Łatwe uruchamianie Xcode (29)
    • 1.3.3. Utworzenie projektu (30)
    • 1.3.4. Tworzenie kodu źródłowego (33)
  • 1.4. Przygotowanie interfejsu użytkownika (37)
    • 1.4.1. Dodanie kontrolek do widoku (38)
    • 1.4.2. Połączenie kontrolek z kodem źródłowym (39)
  • 1.5. Kompilacja gry (43)
  • 1.6. Uruchomienie gry (44)
    • 1.6.1. Wybór urządzenia docelowego (44)
    • 1.6.2. Używanie punktów kontrolnych do śledzenia stanu działającej aplikacji (45)
    • 1.6.3. Uruchomienie gry Coin Toss w symulatorze (46)
    • 1.6.4. Używanie modułu usuwania błędów (47)
  • 1.7. Podsumowanie (49)

2. Typy danych, zmienne i stałe (51)

  • 2.1. Wprowadzenie do aplikacji Rental Manager (52)
    • 2.1.1. Podstawy aplikacji (53)
  • 2.2. Podstawowe typy danych (55)
    • 2.2.1. Liczenie na palcach - liczby całkowite (56)
    • 2.2.2. Liczby zmiennoprzecinkowe (59)
    • 2.2.3. Znaki i ciągi tekstowe (61)
    • 2.2.4. Wartości boolowskie (63)
  • 2.3. Wyświetlanie i konwersja wartości (65)
    • 2.3.1. Funkcja NSLog() i specyfikatory formatu (65)
    • 2.3.2. Rzutowanie typów i konwersja typów (67)
  • 2.4. Tworzenie własnych typów danych (69)
    • 2.4.1. Typy wyliczeniowe (69)
    • 2.4.2. Struktury (71)
    • 2.4.3. Tablice (73)
    • 2.4.4. Waga odpowiednich nazw (75)
  • 2.5. Ukończenie aplikacji Rental Manager 1.0, czyli kierujemy się do App Store! (77)
  • 2.6. Podsumowanie (79)

3. Wprowadzenie do obiektów (81)

  • 3.1. Krótkie wprowadzenie do koncepcji programowania zorientowanego obiektowo (82)
    • 3.1.1. Co złego jest w języku proceduralnym, takim jak C? (82)
    • 3.1.2. Czym jest obiekt? (83)
    • 3.1.3. Czym jest klasa? (83)
    • 3.1.4. Dziedziczenie i polimorfizm (83)
  • 3.2. Brakujący typ danych - id (84)
  • 3.3. Wskaźniki i różnice pomiędzy odniesieniem i wartością typu (85)
    • 3.3.1. Mapowanie pamięci (86)
    • 3.3.2. Pobieranie adresu zmiennej (86)
    • 3.3.3. Podążanie za wskaźnikiem (87)
    • 3.3.4. Porównywanie wartości wskaźników (88)
  • 3.4. Komunikacja z obiektami (89)
    • 3.4.1. Wysyłanie wiadomości obiektowi (89)
    • 3.4.2. Wysyłanie wiadomości klasie (90)
    • 3.4.3. Wysyłanie nieistniejących wiadomości (90)
    • 3.4.4. Wysłanie wiadomości do nil (92)
  • 3.5. Ciągi tekstowe (93)
    • 3.5.1. Tworzenie ciągu tekstowego (93)
    • 3.5.2. Wyodrębnianie znaków z ciągu tekstowego (94)
    • 3.5.3. Modyfikacja ciągu tekstowego (95)
    • 3.5.4. Porównywanie ciągów tekstowych (96)
  • 3.6. Przykładowa aplikacja (97)
  • 3.7. Podsumowanie (100)

4. Przechowywanie danych w kolekcjach (101)

  • 4.1. Tablice (102)
    • 4.1.1. Budowa tablicy (102)
    • 4.1.2. Uzyskanie dostępu do elementów tablicy (104)
    • 4.1.3. Wyszukiwanie elementów tablicy (105)
    • 4.1.4. Iteracja przez tablice (106)
    • 4.1.5. Dodawanie elementów do tablicy (108)
  • 4.2. Słowniki (110)
    • 4.2.1. Tworzenie słownika (110)
    • 4.2.2. Uzyskanie dostępu do par przechowywanych w słowniku (112)
    • 4.2.3. Dodawanie par klucz-wartość (113)
    • 4.2.4. Wyświetlenie wszystkich kluczy i wartości (114)
  • 4.3. Boxing (116)
    • 4.3.1. Klasa NSNumber (117)
    • 4.3.2. Klasa NSValue (118)
    • 4.3.3. nil kontra NULL kontra NSNull (118)
  • 4.4. Aplikacja Rental Manager zaczyna używać danych (119)
  • 4.5. Podsumowanie (122)

Część II. Tworzenie własnych obiektów (123)
5. Tworzenie klas (125)

  • 5.1. Tworzenie własnej klasy (126)
    • 5.1.1. Dodanie nowej klasy do projektu (126)
  • 5.2. Deklaracja interfejsu klasy (127)
    • 5.2.1. Zmienne egzemplarza (129)
    • 5.2.2. Deklarowanie metod (130)
    • 5.2.3. Przygotowanie pliku nagłówkowego dla klasy CTRentalProperty (133)
  • 5.3. Utworzenie implementacji klasy (135)
    • 5.3.1. Zdefiniowanie implementacji metody (135)
    • 5.3.2. Uzyskanie dostępu do zmiennych egzemplarza (135)
    • 5.3.3. Wysyłanie wiadomości do self (136)
    • 5.3.4. Uzupełnienie pliku metody klasy CTRentalProperty (137)
  • 5.4. Zdefiniowane właściwości (138)
    • 5.4.1. Składnia @property (138)
    • 5.4.2. Automatyczne wygenerowanie metod typu getter i setter (141)
    • 5.4.3. Składnia z użyciem kropki (143)
  • 5.5. Tworzenie i usuwanie obiektów (144)
    • 5.5.1. Tworzenie i inicjalizacja obiektów (145)
    • 5.5.2. Metoda init nie jest najsprytniejsza (146)
    • 5.5.3. Połączenie alokacji i inicjalizacji (148)
    • 5.5.4. Usuwanie obiektów (149)
  • 5.6. Używanie klasy w aplikacji Rental Manager (150)
  • 5.7. Podsumowanie (153)

6. Rozszerzanie klas (155)

  • 6.1. Tworzenie podklas (156)
    • 6.1.1. Dlaczego tworzymy podklasy? (156)
  • 6.2. Dodawanie nowych zmiennych egzemplarza (158)
  • 6.3. Uzyskiwanie dostępu do istniejących zmiennych egzemplarza (161)
    • 6.3.1. Podejście polegające na ręcznym utworzeniu metod typu getter i setter (162)
  • 6.4. Nadpisywanie metod (163)
    • 6.4.1. Nadpisywanie metody description (164)
  • 6.5. Klastry klas (166)
    • 6.5.1. Dlaczego stosowane są klastry klas? (167)
    • 6.5.2. Wiele klastrów publicznych (167)
  • 6.6. Kategorie (168)
    • 6.6.1. Rozszerzenie klasy bez użycia podklasy (168)
    • 6.6.2. Używanie kategorii (169)
    • 6.6.3. Rozważania dotyczące używania kategorii (170)
  • 6.7. Zastosowanie podklas w aplikacji Rental Manager (171)
    • 6.7.1. Utworzenie klasy CTLease i jej podklas (172)
    • 6.7.2. Utworzenie podklasy CTPeriodicLease jako podklasy CTLease (173)
    • 6.7.3. Utworzenie podklasy CTFixedLease jako podklasy CTLease (174)
  • 6.8. Podsumowanie (176)

7. Protokoły (177)

  • 7.1. Definiowanie protokołu (179)
  • 7.2. Implementacja protokołu (180)
    • 7.2.1. Tworzenie funkcji wywoływania metod protokołu (180)
    • 7.2.2. Zapewnienie klasie zgodności z protokołem (182)
  • 7.3. Ważne protokoły (185)
    • 7.3.1. Protokół UITableViewDataSource (185)
    • 7.3.2. Protokół UITableViewDelegate (188)
    • 7.3.3. Protokół UIActionSheetDelegate (192)
    • 7.3.4. Protokół NSXMLParser (193)
  • 7.4. Podsumowanie (198)

8. Dynamiczne określanie typu i ustalanie typu w trakcie działania aplikacji (199)

  • 8.1. Typy statyczne kontra dynamiczne (200)
    • 8.1.1. Przyjmowanie założeń dotyczących typu ustalanego w trakcie działania aplikacji (201)
  • 8.2. Łączenie dynamiczne (202)
  • 8.3. Jak działają wiadomości? (203)
    • 8.3.1. Metody, selektory i implementacje (204)
    • 8.3.2. Obsługa nieznanych selektorów (205)
    • 8.3.3. Wysyłanie wiadomości do nil (207)
  • 8.4. Informacje o typie dostarczane w trakcie działania aplikacji (208)
    • 8.4.1. Ustalenie, czy wiadomość odpowie na wiadomość (208)
    • 8.4.2. Wysyłanie wiadomości wygenerowanej w trakcie działania aplikacji (208)
    • 8.4.3. Dodawanie nowych metod do klasy podczas działania aplikacji (210)
  • 8.5. Praktyczne wykorzystanie introspekcji typu podczas działania aplikacji (212)
  • 8.6. Podsumowanie (213)

9. Zarządzanie pamięcią (215)

  • 9.1. Własność obiektu (216)
  • 9.2. Licznik użycia obiektu (218)
    • 9.2.1. Zwolnienie obiektu (219)
    • 9.2.2. Przytrzymanie obiektu (220)
    • 9.2.3. Określenie bieżącej wartości licznika użycia (221)
  • 9.3. Pule autorelease (223)
    • 9.3.1. Czym jest pula autorelease? (224)
    • 9.3.2. Dodawanie obiektów do puli autorelease (224)
    • 9.3.3. Utworzenie nowej puli autorelease (224)
    • 9.3.4. Usuwanie obiektów z puli (226)
    • 9.3.5. Dlaczego puli autorelease nie można wykorzystywać w każdej sytuacji? (226)
  • 9.4. Strefy pamięci (229)
  • 9.5. Reguły własności (231)
  • 9.6. Ostrzeżenie o małej ilości dostępnej pamięci (232)
    • 9.6.1. Implementacja protokołu UIApplicationDelegate (233)
    • 9.6.2. Nadpisanie metody didReceiveMemoryWarning (234)
    • 9.6.3. Obserwacja powiadomienia UIApplicationDidReceiveMemoryWarningNotification (237)
  • 9.7. Podsumowanie (239)

Część III. Maksymalne wykorzystanie funkcji struktur (241)
10. Obsługa błędów i wyjątków (243)

  • 10.1. NSError - obsługa błędów w sposób zgodny z Cocoa (244)
    • 10.1.1. Komunikacja z NSError (245)
    • 10.1.2. Analiza słownika userInfo klasy NSError (245)
  • 10.2. Tworzenie obiektu NSError (247)
    • 10.2.1. Wprowadzenie RentalManagerAPI (247)
    • 10.2.2. Obsługa i wyświetlanie błędów w aplikacji RentalManagerAPI (250)
  • 10.3. Wyjątki (251)
    • 10.3.1. Zgłaszanie wyjątku (251)
    • 10.3.2. Przechwytywanie wyjątku (252)
  • 10.4. Podsumowanie (253)

11. Key-Value Coding i NSPredicate (255)

  • 11.1. Zapewnienie obiektom zgodności z KVC (257)
    • 11.1.1. Uzyskanie dostępu do właściwości za pomocą KVC (258)
    • 11.1.2. Tworzenie ścieżek kluczy (258)
    • 11.1.3. Zwracanie wielu wartości (259)
    • 11.1.4. Agregacja i zbieranie wartości (259)
  • 11.2. Obsługa przypadków specjalnych (261)
    • 11.2.1. Obsługa nieznanych kluczy (261)
    • 11.2.2. Obsługa wartości nil (262)
  • 11.3. Filtrowanie i dopasowywanie za pomocą predykatów (263)
    • 11.3.1. Obliczenie predykatu (263)
    • 11.3.2. Filtrowanie kolekcji (264)
    • 11.3.3. Wyrażenie warunku predykatu (264)
    • 11.3.4. Bardziej skomplikowane wyrażenia (265)
    • 11.3.5. Używanie ścieżek kluczy w wyrażeniu predykatu (266)
    • 11.3.6. Parametryzowanie i stosowanie szablonu wyrażenia predykatu (267)
  • 11.4. Przykładowa aplikacja (268)
  • 11.5. Podsumowanie (271)

12. Odczyt i zapis danych aplikacji (273)

  • 12.1. Historia Core Data (275)
    • 12.1.1. Do czego służy Core Data? (275)
  • 12.2. Obiekty Core Data (276)
    • 12.2.1. Kontekst obiektów zarządzanych (277)
    • 12.2.2. Koordynator trwałego magazynu danych (277)
    • 12.2.3. Model obiektu zarządzanego (277)
    • 12.2.4. Magazyn trwałych obiektów (278)
  • 12.3. Zasoby Core Data (278)
    • 12.3.1. Encje Core Data (278)
    • 12.3.2. Atrybuty Core Data (279)
    • 12.3.3. Związki w Core Data (280)
  • 12.4. Utworzenie aplikacji PocketTasks (281)
    • 12.4.1. Analiza szablonu Xcode z obsługą Core Data (281)
    • 12.4.2. Budowa modelu danych (281)
    • 12.4.3. Definicje związków (282)
    • 12.4.4. Tworzenie encji Person (284)
    • 12.4.5. Pobieranie encji Person (286)
    • 12.4.6. Dodanie TableView (287)
    • 12.4.7. Dodawanie i usuwanie osób (290)
    • 12.4.8. Zarządzanie zadaniami (294)
    • 12.4.9. Używanie obiektów modelu (297)
  • 12.5. Wykraczając poza podstawy (299)
    • 12.5.1. Zmiana modelu danych (299)
    • 12.5.2. Wydajność (301)
    • 12.5.3. Obsługa błędów i weryfikacja (302)
  • 12.6. Podsumowanie (304)

13. Bloki i technologia Grand Central Dispatch (305)

  • 13.1. Składnia bloków (306)
    • 13.1.1. Blok stanowi zamkniętą całość (309)
    • 13.1.2. Bloki i zarządzanie pamięcią (310)
    • 13.1.3. API bazujące na blokach w strukturach iOS dostarczanych przez Apple (313)
  • 13.2. Asynchroniczne wykonywanie zadań (314)
    • 13.2.1. Poznaj technologię GCD (315)
    • 13.2.2. Podstawy technologii GCD (315)
    • 13.2.3. Budowa aplikacji RealEstateViewer (316)
    • 13.2.4. Asynchroniczne przeprowadzanie wyszukiwania obrazów (321)
    • 13.2.5. Asynchroniczne wczytywanie obrazów (322)
  • 13.3. Podsumowanie (324)

14. Techniki usuwania błędów (325)

  • 14.1. Utworzenie aplikacji zawierającej błędy (326)
  • 14.2. Zrozumienie funkcji NSLog() (327)
  • 14.3. Kontrola wycieków pamięci za pomocą narzędzia Instruments (331)
  • 14.4. Wykrywanie zombie (333)
  • 14.5. Podsumowanie (336)

Dodatki (337)
A: Instalacja iOS SDK (339)

  • A.1. Instalacja iOS SDK (340)
  • A.2. Przygotowanie urządzenia iOS (341)

B: Podstawy języka C (345)

  • B.1. Konwencje nazw zmiennych (346)
  • B.2. Wyrażenia (349)
  • B.3. Polecenia warunkowe (353)
  • B.4. Polecenia pętli (358)
  • B.5. Podsumowanie (364)

C: Alternatywy dla Objective-C (365)

  • C.1. Krótka historia Objective-C (366)
  • C.2. Alternatywy dla Objective-C i Cocoa (368)
  • C.3. iPhone SDK - Safari (369)
  • C.4. Języki skryptowe - Lua i Ruby (374)
  • C.5. Waga ciężka - Adobe Flash (376)
  • C.6. Mono (.NET) (378)
  • C.7. Podsumowanie (380)
Objective-C Podstawy
Tytuł książki: "Objective-C Podstawy"
Autor: Christopher Fairbairn, Collin Ruffenach, Johannes Fahrenkrug
Wydawnictwo: HELION
Cena: 59.00zł 43.07zł
Klienci, którzy kupili „Objective-C Podstawy”, kupili także:
<b>Fizyka współczesna</b>, <font color="navy">Paul A. Tipler, Ralph A. Llewellyn</font>, <font color="green"> Wydawnictwo Naukowe PWN</font>
Fizyka współczesna, Paul A. Tipler, Ralph A. Llewellyn, Wydawnictwo Naukowe PWN
<b>Teoria liczb w informatyce</b>, <font color="navy">Song Y. Yan</font>, <font color="green"> Wydawnictwo Naukowe PWN</font>
Teoria liczb w informatyce, Song Y. Yan, Wydawnictwo Naukowe PWN
<b>CorelDRAW Graphics Suite 7</b>, <font color="navy">Witold Wrotek</font>, <font color="green"> Wydawnictwo HELION</font>
CorelDRAW Graphics Suite 7, Witold Wrotek, Wydawnictwo HELION
<b>Jak pisać przenośny kod Wstęp do programowania wieloplatformowego</b>, <font color="navy">Brian Hook</font>, <font color="green"> Wydawnictwo HELION</font>
Jak pisać przenośny kod Wstęp do programowania wieloplatformowego, Brian Hook, Wydawnictwo HELION
<b>Programowanie w C++ z użyciem biblioteki Qt4</b>, <font color="navy">Rafał Strychalski</font>, <font color="green"> Wydawnictwo NAKOM</font>
Programowanie w C++ z użyciem biblioteki Qt4, Rafał Strychalski, Wydawnictwo NAKOM
<b>Seks dla bystrzaków Wydanie III</b>, <font color="navy">Ruth K. Westheimer, Pierre A. Lehu</font>, <font color="green"> Wydawnictwo Septem</font>
Seks dla bystrzaków Wydanie III, Ruth K. Westheimer, Pierre A. Lehu, Wydawnictwo Septem
<b>Angielsko-polski słownik informatyczny Słownik podręczny</b>, <font color="navy">Praca zbiorowa</font>, <font color="green"> Wydawnictwo Naukowe PWN</font>
Angielsko-polski słownik informatyczny Słownik podręczny, Praca zbiorowa, Wydawnictwo Naukowe PWN
<b>Marketing Podręcznik akademicki Wydanie II</b>, <font color="navy">Eugeniusz Michalski</font>, <font color="green"> Wydawnictwo Naukowe PWN</font>
Marketing Podręcznik akademicki Wydanie II, Eugeniusz Michalski, Wydawnictwo Naukowe PWN
<b>Ogrzewnictwo Wentylacja Klimatyzacja</b>, <font color="navy">Krystyna Krygier, Tomasz Klinke, Jerzy Sewerynik</font>, <font color="green"> Wydawnictwo WSiP</font>
Ogrzewnictwo Wentylacja Klimatyzacja, Krystyna Krygier, Tomasz Klinke, Jerzy Sewerynik, Wydawnictwo WSiP
 Koszyk
0 przedmiotów
Producent
Tu można zobaczyć wszystkie książki z wydawnictwa:

Wydawnictwo HELION
 Kategoria:
 Energetyka
Efektywność energetyczna w działalności gospodarczej

Efektywność energetyczna w działalności gospodarczej

79.00zł
63.99zł
Informacje
Regulamin sklepu.
Koszty wysyłki.
Polityka prywatności.
Jak kupować?
Napisz do Nas.
 Wydawnictwa
 Poradniki
SAP R/3 Przewodnik dla menadżerów Vivek Kale HELION
AVR Praktyczne projekty Tomasz Francuz HELION
Podstawy fizyki Tom 2 Wydanie 2 David Halliday, Robert Resnick, Jearl Walker Naukowe PWN
UML inżynieria oprogramowania wydanie II Perdita Stevens HELION
OpenOffice 3.x PL Oficjalny podręcznik Mirosław Dziewoński HELION
Transact-SQL Czarna księga Marcin Szeliga HELION
Serwer SQL 2008 Administracja i programowanie Danuta Mendrala, Paweł Potasiński, Marcin Szeliga, Damian Widera HELION
Podstawy fizyki powierzchni półprzewodników Anna Szaynok, Stanisław Kuźmiński WNT
Cisza w sieci Praktyczny przewodnik po pasywnym rozpoznaniu i atakach pośrednich Michał Zalewski HELION

wtorek, 18 czerwiec 2019   Mapa strony |  Nowości |  Dzisiejsze promocje |  Koszty wysyłki |  Kontakt z nami