Smalltalk architektura Model-View-Controller obiektowo zorientowany graficzny interfejs użytkownika Cezary BOŁDAK.

Slides:



Advertisements
Podobne prezentacje
Kolekcje Collection Bag SequenceableCollection ArrayedCollection Array
Advertisements

OOPSmalltalk - stałe, klasy, bloki, instrukcje sterujące1 Komunikaty do self Odbiorcą jest obiekt, w którym wykonuje się ten komunikat Szukanie metody.
OOPSmalltalk - stałe, klasy, bloki, instrukcje sterujące1 Komunikaty do self Odbiorcą jest obiekt, w którym wykonuje się ten komunikat Szukanie metody.
OOPSmalltalk - Licznik, metodologia1 Analiza i projektowanie obiektowe 3 fazy: –analiza problemu - modelowanie (m.in. podział na klasy) –projektowanie.
Przykład - Debugger Język pewnego procesora zawiera następujące instrukcje: MOV l, r l:=r ADD l, r l := l + r SUB l, r l := l - r JMP instr skok.
Model – View - Controler
Widoki.
Robi bo musi, czy Ruby bo lubi?
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Walidacja danych alina suchomska.
OOPSmalltalk - Licznik, metodologia1 Analiza i projektowanie obiektowe 3 fazy: –analiza problemu - modelowanie (m.in. podział na klasy) –projektowanie.
Struktura kanałów marketingowych. Definicje kanału dystrybucji Podejście podmiotowe Podejście funkcjonalne zbiór wzajemnie zależnych od siebie organizacji.
„OPIEKA ZDROWOTNA w 2004 r. - przekształcenia i zmiany.” „OPIEKA ZDROWOTNA w 2004 r. - przekształcenia i zmiany.” Prywatyzacja usług anestezjologicznych.
Światowy Dzień Zdrowia 2016 Pokonaj cukrzycę. Światowy Dzień Zdrowia 7 kwietnia 2016.
Modele biznesowe. Podręcznik Model biznesowy to w pewnym sensie szkic strategii, która ma zostać wdrożona w ramach struktur, procesów i systemów organizacji.
OBOWIĄZKI INFORMACYJNE BENEFICJENTA Zintegrowane Inwestycje Terytorialne Aglomeracji Wałbrzyskiej.
NIE TAKI KOMPUTER STRASZNY JAK GO MALUJĄ PODSTAWY OBSŁUGI KOMPUTERA.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
InMoST, Analiza architektury metodą ATAM Jerzy Nawrocki
PRACA Z APLIKACJAMI SYSTEM PRZEMIESZCZANIA oraz NADZORU WYROBÓW AKCYZOWYCH EMCS PL 1.
Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego Benchmarking – narzędzie efektywnej kontroli zarządczej.
Przygotowanie projektu w ramach Programu Interreg V-A Polska-Słowacja Wspólny Sekretariat Techniczny Programu Interreg V-A Polska-Słowacja
INSTA 4 IV Liceum Ogólnokształcące im. Tadeusza Kościuszki w Toruniu.
Sytuacje problemowe w Grupach Partnerskich na podstawie materiałów dla FPŚ.
Poczta elektroniczna – e- mail Gmail zakładanie konta. Wysyłanie wiadomości.
Wprowadzenie do języka Java Kolekcje w języku Java Bartosz Walter.
RZUTY WOLNE Szkolenie kandydatów na sędziów KURS 2011 Wydział Sędziowski Łódzki Związek Piłki Nożnej Opracował: Tomasz Radkiewicz.
IEN 2010 © wszelkie prawa zastrzeżone SEMINARIUM Pakiet MATLAB w Zakładzie OGM Możliwości posiadanych produktów.
Wspólne emocje zmieniamy na trwałe relacje.. Pracownik/ Partner Pracuje Dobrze/Idealnie UmieChceMoże Aspekty umysłowe Aspekty fizyczne Motywacja Pensje.
Monitorowanie pracy systemów bezpieczeństwa w infrastrukturze IT – produkty Tufin.
Platforma szkoleniowa – najważniejsze funkcjonalności.
Praca dyplomowa inżynierska Temat: Informatyczny system edukacyjny do przedmiotu „Podstawy Kryptologii” Dyplomant: Ewelina Bogusz Promotor: prof. zw.,
Dobre praktyki w projektowaniu aplikacji mobilnych Arkadiusz Waśniewski
POLITECHNIKA RZESZOWSKA im. Ignacego Łukasiewicza WYDZIAŁ ELEKTROTECHNIKI I INFORMATYKI ZAKŁAD METROLOGII I SYSTEMÓW POMIAROWYCH METROLOGIA Andrzej Rylski.
Analiza, projekt i implementacja zintegrowanego systemu zarządzania i promocji dla branży gastronomicznej Krzysztof Grabalski 5921.
Punkt Informacyjny Funduszy Europejskich w Toruniu Spotkanie informacyjne pt. „Środa z Funduszami dla osób zainteresowanych założeniem działalności gospodarczej”
Ćwiczenia : Obiekty odnawiane z zerowym czasem odnowy mgr inż. Piotr Smoczyński
Skorzystaj z doświadczeń ekspertów - jak Energetyka może wykorzystać najlepsze praktyki w budowaniu wartości klienta w sektorze telekomunikacyjnym Renata.
Marketing w Internecie. Marketing internetowy to: ● Forma marketingu, używająca jako medium Internetu i strony WWW (World Wide Web). Służy do przesłania.
System operacyjny Renata P. System operacyjny - jest to zbiór nadrzędnych i niezbędnych programów umożliwiających pracę na komputerze. Jest on pośrednikiem.
Dziedziczenie, polimorfizm, Interfejsy
Toruńskie Technikum Informatyczne
Wzorzec MVC na przykładzie CakePHP
Programowanie Obiektowe – Wykład 1
Szkoła Podstawowa im. Tadeusza Kościuszki w Wawrzeńczycach
On-the-Fly Garbage Collection
Ciąg arytmetyczny Opracowały : Iwona Głowacka i Małgorzata Jacek.
Inżynieria oprogramowania Wzorzec architekt. MVC
Full Text Finder Przegląd Publication Finder
Wzmacnianie potencjału rozwoju w wymiarze lokalnym i regionalnym
KLASYFIKACJA CZWOROKĄTÓW
Elementy fizyki kwantowej i budowy materii
Git - system kontroli wersji
AOP – Aspect Oriented Programming
Otwarta firma Jak zgłosić firmę bądź instytucję do programu?
ILMT – inwestycja na przyszłość
Tworzenie bezpiecznych aplikacji
Koszyk danych.
SYSTEM KONTROLI FREKWENCJI
Podstawy informatyki Zygfryd Głowacz.
PGO Kolekcje Michail Mokkas.
J2EE: Bazy danych c.d. Język zapytań EJB QL.
Jak szukać błędów w Eclipsie?
Zgłoszenia do nagrody specjalnej Najlepszy praCCodawca
Wywołanie okienka ShapePlot poprzez hoc
a silverchair information system
dr Danuta Kajrunajtys BUSINESS PROCESS MANAGEMENT ROBOTIC PROCESS
Łatwa obsługa Prosta instalacja Wieczysta licencja Praca w sieci
Autor: Magdalena Linowiecka
Zapis prezentacji:

Smalltalk architektura Model-View-Controller obiektowo zorientowany graficzny interfejs użytkownika Cezary BOŁDAK

Programowanie obiektowe 2 - Smalltalk MVC Browser Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Triada MVC podział zadań związanych z interfejsem - Model – przechowywanie danych - View – prezentacja danych - Controller – interakcja z użytkownikiem każdy z uczestników triady może się zmieniać niezależnie (ortogonalność) MVC obecne od Smalltalk-80 „dialekt” ze Squeak 3.8 interfejs oparty na myszy Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Model może być nim każdy obiekt przechowujący dane: 'String', 'Integer', 'Float' specjalna klasa bazowa 'Model' ułatwiająca komunikację niezależny od prezentacji i interakcji przynajmniej nie bezpośrednio Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Widok „główny rozgrywający” triady okno z prezentacją modelu okna główne – klasa 'StandardSystemView' struktura drzewiasta: 'subViews' i 'superView' 'window' – lokalny obszar okna 'viewPort' – obszar widoku w 'superView' Transformation: operację mapujące lokalne współrzędne na współrzędne 'superView' i ekranu Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Kontroler reprezentant triady główny szkielet działania globalna kolekcja kontrolerów 'ScheduledControllers' każdy widok ma 1 kontroler ('NoController'–bez interakcji) równoległe drzewo Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Budowa triady VIEW dependents model controller MODEL CONTROLLER view model Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Relacje triady ControllerView,ControllerModel,ViewController, View  Model : pola klas' Model  View: wzorzec Observer a) zmienna klasowa w 'Object': 'DependentFields' dependents ^ DependentsField at: self. b) pole klasy 'Model': 'dependents' dependents ^ dependents. c) protokół 'updating' klasy 'Object' changed: aParam self dependents do: [:aDep | aDep update: aParam] changed changed: self Programowanie obiektowe 2 - Smalltalk MVC

Działanie kontrolera (1) ScheduledControllers ScheduledControllers : ControlManager StandardSystemController ScreenController ... Znajdywanie aktywnego kontrolera activeController := ScheduledControllers scheduledControllers detect: [ :aController | aController isControlWanted ]. Controller | isControlWanted ^self viewHasCursor. Programowanie obiektowe 2 - Smalltalk MVC

Działanie kontrolera (2) Przekazywanie kontroli wybranemu kontrolerowi activeController startUp. Controller | startUp self controlInitialize. self controlLoop. self controlTerminate. Controller | controlLoop [self isControlActive] whileTrue: [self interActivityPause. self controlActivity. Processor yeld. ] Controller | controlActivity | aView | aView := view subViewWantingControl. aView == nil ifTrue: [aView controller startUp]. Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Wybrane kontrolery NoController isControlWanted ^ false ModalController isControlWanted ^ modeActive MouseMenuController ControlActivity | cursorPoint | cursorPoint := sensor cursorPoint. super controlActivity. (cursorPoint = self cursorPoint and: [self vewHasCursor]) ifTrue: [ sensor redButtonPressed ifTrue:[^self redButtonActivity]. sensor yellowButtonPressed ifTrue:[^self yellowButtonActivity]. sensor blueButtonPressed ifTrue:[^self blueButtonActivity]] ScreenController, StandardSystemController Programowanie obiektowe 2 - Smalltalk MVC

Pluggable Views (1) ? 1 model – wiele widoków Rozwiązanie: adaptery classView : CodeView +getCode myBrowser : BrowserModel +getClass: Class +getMethod: Method model ? model methodView : CodeView +getCode Rozwiązanie: adaptery BrowserModel subclass: #ClassAdapter ... getCode ^self getClass. BrowserModel subclass: #MethodAdapter ... ^self getMethod. Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Pluggable Views (2) lepsze rozwiązanie: pluggable selector View subclass: #PluggableCodeView instanceVariables ”getCodeSelector” ... setGetCodeSelector: getCodeSel getCodeSelector := getCodeSel. ^ self getCode ^ model perform: getCodeSelector aClassView := PluggableCodeView new setGetCodeSelector: #getClass. aMethodView := PluggableCodeView new setGetCodeSelector: #getMethod. Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Proste okno topView := StandardSystemView new. topView initialize; window: (0@0 extent: 100@50); label: 'Pierwsze okno'. subView := DisplayTextView new model: 'Witaj' asDisplayText. subView controller: NoController new. subView window: (0@0 extent: 100@50); borderWidth: 1. topView addSubView: subView viewport: (0@0 extent: 100@50). topView controller open. Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Lista z dodawaniem (1) Model subclass: #ListModel instanceVariableNames: 'list selection' classVariableNames: '' oolDictionaries: '' category: 'OOP2-Example'! !ListModel methodsFor: 'initialize-release' ! initialize list := OrderedCollection new. selection := 0. ^ self! ! ! ListModel methodsFor: 'accesing' ! add: newPosition list addLast: newPosition. self changed: #list.! list ^ list ! ! Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Lista z dodawaniem (2) ! ListModel methodsFor: 'selection' ! selected (selection > 0) ifTrue: [^ list at: selection] ifFalse: [^ nil]. ! selection ^ selection ! selection: newSelection (newSelection > list size) ifFalse: [selection := newSelection. self changed: #selected].! ! ListModel class instanceVariableNames: ''! !ListModel class methodsFor: 'class initialization' ! new ^ super new initialize! ! Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Lista z dodawaniem (3) StandardSystemView subclass: #ListTestView instanceVariableNames: 'listModel listView button infoView newView' classVariableNames: '' poolDictionaries: '' category: 'OOP2-Example'! !ListTestView methodsFor: 'displaying' ! run super controller open.! ! !ListTestView methodsFor: 'action' ! newPosition |newPos| newPos := newView displayContents asString. (newPos = '') ifTrue: [^ nil]. listModel add: newPos. listView list: (listView getList asArray). listView display; displaySelectionBox. newView editString: ''; display. ! ! Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Lista z dodawaniem (4) !ListTestView methodsFor: 'initialize-release' ! initialize super initialize. listModel := ListModel new. listModel add: 'abc'; add:'def'; add: 'ghi'; selection: 1. super label: 'OOP2 MVC Example - lists'. listView := PluggableListView on: listModel list: #list selected: #selection changeSelected: #selection: . listView autoDeselect: false. infoView := PluggableTextView on: listModel text: #selected accept: nil. infoView borderWidth: 1. newView := StringHolderView new. newView borderWidth: 1. button := PluggableButtonView on: self getState: nil action: #newPosition. button borderWidth:3; window:(0@0 extent: 150@50);label:'Add new:'. super window: (0@0 extent:300@150). super addSubView: listView viewport: (0@0 extent: 150@150). super addSubView: infoView viewport: (150@0 extent: 150@50). super addSubView: button viewport: (150@50 extent: 150@50). super addSubView: newView viewport: (150@100 extent: 150@50). ! ! Programowanie obiektowe 2 - Smalltalk MVC

Programowanie obiektowe 2 - Smalltalk MVC Lista z dodawaniem (5) ListTestView class instanceVariableNames: ''! !ListTestView class methodsFor: 'instance creation' ! new ^ super new initialize! ! runExample self new run! ! Programowanie obiektowe 2 - Smalltalk MVC