Komponenten & Frameworks Seite 1

Ähnliche Dokumente
Delegaten. d. h. eine Tätigkeitsanforderung wird weitergeleitet

Erstellen von speziellen Ereignissen in C#

NEU: Windows Forms-Anwendungen Projekt erstellen / Bereiche der IDE Eigenschaften Quelltext für Steuerelemente schreiben

XAML Extensible Application Markup Language. Manuel Naujoks (IB3)

Programmieren für Wirtschaftswissenschaftler SS 2015

Textbausteine. C# WPF-Framework Model-View-Viewmodel-Architektur Blog-Client-Applikation

Model-View-Controller

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Grafische Benutzeroberflächen

Einführung in Truevision3D

WPF. Übersicht. Komponenten & Frameworks Seite 1

Multimedia im Netz Wintersemester 2012/13

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Grafische Benutzeroberflächen

Delegatesund Ereignisse

Grafische Benutzeroberflächen

Microsoft 2010 Express/Beispiel für Grafische Oberflächen

Varianten des Observer Pattern

Ein erstes "Hello world!" Programm

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Rückgabewerte von Methoden

Komponentenbasierte Client-Architektur. Bernd Olleck, IT Beratung Olleck Dr. Martin Haft, sd&m AG München,

Windows Forms Projekte mit C++ in Visual Studio 2017

GUI-Entwicklung 1: Windows Forms

Praktikum 1: Einführung, BMI Rechner

MVC-Architektur am Beispiel von OLAT

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

Windows Presentation Foundation

Eine Kommando-Oberfläche für.net

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 6: Fortgesch. Programmierung

VON MVC ZU MODEL-VIEW-VIEWMODEL

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

GUI-Entwicklung 2: Windows Presentation Foundation

Model-View-ViewModel (MVVM)

Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt WS 2006/2007

Abschnitt 20: Ein Grundprinzip der Software-Architektur

Prozesse und Threads in Android

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

Dr. Monika Meiler. Inhalt

Java und Eclipse Installation, erstes Beispielprogramm

Konzepte der Programmiersprachen


How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

1 Support bei Problemen mit dem Altium Designer

Implementieren von Klassen

Dabei sollen die Nutzern nach einer Authentifizierung entsprechend ihren Rechten Begriffe ändern, anlegen und kommentieren können.

Programmiertechnik GUI Programmierung mit Java Swing

HTk: Ein GUI für Haskell

Agenda. Clients aus drei verschiedenen Perspektiven: Was ist ein Dialog? Komponentenarchitektur innerhalb eines Dialoges

Whitepaper. Produkt: combit address manager & combit Relationship Manager. Debuggen von Scripts in Visual Studio 2005

6. Objektorientiertes Design

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )

parallele Prozesse auf sequenziellen Prozessoren Ein Process ist ein typisches Programm, mit eigenem Addressraum im Speicher.

Funktionale und Objekt-Orientierte Programmierkonzepte

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Prinzipien der objektorientierten Programmierung (OOP)

GUI-Programmierung 1: Windows Forms

Rich Internet Applications, Flex & Mate. (Ja, das ist Grafische Benutzeroberflächen!) Jakob Külzer jakob.kuelzer@gmail.

Algorithmen und Datenstrukturen CS1017

MVC Ein wichtiges Konzept der Software-Architektur

public class <<Name der Klasse>>{ << Allgemeine (Globale) Definitionen >> public static void Main(string[] args){

Team Developer 7.1 Multithreading

8.6 Visualisierung der Sortieralgorithmen

Programmieren in Java -Eingangstest-

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Thema: Erstellen einer Windows Form Anwendung

Programmieren in Java

Windows Presentation Foundation

Transkript:

Ausgangssituation Wir wollen eine einfache Windowsanwendung mit einem Fenster erstellen. Dieses Fenster enthält (Container!) einen Button der beim klicken das Schreiben in ein Textfeld bewirkt. Was ist zu tun? - Programmlogik 1. Aufbau der Präsentationsschicht (Ein- Ausgabe) 2. Hinzufügen der Logik (hier: klicken mit Aktion) - Programmerstellung mit Notepad bzw. mit Visual Studio Komponenten & Frameworks Seite 1

Aufbau der Präsentationsschicht (Ein- Ausgabe) - wir benötigen ein Formular (Klasse Form), in das wir unsere (Steuer-) Elemente einbetten public class Form1 : System.Windows.Forms.Form - einzubettende Steuerelemente: - Button: System.Windows.Forms.Button button1; button1 = new System.Windows.Forms.Button(); - Textfeld: System.Windows.Forms.TextBox tb; tb = new System.Windows.Forms.TextBox(); - Steuerelemente dem Container (Form) hinzufügen this.controls.add(button1); // this zeigt auf Formobjekt this.controls.add(tb); - Formobjekt anlegen und Anwendung starten System.Windows.Forms.Application.Run(new Form1()) Komponenten & Frameworks Seite 2

Programmerstellung mit Notepad public class Form1 : System.Windows.Forms.Form //ohne Event { private System.Windows.Forms.Button button1; private System.Windows.Forms.TextBox tb; public Form1() // Container für Button u. Textfeld { button1 = new System.Windows.Forms.Button(); button1.text = "Start"; tb = new System.Windows.Forms.TextBox(); tb.location = new System.Drawing.Point(48, 40); this.controls.add(button1); this.controls.add(tb); } static void Main() {System.Windows.Forms.Application.Run(new Form1());} } Komponenten & Frameworks Seite 3

Hinzufügen der Logik (hier: klicken mit Aktion) - Anforderung: Beim Mouseclick auf dem Button soll in einem Feld Button geklickt ausgegeben werden. - Lösung: Eventhandling auf Basis des Beobachtermusters Entwurfsmuster Beobachter (Publisher-Subscriber) Komponenten & Frameworks Seite 4

Beobachtermuster im Beispiel - Publisher: Button (hat Multicast-Delegate) - Subscriber: Alle, die vom Button informiert werden wollen, wenn dieser geklickt wird Hierzu: Diese müssen den Button kennen und sich bei dem Button anmelden (unterschreiben = subscribe) (eigene Methode dem Multicast-Delegaten des Button hinzufügen) - Auslöser: Benutzer der den Button klickt => Button informiert alle Subscriber (Multicast-Delegate wird ausgeführt) Eventhandling in.net basiert auf beschriebenem Konzept Komponenten & Frameworks Seite 5

Eventhandling 1. Definitonsphase Publisher: Button Start Start Methoden (fkt1,.., fktn hier: btclick) unterschreiben beim Publisher d. h. an Multicastdelegaten (button1.click) binden (+=) button1.click += new System.EventHandler(this.btClick); 2. Ablaufphase - Komplette Interaktion erfolgt über Events (Warteschleife: Application.Run(new Form1());) - Event (z. B. Click) wird am Button Start durch Benutzer ausgelöst => Mit dem Event verbundener Delegate (Namenskonvention) wird ausgeführt, d. h. alle Methoden werden aufgerufen (hier: nur btclick) Komponenten & Frameworks Seite 6

public class Form1 : System.Windows.Forms.Form // mit Event { private System.Windows.Forms.Button button1; private System.Windows.Forms.TextBox tb; public Form1(){ button1 = new System.Windows.Forms.Button(); button1.text = "Start"; tb = new System.Windows.Forms.TextBox(); tb.location = new System.Drawing.Point(48, 40); this.controls.add(button1); this.controls.add(tb); button1.click += new System.EventHandler(this.btClick); } static void Main() {System.Windows.Forms.Application.Run(new Form1());} private void btclick(object sender, System.EventArgs e) {tb.text = "klick";} } Komponenten & Frameworks Seite 7

Die Nachrichtenschleife - wird durch Aufruf der statischen Methode Application.Run(..) gestartet - jeder Thread kann nur eine Nachrichtenschleife verarbeiten (d. h. Run nur einmal aufrufbar im Thread) - Exit bzw. ExitThread der Klasse Application beendet Nachrichtenschleife (z. B. Schließen der Form) - Tritt Event ein, wird EventHandler, d.h. die damit verbundenen Methoden aufgerufen Problem: => Programm wird erst nach dem Beenden dieser Methoden fortgesetzt Lösung: Statische Methode Application.DoEvents() ermöglicht die Inanspruchnahme der CPU durch andere Eventhandler Komponenten & Frameworks Seite 8

Allgemeiner Aufbau einer Windows-Anwendung Benutzer Datenbank Zugriff: ADO.Net Benutzeraktion: Rechne Klick Auslösen Event oder Eingabe Präsentationsschicht Aufruf Delegate: Rechne.Click Geschäftslogik void RechneClick(object sender, System.EventArgs e) {int i = int.parse(textbox1.text.tostring()); int erg = i*i; textbox2.text= erg.tostring(); // oder Aufruf bel. Geschäfts-Methoden } Komponenten & Frameworks Seite 9

Nachteile der obigen Implementierung - Definition des Designs der Oberfläche und der Funktionalität sind in der Klasse public class Form1 : System.Windows.Forms.Form verknüpft (vermischt) => Ziel: Trennung von Design und Implementierung Entwurfsmuster: Model View Controller - Design der Oberfläche erfolgt in objektorientierter Form in der Programmiersprache (hier: C#) => Ziel: Design durch beschreibende (deklarative) Form ermöglichen Lösung in.net: Windows Presentation Foundation XAML Komponenten & Frameworks Seite 10

Das Entwurfsmuster: Model View Controller Model: enthält Daten und Funktionalität der Anwendung Views: präsentieren dem Benutzer die Inhalte Controler: steuern Verarbeitung der Benutzereingaben Controller Reaktion auf Benutzereingaben 1:1 Model Anwendungsdaten + Funktionalität View Bildschirmansicht (en) Komponenten & Frameworks Seite 11