CopaMVVM unter WPF. Simon Kranzer Roland Graf
|
|
- Julius Huber
- vor 8 Jahren
- Abrufe
Transkript
1 CopaMVVM unter WPF Simon Kranzer Roland Graf
2 Model-View-ViewModel-Pattern (MVVM) unter WPF View die Benutzeroberfläche WPF: XAML + Codebehind Datei ViewModel Klasse zur Kapselung des Model WPF: View bindet sich an dessen Properties Model Datenmodell WPF: Klassen enthalten die Nutzdaten
3 Model-View-ViewModel-Pattern (MVVM) unter WPF View kennt das ViewModel ViewModel kennt das Model, aber nicht das View Model kennt weder die View noch das ViewModel
4 Model-View-ViewModel-Pattern (MVVM) unter WPF Events Definition deklarativ in XAML Erstellung durch Designer Nimmt Benutzereingaben entgegen Einfache Eingabeüberprüfung durch Controls Weiterleitung der Eingaben an ViewModel durch Data Binding Enthält keinerlei UI Elemente Logik zur Behandlung der Benutzereingaben Erstellung durch Entwickler Rückmeldung an View durch Events oder mittels Delegatenaufruf Enthält nur die Daten Erstellung durch Entwickler
5 Commands implementieren Vier Schritte zur Implementierung eigener Commands 1. Command implementieren Klasse erstellen, die das Interface ICommand implementiert 2. ICommand Klasse instanzieren Instanz in statischen Variablen speichern 3. Command im View (XAML) verwenden 4. Command von Funktionalität entkoppeln
6 Das Interface ICommand für Klassen die Commands implementieren namespace System.Windows.Input public interface ICommand // Defines the method that determines whether the // command can execute in ist current state // Returns true if this command can be executed; // otherwise, false. bool CanExecute(object parameter); // Defines the method to be called when the command // is invoked. void Execute(object parameter); // Occurs when changes occur that affect whether // or not the command should execute. event EventHandler CanExecuteChanged;
7 Das Interface ICommandSource für Klassen die Commands auslösen namespace System.Windows.Input // Defines an object that knows how to invoke a command. public interface ICommandSource // Gets the command that will be executed when the // command source is invoked. ICommand Command get; // Represents a user defined data value that can be passed // to the command when it is executed. // Returns the command specific data. object CommandParameter get; // The object that the command is being executed on. IInputElement CommandTarget get;
8 1. Command implementieren mit Klasse die ICommands implementiert public class Exit : ICommand public bool CanExecute(object parameter) return true; public void Execute(object parameter) Application.Current.Shutdown(); public event EventHandler CanExecuteChanged;
9 2. Command instanzieren mit statischer Klasse die ICommands speichert public static class AppCommands private static ICommand _exit = new ExitCommand(); public static ICommand Exit get return _exit; private static ICommand _sort = new SortCommand(); public static ICommand Sort...
10 3. Command verwenden mit XAML im Property Command <Window x:class="demo.mainwindow" xmlns=" xmlns:x=" xmlns:local="clr-namespace:demo.mainwindow" <MenuItem Command="x:Static local:appcommands.exit" Header="Exit" /> <Button Command="x:Static local:appcommands.sort" Content="Sort" />
11 4. Command & Programmlogik entkoppeln Forderung: Command ist derzeit noch abhängig vom Target, sollte aber unabhängig vom aktuellen Eingabefokus sein Lösung: Wir feuern beim Execute einen RoutedEvent und jenes Control das sich angesprochen fühlt (z.b. aktuelles Window oder Control mit Eingabefokus) reagiert darauf.
12 Entkoppelung mit Routed Events Routing Strategien Tunnel - Event wird vom Wurzelelement durch den Element Tree nach unten bis zum auslösenden Element weitergeleitet. Events habe meist Präfix Preview Bubble Event blubbert von auslösendem Element durch den Element Tree in Richtung Wurzelelement Direct Event zeigt seine Wirkung nur auf dem Element, das den Event auslöst (auch Nor-Routing Strategie genannt).
13 Entkoppelung mit Routed Events Tunnel und Bubble
14 Command mit Routed Events mit Klasse die ICommands implementiert - Sender // Command Klasse als Event Sender public class Exit : ICommand public static readonly RoutedEvent ExecuteEvent = EventManager.RegisterRoutedEvent( Execute, Routingstrategie.Bubble, typeof(routedeventhandler), typeof(exit));... public void Execute(object parameter) RoutedEventArgs e = new RoutedEventArgs(ExecuteEvent, Keyboard.FocusedElement); Keyboard.FocusedElement.RaiseEvent(e);...
15 Command mit Routed Events mit Klasse die ICommands implementiert - Empfänger // MainWindow als Empfänger der Events public MainWindow() InitializeComponent(); this.addhandler( Exit.ExecuteEvent, new RoutedEventHandler(OnExitExecute)); private void OnExitExecute(object sender, RoutedEventArgs e) this.close();
16 Ablauf eines Command mit Routed Events am Beispiel des Buttons Exit Sender: Exit Klasse registriert RoutedEvent mit dem Namen Execute beim EventManager View (XAML): Button Exit wird Referenz auf Exit Objekt mit ICommand Interface zugewiesen Empfänger: Window Objekt registriert RoutedEventHandler 1. Benutzer klickt Button Exit an 2. Button Exit ruft Methode Execute über die Referenz der Schnittstelle ICommand aus Klasse Exit auf 3. Execute feuert ExecuteEvent 4. RoutedEvent blubbert von vom Tastatur-Fokus nach oben 5. Window Objekt empfängt Event und bearbeitet OnExitExecute
17 Command & Logik mit.net entkoppeln mit RoutedCommands RoutedCommands/RoutedUICommands RoutedEvent basierte Klassen mit konkreter Implementierung des Interfaces ICommand CommandManager Klasse kümmert sich um die Verwaltung der Commands und Referenzen CommandBinding Verbindet eine RoutedUICommand-Instanz mit einem/mehreren Event Handlern also mit Logik.
18 .NET-eigene Command Entkopplung Klassen RoutedCommand / RoutedUICommand RoutedCommand/RoutedUICommand Konkrete explizite Implementierung des Interfaces ICommand public class RoutedCommand: ICommand public bool CanExecute(object param, IInputElement target); public void Execute(object param, IInputElement target); public ICommand.CanExecute(object param); public ICommand.Execute(object param); public event EventHandler CanExecuteChanged;
19 .NET-eigene Command Entkopplung Der CommandManager Der CommandManager definiert vier RoutedEvents zur Nutzung durch die Klasse RoutedCommands und einen Eventhandler namespace System.Windows.Input public sealed class CommandManager public static readonly RoutedEvent CanExecuteEvent; public static readonly RoutedEvent PreviewCanExecuteEvent; public static readonly RoutedEvent ExecuteEvent; public static readonly RoutedEvent PreviewExecuteEvent; public static event Eventhandler RequerySuggested;...
20 .NET-eigene Command Entkopplung CommandManager & RoutedCommand / RoutedUICommand Was passiert nun im RoutedCommand bei Execute und CanExecute? CanExecute lösen das Tunneling Event PreviewCanExecute und dann das Bubbling Event CanExecute aus. Execute lösen das Tunneling Event PreviewExecute und dann das Bubbling Event Execute aus. Wozu ein RequerySuggested? Der CommandManager löst einen RequerySuggested Event immer dann aus, wenn ein Input-Event (Tastatur, Mausklick) stattfindet.
21 .NET-eigene Command Entkopplung CommandBinding CommandBinding Verbindet eine RoutedUICommand-Instanz mit einem oder mehreren Event Handlern - also mit Logik Definiert vier gleichnamige Events wie CommandManager Beispielbindung: CommandBinding cmdbind = new CommandBinding(); cbnd.command = ApplicationCommands.Paste; cbnd.executed += new ExecuteRoutedEventHandler(CmdExecuted); cbnd.canexecute += new ExecuteRoutedEventHandler(CmdCanExecute); Und wo wird diese Bindung vorgenommen?
22 .NET-eigene Command Entkopplung CommandBinding CommandBinding Bindung findet in Klassen UIElement, UIElement3D und ContentElement statt Klassen besitzen Property CommandBindings vom Typ CommandBindingCollection Klassen definieren intern vier statische EventHandler für die vier Events der CommandManager Klasse.
23 .NET-eigene Command Entkopplung CommandBinding CommandBinding??????????????
24 Wir erstellen eine MVVM Applikation Projekt anlegen WPF Projekt MVVMDemo anlegen Im Projekt Verzeichnisse erstellen für Model ViewModel View Command Common
25 MVVM Pattern unter WPF/Silverlight MVVM Pattern für WPF basiert auf Data Bindings Commands anstatt eine auf RoutedCommands basierende hat sich auf Delegates basierende Implementierung durchgesetzt Begründung: Logik und Command sollte in der ViewModel Klasse sein und RoutedCommands gibt es nur bei UIElements und nicht in der ViewModel-Instanz
26 Wir erstellen eine MVVM Applikation Model und ViewModel Klassen anlegen Im Verzeichnis Model erstellen wir die Klassen public class Person mit den Properties FirstName, LastName, public class PersonCollection : Collection<Person> Im Verzeichnis ViewModel erstellen wir die Klassen public class ViewModelBase public class MainViewModel : ViewModelBase
27 Wir erstellen eine MVVM Applikation View deklarativ in XAML definieren MainWindow XAML Datei entsprechend anpassen
28 Wir erstellen eine MVVM Applikation Klasse MainViewModel Klasse MainViewModel kapselt das Model mit den Daten 1. Property PersonCollection einfügen public PersonCollection Persons get; private set; 2. und mit Daten befüllen bietet Interfaces ICommand für das View 3. Property PersonCollection einfügen ICommand PreviousCommand get; private set; ICommand NextCommand get; private set;
29 Wir erstellen eine MVVM Applikation Klasse ActionCommand Klasse ActionCommand kapselt für ein Command-Objekt notwendigen Informationen stellt die Verbindung zwischen der Command- Eigenschaft eines Steuerelements und einer auszuführenden Methode im ViewModel her Allgemeine Forderung an die Klasse Implementiert Icommand Verwaltet Referenz auf Execute- und CanExecuteHandler
30 Wir erstellen eine MVVM Applikation Klasse ActionCommand Klasse ActionCommand Allgemeine Forderung an die Klasse Verwaltet Delegaten für Execute- und CanExecuteHandler Einfache Angabe der beiden Delegaten über Konstruktor Implementiert ICommand Ruft in den beiden Methoden jeweils die Delegaten auf Fügt den CanExecuteChanged EventHandler dem RequerySuggested des CommandManagers hinzu
31 Wir erstellen eine MVVM Applikation Klasse ActionCommand - Source - 1- Klasse mit Felder und Konstruktor: public class ActionCommand : ICommand private readonly Action<object> _executehandler; private readonly Func<object, bool> _canexecutehandler; public ActionCommand( Action<object> execute, Func<object, bool> canexecute) if (execute == null) throw new ArgumentNullException("Execute cannot be null"); _executehandler = execute; _canexecutehandler = canexecute;
32 Wir erstellen eine MVVM Applikation Klasse ActionCommand Source -2- Hinzufügen der beiden Methoden Execute und CanExecute: public class ActionCommand : ICommand... public void Execute(object parameter) _executehandler(parameter); public bool CanExecute(object parameter) if (_canexecutehandler == null) return true; return _canexecutehandler(parameter);
33 Wir erstellen eine MVVM Applikation Klasse ActionCommand Source -3- Hinzufügen zweier benutzerderfinierter Event Accessoren: public class ActionCommand : ICommand... public event EventHandler CanExecuteChanged add CommandManager.RequerySuggested += value; remove CommandManager.RequerySuggested -= value;
34 Wir erstellen eine MVVM Applikation Bindung an einfache.net Properties Dependency Properties können auf andere Elemente verweisen Verfügen über einen Benachrichtigungsmechanismus, der eine Änderung des Properties anzeigt besitzen eine Defaultwert bieten eine Vererbung über den Visual Tree Verfügen über eine integrierte Validierung und sind die Grundlage für Data Binding
35 Wir erstellen eine MVVM Applikation Bindung an einfache.net Properties Data Binding ermöglicht es, eine Dependency Property an den Wert einer anderen Property zu binden Bei der Bindung an.net Properties muss dieses über einen Benachrichtigungsmechanismus verfügen, der Data Binding Änderungen anzeigt und die Daten entsprechend synchronisiert werden. erreicht man dies durch Implementierung des Interface public interface INotifyPropertyChanged event PropertyChangedEventHandler PropertyChanged;
36 Wir erstellen eine MVVM Applikation Implementierung des interface INotifyPropertyChanged Erstellen der Basisklasse ViewModelBase public class ViewModelBase : INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertChanged(string propertyname) if (PropertyChanged!= null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
37 Wir erstellen eine MVVM Applikation Benachrichtigung mittels NotifyPropertyChanged Änderungsbenachrichtigung einer Property mittels NotifyPropertyChanged public string MyProperty get return this.mypropertyvalue; set if (value!= this.mypropertyvalue) this.mypropertyvalue = value; OnPropertyChanged( MyProperty );
38 Wir erstellen eine MVVM Applikation Implementierung des interface INotifyPropertyChanged WPF enthält generische Collection-Klasse mit dem Namen ObservableCollection<T>, die die beiden Interfaces INotifyPropertyChanged und INotifyCollectionChanged implementiert. Änderung des Models PersonCollection using System.Collections.ObjectModel; public class PersonCollection : ObservableCollection<Person>
39 Wir erstellen eine MVVM Applikation Binden der View an ObservableCollection <Window x:class="mvvmdemo2.mainwindow"... xmlns:vm="clr-namespace:mvvmdemo.viewmodel" <Window.Resources> <vm:mainviewmodel x:key="mainviewmodel"/> </Window.Resources> <Grid DataContext="StaticResource mainviewmodel"... >... <TextBox Text="Binding Persons/FirstName"... />... </Grid> </Window>
40 Wir erstellen eine MVVM Applikation Die CollectionViews der WPF Klasse CollectionView implementiert Interface ICollectionView: public interface ICollectionView: IEnumerable, INotifyCollectionChanged bool MoveCurrentToFirst(); bool MoveCurrentToNext(); bool MoveCurrentToPrevious(); Object CurrentItem get; int CurrentPosition( get; bool MoveCurrentToPosition(int pos);... stellt auch den Zeiger und Index auf das aktuell selektierte Objekt einer Collection bereit.
41 Wir erstellen eine MVVM Applikation Verwendung der CollectionView im MainViewModel public class MainViewModel : ViewModelBase private ICollectionView _personcollview; public MainViewModel()... LoadData(); _personcollview = CollectionViewSource.GetDefaultView(Persons); _personcollview.movecurrenttofirst();...
42 Wir erstellen eine MVVM Applikation Verwendung der CollectionView im MainViewModel public MainViewModel()... NextCommand = new ActionCommand(OnNextExecuted, OnNextCanExecute); PreviousCommand = new ActionCommand(OnPreviousExecuted, OnPreviousCanExecute); void OnNextExecuted(object parameter) _personcollview.movecurrenttonext(); bool OnNextCanExecute(object parameter)... return _personcollview.currentposition < Persons.Count - 1;
43 Wir testen unsere MVVM Applikation Nun sollte unsere Applikation funktionieren Testen Sie die Applikation setzen Sie Breakpoints versuchen Sie die Funktionsweise zu erklären Erweitern Sie Ihre Applikation mit beliebigen Features!
44 Wir erweitern die MVVM Applikation
45 Wir erweitern die MVVM Applikation Bindung von DependencyProperty an.net Properties Wenn die CollectionView eine Änderung meldet Wir benutzen die OnPropertyChanged der ViewModelBase
46 MVVM Implementierungs-Beispiele Artikel + Code Smith, Josh : WPF-Anwendungen mit dem Model-View-ViewModel- Entwurfsmuster Code: Huber, T.C. : Schöne Aussichten - Das Model-View-ViewModel-Pattern für WPF-Anwendungen, DotNet-Magazin, Ausgabe 10/ odelarticle.pdf Code: _ModelViewViewModelArticle_Code.zip
Model-View-ViewModel (MVVM)
1 Model-View-ViewModel (MVVM) Grundlagen und Einsatz des GUI-Architekturmusters W3L AG info@w3l.de 2011 2 Agenda Motivation Architekturmuster MVVM-Pattern Fazit Aufbau & Komponenten Technische Grundlagen
MehrGUI-Entwicklung 2: Windows Presentation Foundation
GUI-Entwicklung 2: Windows Presentation Foundation Proseminar Objektorientiertes Programmieren mit.net und C# Sandra Müller Institut für Informatik Software & Systems Engineering Agenda 1. Die WPF 2. Einführung
MehrCROSS PLATFORM DEVELOPMENT MIT PORTABLE CLASS LIBRARIES
Entwicklung Autor: Sebastian Kugler CROSS PLATFORM DEVELOPMENT MIT PORTABLE CLASS LIBRARIES ZUSAMMENFASSUNG TREND APPLIKATIONEN AUF MEHRERE PLATT FORMEN ZU VERFÜGUNG ZU STELLEN CODE REUSABILTY PORTABLE
MehrWPF Steuerelemente. Dr. Beatrice Amrhein
WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einf führung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,
MehrWPF Steuerelemente Listbox, ComboBox, ListView,
WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,
MehrMVVM in Windows 8 und Windows Phone 8
Basel MVVM in Windows 8 und Windows Phone 8 Thomas Claudius Huber Trivadis AG Thomas Claudius Huber Principal Consultat bei Trivadis www.trivadis.com www.thomasclaudiushuber.com Trainer, Coach, Developer,
MehrUniversal-Apps. Gordon Breuer Senior IT Consultant Software Engineer / Architect msg systems ag. activevb Workshop 2014 30.
Universal-Apps activevb Workshop 2014 30. August 2014 Auszug aus dem Buch: Windows Phone 8.1 Kochbuch Erscheinungsdatum: Q4/2014 Autoren: Matthias Fischer, Gordon Breuer Gordon Breuer Senior IT Consultant
MehrKlausur GUI-Entwicklung WS10/11 1.Termin
Klausur GUI-Entwicklung WS10/11 1.Termin Aufgabe 1) (8 Punkte) Sie sehen die folgenden Angaben im Projektmappen-Explorer von Visual Studio 2010: a) Erläutern Sie die Bestandteile dieses WPF-Projekts! (5
MehrWPF - Windows Presentation Foundation
Arthur Zaczek Nov 2014 1 WPF 1.1 WPF Windows Presentation Foundation, seit.net 3.0 Introduction to WPF: http://msdn.microsoft.com/en-us/library/aa970268(v=vs.110).aspx Windows Presentation Foundation:
MehrMatthias Fischer dotnetautor.de. Windows 8: Tablet, Telefon & Co.
Matthias Fischer dotnetautor.de Windows 8: Tablet, Telefon & Co. Referentenvorstellung Consultant und Trainer.NET-Entwicklung seit 2001 ASP.NET, WCF, MVC4, SQL Server 2012 WPF, MVVM, Windows Phone 8, Windows
MehrMatthias Fischer dotnetautor.de. Windows-Phone und Windows-8-Apps: Shared Code mit C# und XAML
Matthias Fischer www.it-visions.de dotnetautor.de Windows-Phone und Windows-8-Apps: Shared Code mit C# und XAML Referentenvorstellung Consultant und Trainer.NET-Entwicklung seit 2001 ASP.NET, WCF, MVC4,
MehrWPF Bindung. Dr. Beatrice Amrhein
WPF Bindung Element- und Daten-Bindung Dr. Beatrice Amrhein Überblick Element-Bindung via Eigenschaften-Editor Grenzen des Eigenschaften Editors Die C# Klasse Binding Bindung an C# Objekte 2 Einführung
MehrKapitel 9 Schnittstellen
Kapitel 9 Schnittstellen Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Was ist eine Schnittstelle?
MehrXAML Extensible Application Markup Language. Manuel Naujoks (IB3)
Extensible Application Markup Language Manuel Naujoks (IB3) Einführung Beschreibungssprachen Vorteile Nachteile Agenda technisch Aufbau Kompilierung Verarbeitung zur Laufzeit Routed Events Zusammenfassung
MehrKomponenten & Frameworks Seite 1
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
MehrNorbert. Eder. Windows Presentation Foundation 4. Einführung und Praxis. inklusive CD-ROM
Norbert Eder Windows Presentation Foundation 4 Einführung und Praxis inklusive CD-ROM 5936.book Seite 5 Mittwoch, 10. November 2010 5:50 17 Vorwort................................................... 11
MehrVererbung und Polymorphie
Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter
MehrVON MVC ZU MODEL-VIEW-VIEWMODEL
VON MVC ZU MODEL-VIEW-VIEWMODEL Wissenschaftliche Vertiefung von Lukas Jaeckle Studiengang Softwaretechnik und Medieninformatik Folie 1 von 18 Agenda 1. Architekturmuster 2. Architekturmuster für interaktive
MehrEinführung in C# Teil 3. Matthias Nübling
Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrPrism. Martin Hey Unique Software e.k.
Prism Martin Hey Unique Software e.k. Einleitung Überblick Framework zur Modularisierung von Anwendungen Trennung von Aufgaben und Zuständigkeiten für WPF, Silverlight und Windows Phone 7 verwendet dazu
MehrVorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3
Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrNeue Features in C# 2.0
Neue Features in C# 2.0 (gekürzt) Generische Typen Iteratoren Vereinfachte Delegate-Erzeugung Anonyme Methoden Partielle Klassen Sonstiges University of Linz, Institute for System Software, 2004 published
MehrTextbausteine. C# WPF-Framework Model-View-Viewmodel-Architektur Blog-Client-Applikation
Entwicklung einer C-Sharp- Applikation auf Basis des WPF- Frameworks und der Model-View- Viewmodel-Architektur am Beispiel einer Blog-Client-Applikation Von Mirko Jungblut Textbausteine C# WPF-Framework
MehrÜbung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
MehrNotesSession.GetPropertyBroker( )
Bestandteile von CA Laufen im Rich Client (Notes oder Expeditor) oder via Portal Server im Browser NSF-Komponenten sind Notes-Designelemente Eclipse Komponenten sind Eclipse ViewParts lokale oder Websphere
MehrProgrammieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
MehrRefactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag
Refactoring von Legacy Systemen Jochen Winzen jochen.winzen@andrena.de andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität
MehrInterface. So werden Interfaces gemacht
Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.
MehrInstitut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrObjektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern
Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung
MehrVorkurs Informatik WiSe 15/16
Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann
MehrInfo B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
MehrObjektorientierung. Marc Satkowski 20. November C# Kurs
Objektorientierung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Weiterführende Verzweigungen Tertiäre-Verzweigung switch case 2. Schleifen Zählschleife (for) break & continue 3. Objektorientierung
MehrObjektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrThomas Claudius Huber Trivadis AG. Silverlight 4.0 vier gewinnt?
Thomas Claudius Huber Trivadis AG Silverlight 4.0 vier gewinnt? Über Thomas Claudius Huber.NET Senior Consultant Trivadis AG Basel Fokus:.NET, WPF, Silverlight, SqlServer, Oracle Autor der umfassenden
MehrWichtige Prinzipien von C#
Wichtige Prinzipien von C# Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Dokumentationskommentare 2. Gültigkeit (Scope) 3. namespace & using 4. Methodenüberladung 5. Wert- & Referenztyp 6. null
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrWPF und Silverlight Architektur
Stefan Lange empira Software GmbH WPF und Silverlight Architektur Tipps zur Struktur von Anwendungen Stefan.Lange@empira.de 25.02.2010 Agenda Schichtenmodell Silverlight und WPF Code Sharing Typische Architektur
MehrProf. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
MehrControl Templates. Thomas Claudius Huber
Control Templates Thomas Claudius Huber thomas.huber@trivadis.com www.thomasclaudiushuber.com Thomas Claudius Huber.NET Senior Consultant @Trivadis Basel Spezialisiert auf Silverlight und WPF Autor der
MehrMultimedia im Netz Wintersemester 2012/13
Multimedia im Netz Wintersemester 2012/13 Übung 10 Ludwig-Maximilians-Universität München Multimedia im Netz WS 2012/13 - Übung 10-1 Lösung zu Übungsblatt 08 Ludwig-Maximilians-Universität München Multimedia
Mehr3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten
O Reillys Taschenbibliothek 3. Auflage C# 5.0 kurz & gut O REILLY Joseph Albahari & Ben Albahari Aktualisierung von Lars Schulten Inhalt C# 5.0 kurz & gut... 1 Ein erstes C#-Programm... 2 Syntax... 5 Typgrundlagen...
MehrCross-Platform Mobile mit.net
Cross-Platform Mobile mit.net Mobile Entwicklungslandschaft Nativ Crosscompiled Hybrid Web Beste Usability? Überschaubare Kosten? Was ist Xamarin? Was ist Xamarin? 2011 Gegründet aus dem Ximian, Novell
MehrSkalierbare Enterprise Architekturen für Universal Windows Platform Apps
Agenda Ziele Portable Class Libraries Projektaufbau MVVM Databinding #1 MVVM Light Inversion of Control & Dependency Injection Repository Pattern Databinding #2 Skalierbare Enterprise Architekturen für
MehrSoftwaretechnik WS 16/17. Übungsblatt 01
Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and
MehrWindows Presentation Foundation
Folie 1 Windows Presentation Foundation Workshop Teil 2 Pawel Kazakow Bjoern Hass pawel.kazakow@studentprogram.de bjoern.hass@studentprogram.de Folie 2 Windows Presentation Foundation Besprechung der Praxisaufgabe
MehrWindows Presentation Foundation
Windows Presentation Foundation WS 2013/14 Gliederung Literatur Einführung Inhalt Architektur von Windows Presentation Foundation und das Programmiermodell XAML Steuerelemente und Layout Ressourcen Data
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrProf. W. Henrich Seite 1
Attribute Überblick - Attribute ermöglichen das Hinzufügen von benutzerdefinerbaren Informationen zur Klasse - analog der Sprache, Bsp.: ein schönes Auto - können zur Laufzeit abgefragt und ausgewertet
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrMVVM (Model View ViewModel) in JavaFX
MVVM (Model View ViewModel) in JavaFX SEP Sommersemester 2019 Nicolas Brauner 30.04.2019 DBS Wissenschaftlicher Betreuer: Maximilian Hünemörder, Ludwig Zellner Verantwortlicher Professor: Prof. Dr. Peer
MehrProgrammierung Nachklausurtutorium
Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel
MehrAufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen
Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrHandbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
MehrProgrammiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
MehrCreational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.
Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational
MehrShort Introduction to C# C# (C SHARP) Microsofts Antwort auf Java
Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java Standardisierung durch die ECMA und ISO Short Introduction to C# C# (C
MehrII.4.5 Generische Datentypen - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche
MehrMethoden (fortgeschritten) in C# - 1
Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich
MehrKlasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code
Klasse Label class Label { Code code; List fixuplist; // code positions to patch int adr; // address of label in code // inserts offset to label at current void put (); // defines label to be
MehrAusnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein
Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten Dr. Beatrice Amrhein Definition 2 Definition: Ausnahme (Exception) In C# werden Fehler, die zur Laufzeit im
MehrEinführung in C# Teil 1. Matthias Nübling
Einführung in C# Teil 1 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,
MehrPrüfung Softwareentwicklung II (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrII.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrWPF Events. Ereignisse und Ereignisbehandlung. Dr. Beatrice Amrhein
WPF Events Ereignisse und Ereignisbehandlung Dr. Beatrice Amrhein Überblick Einführung Die wichtigsten Ereignisse Der C# Code Behind Die Verbindung von WPF und C# Code Einige Beispiele 2 Einführung 3 Einführung
MehrHeute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.
Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis
MehrObjekt-orientierte Programmierung
Objekt-orientierte Programmierung Eine (sehr) kurze Einführung Daniel Lübke Gliederung Motivation Grundlagen (Objekte, Klassen, Vererbung) Interfaces Klassenvariablen
MehrProgrammieren für Wirtschaftswissenschaftler SS 2015
DEPARTMENT WIRTSCHAFTSINFORMATIK FACHBEREICH WIRTSCHAFTSWISSENSCHAFT Programmieren für Wirtschaftswissenschaftler SS 2015 Lucian Ionescu Blockveranstaltung 16.03 27.3.2015 7. Graphische Oberflächen Ein
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
MehrDokumentation: Content App Framework
Dokumentation: Content App Framework Andreas Breuninger, medialesson GmbH Januar 2013 Inhaltsverzeichnis 1. DataService... 3 1.1. Laden/Parsen der Daten... 3 1.1.1. GetDataset() -> GetDataAsync() ->
MehrEinstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
MehrAlgorithmen und Datenstrukturen 07
(7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
Mehr1 Einleitung Generizität Syntax... 2
Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................
MehrZusammenfassung: Programmieren 2 (C#)
Zusammenfassung: Programmieren 2 (C#) Arrays Eindimensional int[] feld; feld = new int[2]; int[] feld2 = new int[3]; int[] feld3 = new int[] 1, 2, 3 ; //oder int[] feld4 = 1, 2, 3 ; int laenge = feld3.length;
Mehr7.0 Arbeiten mit Objekten und Klassen
252-0027 Einführung in die Programmierung I 7.0 Arbeiten mit Objekten und Klassen Thomas R. Gross Department Informatik ETH Zürich Copyright (c) Pearson 2013. and Thomas Gross 2016 All rights reserved.
MehrWindows Phone 7.5. Grundlagen und fortgeschrittene Programmierung. von Ralf Ehlert, Gregor Woiwode. 1. Auflage
Windows Phone 7.5 Grundlagen und fortgeschrittene Programmierung von Ralf Ehlert, Gregor Woiwode 1. Auflage Windows Phone 7.5 Ehlert / Woiwode schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
MehrOliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?
oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2
MehrPolymorphie. 15. Java Objektorientierung II
432 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 433 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
MehrPolymorphie. 15. Java Objektorientierung II
446 Polymorphie 15. Java Objektorientierung II Objektorientierung: Verschiedene Aspekte 447 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen zuweisen
MehrExkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen
MehrVererbung, Polymorphie
Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08
MehrStatische und Nichtstatische Methoden Properties/ Eigenschaften
Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrGrundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139
Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)
Mehr14 Abstrakte Klassen, finale Klassen, Interfaces
Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse
MehrInnere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.
Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrLine-of-Business-Apps mit der Universal Windows Platform entwickeln. Thomas Claudius
Line-of-Business-Apps mit der Universal Windows Platform entwickeln Thomas Claudius Huber @thomasclaudiush Thomas Claudius Huber Principal Consultant bei Trivadis Pluralsight-Autor, Buchautor C#, XAML,
Mehr