SWIFT. Zaawansowane Programowanie Obiektowe

Podobne dokumenty
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.)

Wprowadzenie do Objective-C

SWIFT. Aplikacje Mobilne i Multimedialne

Programowanie dla ios

KOTLIN. Język programowania dla Androida

Programowanie dla ios

Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści

Programowanie obiektowe

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie dla ios

1 Podstawy c++ w pigułce.

Programowanie dla ios

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wykład 2 Składnia języka C# (cz. 1)

Podstawy Programowania C++

Java Język programowania

Wykład 5: Klasy cz. 3

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie w środowiskach graficznych. Wykład 3 Język C#

MATERIAŁY DO ZAJĘĆ II

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Klasy cd. Struktury Interfejsy Wyjątki

Wykład 8: klasy cz. 4

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

1 Podstawy c++ w pigułce.

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

4. Funkcje. Przykłady

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Podstawy Programowania Podstawowa składnia języka C++

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Języki skryptowe w programie Plans

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

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Kurs WWW. Paweł Rajba.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Język ludzki kod maszynowy

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie obiektowe

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie obiektowe

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

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

ROZDZIAŁ 2. Operatory

Oczywiście plik musi mieć rozszerzenie *.php

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Wykład 5 Okna MDI i SDI, dziedziczenie

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

ZMIENNE. Podstawy PHP

Podstawy programowania. Podstawy C# Tablice

Programowanie dla ios

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Dziedziczenie. dr Jarosław Skaruz

Języki i techniki programowania Ćwiczenia 2

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

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

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Język C++ Różnice między C a C++

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

Podstawowe części projektu w Javie

Podstawy programowania obiektowego

Programowanie obiektowe i zdarzeniowe

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Różne właściwości. Różne właściwości. Różne właściwości. C++ - klasy. C++ - klasy C++ - KLASY

PHP: bloki kodu, tablice, obiekty i formularze

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

Programowanie obiektowe

Właściwości i metody obiektu Comment Właściwości

Materiały do zajęć VII

.NET Klasy, obiekty. ciąg dalszy

Język C++ Programowanie obiektowe

Język C++ wykład VIII

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Microsoft IT Academy kurs programowania

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Programowanie obiektowe

Transkrypt:

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 na logice Objective-C bez kompatybilności z C dostępny na licencji Apache od wersji 2.2, także dla Linuxa Aktualnie wersja 3.0

Podobieństwa do języków C typy podstawowe operatory użycie nawiasów klamrowych {} użycie nawiasów kwadratowych [] (tablice) operator przypisania =, porównania == podobne instrukcje (pętle, warunkowe) dziedziczenie metod klas i instancji słowo kluczowe self

Różnice do języków C nie trzeba używać ; brak plików nagłówkowych silne typowanie przeciążanie operatorów nowy operator === porównujący obiekty pełne wsparcie Unicode w string inferencja typów programowanie generyczne typy funkcyjne

Różnice do języków C domyślnie nie ma wskaźników przypisanie nie zwraca wartości brak konieczności używania break w instrukcji switch (instrukcja fallthrough) zmienne i stałe są zawsze inicjalizowane przepełnienie zakresu jest wykrywane, chyba, że użyjemy specjalnych operatorów, np. &+, &-

Playground xcode od wersji 6 zawiera moduł Playground służy on do sprawdzania na żywo jak działa kod Swift

Playground Można na różne sposoby wizualizować działanie kodu

Playground Można korzystać z większości API, np. UIKit

Zmienne i stałe Słowa kluczowe let i var let definiuje stałą var definiuje zmienną podstawienie wartości określa typ zmiennej/stałej dzięki inferencji typów

Zmienne i stałe Nazwy zmiennych mogą zawierać dowolne znaki Unicode oprócz: spacji symboli matematycznych linii i prostokątów Nie mogą się zaczynać od cyfry

Typy podstawowe Int8 UInt8 Int (Int32, Int64) UInt (UInt32, UInt64) Double (64 bity - 15 cyfr) Float (32 bity - 6 cyfr) String Bool (true lub false)

Typy podstawowe Dla których ma to sens mają własności max i min Można stosować aliasy nazw typów

Operatory Podstawowe operatory: +,-,*,/,% (modulo) Operatory złożone: +=, -=, *=, /=, %=, &&, Operatory inkrementacyjne: ++, (usunięte w wersji 3) Operatory porównania: ==, >, <, >=, <=,!= Operatory zakresu: x y, x..<y Operatory bitowe: &,, ^, <<, >>, &=, =, ^=, <<=, >>=

Operatory Operator potrójny question? answer1 : answer2 Operator nil-domyślny??

Operatory Operator identyczny z === Operator nie identyczny z!==

Operatory typów Operator is sprawdza, czy obiekt jest danego typu i ma wartość boolowską Operator as? rzutuje obiekt na typ opcjonalny, a gdy jest to niemożliwe podstawia nil Operator as! wymusza rzutowanie na typ, a jeżeli jest niemożliwe to występuje błąd wykonania Operator as można stosować przy rzutowaniu w górę

Zmienne i stałe wartości nigdy nie są domyślnie konwertowane do innych typów - trzeba stworzyć nową wartość wartości w stringach można osadzać łatwiej typy opcjonalne (nullowe) - dodajemy? wtedy zmienna może mieć wartość nil

Tablice i słowniki Uwaga: słownik jest nieuporządkowany i elementy występują w nim w losowej kolejności.

Tablice i słowniki Deklaruje się je za pomocą nawiasów kwadratowych Dostęp do elementów też przez nawiasy Słowniki klucz:wartość Aby utworzyć puste korzystamy ze składni konstruktorów

Krotki Wartości można grupować w krotki (tuples) Krotka może zawierać dowolną kombinację typów Krotkę można zdekomponować na składowe

Krotki niepotrzebne wartości można zastąpić podkreśleniem do składowych można się odwołać przez indeks

Krotki składowe mogą mieć swoje etykiety

Instrukcje instrukcje warunkowe if i switch warunek musi być zawsze boolowski pętle for-in, for, while, do-while

Instrukcja warunkowa Jeżeli chcemy sprawdzić, czy zmienna ma wartość w instrukcji warunkowej można wykorzystać operator let

Instrukcja switch Nie jest ograniczona do typów prostych Nie jest ograniczona do równości Musi być wyczerpująca - klauzula default

Instrukcja switch W przeciwieństwie do innych języków Swift automatycznie kończy switch po znalezieniu pasującego przypadku Można użyć break, gdy tego potrzeba Można to zmienić instrukcją fallthrough

Instrukcja for-in Umożliwia iterowanie po tablicach i słownikach

Pętle while, do-while for..<

Pętle przerwanie pętli - break zakończenie bieżącego przebiegu - continue

Funkcje Do deklaracji funkcji służy słowo kluczowe func Argumenty oddzielone przecinkami, poprzedzone etykietami i dwukropkiem Typ funkcji po argumentach oddzielony ->

Funkcje Argumenty funkcji mogą mieć etykiety Trzeba z nich wtedy korzystać w trakcie wywołania Argumenty mogą mieć wartości domyślne

Funkcje Funkcja może mieć wiele wartości, identyfikowanych przez etykiety lub indeks

Funkcje Liczba argumentów funkcji może być zmienna pod warunkiem, że są tego samego typu

Funkcje Domyślnie argumenty są przekazywane jako stałe - nie można ich modyfikować Można to zmienić deklarując argument jako zmienną Nie zmienia to wartości poza funkcją

Funkcje Argumenty wyjściowe można uzyskać przez słowo kluczowe inout Przekazywany argument musi być wtedy poprzedzony &

Funkcje zagnieżdżone Funkcje mogą się zagnieżdżać Funkcja zagnieżdżona ma dostęp do zmiennych funkcji zewnętrznej

Funkcje są typem pierwszej klasy Funkcja może być traktowana jak inne typy Funkcje mogą przekazywać funkcję i być przekazywane jako argument

Funkcje i domknięcia Funkcje są szczególnymi przypadkami domknięć (closure) Domknięcia to segmenty kodu, które mogą być wywoływane wielokrotnie Domknięcie jest tworzone pomiędzy nawiasami klamrowymi { } wersja uproszczona

Obiekty i klasy Klasa jest deklarowana słowem kluczowym class Wszystko zdefiniowane wewnątrz klasy jest jej elementem składowym (pola, metody, własności)

Konstruktor klasy Metoda zaczynająca się od init, nie posiadająca typu Jeżeli obiekt jest kosztowny może posiadać destruktor deinit

Konstruktor klasy

Destruktor klasy

Dziedziczenie Tylko pojedyncze Składnia jak w C++/C# - klasa nadrzędna po :

Przeciążanie metod Własności Tylko ze słowem kluczowym override Własności mogą mieć getter i setter klasa nadrzędna nowa wartość

Własności Jeżeli własność nie wymaga obliczania, ale wymaga sprawdzenia przed lub po zmianie, można wykorzystać sekcje willset i didset

Typy wyliczeniowe Deklarowane przez słowo kluczowe enum typ bazowy Typem bazowym może być Int, String lub typy zmiennoprzecinkowe

Typy wyliczeniowe Zmienną wyliczeniową można utworzyć z typu bazowego Typ wyliczeniowy może nie mieć typu bazowego

Typy wyliczeniowe składowe typu wyliczeniowego mogą mieć skojarzone ze sobą wartości mogą się one różnić w ramach jednego typu

Struktury Są podobne do klas Przekazywane zawsze przez wartość (klasy przez referencję) Słowo kluczowe struct

Protokoły metoda będzie zmieniać obiekt Odpowiednik interfejsów Słowo kluczowe protocol Mogą być adaptowane (implementowane) przez klasy struktury i wyliczenia

Protokoły Protokoły mogą być używane jak każdy inny typ

Rozszerzenia Dodawanie nowej funkcjonalności do istniejących klas Można dodać do klasy nawet nowe protokoły Słowo kluczowe extension

Rozszerzenia Dodawanie własności

Rozszerzenia Dodawanie konstruktora Domyślne konstuktory Struktura Dodany konstruktor Wywołanie

Rozszerzenia Dodawanie metody

Rozszerzenia Dodawanie indeksu

Rozszerzenia Dodawanie typu zagnieżdżonego

Typy generyczne Podobnie jak w innych językach deklarowane za pomocą < > Generyczne mogą być funkcje, metody, klasy, typy wyliczeniowe i struktury

Typy generyczne Typ generyczny może stawiać wymagania, np. co do realizacji protokołów z użyciem słowa kluczowego where

Wyjątki Aby zgłosić wyjątek musimy zadeklarować typ zgodny z protokołem Error

Wyjątki Do zgłoszenia wyjątku służy instrukcja throw, a słowo kluczowe throws informuje, że funkcja może zgłosić wyjątek

Wyjątki Do przechwycenia wyjątku służy instrukcja do-catch i instrukcja try

Wyjątki Instrukcja try ma swoją wersję opcjonalną try?

Wyjątki Zgłoszenie wyjątku można zablokować instrukcją try!

Przeciążanie operatorów Można przeciążać operatory dla własnych typów

Dodawanie operatorów Można stworzyć własne operatory

Pierwsza aplikacja Prosty konwerter wartości ze stopni Celsjusza na Fahrenheita Szablon Single View Application

Konwerter Otwieramy scenorys Dodajemy pole tekstowe, guzik i etykietkę

Konwerter Ustawienia Auto Layout

Klasa AppDelegate

Klasa ViewController

Konwerter Tworzymy gniazdka

Konwerter Uzupełniamy metodę Dodajemy chowanie klawiatury

Konwerter