Wydarzenie (przetwarzanie)
W programowaniu i projektowaniu oprogramowania zdarzenie jest działaniem lub zdarzeniem rozpoznawanym przez oprogramowanie , często pochodzącym asynchronicznie ze środowiska zewnętrznego, które może być obsługiwane przez oprogramowanie. Zdarzenia komputerowe mogą być generowane lub wyzwalane przez system, użytkownika lub w inny sposób. Zazwyczaj zdarzenia są obsługiwane synchronicznie z przepływem programu ; oznacza to, że oprogramowanie może mieć jedno lub więcej dedykowanych miejsc, w których obsługiwane są zdarzenia, często pętla zdarzeń .
Źródłem zdarzeń jest użytkownik, który może wchodzić w interakcje z oprogramowaniem za pośrednictwem urządzeń peryferyjnych komputera — na przykład wpisując na klawiaturze . Innym źródłem jest sprzętowe , takie jak zegar . Oprogramowanie może również wyzwalać własny zestaw zdarzeń w pętli zdarzeń, np. w celu poinformowania o zakończeniu zadania. Mówi się, że oprogramowanie, które zmienia swoje zachowanie w odpowiedzi na zdarzenia, jest sterowane zdarzeniami , często w celu bycia interaktywnym .
Opis
Systemy sterowane zdarzeniami są zwykle używane, gdy istnieje jakaś asynchroniczna aktywność zewnętrzna, którą musi obsłużyć program; na przykład użytkownik, który naciska przycisk myszy. System sterowany zdarzeniami zwykle uruchamia pętlę zdarzeń , która czeka na takie działania, np. wejście z urządzeń lub alarmy wewnętrzne. Kiedy wystąpi jedno z nich, zbiera dane o zdarzeniu i wysyła zdarzenie do obsługującego zdarzenia , które się nim zajmie.
Program może zdecydować się na ignorowanie zdarzeń i mogą istnieć biblioteki wysyłające zdarzenie do wielu programów obsługi, które mogą być zaprogramowane do nasłuchiwania określonego zdarzenia. Dane powiązane ze zdarzeniem co najmniej określają, jakiego typu jest to zdarzenie, ale mogą zawierać inne informacje, takie jak kiedy wystąpiło, kto lub co je spowodowało, oraz dodatkowe dane dostarczone przez źródło zdarzenia do obsługi o tym , jak zdarzenie powinno zostać przetworzone.
Zdarzenia są zwykle używane w interfejsach użytkownika, w których działania w świecie zewnętrznym (kliknięcia myszą, zmiana rozmiaru okna, naciśnięcia klawiatury, komunikaty z innych programów itp.) są obsługiwane przez program jako seria zdarzeń. Programy napisane dla wielu środowisk okienkowych składają się głównie z procedur obsługi zdarzeń.
Zdarzenia mogą być również używane na poziomie zestawu instrukcji , gdzie uzupełniają przerwania . W porównaniu z przerwaniami zdarzenia są zwykle realizowane synchronicznie: program jawnie czeka na wygenerowanie i obsłużenie zdarzenia (zwykle przez wywołanie instrukcji wywołującej następne zdarzenie), podczas gdy przerwanie może wymagać natychmiastowej obsługi.
Model zdarzeń delegatów
Powszechnym wariantem programowania obiektowego jest model zdarzeń delegatów , który jest dostarczany przez niektóre graficzne interfejsy użytkownika . Model ten opiera się na trzech podmiotach:
- formant, który jest źródłem zdarzenia
- detektory , zwane także programami obsługi zdarzeń , które odbierają powiadomienie o zdarzeniu ze źródła
- interfejsy (w szerszym znaczeniu tego terminu) opisujące protokół, za pomocą którego zdarzenie ma być komunikowane.
Ponadto model wymaga, aby:
- każdy słuchacz musi zaimplementować interfejs dla zdarzenia, którego chce słuchać
- każdy słuchacz musi zarejestrować się w źródle, aby zadeklarować chęć wysłuchania wydarzenia
- za każdym razem, gdy źródło generuje zdarzenie, przekazuje je zarejestrowanym słuchaczom, zgodnie z protokołem interfejsu.
C# używa zdarzeń jako specjalnych delegatów, które mogą być uruchamiane tylko przez klasę, która je deklaruje. Pozwala to na lepszą abstrakcję , na przykład:
delegat void Notifier ( string nadawca ); class Model { zdarzenie publiczne Powiadamiający PowiadomieniaWidoki ; public void Zmień () { ... notifyViews ( "Model" ); } } klasa Widok 1 { widok publiczny 1 ( model modelu ) { model . notifyViews += nowy Notifier ( this . Update1 ); } void Update1 ( string nadawca ) { Console . WriteLine ( $"{sender} został zmieniony podczas aktualizacji" ); } } klasa Widok2 { publiczny Widok2 ( model modelu ) { model . notifyViews += nowy Notifier ( this . Update2 ); } void Update2 ( string nadawca ) { Console . WriteLine ( $"{nadawca} został zmieniony" ); } } class Test { static void Main () { Model modelu = nowy Model (); nowy Widok1 ( model ); nowy Widok2 ( model ); modelka . Zmień (); } }
Obsługa zdarzeń
W programowaniu komputerowym program obsługi zdarzeń można zaimplementować za pomocą podprogramu wywołania zwrotnego , który obsługuje dane wejściowe otrzymane w programie (nazywanym odbiornikiem w języku Java i JavaScript ). Każde zdarzenie jest fragmentem informacji na poziomie aplikacji z podstawowej struktury , zwykle z zestawu narzędzi GUI . Zdarzenia GUI obejmują klawiszy , ruchy myszy , wybrane akcje i wygasanie liczników czasu . Na niższym poziomie zdarzenia mogą reprezentować dostępność nowych danych do odczytu pliku lub strumienia sieciowego. Programy obsługi zdarzeń to centralna koncepcja programowania sterowanego zdarzeniami .
Zdarzenia są tworzone przez platformę w oparciu o interpretację danych wejściowych niższego poziomu, które same mogą być zdarzeniami niższego poziomu. Na przykład ruchy myszy i kliknięcia są interpretowane jako wybory menu. Zdarzenia początkowo pochodzą z działań na poziomie systemu operacyjnego, takich jak przerwania generowane przez urządzenia sprzętowe, instrukcje przerwań programowych lub zmiany stanu w sondowaniu . Na tym poziomie procedury obsługi przerwań i procedury obsługi sygnałów odpowiadają procedurom obsługi zdarzeń.
Utworzone zdarzenia są najpierw przetwarzane przez dyspozytora zdarzeń w ramach. Zwykle zarządza powiązaniami między zdarzeniami a procedurami obsługi zdarzeń i może kolejkować procedury obsługi zdarzeń lub zdarzenia do późniejszego przetworzenia. Dyspozytorzy zdarzeń mogą bezpośrednio wywoływać procedury obsługi zdarzeń lub czekać na usunięcie zdarzeń z kolejki z informacją o wykonaniu procedury obsługi.
Powiadomienie o wydarzeniu
Powiadomienie o zdarzeniu to termin używany w połączeniu z oprogramowaniem komunikacyjnym do łączenia aplikacji generujących małe komunikaty („zdarzenia”) z aplikacjami, które monitorują powiązane warunki i mogą podejmować działania wyzwalane przez zdarzenia.
Powiadamianie o zdarzeniach jest ważną cechą nowoczesnych systemów bazodanowych (wykorzystywanych do informowania aplikacji o wystąpieniu obserwowanych przez nie warunków), nowoczesnych systemów operacyjnych (wykorzystywanych do informowania aplikacji, kiedy powinny podjąć jakąś akcję, np. systemy, w których producent zdarzenia może znajdować się na innej maszynie niż konsument lub konsumenci. Platformy powiadomień o zdarzeniach są zwykle projektowane w taki sposób, że aplikacja generująca zdarzenia nie musi wiedzieć, które aplikacje je zużyją, ani nawet ile aplikacji będzie monitorować strumień zdarzeń.
Czasami jest używany jako synonim publikowania-subskrybowania , terminu odnoszącego się do jednej klasy produktów obsługujących powiadamianie o zdarzeniach w ustawieniach sieciowych. Model synchronizacji wirtualnej jest czasami używany do wyposażenia systemów powiadamiania o zdarzeniach i systemów publikowania-subskrypcji w silniejsze gwarancje tolerancji błędów i spójności.
Wydarzenia generowane przez użytkowników
Istnieje duża liczba sytuacji lub zdarzeń, które program lub system może wygenerować lub na które może zareagować. Niektóre typowe zdarzenia generowane przez użytkowników obejmują:
Zdarzenia myszy
Urządzenie wskazujące może generować wiele rozpoznawalnych programowo gestów urządzenia wskazującego . Mysz może generować wiele zdarzeń myszy, takich jak ruch myszy (w tym kierunek ruchu i odległość), lewy/prawy przycisk myszy w górę/w dół i kółka myszy lub kombinację tych gestów. Na przykład dwukrotne kliknięcie zwykle zaznacza słowa i znaki w obramowaniu, a trzykrotne kliknięcie całych akapitów.
Zdarzenia klawiatury
Naciśnięcie klawisza na klawiaturze lub kombinacji klawiszy generuje zdarzenie klawiatury, umożliwiające aktualnie uruchomionemu programowi reagowanie na wprowadzone dane, takie jak klawisz/klawisze naciśnięte przez użytkownika.
Zdarzenia joysticka
Poruszanie joystickiem generuje sygnał analogowy XY. Często mają wiele przycisków wyzwalających zdarzenia. Niektóre gamepady do popularnych pudełek z grami używają joysticków.
Zdarzenia na ekranie dotykowym
Zdarzenia generowane za pomocą ekranu dotykowego są powszechnie nazywane zdarzeniami dotykowymi lub gestami .
Zdarzenia urządzenia
Zdarzenia związane z urządzeniem obejmują działania wykonywane przez urządzenie lub na nie, takie jak potrząśnięcie, przechylenie, obrót, ruch itp.
Zobacz też
- Oddzwonienie (programowanie komputerowe)
- Wyzwalacz bazy danych
- Zdarzenia DOM
- Programowanie sterowane zdarzeniami
- Obsługa wyjątków
- Obsługa przerwań
- Przerywa
- Wzorzec obserwatora (np. słuchacz zdarzeń)
- Wzór Reactor kontra wzór Proactor
- Programowanie sygnału
- Wirtualna synchronizacja
Linki zewnętrzne
- Obsługa zdarzeń artykułów i funkcje wywołania zwrotnego
- Projekt wysokiego poziomu programu obsługi zdarzeń sub-farmy
- Składnia zdarzeń dla XML
- Rozproszone wydarzenia i powiadomienia
- Kolejność zdarzeń
-
Dokumentacja Javadoc
interfejsu Java DOM
-
java.awt.event
Pakiet Java Dokumentacja API Javadoc -
javax.swing.event
Pakiet Java Dokumentacja API Javadoc - Napisz program obsługi zdarzeń