Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Podobne dokumenty
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Visual Studio instalacja

Wykład 5 Okna MDI i SDI, dziedziczenie

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Wykład 12. Praktyczna realizacja projektu abstrakcyjnego

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Wykład 12. Programowanie serwera MS SQL 2005 w C#

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Szkoła Techniczno Ekonomiczna w Świdnicy. Języki i paradygmaty programowania - 8

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

using System;... using System.Threading;

Programowanie aplikacji okienkowych Windows

Aplikacje w Javie- wykład 11 Wątki-podstawy

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Kurs programowania 2 - listy

Kurs programowania. Wykład 8. Wojciech Macyna

Programowanie obiektowe

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Programowanie w technologii.net wykład 4 Aplikacja i okna

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Programowanie w środowiskach graficznych. Wykład 1 OS, Podstawy Windows API

Instrukcja laboratoryjna cz.3

Programowanie w środowiskach graficznych. Wykład 1 OS, Podstawy Windows API

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Programowanie telefonów z Windows Phone 7, cz. 2

Dokumentacja do API Javy.

Współbieżność w środowisku Java

Narzędzia 4. dr inż. Tadeusz Jeleniewski

Wprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM

Programowanie obiektowe

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Multimedia JAVA. Historia

Zaawansowane środowiska programistyczne 2009/2010

Programowanie obiektowe zastosowanie języka Java SE

Wykład 10 Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Instrukcja tworzenia aplikacji bazodanowej opartej o technologię Oracle i platformę.net

Język Java wątki (streszczenie)

Leszek Stasiak Zastosowanie technologii LINQ w

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Db4o obiektowa baza danych wersja.net

Programowanie obiektowe

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Podstawy Programowania Obiektowego

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

Prosta aplikacja klient - serwer na bazie protokoªu UDP. Sprawozdanie.

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Delphi podstawy programowania. Środowisko Delphi

Programowanie obiektowe

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Język Java część 2 (przykładowa aplikacja)

Metody Metody, parametry, zwracanie wartości

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

STWORZENIE MOBILNEJ APLIKACJI,

Lokalizacja Oprogramowania

Dodanie nowej formy do projektu polega na:

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Język Java część 2 (przykładowa aplikacja)

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Wprowadzenie do projektu QualitySpy

Laboratorium 1 - Programowanie proceduralne i obiektowe

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Programowanie obiektowe

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Rys. 1. Struktura środowiska.net 3.5. S. Fraser, Pro Visual C++/CLI and the.net 3.5 Platform, Apress, 2009.

Języki i metody programowania Java Lab2 podejście obiektowe

Programowanie obiektowe

Mechanizm dziedziczenia

Laboratorium 10 - Web Services

Programowanie obiektowe i zdarzeniowe

PHP 5 język obiektowy

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie obiektowe

Aplikacje internetowe i rozproszone - laboratorium

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

.NET Framework Technologia firmy Microsoft wprowadzona w 2002 roku

Java Platform Micro Edition

Instrukcja laboratoryjna nr.4

Programowanie wielowątkowe. Jarosław Kuchta

Zaawansowane aplikacje internetowe

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Transkrypt:

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 1

System.Windows.Forms System.Windows.Forms Core infrastructure podstawowe operacje związane obsługą programu.net opartego na Forms. (Form, Application, etc.) Controls typy do tworzenia bogatego interfejsu użytkownika (rich Uis: Button, MenuStrip, ProgressBar, DataGridView, etc.), konfigurowalne w trakcie projektowania oraz widoczne po uruchomieniu Components typy, które nie dziedziczą z klasy Control ale udostępniają pewne elementy wizualne. Nie widoczne po uruchomieniu. Common dialog boxes podstawowe okna dialogowe LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 2

Manualne tworzenie okna głównego using System; using System.Windows.Forms; namespace MyWindowsApp { public class MainWindow : Form { // Run this application and identify the main window. static void Main(string[] args) { Application.Run(new MainWindow()); } } } LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 3

Manualna kompilacja 1 csc f1.cs Niepotrzebne okno linii komend. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 4

Manualna kompilacja 2 csc /target:winexe f1.cs Już nie ma okna linii komend. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 5

Zadania klasy Application Wybrane zadania klasy Application DoEvents() - podczas długich operacji umożliwia wykonanie komunikatów oczekujących w kolejce Exit() - kończy działanie aplikacji EnableVisualStyles() - włącza obsługę styli Windows XP (musi być wywołane przed Application.Run() Wybrane zdarzenia: ApplicationExit wywoływane tuż przed zamknięciem programu Idle wywoływane po wykonaniu wszystkich zadań w kolejce, tuż przed przejściem w stan oczekiwania ThreadExit wywoływane w tuż przed zakończeniem wątku w aplikacji LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 6

Anatomia formularza Klasy bazowe w łańcuchu dziedziczenia klasy Form: System.Object System.MarshalByRefObject przy zdalnym wywołaniu typ jest wywoływany przez referencję (a nie kopię) System.ComponentModel.Component wparcie dla edycji właściwości w trakcie projektowania (design time editing) System.Windows.Forms.Control podstawowe elementy interfejsu użytkownika System.Windows.Forms.ScrollableControl wsparcie pasków przesuwania System.Windows.Forms.ContainerControl zarządzanie 'focusem' w kontrolkach, które mogą posiadać wewnątrz siebie inne kontrolki, System.Windows.Forms.Form dowolne okno (MDI Child, dialog, Formularz) LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 7

Ciekawostka Jak szybko można tworzyć formularze o własnych kształtach.. protected override void OnPaint(PaintEventArgs e) { System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath(); shape.addellipse(0, 0, this.width, this.height); this.region = new System.Drawing.Region(shape); } To nie jest fotomontaż :-) LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 8

Przykładowe wykorzystanie wątków dla podniesienia użyteczności aplikacji wykorzystując Wątki i Timery. Można pokazać kilka rozwiązań: Oparte na Timerze i funkcji, która jest przez niego wywoływana (bez wywłaszczania) Oparte na Wątku, który co jakiś czas powiadamia obserwatora o postępie prac. Oprate na Wątku, który uaktualnia swój własny licznik, a obserwator samodzielnie sprawdza jego stan korzystne z punktu widzenia wątkowego. Jedno z najprostszych rozwiązań. Oparte na wątku i wzorcu obserwatora (delegacje). LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 9

Microsoft Visual Studio i.net Zapewnienie kontroli użytkownika nad aplikacją przy długotrwałych operacjach. a. wykorzystamy dodatkowy wątek, który będzie wykonywał pracę w tle, b. wykorzystamy również Timer jako narzędzie pozwalające obserwować postęp prac. Nasz pracownik zakładamy, że jest bezrobotny i nic konkretnego nie musi robić, poza zużywanie czasu :-) LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 10

Tworzymy nowy projekt LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 11

Tworzymy układ GUI LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 12

Nazywamy Kontrolki LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 13

Ujednolicamy Nazewnictwo (Name) = txtinfo (Name) = pb (Name) = cmdstart (Name) = cmdstop LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 14

Implementujemy... Procedura obsługi start: private void cmdstart_click(object sender, EventArgs e) { prac = new Pracownik(); Thread thr = new Thread(prac.doRoboty); timer1.start(); } txtinfo.appendtext("startuje watek..."); thr.start(); txtinfo.appendtext("wystartowalem..."); LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 15

Zatrzymaj pracownika... Zatrzymaj pracownika... private void cmdstop_click(object sender, EventArgs e) { timer1.stop(); txtinfo.appendtext("prosze o przerwanie..."); prac.przerwa(); txtinfo.appendtext("..."); } LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 16

Klasa pracownika public class Pracownik { public volatile int ilezrobilem = 0; public void doroboty() { _przerwij = false; while (!_przerwij) { ilezrobilem++; Console.WriteLine("Robie..." + ilezrobilem.tostring()); Thread.Sleep(1000); } } public void przerwa() { _przerwij = true; } } private volatile bool _przerwij; LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 17

Kompletny kod. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace WindowsApplication1 { public partial class Form1 : Form { Pracownik prac; public Form1() { InitializeComponent(); } private void cmdstart_click(object sender, EventArgs e) { prac = new Pracownik(); Thread thr = new Thread(prac.doRoboty); timer1.start(); } txtinfo.appendtext("startuje watek..."); thr.start(); txtinfo.appendtext("wystartowalem..."); private void cmdstop_click(object sender, EventArgs e) { timer1.stop(); txtinfo.appendtext("prosze o przerwanie..."); prac.przerwa(); txtinfo.appendtext("..."); } dalszy ciąg... private void timer1_tick(object sender, EventArgs e) { pb.value = prac.ilezrobilem % 100; } } public class Pracownik { public volatile int ilezrobilem = 0; public void doroboty() { _przerwij = false; while (!_przerwij) { ilezrobilem++; Console.WriteLine("Robie..." + ilezrobilem.tostring()); Thread.Sleep(1000); } } public void przerwa() { _przerwij = true; } private volatile bool _przerwij; LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 18 } }

Po uruchomieniu LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 19

Po zakończeniu LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 20

Projekt wizualny Poziom obiektów Poziom układów Microsoft Windows Forms Controls Całkowity odbiór Microsoft Windows Forms Controls jako narzędzie do tworzenia widoków LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 21

Studium przypadku korporacja taksówkowa Aktorzy: telefonistka, dyspozytor, taksówkarz Cele użytkownika < przypadki Obiekty użytkownika Widoki abstrakcyjne obiektów Układy abstrakcyjne Stworzymy projekty wizualne dla widoków obiektów (tylko dla przykładowych) Stworzymy układy projektów wizualnych wykorzystując technologię Microsoft Windows Windows Forms Controls Na początku trochę omówimy technologię Microsoft Windows Forms Controls LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 22

Aktorzy uc Analiza Taksówkarz Telefonistka Dyspozytor LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 23

Przypadki użycia: Taksówkarz Przypadki użycia systemu Taksówkarza LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 24

Przypadki użycia: Telefonistka LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 25

Obiekty użytkownika LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 26

Przechodzimy do projektu abstrakcyjnego LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 27

Szczegółowy projekt obiektów LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 28

Projekty widoków abstrakcyjnych Na początku zdefiniujemy widoki abstrakcyjne na poziomie obiektów. Staramy się przewidzieć jakie widoki danych obiektów będą nam potrzebne. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 29

Widoki: Telefonistki LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 30

Widoki abstrakcyjne: Zlecenie LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 31

Widoki abstrakcyjne: Lokalizacja LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 32

Widoki związane z GUI LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 33

Układy abstrakcyjne Definiujemy co musi znajdować się na poszczególnych ekranach (najlepiej związanych z przypadkami użycia, czyli najkorzystniej z scenariuszami) Szablon: Telefonistka panel Menu Telefonistki Obszar roboczy dla danej aktywności LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 34

Szablon ekranu telefonistki LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 35

Ekran powitalny Telefonistki LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 36

Ekran powitalny Telefonistki Telefonistka panel Menu Telefonistki ListaZlecenTelefonistka LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 37

Edycja zlecenia przez Telefonistkę LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 38

Projekty widoków wizualnych Zrealizujemy wykorzystując technologię Microsoft Windows Forms Controls. LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 39

SzablonEkranuTelefonistki LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 40

Dziedziczenie widoku ListaZleceń Tutaj dziedziczymy Inherited User Control LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 41

EkranPowitalny Tutaj dziedziczymy szablon ekranu: Inherited Form LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 42

Interakcja Dziękuję za uwagę. Chcemy być coraz lepsi! Jeżeli coś cię zainteresowało napisz e-maila: robert@iem.pw.edu.pl Jeżeli coś cię bardzo znudziło napisz e-maila: robert@iem.pw.edu.pl Jeżeli zauważyłeś błąd napisz e-maila: robert@iem.pw.edu.pl LATO 2007 Projektowanie Graficznych Interfejsów Użytkownika 43