dr inż. Jacek Dąbrowski



Podobne dokumenty
Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

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

Programowanie obiektowe

Programowanie i projektowanie obiektowe

Laboratorium nr 10. Temat: Funkcje cz.2.

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

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

Materiały do zajęć VII

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy Programowania Obiektowego

Polimorfizm. dr Jarosław Skaruz

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie dla ios

Programowanie obiektowe

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wprowadzenie do Objective-C

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

Dokumentacja do API Javy.

Dziedziczenie. Tomasz Borzyszkowski

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Wywoływanie metod zdalnych

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

Klasy abstrakcyjne i interfejsy

Programowanie dla ios

Dziedziczenie. dr Jarosław Skaruz

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe

Języki i techniki programowania Ćwiczenia 2

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

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

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

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

Programowanie obiektowe

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

Programowanie dla ios

1 Atrybuty i metody klasowe

Programowanie obiektowe - 1.

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

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Programowanie, część I

Programowanie Obiektowe Ćwiczenie 4

Definicje klas i obiektów. Tomasz Borzyszkowski

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Technologie i usługi internetowe cz. 2

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

Programowanie obiektowe w VB cz 2

Programowanie, część I

Programowanie obiektowe

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

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

Wartości domyślne, przeciażenia funkcji

Definiowanie własnych klas

Programowanie obiektowe

Wstęp do programowania obiektowego, wykład 7

Programowanie Komputerów

Wywoływanie metod zdalnych

Wykład 4: Klasy i Metody

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

Programowanie obiektowe

Technologie obiektowe

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Algorytmy i język C++

Microsoft IT Academy kurs programowania

TEMAT : KLASY POLIMORFIZM

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

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

Programowanie Obiektowe i C++

Szablony funkcji i klas (templates)

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

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

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

Programowanie obiektowe w C++ Wykład 12

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

Szablony. Szablony funkcji

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

Przypomnienie o klasach i obiektach

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

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

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

Programowanie w Internecie. Java

KOTLIN. Język programowania dla Androida

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

PHP 5 język obiektowy

Wprowadzenie do programowanie obiektowego w języku C++

Podstawy programowania obiektowego

Klasy cd. Struktury Interfejsy Wyjątki

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

Abstrakcyjny typ danych

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

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

Programowanie obiektowe

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

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Transkrypt:

dr inż. Jacek Dąbrowski

2014.04.25. (piątek) 16:15-17:00 Drugi termin tylko dla osób, które nie brały udziału w pierwszym terminie: Z przyczyn zdrowotnych (zwolnienie), Z innych przyczyn Email do 22. kwietnia z wyjaśnieniem, W temacie koniecznie KOLOMAC Moja odpowiedź 16./23. kwietnia (dwie rundy). Pytania (WWW)

Tak naprawdę trochę więcej niż para metod - mutable(array/set/orderedset)forkey(path) mutablearrayvalueforkey:... Koncepcja To-many relationship -insertobject:in<key>atindex: -removeobjectfrom<key>atindex: Obiekty proxy wyglądające jak tablica, a mapujące się na pary metod. Przykład praktyczny przy okazji Core Data

Mechanizm zbliżony do wskaźników na funkcje (wskaźniki na funkcje też istnieją (C); bloki) [obiekt wiadomość]; [obiekt wiadomośćdla:param]; SEL metoda = @selector(wiadomość); SEL metoda = @selector(wiadomośćdla:); if ([obiekt respondstoselector:metoda]) [obiekt performselector:metoda];

@selector() //sprawdzany przy kompilacji NSSelectorFromString // @runtime NSStringFromSelector Na marginesie: NSClassFromString NSStringFromClass NSStringFromProtocol NSProtocolFromString

Dlaczego nie ma przeciążania, Wskazówka bo format stringa opisującego metodę. Przykład? Kontrolki: -(void)settarget:(id)target; -(void)setaction:(sel)action; NSMethodDescriptor Możliwość uzyskania informacji o typach argumentów, Forwardowanie wiadomości,

An NSInvocation object contains all the elements of an Objective-C message: a target, a selector, arguments, and the return value. Typ mutowalny można zmieniać dowolne elementy i wielokrotnie wykorzystywać. (A co jeśli zmodyfikujemy coś w timerze?)

int kwadrat(int x) { return x*x; } int main() { int i = 4; int j = kwadrat(i); }

int kwadrat(int x) { return x*x; } int main() { int i = 4; } push push i jmp mov j, ax int j = kwadrat(i);

int kwadrat(int x) { return x*x; } int polowa(int x) { return x/2; } int main() { int (*funkcja)(int); funkcja = polowa; int i = 4; printf("%d", funkcja(i)); // 2 }

int kwadrat(int x) { return x*x; } int polowa(int x) { return x/2; } int main() { int (*funkcja)(int); funkcja = kwadrat; int i = 4; printf("%d", funkcja(i)); // 16 }

Podstawa ważnych elementów programowania obiektowego metody wirtualne, interfejsy (objc:protokoły), Virtual method table (np. C++) tablica adresów kolejność funkcji wynika z definicji w kodzie źródłowym, dość tanie tylko dodatkowe adresowanie pośrednie, Kacze typowanie When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.

Klasa jest obiektem, wskaźnik na superklasę, dispatch table objc_msgsend sprawdza czy klasa implementuje dany selector, wywołuje funkcję albo szuka w klasie wyżej*,

Wywołanie metody: [receiver message] zamieniane jest na wywołanie funkcji objc_msgsend(receiver, @selector(message)); Z parametrami: [receiver message:x iparam:y]; objc_msgsend(receiver, @selector(message:iparam:),x,y ); Stąd brak przeciążania metod. Identyfikatorem funkcji jest SEL, i tak należy się odwoływać z poziomu objective-c, w rzeczywistości implementacja to słownik string->adres funkcji.

Wydajność szukania w słowniku stringów? @interface -(void) simulateparticle: (double) dt @end void (*simulate)(id, SEL, double); simulate = (void (*)(id, SEL, double)) [target methodforselector:@selector(simulateparticle:)]; for (int i = 0; i < 100, i++ ) setter(targetlist[i], :@selector(simulateparticle:), 0.1);

NSInvocation - (void)forwardinvocation:(nsinvocation *)aninvocation { if ([someotherobject respondstoselector: [aninvocation selector]]) [aninvocation invokewithtarget:someotherobject]; else [super forwardinvocation:aninvocation]; }

2014.04.25. (piątek) 16:15-17:00 Drugi termin tylko dla osób, które nie brały udziału w pierwszym terminie: Z przyczyn zdrowotnych (zwolnienie), Z innych przyczyn Email do 22. kwietnia z wyjaśnieniem, W temacie koniecznie KOLOMAC Moja odpowiedź 16./23. kwietnia (dwie rundy). Pytania (WWW)

Jak będzie wyglądała deklaracja (statycznej) metody przyjmującej dwa parametry typu int, a zwracającej napis (nazwy wymyśl). Jak wygląda typowy inicjalizator, który nie przyjmuje żadnych parametrów, ale ma przygotowane miejsce na zainicjalizowanie swojej zawartości? Jak wygląda tpy logiczny w objc? Jakie stałe nakazuje konwencja? Czym różni się @"aaa" od "aaa"? Czym różni się @5 od 5?

Jak zdefiniować tablicę z trzema stringami? Jak zdefiniować słownik z trzema parami string int? Jak zadeklarować blok, który przyjmuje i zwraca int? Jak zdefiniować blok, który zwraca podniesioną do kwadratu wartość otrzymaną parametrem (int)? Jak rzucić/przechwycić wyjątek w objective C?

Czym jest NSObject? Do czego służą metody: alloc, init, new, copy, mutablecopy, class, superclass, description, hash, isequal, iskindofclass, ismemberofclass, respondstoselector, conformstoprotocol? Co to są atrybuty obiektu w objc? Jak wygląda deklaracja? Co to są własności obiektu w objc? Jak wygląda deklaracja? Co to jest lazy instantiation? Jakie ma praktyczne uzasadnienie? Jakie domyślne atrybuty, metody wiążą się z deklaracją @property int test; Co oznacza nonatomic?

Jak działa notacja z kropką względem metod w objc? Jak wygląda kwestia hermetyzacji w objc? Co to jest kategoria klasy? Podaj przykład zastosowania. Co to jest rozszerzenie klasy? Podaj przykład zastosowania. Jak zastąpić internal przez użycie kategorii/rozszerzeń?

Jaki efekt spowoduje wywołanie metody na zerowym (nil) wskaźniku? Jaki efekt spowoduje próba wywołania niezaimplementowanej metody na zerowym (nil) wskaźniku? Jaki efekt spowoduje próba wywołania niezaimplementowanej metody na niezerowym wskaźniku? Co to jest id w objc? Co to jest protokół w objc? Jak wygląda deklaracja od strony klasy, a jak od strony wskaźnika na obiekt? Czym różnią się protokoły w objc od interfejsów w Javie/C#?

Co to jest liczenie referencji? Jak działa zarządzanie pamięcią w objc z ARC? Co to jest cykl referencji? Czym różni się sposób zarządzania pamięcią w objc (z ARC) od Javy/C#? Czym są i jak działają dowiązania silne/słabe w objc? Co to jest unsafe_unretained?

Co to jest obiekt (nie)mutowalny? Kiedy się takie stosuje? Co powiesz o mutowalności znanych tobie typów w objc? Co to jest NSValue? Podaj zastosowanie. Co to jest NSNumber? Podaj zastosowanie. Jak mają się kolekcje do zarządzania pamięcią? Co to jest property list? Do czego służy? Jak można typować kontenery w objc?

Co to jest Key-Value Coding? Co to jest keypath? Co to jest i jak działa Key-Value Observing? Co to jest (i do czego służy) keypathsforvaluesaffecting (KVO)?

Co to jest block w objc? Co to jest kontekst leksykalny i jak się ma do bloku w objc? Jak się ma blok do zarządzania pamięcią w objc0? Po co oznaczać zmienną modyfikatorem block? Do czego służą wyjątki w objc? Czym można rzucić w objc?