einführung in cocoa re-usable content in 3d und simulationssystemen prof. dr. manfred thaller, ss...
TRANSCRIPT
Einführung in Cocoa
Re-usable Content in 3D und SimulationssystemenProf. Dr. Manfred Thaller, SS 2012
Do, 14-15.30 Uhr, Archäologie-PoolReferent: Nelson Marambio
Framework vs. Klassenbibliothek
• Klassenbibliothek (z.B. Java): ausformulierte Attribute
Einführung in Cocoa 2
Framework vs. Klassenbibliothek
• Klassenbibliothek (z.B. Java): ausformulierte Attribute
Werkzeuge zu verschiedenen Bereichen, keine Spezialisierung
Einführung in Cocoa 3
Framework vs. Klassenbibliothek
• Klassenbibliothek (z.B. Java): ausformulierte Attribute
Werkzeuge zu verschiedenen Bereichen, keine Spezialisierung
• Framework: Bibliothek + Grundgerüst für grafische Anwendung
Einführung in Cocoa 4
Framework vs. Klassenbibliothek
• Klassenbibliothek (z.B. Java): ausformulierte Attribute
Werkzeuge zu verschiedenen Bereichen, keine Spezialisierung
• Framework: Bibliothek + Grundgerüst für grafische Anwendung (Dummy)
Auswahl je nach Kontext, dabei implizite Bedarfsformulierung notwendig
Einführung in Cocoa 5
Framework
• Dummy: enthält „tote“ GUI
Einführung in Cocoa 6
Framework
• Dummy: enthält „tote“ GUI• Klassenbibliothek konkret implementiert
Einführung in Cocoa 7
Framework
• Dummy: enthält „tote“ GUI• Klassenbibliothek konkret implementiert• Benutzer programmiert nicht völlig neu,
sondern überschreibt gesetzte Standardwerte /-routinen
Einführung in Cocoa 8
Framework
• Dummy: enthält „tote“ GUI• Klassenbibliothek konkret implementiert• Benutzer programmiert nicht völlig neu,
sondern überschreibt gesetzte Standardwerte /-routinen
• Framework setzt Benutzer [sinnvolle] Grenzen
Einführung in Cocoa 9
Framework
• Dummy: enthält „tote“ GUI• Klassenbibliothek konkret implementiert• Benutzer programmiert nicht völlig neu,
sondern überschreibt gesetzte Standardwerte /-routinen
• Framework setzt Benutzer [sinnvolle] Grenzen Was das Framework nicht vorsieht, kann der
Benutzer nicht implementieren
Einführung in Cocoa 10
Cocoa: Historie
• Basiert auf Betriebsystem NeXTStep (Produkt der Firma NeXT, Gründer: Steve Jobs)
Einführung in Cocoa 11
Cocoa: Historie
• Basiert auf Betriebsystem NeXTStep (Produkt der Firma NeXT, Gründer: Steve Jobs)
• Später: NeXTStep Grundlage für MacOS X
Einführung in Cocoa 12
Cocoa: Historie
• Basiert auf Betriebsystem NeXTStep (Produkt der Firma NeXT, Gründer: Steve Jobs)
• Später: NeXTStep Grundlage für MacOS X• [daher Präfix NS bei Datentypen / Klassen]
Einführung in Cocoa 13
Cocoa: Historie
• Basiert auf Betriebsystem NeXTStep (Produkt der Firma NeXT, Gründer: Steve Jobs)
• Später: NeXTStep Grundlage für MacOS X• [daher Präfix NS bei Datentypen / Klassen]• Konsequente Objektorientierung
Einführung in Cocoa 14
Cocoa: Allgemein
• MVC
Einführung in Cocoa 15
Cocoa: Allgemein
• MVC = Modell-View-Controller
Einführung in Cocoa 16
Cocoa: Allgemein
• MVC = Modell-View-Controller• Modell: konkrete Nutzdaten innerhalb der
Anwendung
Einführung in Cocoa 17
Cocoa: Allgemein
• MVC = Modell-View-Controller• Modell: konkrete Nutzdaten innerhalb der
Anwendung• View: grafische Elemente zur Visualisierung
des Modell
Einführung in Cocoa 18
Cocoa: Allgemein
• MVC = Modell-View-Controller• Modell: konkrete Nutzdaten innerhalb der
Anwendung• View: grafische Elemente zur Visualisierung
des Modell• Controller: ermöglicht Kommunikation zw.
Modell und View eigentliche Anwendungs-Logik
Einführung in Cocoa 19
Architektur
• Zentrales Objekt NSApplication
Einführung in Cocoa 20
Architektur
• Zentrales Objekt NSApplication Mutterschiff ?
Einführung in Cocoa 21
Architektur
• Zentrales Objekt NSApplication Mutterschiff ? Telefonvermittlung !
Einführung in Cocoa 22
Architektur
• Zentrales Objekt NSApplication Mutterschiff ? Telefonvermittlung !
• leitet Nachrichten / Ereignisse an zuständige Klassen weiter
Einführung in Cocoa 23
Architektur
• Zentrales Objekt NSApplication Mutterschiff ? Telefonvermittlung !
• leitet Nachrichten / Ereignisse an zuständige Klassen weiter
• Prinzip: Delegates, Klassen stehen parallel zu NSApplication, keine Ableitung
Einführung in Cocoa 24
Protokolle
• Protokoll: Menge von Methoden, die der Interaktion von Objektion dienen
Einführung in Cocoa 25
Protokolle
• Protokoll: Menge von Methoden, die der Interaktion von Objektion dienen
• Formelles Protokoll: Klasse muss Methode x implementieren (obligatorisch)
Einführung in Cocoa 26
Protokolle
• Protokoll: Menge von Methoden, die der Interaktion von Objektion dienen
• Formelles Protokoll: Klasse muss Methode x implementieren (obligatorisch)
• Informelles Protokoll: Klasse kann Methode x implementieren (optional), häufiger benutzt
Einführung in Cocoa 27
Protokolle II
• Informelles Protokoll wird über eine Kategorie umgesetzt
Einführung in Cocoa 28
Protokolle II
• Informelles Protokoll wird über eine Kategorie umgesetzt
• Vorhandene Klasse wird nicht abgeleitet, sondern erweitert (vgl. Delegates)
Einführung in Cocoa 29
Observer
• Observer: schwächere Form der Delegates
Einführung in Cocoa 30
Observer
• Observer: schwächere Form der Delegates• Eher informativer Charakter
Einführung in Cocoa 31
Observer
• Observer: schwächere Form der Delegates• Eher informativer Charakter• Objekt_1 „bespitzelt“ andere Objekt_2
Einführung in Cocoa 32
Observer
• Observer: schwächere Form der Delegates• Eher informativer Charakter• Objekt_1 „bespitzelt“ andere Objekt_2
Objekt_2 weiß nichts von Beobachtung
Einführung in Cocoa 33
Observer
• Observer: schwächere Form der Delegates• Eher informativer Charakter• Objekt_1 „bespitzelt“ andere Objekt_2
Objekt_2 weiß nichts von Beobachtung• Objekt_1 muss sich beim NotificationCenter
für die Beobachtung von Objekt_2 registrieren
Einführung in Cocoa 34
Observer
• Observer: schwächere Form der Delegates• Eher informativer Charakter• Objekt_1 „bespitzelt“ andere Objekt_2
Objekt_2 weiß nichts von Beobachtung• Objekt_1 muss sich beim NotificationCenter
für die Beobachtung von Objekt_2 registrieren
Einführung in Cocoa 35
Target-Action
• Verbindung von [mitteilender] Methode eines Objekts an einen reagierenden Controller
Einführung in Cocoa 36
Target-Action
• Verbindung von [mitteilender] Methode eines Objekts an einen reagierenden Controller
• Einziges Argument: Referenz auf Sender der Nachricht
Einführung in Cocoa 37
Target-Action
• Verbindung von [mitteilender] Methode eines Objekts an einen reagierenden Controller
• Einziges Argument: Referenz auf Sender der Nachricht
Einführung in Cocoa 38
Programmieren
????
Einführung in Cocoa 39
Programmieren
!!! Objective-C !!!
Einführung in Cocoa 40
Literatur
• K. Surendorf, M. Hardt: Einstieg in Objective-C 2.0 und COCOA
• Artikel „Framework“, http://en.wikipedia.org/wiki/Software_framework
Einführung in Cocoa 41