Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

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

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

Programowanie dla iphone projektowanie interfejsu użytkownika

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

Przechowywanie danych w IOS

Materiały do zajęć VII

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

Kurs WWW. Paweł Rajba.

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

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

Programowanie obiektowe

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

Wstęp do programowania obiektowego. Wykład 2

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

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

Język C++ zajęcia nr 2

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

Wykład 4: Klasy i Metody

Wykład 8: klasy cz. 4

Wykład 5 Okna MDI i SDI, dziedziczenie

TEMAT : KLASY DZIEDZICZENIE

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

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

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

Podstawy Programowania Obiektowego

Diagramy klas. dr Jarosław Skaruz

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Programowanie obiektowe

Programowanie obiektowe - 1.

Szablony klas, zastosowanie szablonów w programach

Dokumentacja do API Javy.

Programowanie obiektowe

Klasy abstrakcyjne i interfejsy

PHP 5 język obiektowy

Technologie obiektowe

Programowanie obiektowe

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

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

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

Java Język programowania

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

Programowanie obiektowe

Dziedziczenie. dr Jarosław Skaruz

Programowanie dla ios

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

Klasy i obiekty cz II

Czym jest stos i sterta?

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

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

Wykład 5: Klasy cz. 3

Oracle PL/SQL. Paweł Rajba.

Czym są właściwości. Poprawne projektowanie klas

Aplikacje w środowisku Java

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

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function:

PARADYGMATY PROGRAMOWANIA Wykład 4

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Zaawansowane programowanie w C++ (PCP)

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Programowanie obiektowe

Zmienne, stałe i operatory

Języki i techniki programowania Ćwiczenia 2

Programowanie 2. Język C++. Wykład 3.

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

PARADYGMATY PROGRAMOWANIA Wykład 2

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

Programowanie obiektowe

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

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

Lab 9 Podstawy Programowania

SWIFT. Zaawansowane Programowanie Obiektowe

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Definiowanie własnych klas

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

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

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

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Wprowadzenie do Objective-C

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

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 Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

.NET Klasy, obiekty. ciąg dalszy

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

Programowanie obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Wykład 9: Polimorfizm i klasy wirtualne

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Programowanie obiektowe

Transkrypt:

#import "Fraction.h" #import <stdio.h> @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator: d]; } return self; -(void) print { printf( "%i/%i", numerator, denominator ); } -(void) setnumerator: (int) n { numerator = n; } -(void) setdenominator: (int) d { denominator = d; } -(void) setnumerator: (int) n anddenominator: (int) d { numerator = n; denominator = d; Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) Wykład 2

Unikalne nazwy klas wewnątrz aplikacji Aplikacji / użytych frameworków / całego Objective-C Prefiksy 2

Nazewnictwo klas Własne klasy 3 literowe prefiksy. RAB - Rovio, aplikacja Angry Birds UPZ - UMK, aplikacja Planer Zajęć Reszta jasno ma pokazywać co klasa reprezentuje RABAnimation UPZTable 3

Nazwy metod Jasne znaczenie i unikalne nazwy wewnątrz klas. stringafterfindingandreplacingalloccurrencesoft hisstring:withthisstring: strreplacingstr:str: stringbyreplacingoccurrencesofstring:withstring: 4

Zmienne Unikalne wewnątrz tego samego zakresu int interestingnumber = 42; int interestingnumber = 44; int interestingnumber = 42; { int interestingnumber = 44; } 5

Nazwy metod zgodne z konwencją Przy tworzeniu klasy zgodnej z protokołem Przy tworzeniu metod typu getter i setter Tworzenie obiektów Alloc + init new Metody fabrykujące 6

Właściwości obiektu Ustawianie i pobieranie stanu właściwości obiektu z wykorzystaniem syntaktyki. -(type)propertyname -(void)setpropertyname:(type) 7

Właściwości zadeklarowane Składnik klasy posiadający cechy pola i metody Sposób na zastąpienie deklaracji i implementacji metod get i Set Deklaracja @property w interfejsie klasy. Typ, nazwa, zachowanie 8

Właściwości zadeklarowane Każda właściwość specyfikuje metody o nazwach: nazwawlasciwosci (odczyt) setnazwawlasciwosci: (zapis) 9

Właściwości zadeklarowane W implementacji klasy należy użyć dyrektywy kompilatora @synthesize, aby wygenerować te metody. 10

Właściwości zadeklarowane Oszczędzają czas Ułatwiają stworzenie metod typu pobierz/ustaw 11

Zachowanie właściwości readonly - readwrite @property (getter=isfinished) BOOL finished; 12

Zachowanie właściwości @property (atomic) NSObject Metody getter / setter zapewniają, że operacje na tych właściwościach będą wykonane atomowo, w przypadku jednoczesnego wywołania z różnych wątków nonatomic pobieranie i ustawianie bez gwarancji. 13

Właściwości (Properties) Standardowo atomic atomic nie znaczy bezpieczny dla wątków. 14

Lazy accessor Opóźnienie inicjalizacji obiektu Praca z własną instancją zmiennej Jeśli kompilator sam generuje którąkolwiek z metod dostępowych, to generuje również tą zmienną. Jeśli nie, to sami jesteśmy odpowiedzialni za tą zmienną. 15

Przechowywanie obiektów Na stosie Tak długo, dopóki mamy do nich dostępne wskaźniki. 16

Przechowywanie obiektów 17

Przechowywanie obiektów 18

Przechowywanie obiektów 19

Silne referencje 20

Silne referencje 21

Słabe referencje Słaba referencja nie implikuje własności i odpowiedzialności między obiektami i nie utrzymuje takiego obiektu przy życiu. 22

Słabe referencje Słaba referencja nie implikuje własności i odpowiedzialności między obiektami i nie utrzymuje takiego obiektu przy życiu. 23

Deklarowanie właściwości Domyślne Atrybut strong jest domyślny Słabe 24

Lokalne zmienne Również są domyślnie strong Zmienna zachowuje silną referencję tak długo Aż jest dostępna w zasięgu widoczności. Aż zostanie wykonane przypisanie nowego obiektu albo nil. 25

Zmienne lokalne słabe Taką zmienną można również zadeklarować jako zmienną słabą. Istnieje szansa, że obiekt może zostać usunięty z pamięci (jeśli zostaną usunięte do niego referencje silne. Wówczas zmienna jest ustawiana na nil. 26

Zmienne lokalne słabe Do zmiennej jest jakaś silna referencja Obiekt zostanie usunięty po usunięciu silnej referencji Do zmiennej nie ma silnej referencji Obiekt zostanie usunięty od razu po zaalokowaniu. 27

(copy) Aby Właściwość była zawsze przechowywana w silnej własnej kopii (strong) 28

(copy) Obiekt, który przypisywany do zmiennej takiej właściwości musi Być zgodny z protokołem NSCCopying czyli dać się skopiować 29

Protokoły Deklarują metody, które mogą być zaimplementowane przez klasę. Deklarują interfejs Klasa może być zgodna z Protokołem poprzez implementację zadeklarowanych w nim metod. Przykład: Używane do implementowania metod potrzebnych w obiektach wykorzystywanych później do różnych celów (np. delegaty) 30

Protokoły Deklaracja, że klasa będzie implementowała / będzie zgodna z protokołem Odpowiednie metody muszą być zdefiniowane 31

Deklaracja protokołu Nie ma zmiennych instancji Nie mają klasy bazowej 32

Deklaracja użycia protokołu Obiekt może być klasy dowolnej Ale musi być zgodny z protokołem! 33

Deklaracja protokołu Mogą specyfikować metody wymagane i opcjonalne. 34

Użycie metody opcjonalnej W przypadku chęci skorzystania z metody opcjonalnej, należy sprawdzić, czy obiekt ją implementuje 35

Dziedziczenie protokołów Protokoły mogą dziedziczyć, Tzn. Jeden protokół musi być musi być zgodny z drugim. 36

Modyfikacja istniejących klas Dodanie metody do istniejącej klasy Użycie kategorii Nawet jeśli nie mamy dostępu do implementacji klasy oryginalnej Nie ma różnicy w stosunku do standardowo zmodyfikowanego kodu implementacji klasy. 37

Deklaracja kategorii XYZPerson+XYZPersonNameDisplayAdditions.h 38

Implementacja kategorii XYZPerson+XYZPersonNameDisplayAdditions.m 39

Użycie kategorii.m 40

Kategorie a nazewnictwo metod Nie jest zdefiniowane która metoda zostanie wykonana, jeśli nazwy metod powtórzą się w obrębie Klasy - Kategorii Kategorii 1 - kategorii 2 Należy uważać, szczególnie przy tworzeniu metod dla klas obcych. Problem również w przypadku kompilacji kodu z nowszymi wersjami Klas frameworków. 41

Kategorie a nazewnictwo metod Nie jest zdefiniowane która metoda zostanie wykonana, jeśli nazwy metod powtórzą się w obrębie Klasy - Kategorii Kategorii 1 - kategorii 2 Należy uważać, szczególnie przy tworzeniu metod dla klas obcych. Problem również w przypadku kompilacji kodu z nowszymi wersjami Klas frameworków. 42

Rozszerzenia klas Kategorie anonimowe Deklarowane w bloku implementacji oryginalnej klasy. 43

Rozszerzenia klas Pozwalają na dodanie do klasy własnych właściwości i zmiennych instancji Deklarowane w bloku implementacji oryginalnej klasy. 44

Użycie rozszerzania klas do ukrywania prywatnych elementów klasy Pierwotny interfejs klasy jest używany do zdefiniowania zachowania i interakcji z klasą jako interfejs publiczny Rozszerzenie klasy dodaje do niej prywatne metody, do użycia wewnątrz jej implementacji. 45

Użycie rozszerzania klas do ukrywania prywatnych elementów klasy Pierwotny interfejs Rozszerzenie Redeklaracja zmiennych 46

Użycie rozszerzania klas do ukrywania prywatnych elementów klasy Kompilator wygeneruje metody Getter jako publiczną Setter jako prywatną, dostępną wewnątrz klasy. Prywatność zapewniana jest przez zadeklarowanie rozszerzenia klasy wewnątrz kodu źródłowego implementacji Klasy. 47

Bloki Element języka. Oznaczany znakiem karetki ^ 48

Bloki Można zadeklarować zmienną (podobnie jak wskaźnik do funkcji), która będzie skojarzona z blokiem. 49

Bloki Można wywołać wykonanie bloku. Można przekazać blok jako argument metody Są obiektami, więc można je wstawić na przykład do kolekcji 50

Bloki Mogą przyjmować argumenty i zwracać wartości 51

Bloki Można przechwycić wartości zmiennych widocznych w zakresie, w którym definiowany jest blok. 52

Bloki Blok przechwytuje wartości zmiennych Wartość oryginalnej zmiennej jest nietknięta Blok nie może zmienić wartości oryginalnej zmiennej Blok nie może zmienić wartości zmiennej przechwyconej (zadeklarowana jako const) 53

block Variables Modyfikator pozwalający na współdzielenie dostępu do zmiennej pomiędzy oryginalną metodą a blokiem 54

Blok jako argument metody Dobra praktyka jeden blok jako ostatni argument 55

Właściwość dla bloku 56

Zakończenie KONIEC 57