Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 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 ramach niniejszych zajęć tematyka jest ważna, gdyż w praktyce wiÄ™kszość komercyjnych aplikacji desktopowych jest utworzonych w oparciu o okna. Aby ze zrozumieniem zrealizować zadania, przewidziane do wykonania w ramach zajęć laboratoryjnych, należy znać znaczenie takich zagadnieÅ„ jak: delegacje i zdarzenia, tworzenie aplikacji okienkowych w Å›rodowisku Visual Studio. 1. Delegacje i zdarzenia KlikniÄ™cie przycisku, przejechanie kursorem myszy ponad formularzem czy naciÅ›niÄ™cie klawisza Enter to zdarzenia, które mogÄ… spowodować wywoÅ‚anie jednej lub wielu okreÅ›lonych funkcji odpowiedzialnych za obsÅ‚ugÄ™ zdarzeÅ„ w ramach programu. W .NET zdarzenia sÄ… peÅ‚noprawnymi skÅ‚adowymi klas. Np. klasa Control , bÄ™dÄ…ca klasÄ… bazowÄ… dla komponentów graficznego interfejsu użytkownika zawiera zdarzenia, których wystÄ…pienie można obsÅ‚użyć. Za przykÅ‚ad może posÅ‚użyć zdarzanie Click oznaczajÄ…ce klikniÄ™cie danej kontrolki (np. przycisku). Za Å‚Ä…czenie zdarzeÅ„ z odpowiedniÄ… metodÄ… lub metodami je obsÅ‚ugujÄ…cymi odpowiada obiekt delegacji. Obiekt ten musi utrzymywać listÄ™ metod wywoÅ‚ywanych w odpowiedzi na wystÄ…pienie danego zdarzenia. Delegacja może wywoÅ‚ać tylko te metody, których sygnatura i zwracany typ odpowiadajÄ… sygnaturze i zwracanemu typowi okreÅ›lonemu w deklaracji delegacji. Dla każdej napotkanej deklaracji delegacji kompilator tworzy klasÄ™ z modyfikatorem sealed, której nazwa jest identyczna jak nazwa delegacji. Klasa ta definiuje pojedynczy konstruktor, który jako parametr przyjmuje nazwÄ™ metody. Pojedyncza delegacja może wywoÅ‚ać kilka metod obsÅ‚ugujÄ…cych zdarzenia. Każda z tych metod musi zostać zarejestrowana w delegacji. Poniższy przykÅ‚ad ilustruje sposób dziaÅ‚ania delegacji: PrzykÅ‚ad 1 Sposób dziaÅ‚ania delegacji 1 Programowanie obiektowe Operator += dodaje metodÄ™ do listy wywoÅ‚aÅ„. MetodÄ™ można usunąć z listy wywoÅ‚aÅ„ za pomocÄ… operatora -=. 2. ObsÅ‚uga zdarzeÅ„ z wykorzystaniem delegacji Za obsÅ‚ugÄ™ zdarzenia klikniÄ™cia kontrolki odpowiada predefiniowane zdarzenie Click . Aby powiÄ…zać wystÄ…pienie takiego zdarzenia z wywoÅ‚aniem odpowiedniej metody, należy użyć predefiniowanej delegacji EventHandler . RozwiÄ…zanie to prezentuje poniższy przykÅ‚ad: PrzykÅ‚ad 2 ObsÅ‚uga zdarzenia Metoda button1_Click zostanie wywoÅ‚ana, gdy wystÄ…pi zdarzenie Click znajdujÄ…ce siÄ™ w kontrolce button1 (przycisk button1 zostanie klikniÄ™ty). 3. Krótkie wprowadzenie do pracy z WindowsForms Aby utworzyć projekt przeznaczony do implementacji aplikacji okienkowej, w Å›rodowisku Visual Studio należy utworzyć projekt typu Windows Forms Application . Nowo utworzony projekt wyglÄ…da nastÄ™pujÄ…co: Rys. 1 Projekt okienkowy w Visual Studio 2 Programowanie obiektowe W głównym oknie projektu znajduje siÄ™ domyÅ›lnie utworzona kontrolka formatki (obiekt typu Form ), reprezentujÄ…ca okno aplikacji. Kontrolka ta jest zdefiniowana w pliku Form1.cs , który można zobaczyć w oknie Solution Explorer . DomyÅ›lnie formatka jest widoczna w trybie graficznego projektowania - Design . Aby przejść do struktury kodu formatki, należy nacisnąć klawisz F7 lub w menu Solution Explorer kliknąć na plik Form1.cs prawym klawiszem myszy i wybrać opcjÄ™ View Code . Aby dodać do formatki kontrolkÄ™ korzystajÄ…c z trybu Design , należy wybrać odpowiedniÄ… kontrolkÄ™ z menu Toolbox i umieÅ›cić jÄ… na powierzchni formatki. 4. Ustawianie wÅ‚aÅ›ciwoÅ›ci kontrolek JeÅ›li umieÅ›cimy na formatce przycisk (kontrolka typu Button ), formatka może wyglÄ…dać nastÄ™pujÄ…co: Rys. 2 Formatka z kontrolkÄ… Button Aby zmienić wÅ‚aÅ›ciwoÅ›ci przycisku, należy skorzystać z menu Properties . PrzykÅ‚adowo aby zmienić tekst wyÅ›wietlany na przycisku, należy zaznaczyć przycisk i w menu Properties wpisać odpowiedniÄ… wartość wÅ‚aÅ›ciwoÅ›ci Text : Rys. 3 Zmiana wÅ‚aÅ›ciwoÅ›ci Text Tym sposobem można ustawiać także inne wÅ‚aÅ›ciwoÅ›ci kontrolek. 5. ObsÅ‚uga zdarzenia kontrolki Aby obsÅ‚użyć zdarzenie Click wstawionego przycisku, należy zaznaczyć przycisk na formatce i w menu Properties wybrać ikonÄ™ z żółtym piorunem. 3 Programowanie obiektowe Rys. 4 Okno wÅ‚aÅ›ciwoÅ›ci zdarzenia NastÄ™pnie należy kliknąć dwukrotnie interesujÄ…ce nas zdarzenie, w tym wypadku bÄ™dzie to zdarzenie Click (można także obok nazwy zdarzenia wpisać nazwÄ™ metody i nacisnąć przycisk Enter ). Po wykonaniu tej operacji zostanie utworzona nowa metoda, która zostanie wywoÅ‚ana w momencie wystÄ…pienia danego zdarzenia. Do programisty należy implementacja dziaÅ‚ania tej metody. 6. Plik *.Designer.cs CzytajÄ…c informacje zawarte w dwóch powyższych podpunktach można odnieść wrażenie, że operacje te nie przypominajÄ… pracy z poznanymi na poprzednich zajÄ™ciach laboratoryjnych wÅ‚aÅ›ciwoÅ›ciami klas oraz pracy z delegacjami i zdarzeniami opisanymi powyżej. Okazuje siÄ™ jednak, że każda operacja wykonana w trybie Design powoduje utworzenie przez Å›rodowisko Visual Studio odpowiedniego kodu aplikacji. JeÅ›li w oknie Solution Explorer zostanÄ… rozwiniÄ™te skÅ‚adowe pliku Form1.cs , okaże siÄ™, że w skÅ‚ad aplikacji wchodzi plik Form1.Designer.cs : Rys. 5 Menu Solution Explorer plik *.Designer.cs Po dwukrotnym klikniÄ™ciu na ten plik zostanie otworzone okno zawierajÄ…ce jego treść, zawierajÄ…cÄ… kod odpowiadajÄ…cy wszystkim operacjom wykonanym w trybie Design . Można zauważyć, że klasa Form1 zawarta w plikach Form1.cs i Form1.Designer.cs oznaczona jest modyfikatorem partial informuje on o tym, że kod klasy może być rozdzielony do kilku plików. Klasa ta musi znajdować siÄ™ w tej samej przestrzeni nazw. 4 Programowanie obiektowe 7. Metoda Main Metoda Main w projekcie okienkowym znajduje siÄ™ domyÅ›lnie w pliku Program.cs . DomyÅ›lnie powoduje ona uruchomienie głównego okna aplikacji. Zadanie 1. ProszÄ™ zrealizować aplikacjÄ™ okienkowÄ…, która powinna odznaczać siÄ™ nastÄ™pujÄ…cymi cechami: żð Aplikacja ma stanowić kalkulator podobny do kalkulatora zainstalowanego domyÅ›lnie w systemie Windows. żð PrzykÅ‚adowy ukÅ‚ad kontrolek na formatce przedstawia poniższy rysunek: Wskazówki do realizacji: żð Na powyższej formatce umieszczono kontrolki typu Button i TextBox . żð Do ustawiania i pobierania tekstu wyÅ›wietlanego w kontrolce TextBox sÅ‚uży wÅ‚aÅ›ciwość Text . żð Aby dokonać konwersji typu string do typu double należy skorzystać z konstrukcji Convert.ToDouble() . 5