System zdarzeń - wyzwalanie i nasłuchiwanie
|
|
- Damian Szczepaniak
- 9 lat temu
- Przeglądów:
Transkrypt
1 System zdarzeń - wyzwalanie i nasłuchiwanie Informacje o module Opis modułu W tym rozdziale dowiesz się czym są zdarzenia silverlight, jakie rodzaje zdarzeo obsługuje oraz jakie strategie informowania o zajściu zdarzenia wykorzystano tworząc strukturę komponentów wizualnych. Dowiesz się jak zaprojektowad własny system zdarzeo. Nauczysz się wykorzystywad elastycznośd systemu zdarzeo Silverlight w projektowaniu logiki twojej aplikacji. Cel modułu Celem modułu jest przedstawienie koncepcji programowania z wykorzystaniem systemu zdarzeo i komend. Nadrzędnym celem jest zrozumienie różnic pomiędzy wyzwoleniem zdarzenia, jego obsługą oraz strategią roznoszenia informacji o jego zajściu. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: wiedział czym są zdarzenia oraz jakie koncepcje programistyczne rządzą ich zachowaniem, potrafił wykorzystad siłę systemu zdarzeo komponentów Silverlight, rozumiał jak budowad, wyzwalad i nasłuchiwad własnych zdarzeo. Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: znad podstawy języka C# rozumied mechanizm delegowania metod,
2 Przygotowanie teoretyczne Przykładowy problem Chcesz zaprojektowad aplikację pozwalająca przetwarzad dokumenty tekstowe. Z każdym dokumentem wiążesz proste menu obsługujące operacje nao przeprowadzane. Niemniej chcesz zaprojektowad aplikację elastycznie, aby umożliwid przenoszenie fragmentów treści pomiędzy oknami, zapisywanie wszystkich dokumentów, zamykanie itp. Aplikację tego typu stworzyd można w sposób piękny inżynieryjnie albo w sposób ekstremalny (tzw. kod spaghetti). Niezależnie którą metodę wybierzesz powinieneś dopasowad się do wzorców informowania o zajściu określonych zdarzeo. Dodatkowo powinieneś umied tworzyd własne wzorce zdarzeo oraz metody je obsługujące. Przygotowanie teoretyczne Technicznie, zdarzenie to nic innego jak zmienna typu delegowanego poprzedzona słowem kluczowym event, np.: public event SimpleOne NaszEvent; Słowo kluczowe event pozwala na wywołanie delegowanego kodu tylko z poziomu właściciela zmiennej. Jeśli typ delegowany nie zwraca żadnej wartości, wtedy przy pomocy operatorów += oraz -= możemy zarejestrowad (wyrejestrowad) więcej niż jedną metodę. Delegowany kod wykonywany jest (zdarzenie jest wyzwalane) przy spełnieniu określonego warunku np.: if ( zdjęcia_wybrane.count > 0 ) NaszEvent(zdjęcia_wybrane); Podsumowując, system zdarzeo wykorzystuje w standardowy mechanizm delegowania kodu który znasz z C#. W poprzednim module poznałeś zdarzenia zdefiniowane w klasie UIElement odpowiedzialne za interakcję z kursorem myszy czy klawiaturą. W Silverlight zwyczajowo zakłada się że wzorzec delegacji posiada format gdzie: void NazwaTypu(Object sender, EventArgs arg) sender referencja do obiektu który wyzwala zdarzenie, arg pozwala przekazad informacje o specyficznych własnościach zdarzenia. Podobnie w zwyczaju jest umieścid metodę pozwalającą klasom potomnym wyzwolid zdarzenie (wzorzec OnEvent), czyli np.: protected void OnMojeZdarzenie(EventArgs arg) If (MojeZdarzenie!=null ) MojeZdarzenie(this, arg); Przykładem zdarzenia które wykorzystuje standardowe mechanizmy CLR jest LayoutUpdated klasy FrameworkElement, zdefiniowane jako: public event EventHandler LayoutUpdated Wyzwalane jest wtedy gdy zaszła zmiana wielkości lub położenia komponentu lub jego kontrolkidziecka. Mimo tego, że zdarzenie to ma prototyp: public delegate void EventHandler(Object sender, EventArgs e) Nie możemy zakładad, że sender wskazywał będzie na kontrolkę na która wykonała zmianę wyglądu. Zdarzenie to zawsze wyzwalane jest z pierwszym argumentem wynoszącym null. Zachowanie to tłumaczy się potrzebą generowania kodu który będzie bezpośrednio związany z kontrolką. Jeśli znasz
3 WPF (Windows Presentation Foundation) to pewnie zauważyłeś, że tam zdarzenie zawiera niepustą referencję na obiekt na którym zaszło. Dodatkowo jest to zdarzenie innego typu niż zwyczajowy EventHandler, jest to mianowicie RoutedEventHandler. Rozgłaszanie zdarzeń Niektóre zdarzenia po ich wyzwoleniu informują inne kontrolki o fakcie wyzwolenia zdarzenia. Proces ten nazywany rozgłaszaniem zdarzeo. Weźmy pod uwagę następujący fragment kody XAML: <StackPanel> <TextBlock Text= Wybierz tło /> <StackPanel> <TextBlock Text= Zwykłe > <Image /> <Image /> </StackPanel> <StackPanel> <TextBlock Text= Obrazy > <Image /> </StackPanel> </StackPanel> Definiuje on drzewo wizualne postaci: StackPanel TextBlock StackPanel StackPanel TextBlock Image Image TextBlock Image Rys. 1 Drzewo wizualne Jeśli na którymś z obiektów Image wyzwolono zdarzenie MouseLeftButtonDown wtedy oczywiście wykonany jest kod obsługujący to zdarzenie. Dodatkowo jednak to zdarzenie obsłużone jest na jego bezpośrednim ojcu, a następnie na ojcu ojca itd. StackPanel MouseLeftButtonDown TextBlock StackPanel StackPanel MouseLeftButtonDown TextBlock Image Image TextBlock Image MouseLeftButtonDown Rys. 2 Rozgłaszanie zdarzenia Strategia takiego rozgłaszania komunikatów w górę znana jest np. z WPF (pod nazwą bąbelkowania, ang. Bubling). Jest to jedyna standardowo wbudowana w Silverlight strategia rozgłaszania komunikatów.
4 Warto podkreślid, że o zajściu zdarzenia informowani są tylko bezpośredni rodzice. Proces rozgłaszania przypomina ścieżkę czyli inne kontrolki niż te leżące na ścieżce nie zostaną poinformowane o zajściu MouseLeftButtonDown. Częstym scenariuszem użycia jest obsługa zdarzenia tylko na ważnym panelu, który możemy ukryd po wybraniu któregoś elementu. Pojawiają się naturalne pytania: Jak znaleźd obiekt na którym zdarzeni zostało wyzwolone na początku ścieżki rozgłaszania? Czy rozgłaszanie można zablokowad? Technicznie zdarzenia które mogą być (nie wszystkie są) rozgłaszane dziedziczą z klasy RoutedEvent. Ogólny wzorzec delegacji ma postad: public delegate void RoutedEventHandler(Object sender, RoutedEventArgs e) Jedyną różnicą jest typ argumentu mamy tutaj mianowicie klasę RoutedEventArgs. Klasa ta dziedziczy z EventArgs, ale udostępnia nam własnośd OriginalSource. Odczyt możliwy jest zawsze i winien wskazywad na kontrolkę na której wyzwolono zdarzenie (początek ścieżki rozgłaszania komunikatu). Odpowiedź na pytanie jak zablokowad rozgłaszanie komunikatu nie jest tak łatwa. Niektóre typy argumentów eksponują własnośd Handled typu logicznego. Przypisanie tej własności wartości true skutkuje często zatrzymaniem rozgłaszania. Nieco dokładniej rozgłaszanie jest kontynuowane, ale kod wykonywany jest warunkowo (warunek to!handled). Jeśli rozgłaszania nie można powstrzymad przy pomocy Handled (bo np. nie istnieje taka własnośd), zawsze można porównad referencje sender oraz OriginalSource, pozwoli to wykonywad kod tylko na kontrolce na której zdarzenie zaszło. W Silverlight 4 nie można definiowad własnych zdarzeo rozgłaszanych. Można natomiast zaprojektowad własny system zdarzeo pozwalający na wykonanie podobnej strategii, więcej na ten temat znajdziesz w module Własności zależne i doczepiane. W poniższej tabeli zabrano standardowe zdarzenia których zajście jest rozgłaszane. Zdarzenie Typ argumentu Handled KeyDown KeyUp MouseLeftButtonDown MouseRightButtonDown MouseLeftButtonUp MouseRightButtonUp KeyEventArgs MouseButtonEventArgs (patrz moduł poprzedni) MouseMove MouseEventArgs NIE MouseWheel MouseWheelEventArgs TAK DragEnter DragLeave DragOver Drop DragEventArgs (patrz dalsza częśd modułu) GotFocus RoutedEventArgs NIE TAK TAK TAK
5 LostFocus Używając standardowego systemu zdarzeo Silverlight 4 pamiętad należy, iż implementacja kontrolki może mied wpływ na odziedziczony system zdarzeo. Standardowym przykładem jest kontrolka Button. Przycisk dziedziczy z klasy ButtonBase w której zdefiniowano nowe zdarzenie Click. Dodatkowo przycisk posiada własnośd ClickMode której można przypisad jedną z trzech wartości: Hover Click wyzwalany jest gdy kursor znajdzie się nad kontrolką, Press - Click wyzwalany jest gdy przyciśnięto lewy przycisk myszy, Release Click wyzwalany jest gdy zwolniono wcześniej wciśnięty przycisk myszy. Standardowe zdarzenie MouseLeftButtonUp zostanie wyzwolone tylko w przypadku pierwszym (Hover), pozostałe dwa automatycznie ustawiają własnośd Handled. Pokazuje to zmiany w strategii wyzwalania które mogą wprowadzad kontrolki na gruncie ich implementacji. Mimo tego, że delegacja Click jest typu RoutedEventHandler oraz argument posiada własnośd Handled, zdarzenie nie rozgłasza swego wyzwolenia. Obsługa przeciągnij i upuść Silverlight wspiera obsługę mechanizmu Przeciągnij i Upuśd (ang. Drag and Drop). W chwili obecnej przeciągad można lokalne pliki klienta do aplikacji. Jak wspomniano wcześniej mechanizm oparto zdarzenia rozgłaszane. Argument wszystkich metod jest typu DragEventArgs w szczególności eksponuje on własnośd Data. Własnośd zawiera referencję do obiektu implementującego interfejs IDataObject. Interfejs ten umożliwia wydobycie danych na potrzeby naszej aplikacji. Zdarzenia pozwalające obsłużyd przeciąganie to: DragEnter wyzwalane gdy nad powierzchnią kontrolki znalazł się obiekt możliwy do opuszczenia (można wtedy np.: wygenerowad podgląd tego co stanie się gdy obiekt będzie opuszczony), DragLeave wyzwalane gdy obiekt możliwy do opuszczenia znalazł się poza powierzchnią kontrolki, DragOver - wyzwalane gdy obiekt znajduje się nad powierzchnią kontrolki. Dodatkowo po opuszczeniu pliku nad powierzchnią kontrolki wywoływane jest zdarzenie Drop. Aby mechanizm działał nad powierzchnią kontrolki musi zostad ustawiona wartośd AllowDrop oraz kontrolka musi byd widoczna. Dostęp do danych za pośrednictwem interfejsu IDataObject, który w szczególności zawiera następujące metody: GetData pozwala wydobyd dane. Jedynym prawidłowym argumentem jest w chwili obecnej DataFormat.FileDrop. GetFormats zwraca format danej lub formaty do których można daną konwertowad. GetDataPresent informuje czy dane posiadają zadany format lub mogą byd do niego konwertowane Przykładowe wydobycie danych może odbywad się następująco: IDataObject dane = e.data; If (data.getdatapresent(dataformats.filedrop)) FileInfo[] pliki = data.getdata(dataformats.filedrop) as FileInfo[]; foreach (var plik in pliki)
6 Wzorzec komendy Ważnym elementem pozwalającym oddzielid cześd wizualną aplikacji od logiki biznesowej jest system komend. Komendy (and. Command) pozwalają na komunikację między kontrolkami nie tylko w obrębie ścieżki rozgłaszania komunikatu. Ogólnie rzecz ujmując w chwili zajścia określonego zdarzenia Silverlight może wywoład pewną metodę podobnie jak wywołuje się zwykłe zdarzenie. Skoro tak, to jaka jest różnica pomiędzy zwykłym zdarzeniem a komendą? Komendy mogą mied wpływ na element który je wykonuje (mogą np. zabronid wykonania). Inną istotną cechą jest możliwośd definiowania komend na podstawie interfejsów i danych. Nazwy komend wraz ich argumentami definiowane są z poziomu składni XAML, a szczegółowe znaczenie nadawane jest przez bieżącą implementację zdefiniowaną przez własnośd DataContext dziedziczoną z klasy UIElement. Komendy pozwalają na realizację wzorca projektowego MVVM (ang. Model-View View-Model) czy wzorca MVC (ang. Model View Controller), dzięki temu szczególnego znaczenia nabierają przy projektach większej skali. Kontrolki które wspierają komendy to: Button oraz HyperlinkButton. Posiadają one własności: Command typu ICommand interfejs implementujący komendę, CommandParameter typu Object argument przekazany komendzie. Interfejs ICommand ma postad: Public interface ICommand void Execute(Object Parameter); bool CanExecute(Object Parameter); event EventHandler CanExecuteChanged; Metoda Execute powinna zawierad kod wykonywany w chwili uruchomienia (wyzwolenia) komendy. Argumentem komendy w chwili wyzwolenia staje się CommandParameter. Metoda CanExecute uzyskuje ten sam argument co metoda Execute ale nie powoduje wykonania wyzwolenia komendy informuje czy dla tego argumentu można komendę wykonad. Gdy zwróci wartośd false, oba przyciski przejdą w stan wyłączony (tj.!enabled). Zdarzenie CanExecuteChanged wyzwolone zostanie wtedy gdy zmieni się wartośd metody CanExecute (np.: poprzednie argumenty były prawidłowe, a nowy argument jest niezrozumiały). Standardowy przypadek użycia to zamiana tła kontrolek na czerwony gdy podano nieprawidłowy argument. Silverlight nie wymusza stosowania określonego wzorca projektowego a tym samym nie dostarcza gotowych implementacji interfejsu ICommand. Posiadamy pełną swobodę projektowania. Można pokusid się o stworzenie złożonego systemu komend pozwalających np.: grupowad i wyzwalad inne komendy. Temat komend rozwinięty jest w module Łączenie danych i automatyzacja wyświetlania. Kontekst danych i odświeżanie zawartości Ważną klasę zdarzeo stanowią zdarzenia związane z odświeżaniem zawartości komponentów których zawartośd generowana jest na podstawie kolekcji. Ponieważ zagadnienie to jest blisko związane z budową systemu komend zarysujemy tutaj technikę tworzenia takich komponentów oraz odświeżania ich zawartości.
7 W klasie UIElement istnieje specyficzna własnośd DataContext. Własnośd ta najogólniej rzecz biorąc pozwala z dowolnym komponentem wiązad zbiór danych (np.: klasę). Tak utworzona przestrzeo danych widoczna jest przez wszystkie kontrolki dzieci komponentu któremu przypisano DataContext. Załóżmy, że posiadamy implementację następującego interfejsu: public interface WyborTla ; ICommand checkcommand set; get; ObservableCollection<DaneTestowe> data get; Z poziomu kodu XAML powinniśmy dołączyd nasza implementację do zasobów aplikacji, można uczynid to w poniższy sposób: <UserControl.Resources> <loc:testowyviewmodel x:key="testvm" /> </UserControl.Resources> Zasoby to nic innego jak słownik. Dołączony zasób powinien mied zdefiniowany domyślny konstruktor (bezargumentowy). Każdy zasób winien byd nazwany dzięki x:key. Tak opakowane dane możemy przypisad do kontekstu danych dowolnej kontrolki, np.: <Grid DataContext="StaticResource testvm"> </Grid> Zapis powyższy nakazuje wyszukanie zasobu o nazwie testvm oraz a następnie przypisanie tego zasobu jako wartości DataContext. Innym sposobem dostępu do danych jest wiązanie danych (ang. Binding). Na przykład jeśli kontrolkądzieckiem powyższego panelu Grid jest Button wtedy możemy z bieżącego kontekstu danych wybrad komendę której nazwę zawiera interfejs WyborTla, np.: <Grid DataContext="StaticResource testvm"> </Grid> <Button Command="Binding checkcommand" /> Użycie słowa Binding powoduje dowiązanie wartości Command to obiektu przechowywanego nie w zasobach ale w lokalnym kontekście danych. Dowiązanie wykonane zostanie na etapie uruchomienia. Więcej o zasobach i wiązaniu danych znajdziesz w module zasoby i wiązanie danych. Jednym z paneli które pozwalają na automatyzację pracy ze zbiorami elementów jest panel ListBox. Zawiera on własnośd ItemsSource którą możemy dowiązad do dowolnej kolekcji elementów. W poniższym przykładzie <ListBox ItemsSource="Binding data" > </ListBox> Kolekcja wyszukiwana jest w bieżącym kontekście danych. Komponent ListBox przegląda element po elemencie takiej kolekcji i do swojej zawartości dodaje kontrolkę powstałą na bazie wzorca. Wzorzec kontrolki, typu DataTemplate, należy przypisad własności ItemTemplate. Np.: <DataTemplate> <StackPanel> <TextBlock Text="Silverlight" />
8 <Image Width="200" Height="200" /> </StackPanel> </DataTemplate> Oznacza to, że wzorzec kontrolki składał się będzie z obiektu StackPanel na którym znajdzie się TextBlock a następnie Image. Więcej o wzorcach i stylach dowiesz się w module Style i automatyzacja wyświetlania. Najważniejsze z punktu widzenia jest to, że w chwili tworzenia dowolnej kontrolki na podstawie ItemTemplate jej kontekst danych rozszerzany jest o dane elementu kolekcji przypisanej do ItemSource. Zatem skoro kolekcja data jest typu ObservableCollection<DaneTestowe>, to każda budowana kontrolka będzie miała dostęp do danych elementów kolekcji. Załóżmy, że klasa DaneTestowe ma postad: public class DaneTestowe public String nazwa; public Uri uri; Wtedy prawidłowe jest wiązanie: <ListBox ItemsSource="Binding data"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="Binding nazwa" /> <Image Width="200" Height="200" Source="Binding uri" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> Dochodzimy zatem do meritum sprawy. O ile wyświetlenie nie stanowi problemu, to co się stanie gdy kolekcja data zmieni swoją zawartośd? Ze względów wydajnościowych zawartośd kolekcji data jest wstępnie klonowana, dopiero później rozpoczyna się proces Budowy kontrolek. Oznacza to, że jeśli zawartośd kolekcji zmieni się, może to pozostad bez skutku ekranowego. Z jednej strony można dzięki temu przygotowad nową tablicę danych podczas gdy użytkownik widzi poprzednią zawartośd (np.: etap ładowania danych), ale z drugiej kiedyś należy poinformowad ListBox aby zaktualizował zawartośd. Na szczęście typ ObservableCollection implementuje zdarzenie CollectionChanged. Ponieważ na etapie wiązania ListBox deleguje kod do obsługi tego zdarzenia. Każda zamiana zawartości kolekcji skutkuje zamianą zawartości komponentu ListBox. Klasa ListBox umożliwa wybór jednego lub wielu elementów, zaimplementowano bowiem zdarzenie SelectionChanged. Dostęp w wybranego elementu uzyskuje się przez własnośd SelectedItem. Dostęp do grupy wybranych elementów możliwy jest przez własnośd SelectedItems.
9 Przykładowe rozwiązanie Chcemy zaprojektowad wyszukiwarkę teł do foto-książki. Tła pobierane mają byd domyślnie z serwera niemniej aby nie pobierad wszystkich teł natychmiast chcemy pobrad tylko ich nazwy wraz z towarzyszącym im URI do pliku. Użytkownik wprowadzi fragment nazwy która go interesuje i będzie musiał wcisnąd przycisk aby obrazy pobrad obrazy pobrad. Przy okazji wykonamy pierwszy krok projektując kod testowy przypominający wzorzec MVVM. Załóżmy, że mamy do zaimplementowania interfejs WyborTla (pojawił się wcześniej w przygotowaniu praktycznym), następującej postaci: public interface WyborTla ; ICommand checkcommand set; get; ObservableCollection<DaneTestowe> data get; event EventHandler BackgroundSelected; void PictureSelected(String name); Komenda checkcommand realizowała będzie wybór tła, data będzie punktem wejścia do danych wyświetlanych przez ListBox, a BackgroundSelected będzie to zdarzenie wyzwalane gdy wybrano tło. Załóżmy, że to klasa danych implementowała dziedziczyła będzie z ObservableCollection, np.: public class TestowyViewModel : ObservableCollection<DaneTestowe>, WyborTla public TestowyViewModel() DaneTestowe[] dane = new DaneTestowe("Tulipany", new Uri("Tulips.jpg", )), ; new DaneTestowe("Pingwiny", new Uri("Penguins.jpg", )) Ponieważ tworzymy wersję testową powinniśmy utworzyd dane testowe. Tworzona komenda powinna posiadad referencje do klasy TestowyViewModel oraz, dla potrzeb prototypu, referencję do kolekcji danych z których mamy wybrad tło. Nazwijmy klasę komendy CheckCMD, może ona mied definicję: protected class CheckCMD : ICommand public event EventHandler CanExecuteChanged; private DaneTestowe[] t; private TestowyViewModel tloi; public CheckCMD(DaneTestowe[] tab, TestowyViewModel tloi) t = tab;
10 this.tloi = tloi; Metoda CanExecute powinna zadziaład wyłącznie wtedy gdy argumentem jest niepusty łaocuch. Metoda ta winna stwierdzid czy istnieją tła posiadające w nazwie podany fragment znaków. Przykładowo: public bool CanExecute(Object param) if (param is String) String selector = param as String; if (selector!="") foreach (DaneTestowe dt in t) return false; if (dt.nazwa.contains(selector)) return true; Odrobinę ciekawsza jest metoda Execute która winna dodad do danych wszystkie elementy które posiadają w nazwie zadany ciąg znaków, przykładowo: public void Execute(Object param) String selector = param as String; if (selector!= "") tloi.clear(); foreach (DaneTestowe dt in t) if (dt.nazwa.contains(selector)) tloi.add(dt); Pozostaje zaimplementowad dostęp do danych, czyli: public ObservableCollection<DaneTestowe> data get return this;
11 Właśnie zakooczyliśmy budowę zaplecza naszego rozwiązania. Kolejny krok budowa części wizualnej. Większośd zaprezentowano już w części teoretycznej, teraz więc pokusimy się o przedstawienie znaczącej zawartości kontrolki: <UserControl.Resources> <loc:testowyviewmodel x:key="testvm" /> </UserControl.Resources> <StackPanel DataContext="StaticResource testvm" > <ListBox ItemsSource="Binding data" > <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="Binding nazwa" /> <Image Source="Binding uri" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <TextBox Name="textBox" VerticalAlignment="Top" Text="wpisz fragment nazwy" /> <Button Content="Pobierz" Name="Przycisk" Command="Binding checkcommand" CommandParameter="Binding Path=Text, ElementName=textBox"/> </StackPanel> Jedyna zmianą jest wiązanie argumentu komendy z własnością Text komponentu o nazwie textbox. Pozostaje obsługa samego wyboru tła. Realizujemy to obsługując zdarzenie SelectionChanged zależnie od potrzeb aplikacji możemy wyzwolid zdarzenie BackgroundSelected z jednym obrazem tła albo z wieloma. Rys. 3 Rezultat do ulepszenia przez grafika
12 Porady praktyczne Często założenie o sposobie wyzwalania zdarzenia zależy od implementacji kontrolki. Brak wyzwolenia albo wyzwolenie w innym momencie, to podstawowe problemy implementacyjne (patrz Button) dlatego uważnie badaj kontrolki których używasz. Problemem są różnice w wyzwalaniu komunikatów pomiędzy WPF a Silverlight, np.: WPF zdarzenia MouseEnter oraz MouseLeave wyzwalane są nawet w przypadku nieruchomego kursora (wystarczy, że np. animowany element znajdzie się pod kursorem myszy) natomiast w Silverlight zdarzenia te wyzwalane są tylko w przypadku poruszania kursorem myszy. Gdy nie jesteś pewien działania a znasz już WPF zaprojektuj odpowiedni test w Silverlight. Nie zawsze zdarzenia typu RoutedEventHandler rozgłaszają informacje o wyzwoleniu. Na potrzeby mechanizmu Drag and Drop powinieneś ustawid parametr windowless na wartośd true. Czasem będziesz musiał dopisad wrapper w JavaScirpt poza aplikacją Silverlight aby przenoszenie działało prawidłowo. Komendy to doskonały mechanizm rozgłaszania wyzwolenia zdarzenia. Przykładem komend wbudowanych jest mechanizm Kopiuj/Wklej. Uwagi dla studenta Jesteś przygotowany do realizacji laboratorium jeśli: Rozumiesz pojęcie wyzwalania zdarzenia, Rozumiesz pojęcie komendy oraz jej wyzwalania, Potrafisz zakooczyd proces rozgłaszania zdarzenia, Potrafisz dowiedzied się który komponent wyzwolił zdarzenie rozgłaszane, Umiesz zaprojektowad kod wykorzystujący system komend, Potrafisz zaprojektowad własne zdarzenia, Potrafisz wyzwolid własne zdarzenia, Wiesz jak działa mechanizm przeciągnij i upuśd. Pamiętaj o zapoznaniu się z uwagami i poradami zawartymi w tym module. Upewnij się, że rozumiesz omawiane w nich zagadnienia. Jeśli masz trudności ze zrozumieniem tematu zawartego w uwagach, przeczytaj ponownie informacje z tego rozdziału i zajrzyj do notatek z wykładów.
13 Dodatkowe źródła informacji Więcej o zdarzeniach w Silverlight 4 znajdziesz: Więcej o sposobach przygotowania komend znajdziesz:
14 Laboratorium podstawowe Zadanie 1 (czas realizacji 20 minut) Twój nowy klient poprosił o prototyp interfejsu do wyboru odcienia płytek podłogowych. Jego życzeniem jest paleta kolorów rozłożonych dookoła wspólnej osi obrotu przesuwając kursor obracasz elementy. Zatwierdzasz wybór odpowiednim przyciskiem. Ponieważ jego firma udostępnia oprogramowanie na ekranach dotykowych starej konstrukcji (ang. SingleTouch) możesz wykorzystad tylko zdarzenia MouseLeftButtonDown, MouseLeftButtonUp oraz MouseMove.
15 Zadanie 2 (czas realizacji 25 minut) Twój główny klient pragnie wzbogacid oprogramowanie o menu służące do wybory rodzaju pisma. Jednak nie chce klasycznego menu gdzie osobno wybiera się czcionkę, jej wielkośd, styl oraz kolor. Przygotował pieczołowicie tablice danych krojów które jego odbiorcy będą mieli do wyboru. Wizualna cześd menu powinna wyświetlad podgląd kroju na tekście przykładowym. Masz jak zawsze niewiele czasu na realizację tego zadania.
16 Laboratorium rozszerzone Zadanie 1 (czas realizacji 40 minut) Zaprojektuj typ generyczny ułatwiający pracę z komendami. Typ powinien byd tworzony na podstawie klasy oczekiwanego argumentu. Dodatkowo powinno byd możliwe rejestrowanie metod wykonanych przy okazji wykonania metody Execute. Zadanie 2 (czas realizacji 45 minut) Zaprojektuj typ generyczny ułatwiający pracę z komendami złożonymi. Komenda złożona winna wykonywad kolekcję komend prostych. Wskazówka. Możesz założyd, że jeśli co najmniej jedna komenda może byd wykonana to również komenda złożona może byd wykonana. Natomiast Execute wykonaj tylko na komendach dla których CanExecute jest prawdą. Zadanie 3 (czas realizacji 90 minut) Do zadania 3 z poprzedniego modułu (foto-książka) dołącz możliwośd przeciągania zdjęd z zasobów użytkownika. Wskazówka. Powinieneś zaimplementowad alternatywę do przycisku dodawania zdjęd. Zadanie 4 (czas realizacji 90 minut) Do zadania 3 z poprzedniego modułu (foto-książka) dołącz możliwośd wyboru teł. Wskazówka. Dowolny panel gdy jest niewidoczny (!Visible), nie bierze udziału w przydziale miejsca. W ten sposób schowasz Panel wyboru tła gdy nie będzie potrzebny.
MVVM Light Toolkit. Julita Borkowska
MVVM Light Toolkit Julita Borkowska Czym jest MVVM Light Toolkit? MVVM Light Toolkit został stworzony w 2009 roku przez Laurenta Bugnion. Jest to biblioteka dostarczająca zestaw komponentów pomocnych podczas
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w
Bardziej szczegółowoPolitechnika Poznańska Wydział Budowy Maszyn i Zarządzania
1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych
Bardziej szczegółowoObiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Bardziej szczegółowoDodanie nowej formy do projektu polega na:
7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie
Bardziej szczegółowoRozwój aplikacji modułowych Paweł Brudnicki. Dodanie modułu
Rozwój aplikacji modułowych Paweł Brudnicki Moduł jest podstawową jednostką funkcjonalności. Stanowi on część, która może być niezależnie pisana, testowana a nawet wdrażana. W przewodniku dodamy niezależny
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Bardziej szczegółowoLaboratorium programowania urządzeń mobilnych
Laboratorium programowania urządzeń mobilnych Wprowadzenie Hierarcha klas dla aplikacji typu Silverlight tworzonej przez Visual Studio jest następująca: Obsługa ekranu W urządzeniach z Windows Phone 7
Bardziej szczegółowoRys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.
1 2 Kontrolki standardowe WP7 Michał Ręczkowicz, Opublikowano: 2012-02-08 http://msdn.microsoft.com/pl-pl/library/rozpoczecie-pracy-z-windows-phone--kontrolki-standardowe W tym samouczku dowiesz się, jakie
Bardziej szczegółowoTemat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).
Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation). 1. Programowanie zdarzeniowe Programowanie zdarzeniowe
Bardziej szczegółowoProgramowanie zaawansowane
Programowanie zaawansowane Ćwiczenie 6 Komunikacja silnie typowana I. Utwórz aplikację okienkową realizującą proste obliczenia arytmetyczne. Obsługa zdarzeń w aplikacji typu Windows Form Application odbywa
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
Bardziej szczegółowoWprowadzenie do programowania
do programowania ITA-104 Wersja 1 Warszawa, Wrzesień 2009 ITA-104 do programowania Informacje o kursie Zakres tematyczny kursu Opis kursu Kurs przeznaczony jest do prowadzenia przedmiotu do programowania
Bardziej szczegółowo- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Bardziej szczegółowoInstrukcja laboratoryjna cz.3
Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Bardziej szczegółowoxmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />
1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoPrzykładowa dostępna aplikacja w Visual Studio - krok po kroku
Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i
Bardziej szczegółowoPrzewodnik krok po kroku:
Przewodnik krok po kroku: Aplikacja jest rozbudowywana. Jej podstawą jest: https://msdn.microsoft.com/enus/library/ff921174(v=pandp.40).aspx Do aplikacji dodajemy nowy moduł, który posłuży nam do dodawania
Bardziej szczegółowoAplikacje Internetowe
Aplikacje Internetowe ITA-103 Wersja 1 Warszawa, październik 2008 2008 Piotr Bubacz. Autor udziela prawa do bezpłatnego kopiowania i dystrybuowania wśród pracowników uczelni oraz studentów objętych programem
Bardziej szczegółowoLogger. Następnie w klasie Bootstrapper muimy zarejestrować nasz nowy logger:
Logger Na początku stworzymy własny logger. Do tego calu trzeba utworzyć klasę naszego loggera, która będzie implementować interfejs ILoggerFacade. Oto kod tej klasy: public class SimpleLogger: ILoggerFacade
Bardziej szczegółowoSoneta Sp. z o.o. Standardowe kreatory CRM
Soneta Sp. z o.o. Standardowe kreatory CRM Spis treści 1. Wstęp...2 2. Kreatory w enova CRM...2 3. Uruchomienie kreatora...3 4. Formularz kreatora Kampania z korespondencją...3 5. Formularz kreatora Nowy
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs
Bardziej szczegółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoKurs programowania 2 - listy
Kurs programowania 2 - listy Listy rozwijane (ComboBox) Listy rozwijane (rozwijalne) można tworzyć przy użyciu klasy ComboBox. W tabeli poniżej właściwości udostępniane przez tę kontrolkę. Najważniejsza
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoWykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty
Bardziej szczegółowoBudowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)
Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) 1. Udostępnianie wszystkich prywatnych atrybutów do prezentacji, wprowadzenie standardu nazewnictwa plików nazwy plików
Bardziej szczegółowoTworzenie oraz zarządzanie użytkownikami w AD -Win Serwer 2008
Tworzenie oraz zarządzanie użytkownikami w AD -Win Serwer 2008 Jedną z podstawowych czynności jakie musi wykonad administrator zaraz po instalacji usługi domenowej w usłudze Active Directory jest utworzenie
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce
Bardziej szczegółowoPodstawy Programowania 2
Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu
Bardziej szczegółowoGraphic User Interfaces pakiet Swing
Graphic User Interfaces pakiet Swing Streszczenie Celem wykładu jest zaprezentowanie podstaw tworzenia graficznych interfejsów przy użyciu pakietu Swing. Czas wykładu 90 minut. Można śmiało stwierdzić,
Bardziej szczegółowoInstrukcja laboratoryjna nr.4
Języki programowania na platformie.net cz.2 2016/17 Instrukcja laboratoryjna nr.4 Język Visual Basic for.net Prowadzący: Tomasz Goluch Wersja: 3.1 I. Współpraca Visual Basic z C# Cel: Wykorzystanie w kodzie
Bardziej szczegółowoWprowadzenie do projektu QualitySpy
Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować
Bardziej szczegółowoMultimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Bardziej szczegółowoSystemy wirtualnej rzeczywistości. Komponenty i serwisy
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki
Bardziej szczegółowousing System;... using System.Threading;
Kontekst synchronizacji Wątek w platformie.net może posiadać kontekst synchronizacji reprezentowany przez instancję klasy SynchronizationContext lub jej klasy potomnej. Jeżeli wątek posiada taki kontekst
Bardziej szczegółowoKlasy abstrakcyjne i interfejsy
Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w
Bardziej szczegółowoWprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM
Wprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM 1.1 Cel ćwiczenia: Celem dwiczenia jest zaznajomienie studenta z tematyka tworzenia aplikacji
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoSpecyfikacja projektów zaliczeniowych
Wymagania ogólne: Projektowanie obiektowe i programowanie w Javie Specyfikacja projektów zaliczeniowych mgr inż. Adam Kozak 1. Projekty powinny spełniad wymogi opisane w opisie wymagao 2. Kod programu
Bardziej szczegółowoKomponenty wizualne i XAML
Komponenty wizualne i XAML Informacje o module Opis modułu W tym rozdziale poznasz strukturę komponentów wizualnych Silverlight: kształty, kontrolki i kontenery. Nauczysz się podstaw manipulacji własnościami
Bardziej szczegółowoProjekt Hurtownia, realizacja rejestracji dostaw produktów
Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Bardziej szczegółowoDelphi podstawy programowania. Środowisko Delphi
Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór
Bardziej szczegółowoSzybki Start. Informacje o module
Szybki Start Informacje o module Opis modułu W tym rozdziale utworzysz pierwsza aplikację Silverlight. Poznasz zasady pracy z Silverlight w środowisku Visual Studio 2010. Zobaczysz jak wygląda proces dystrybucji
Bardziej szczegółowo10. Programowanie obiektowe w PHP5
Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE
Bardziej szczegółowoJava Podstawy. Michał Bereta
Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu
Bardziej szczegółowoDzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
Bardziej szczegółowoDiagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.
Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Bardziej szczegółowo1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1
1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie
Bardziej szczegółowoUML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Bardziej szczegółowoMVVM Light Toolkit Przewodnik krok po kroku
Julita Borkowska 242817 MVVM Light Toolkit Przewodnik krok po kroku W celu lepszego zrozumienia elementów MVVM Light Toolkit przedstawionych w prezentacji, zostanie poniżej krok po kroku napisany program
Bardziej szczegółowoPHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoWzorce projektowe. dr inż. Marcin Pietroo
Wzorce projektowe dr inż. Marcin Pietroo Iterator czynnościowy wzorzec projektowy (obiektowy), którego celem jest zapewnienie sekwencyjnego dostępu do podobiektów zgrupowanych w większym obiekcie (np.
Bardziej szczegółowoWykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Bardziej szczegółowoLaboratorium z przedmiotu Programowanie obiektowe - zestaw 04
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych
Bardziej szczegółowoLaboratorium Systemów Operacyjnych
Laboratorium Systemów Operacyjnych Użytkownicy, Grupy, Prawa Tworzenie kont użytkowników Lokalne konto pozwala użytkownikowi na uzyskanie dostępu do zasobów lokalnego komputera. Konto domenowe pozwala
Bardziej szczegółowoProjekt Hurtownia, realizacja rejestracji dostaw produktów
Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące
Bardziej szczegółowoDziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.
Bardziej szczegółowoOBIEKTY PHP. G. Panuś
OBIEKTY PHP G. Panuś Podstawowym elementem programowania obiektowego jest klasa Klasa zawiera Zmienne właściwości Klasa Funkcje metody Definiowanie klasy Do definiowania klasy służy polecenie class class
Bardziej szczegółowoSingleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
Bardziej szczegółowooprogramowanie mobilne Instrukcja obsługi PSR 2010
oprogramowanie mobilne Instrukcja obsługi PSR 2010 Aplikacja mobilna systemu mlearning Wszystkie znaki handlowe i znaki towarowe stanowią własnośd ich legalnych posiadaczy. 2010. Wszystkie prawa zastrzeżone.
Bardziej szczegółowoNumerowanie obiektów (wzorów, rysunków, tabel, literatury)
Numerowanie obiektów (wzorów, rysunków, tabel, literatury) 1. Automatyczne numerowanie obiektów W celu utworzenia automatycznego numerowania w dokumencie należy wykorzystad w tym celu Pole z menu Wstaw.
Bardziej szczegółowoProgramowanie obiektowe
Wykład 12 Marcin Młotkowski 16 maja 2018 Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 482 / 537 Dziedziczenie Dziedziczenie a składanie Plan wykładu 1 Analiza
Bardziej szczegółowoĆwiczenie 8. Kontrolki serwerowe
Ćwiczenie 8 Temat: Kontrolki serwerowe ASP.NET cz.2 Cel ćwiczenia: W ramach tego ćwiczenie student zapozna się z kolejnymi kontrolkami serwerowymi oraz z metodami ich walidacji, a także z kontrolkami umożliwiającymi
Bardziej szczegółowoKompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main
Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem
Bardziej szczegółowoTwoja ulotka instrukcja obsługi programu
Twoja ulotka instrukcja obsługi programu Spis treści: Wprowadzenie... 2 Instalacja... 3 Uruchomienie... 7 Wybór układu ulotki... 8 Ekran główny... 11 Tworzenie ulotki... 12 Dodawanie własnego produktu...
Bardziej szczegółowoKlasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Bardziej szczegółowoMVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści
MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop. 2016 Spis treści Część I Wzorzec MVVM. Podstawy XAML 7 Rozdział 1. Szybkie wprowadzenie do XAML 9 Wzorzec widoku autonomicznego 9 Tworzenie
Bardziej szczegółowoAplikacja (oprogramowanie) będzie umożliwiać przygotowanie, przeprowadzenie badania oraz analizę wyników według określonej metody.
Załącznik nr 1 Specyfikacja przedmiotu zamówienia Aplikacja (oprogramowanie) będzie umożliwiać przygotowanie, przeprowadzenie badania oraz analizę wyników według określonej metody. Słowniczek pojęć Badanie
Bardziej szczegółowoZdarzenia i polecenia
WPF Programowanie w środowisku Windows Wykład 10-1 Zdarzenia i polecenia Wykład 10-2 Zdarzenia Metoda obsługi zdarzenia może być do niego przypisana w kodzie C# lub w XAML
Bardziej szczegółowoInformatyka II. Laboratorium Aplikacja okienkowa
Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.
Bardziej szczegółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoKONFIGURACJA SERWERA USŁUG INTERNETOWYCH WWW ORAZ FTP
Zespół Szkół Technicznych w Suwałkach Pracownia Sieci Teleinformatycznych KONFIGURACJA SERWERA USŁUG INTERNETOWYCH WWW ORAZ FTP Opracował Sławomir Zielioski Suwałki 2012 Cel ćwiczenia Nabycie praktycznych
Bardziej szczegółowoKlasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie
Bardziej szczegółowoA Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów
A Zasady współpracy Ocena rozwiązań 3.0 25 40 punktów 3.5 41 65 punktów 4.0 66 80 punktów 4.5 81 100 punktów 5.0 101 130 punktów Warunki zaliczenia przedmiotu Student uzyska ocenę zaliczającą (3.0) o ile
Bardziej szczegółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoWstęp. Ale po co? Implementacja
Wstęp Mechanizm sesji jest jedną z podstawowych form komunikacji pomiędzy skryptami jako jedyna tablica z super globalnych nie jest widoczna dla użytkownika. Mimo, że PHP od wersji 4 staje się coraz bardziej
Bardziej szczegółowoMicrosoft.NET: ASP.NET MVC + Entity Framework (Code First)
Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2012. W ramach projektu budowana jest prosta
Bardziej szczegółowoTworzenie prezentacji w MS PowerPoint
Tworzenie prezentacji w MS PowerPoint Program PowerPoint dostarczany jest w pakiecie Office i daje nam możliwość stworzenia prezentacji oraz uatrakcyjnienia materiału, który chcemy przedstawić. Prezentacje
Bardziej szczegółowoProgramowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 08 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami powiązania modelu obiektowego z modelem okienkowym w C#. Wprowadzenie teoretyczne.
Bardziej szczegółowoD:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44
Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Bardziej szczegółowoINSTRUKCJA INSTALACJI APLIKACJI PROF- EAN 2
INSTRUKCJA INSTALACJI APLIKACJI PROF- EAN 2 1. Instalacja programu PROF-EAN 2 Instalacje uruchamiamy poprzez plik:, wówczas kreator automatycznie poprowadzi nas przez proces instalacji. 2. Deklaracja instalacji
Bardziej szczegółowoObiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Bardziej szczegółowoMateriały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Bardziej szczegółowoTypy, klasy typów, składnie w funkcji
Typy, klasy typów, składnie w funkcji Typy w Haskell Każde wyrażenie w Haskell posiada zdefiniowany typ. Dzięki temu już na etapie kompilacji kodu następuje sprawdzenie poprawności kodu i zabezpiecza nas
Bardziej szczegółowoZaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Bardziej szczegółowoZaawansowane aplikacje internetowe - laboratorium
Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest
Bardziej szczegółowoJava: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
Bardziej szczegółowoPlatformy Programistyczne Podstawy języka Java
Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo
Bardziej szczegółowo