<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-x-formal">
	<id>https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eyesee</id>
	<title>GlossarWiki - Benutzerbeiträge [de-formal]</title>
	<link rel="self" type="application/atom+xml" href="https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Eyesee"/>
	<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/Spezial:Beitr%C3%A4ge/Eyesee"/>
	<updated>2026-07-17T05:43:37Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8742</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8742"/>
		<updated>2007-01-09T21:02:57Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmweisen.&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt. &lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
* allgemein: größere Softwareprojekte&lt;br /&gt;
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])&lt;br /&gt;
* Webanwendungen&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
*[[Stoiber, D. (2005): Implementierung des Model-View-Controller Paradigmas]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
*[[Wikipedia:MVC]]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/index.html Homepage von Trygve M. H. Reenskaug, Erfinder von MVC]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Reenskaugs eigene Seite über MVC ]&lt;br /&gt;
*[[Reenskaug, T. (1979): Thing-Model-View-Editor]] (Erste Notiz mit exemplarischen Beispielen)&lt;br /&gt;
*[[Reenskaug, T. (1979a): Models-Views-Controllers]] (Grundlegende Definition von MVC)&lt;br /&gt;
*[[Reenskaug, T. (2003): The Model-View-Controller (MVC ). Its Past and Present]]&lt;br /&gt;
&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(2003):_The_Model-View-Controller_(MVC)._Its_Past_and_Present&amp;diff=8741</id>
		<title>Reenskaug, T. (2003): The Model-View-Controller (MVC). Its Past and Present</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(2003):_The_Model-View-Controller_(MVC)._Its_Past_and_Present&amp;diff=8741"/>
		<updated>2007-01-09T20:59:19Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:URL &lt;br /&gt;
| key         = Reenskaug (2003)&lt;br /&gt;
| authors     = Trygve M. H. Reenskaug&lt;br /&gt;
| title       = The Model-View-Controller (MVC ).&lt;br /&gt;
| subtitle    = Its Past and Present&lt;br /&gt;
| editors     = &lt;br /&gt;
| day         = 20&lt;br /&gt;
| month       = August&lt;br /&gt;
| year        = 2003&lt;br /&gt;
| url         = http://heim.ifi.uio.no/~trygver/2003/javazone-jaoo/HM1A93.html&lt;br /&gt;
| annotations = Präsentation über Vergangenheit und Zukunft von MVC.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979a):_Models-Views-Controllers&amp;diff=8740</id>
		<title>Reenskaug, T. (1979a): Models-Views-Controllers</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979a):_Models-Views-Controllers&amp;diff=8740"/>
		<updated>2007-01-09T20:55:59Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:URL &lt;br /&gt;
| key         = Reenskaug (1979a)&lt;br /&gt;
| authors     = Trygve M. H. Reenskaug&lt;br /&gt;
| title       = Models-Views-Controllers&lt;br /&gt;
| subtitle    = &lt;br /&gt;
| editors     = &lt;br /&gt;
| day         = 10&lt;br /&gt;
| month       = Dezember&lt;br /&gt;
| year        = 1979&lt;br /&gt;
| url         = http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf&lt;br /&gt;
| annotations = Grundlegende Definition des Model-View-Controller-Paradigmas. Entstanden nach langen Diskussionen mit Adele Goldberg.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979):_Thing-Model-View-Editor&amp;diff=8739</id>
		<title>Reenskaug, T. (1979): Thing-Model-View-Editor</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979):_Thing-Model-View-Editor&amp;diff=8739"/>
		<updated>2007-01-09T20:55:30Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:URL &lt;br /&gt;
| key         = Reenskaug (1979)&lt;br /&gt;
| authors     = Trygve M. H. Reenskaug  &lt;br /&gt;
| title       = Thing-Model-View-Editor&lt;br /&gt;
| subtitle    = an Example from a planningsystem&lt;br /&gt;
| editors     = &lt;br /&gt;
| day         = 12&lt;br /&gt;
| month       = Mai&lt;br /&gt;
| year        = 1979&lt;br /&gt;
| url         = http://heim.ifi.uio.no/~trygver/1979/mvc-1/1979-05-MVC.pdf&lt;br /&gt;
| annotations = Erste Notiz zum Modell-View-Controller-Paradigma mit exemplarischen Beispielen verfasst vom Erfinder persönlich&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8738</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8738"/>
		<updated>2007-01-09T20:54:20Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmweisen.&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt. &lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
* allgemein: größere Softwareprojekte&lt;br /&gt;
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])&lt;br /&gt;
* Webanwendungen&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
*[[Stoiber, D. (2005): Implementierung des Model-View-Controller Paradigmas]]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/index.html Homepage von Trygve M. H. Reenskaug, Erfinder von MVC]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Reenskaugs eigene Seite über MVC ]&lt;br /&gt;
*[[Reenskaug, T. (1979): Thing-Model-View-Editor]] (Erste Notiz mit exemplarischen Beispielen)&lt;br /&gt;
*[[Reenskaug, T. (1979a): Models-Views-Controllers]] (Grundlegende Definition von MVC)&lt;br /&gt;
*[[Reenskaug, T. (2003): The Model-View-Controller (MVC ). Its Past and Present]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Anmerkung1 = Es sollten weitere Quellen angegeben werden. Vor allem die Quelle, in der das MVC-Pattern erstmals beschrieben wird wäre gut.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979a):_Models-Views-Controllers&amp;diff=8737</id>
		<title>Reenskaug, T. (1979a): Models-Views-Controllers</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979a):_Models-Views-Controllers&amp;diff=8737"/>
		<updated>2007-01-09T20:51:32Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:URL &lt;br /&gt;
| key         = Reenskaug, T. (1979a)&lt;br /&gt;
| authors     = Trygve M. H. Reenskaug&lt;br /&gt;
| title       = Models-Views-Controllers&lt;br /&gt;
| subtitle    = &lt;br /&gt;
| editors     = &lt;br /&gt;
| day         = 10&lt;br /&gt;
| month       = Dezember&lt;br /&gt;
| year        = 1979&lt;br /&gt;
| url         = http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf&lt;br /&gt;
| annotations = Grundlegende Definition des Model-View-Controller-Paradigmas. Entstanden nach langen Diskussionen mit Adele Goldberg.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8736</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8736"/>
		<updated>2007-01-09T20:50:49Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmweisen.&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt. &lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
* allgemein: größere Softwareprojekte&lt;br /&gt;
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])&lt;br /&gt;
* Webanwendungen&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
*[[Stoiber, D. (2005): Implementierung des Model-View-Controller Paradigmas]]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/index.html Homepage von Trygve M. H. Reenskaug, Erfinder von MVC]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Reenskaugs eigene Seite über MVC ]&lt;br /&gt;
*[[Reenskaug, T. (1979): Thing-Model-View-Editor]] (Erste Notiz mit exemplarischen Beispielen)&lt;br /&gt;
*[[Reenskaug, T. (1979a): Models-Views-Controllers]] (Grundlegende Definition von MVC)&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Anmerkung1 = Es sollten weitere Quellen angegeben werden. Vor allem die Quelle, in der das MVC-Pattern erstmals beschrieben wird wäre gut.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979):_Thing-Model-View-Editor&amp;diff=8734</id>
		<title>Reenskaug, T. (1979): Thing-Model-View-Editor</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Reenskaug,_T._(1979):_Thing-Model-View-Editor&amp;diff=8734"/>
		<updated>2007-01-09T20:48:00Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:URL &lt;br /&gt;
| key         = Reenskaug, T. (1979)&lt;br /&gt;
| authors     = Trygve M. H. Reenskaug  &lt;br /&gt;
| title       = Thing-Model-View-Editor&lt;br /&gt;
| subtitle    = an Example from a planningsystem&lt;br /&gt;
| editors     = &lt;br /&gt;
| day         = 12&lt;br /&gt;
| month       = Mai&lt;br /&gt;
| year        = 1979&lt;br /&gt;
| url         = http://heim.ifi.uio.no/~trygver/1979/mvc-1/1979-05-MVC.pdf&lt;br /&gt;
| annotations = Erste Notiz zum Modell-View-Controller-Paradigma mit exemplarischen Beispielen verfasst vom Erfinder persönlich&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8733</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8733"/>
		<updated>2007-01-09T20:40:16Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: /* Quellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmweisen.&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt. &lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
* allgemein: größere Softwareprojekte&lt;br /&gt;
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])&lt;br /&gt;
* Webanwendungen&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
*[[Stoiber, D. (2005): Implementierung des Model-View-Controller Paradigmas]]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/index.html Homepage von Trygve M. H. Reenskaug, Erfinder von MVC]&lt;br /&gt;
*[http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Reenskaugs eigene Seite über MVC ]&lt;br /&gt;
*[[Reenskaug, T. (1979): Thing-Model-View-Editor]] (Erste Notiz mit exemplarischen Beispielen)&lt;br /&gt;
*[[Reenskaug, T. (1979): Models-Views-Controllers]] (Grundlegende Definition von MVC)&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;br /&gt;
{{{{SITENAME}}-konformer Artikel}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Anmerkung1 = Es sollten weitere Quellen angegeben werden. Vor allem die Quelle, in der das MVC-Pattern erstmals beschrieben wird wäre gut.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8709</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8709"/>
		<updated>2007-01-09T11:40:03Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: /* Nachteile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Kategorisierung fehlerhaft}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmweisen.&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt. &lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
* allgemein: größere Softwareprojekte&lt;br /&gt;
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])&lt;br /&gt;
* Webanwendungen&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
*[[Dietmar Stoiber, Implementierung des Model-View-Controller Paradigmas (2005)]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8708</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8708"/>
		<updated>2007-01-09T11:38:59Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Kategorisierung fehlerhaft}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmierung.&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt. &lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
* allgemein: größere Softwareprojekte&lt;br /&gt;
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])&lt;br /&gt;
* Webanwendungen&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
*[[Dietmar Stoiber, Implementierung des Model-View-Controller Paradigmas (2005)]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Stoiber,_D._(2005):_Implementierung_des_Model-View-Controller_Paradigmas&amp;diff=8706</id>
		<title>Stoiber, D. (2005): Implementierung des Model-View-Controller Paradigmas</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Stoiber,_D._(2005):_Implementierung_des_Model-View-Controller_Paradigmas&amp;diff=8706"/>
		<updated>2007-01-09T11:33:50Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: hat Dietmar Stoiber, Implementierung des Model-View-Controller Paradigmas nach Dietmar Stoiber, Implementierung des Model-View-Controller Paradigmas (2005) verschoben: Kürzel geändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Skript&lt;br /&gt;
| key         = Dietmar Stoiber, Implementierung des Model-View-Controller Paradigmas (2005)&lt;br /&gt;
| authors     = Dietmar Stoiber &lt;br /&gt;
| title       = Implementierung des Model-View-Controller Paradigmas für das WeLearn-System (Web Environment for Learning)&lt;br /&gt;
| subtitle    = Diplomarbeit&lt;br /&gt;
| day         = 16&lt;br /&gt;
| month       = Februar&lt;br /&gt;
| year        = 2005&lt;br /&gt;
| school      = [http://www.uni-linz.ac.at/ Johannes Kepler Universität (JKU) Linz]&lt;br /&gt;
| institute   = Institut für Informationsverarbeitung und Mikroprozessortechnik&lt;br /&gt;
| address     = Altenbergerstrasse. 69, A-4040 Linz&lt;br /&gt;
| url         = http://www.fim.uni-linz.ac.at/Diplomarbeiten/Diplomarbeit_stoiber/Dietmar_Stoiber_-_Model-View-Controller_Paradigma.pdf&lt;br /&gt;
| annotations = Diplomarbeit zur Erlangung des akademischen Grades Diplomingenieur in der Studienrichtung Informatik&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Stoiber,_D._(2005):_Implementierung_des_Model-View-Controller_Paradigmas&amp;diff=8705</id>
		<title>Stoiber, D. (2005): Implementierung des Model-View-Controller Paradigmas</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Stoiber,_D._(2005):_Implementierung_des_Model-View-Controller_Paradigmas&amp;diff=8705"/>
		<updated>2007-01-09T11:33:03Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Skript&lt;br /&gt;
| key         = Dietmar Stoiber, Implementierung des Model-View-Controller Paradigmas (2005)&lt;br /&gt;
| authors     = Dietmar Stoiber &lt;br /&gt;
| title       = Implementierung des Model-View-Controller Paradigmas für das WeLearn-System (Web Environment for Learning)&lt;br /&gt;
| subtitle    = Diplomarbeit&lt;br /&gt;
| day         = 16&lt;br /&gt;
| month       = Februar&lt;br /&gt;
| year        = 2005&lt;br /&gt;
| school      = [http://www.uni-linz.ac.at/ Johannes Kepler Universität (JKU) Linz]&lt;br /&gt;
| institute   = Institut für Informationsverarbeitung und Mikroprozessortechnik&lt;br /&gt;
| address     = Altenbergerstrasse. 69, A-4040 Linz&lt;br /&gt;
| url         = http://www.fim.uni-linz.ac.at/Diplomarbeiten/Diplomarbeit_stoiber/Dietmar_Stoiber_-_Model-View-Controller_Paradigma.pdf&lt;br /&gt;
| annotations = Diplomarbeit zur Erlangung des akademischen Grades Diplomingenieur in der Studienrichtung Informatik&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8562</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8562"/>
		<updated>2007-01-09T04:10:29Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| {{SITENAME}}-Regeln = true &lt;br /&gt;
| Genauer             = true &lt;br /&gt;
}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
| Nicht-nur-Wikipedia = true&lt;br /&gt;
}}&lt;br /&gt;
{{Kategorisierung fehlerhaft}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In den Anfängen der Informatik war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist. Erst die Einführung der strukturierten Programmierung in den 70ern und später die objektorientierte Programmierung in den 80ern schaffte Abhilfe und ermöglichte das Programmieren nach dem Model-View-Controller Paradigma.&lt;br /&gt;
&lt;br /&gt;
Ursprünglich wurde das MVC-Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der [[GUI|GUI]]-Programmierung zum Einsatz. MVC ist heute allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich.&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen. Dieser Aufwand rechtfertigt andere Programmierung.&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
Es gibt kein hundertprozentiges Patentrezept, wie MVC umzusetzen ist. Je nach Anwendungsgebiet sind manche Komponenten wichtiger als andere. Auch kann nicht immer pauschal festgelegt werden, wo gewisse Funktionen eindeutig hingehören, da weitere Aspekte der Planung und des Entwurfs die Entscheidung beeinflussen können. Zum Beispiel kann es sinnvoll sein, aus Sicherheitsgründen eine Benutzerauthentifizierung einer Webanwendung nicht im Controller sondern im Modell abzulegen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Im Prinzip lassen sich die Bereiche jedoch grob eingrenzen:&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
Das Modell speichert als zentrale Komponente sämtliche Daten und enthält die Applikationslogik. Die Kommunikation nach außen (außerhalb der Anwendung) findet ebenso im Modell statt. Beispielsweise Zugriffe auf Datenbanken oder auch Kommunikation mit anderen Anwendungen. Zudem speichert das Modell den aktuellen Anwendungsstatus, also den Zustand, in dem sich die Anwendung bei der Interaktion mit dem Benutzer befindet.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Aufgabe des Modells ist das Verwalten der Views, die es zu benachrichtigen gilt, wenn sich der Zustand des Modells ändert. Änderungen werden unmittelbar mitgeteilt. Oftmals wird hierfür das [[Observer Design Pattern | Observer Design Pattern]] verwendet.&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
Die View ist die zuständige Komponente für die Ausgabe und bildet eine Abstraktionsschicht zwischen der Präsentation der Anwendung, dem Modell und dem Benutzer. Es können mehrere Views ein und dasselbe Modell auf technische oder optische Art und Weise repräsentieren. Verschiedene logische Sichtweisen bleiben dem Modell vorbehalten (bspw. verschiedene Benutzeransichten: Administrator, Normaluser).&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Der Controller nimmt Eingaben aus verschiedensten Quellen entgegen und leitet diese standardisiert auf das Modell weiter. Er ist somit eine weitere Abstraktionsschicht, der Interaktionen des Benutzers mit der View wieder dem Modell zuführt. &lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
* allgemein: größere Softwareprojekte&lt;br /&gt;
* [[GUI|GUI]]-Programmierung (bspw. [[Framework|Frameworks]] wie [[Swing|Swing]])&lt;br /&gt;
* Webanwendungen&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
*[[Kowarschick, W. et al. (2005): Musterquelle (Buch)]]&lt;br /&gt;
*[[Goldratt, E.; Cox , J. (2004): The Goal]]&lt;br /&gt;
*[[Leach, L. (2005): Critical Chain Project Management]]&lt;br /&gt;
&lt;br /&gt;
Auch externe Quellen können zitiert werden.&lt;br /&gt;
&lt;br /&gt;
*[http://kowa.fh-augsburg.de Kowarschicks gesammelte Werke] (besser als eigenes Quellen-Dokument, basierend auf der [[Vorlage:Quelle:URL]])&lt;br /&gt;
*[http://de.wikipedia.org/ Wikipedia] (&#039;&#039;&#039;so nicht&#039;&#039;&#039;, da zu allgemein und außerdem nicht der Wikipedia-Verweis benutzt wurde)&lt;br /&gt;
*[[Wikipedia:Vorlage (Datenverarbeitung)]] (sondern eher so, aber noch besser auch als eigenes Quellen-Dokument)&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8561</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8561"/>
		<updated>2007-01-09T03:07:27Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| {{SITENAME}}-Regeln = true &lt;br /&gt;
| Genauer             = true &lt;br /&gt;
}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
| Nicht-nur-Wikipedia = true&lt;br /&gt;
}}&lt;br /&gt;
{{Kategorisierung fehlerhaft}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
Ursprünglich wurde das Model-View-Controller Paradigma 1978/79 von der Firma Xerox für die [[GUI|GUI]]-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte [[Objektorientierung|objektorientierte]] Programmiersprache [[Smalltalk|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
Damals war es nicht unüblich in [[Spaghetti-Code|Spaghetti-Code]] zu entwickeln, was mit vielen Nachteilen verbunden ist.&lt;br /&gt;
In neueren Programmiersprachen wie [[Verweis|Java]] kommt MVC ebenfalls bei der  [[GUI|GUI]]-Programmierung zum Einsatz und ist allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
Beispiele machen sich auch nicht schlecht.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
Wenn die Definitionen und/oder die Anmerkungen nicht von einem selbst stammen, sollte man die Quellen angeben&lt;br /&gt;
(das sind natürlich nur Beispiele, keine echten Quellen dieses Artikels :-) ):&lt;br /&gt;
&lt;br /&gt;
*Hinz und Kunz, &amp;quot;Der Bau einer Musterseite&amp;quot;, 7. Auflage, Wiki-Verlag, 1931&lt;br /&gt;
&lt;br /&gt;
Besser ist es spezielle Quellendokumente zu erstellen (und diese dann auch mit Inhalt zu füllen):&lt;br /&gt;
&lt;br /&gt;
*[[Kowarschick, W. et al. (2005): Musterquelle (Buch)]]&lt;br /&gt;
*[[Goldratt, E.; Cox , J. (2004): The Goal]]&lt;br /&gt;
*[[Leach, L. (2005): Critical Chain Project Management]]&lt;br /&gt;
&lt;br /&gt;
Auch externe Quellen können zitiert werden.&lt;br /&gt;
&lt;br /&gt;
*[http://kowa.fh-augsburg.de Kowarschicks gesammelte Werke] (besser als eigenes Quellen-Dokument, basierend auf der [[Vorlage:Quelle:URL]])&lt;br /&gt;
*[http://de.wikipedia.org/ Wikipedia] (&#039;&#039;&#039;so nicht&#039;&#039;&#039;, da zu allgemein und außerdem nicht der Wikipedia-Verweis benutzt wurde)&lt;br /&gt;
*[[Wikipedia:Vorlage (Datenverarbeitung)]] (sondern eher so, aber noch besser auch als eigenes Quellen-Dokument)&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8560</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8560"/>
		<updated>2007-01-09T02:54:38Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| {{SITENAME}}-Regeln = true &lt;br /&gt;
| Genauer             = true &lt;br /&gt;
}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
| Nicht-nur-Wikipedia = true&lt;br /&gt;
}}&lt;br /&gt;
{{Kategorisierung fehlerhaft}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
Ursprünglich wurde das Model-View-Controller Paradigma 1978/79 von der Firma Xerox für die GUI-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte objektorientierte Programmiersprache [[GlossarWiki:Verweis|Smalltalk]].&lt;br /&gt;
&lt;br /&gt;
Damals war es nicht unüblich in Spaghetti-Code zu entwickeln, was mit vielen Nachteilen verbunden ist.&lt;br /&gt;
In neueren Programmiersprachen wie [[GlossarWiki:Verweis|Java]] kommt MVC ebenfalls bei der GUI-Programmierung zum Einsatz und ist allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt werden soll.&lt;br /&gt;
&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen:&lt;br /&gt;
* Gut strukturiertes Design durch klare Trennung der Anwendungslogik von den dazugehörenden Daten und der Benutzerinteraktion.&lt;br /&gt;
* Änderungen an einer Komponente sind möglich, ohne dass andere Komponenten davon betroffen werden; sogar ganze Komponenten können ausgetauscht werden.&lt;br /&gt;
* Mehrere Ansichten des Systems können durch Austausch verschiedener Views realisiert werden.&lt;br /&gt;
* Im Fehlerfall ist die Suche nach dem Fehler in der Regel auf eine Komponente beschränkt.&lt;br /&gt;
* Erweiterbarkeit bestehender Systeme, indem neue Komponenten hinzugefügt werden. Alte Komponenten können aus Kompatibilitätsgründen erhalten bleiben.&lt;br /&gt;
&lt;br /&gt;
Insgesamt sind Programmcode und Komponenten übersichtlicherer und einfacher zu warten, zu ändern und auszutauschen.&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
Auch wenn die Vorteile überwiegen, gibt es dennoch ein paar Nachteile:&lt;br /&gt;
* Bei der Planung und Implementierung ist wesentlich mehr Gründlichkeit erforderlich&lt;br /&gt;
* Erheblicher Mehraufwand bei kleinen Applikationen&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
Beispiele machen sich auch nicht schlecht.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
Wenn die Definitionen und/oder die Anmerkungen nicht von einem selbst stammen, sollte man die Quellen angeben&lt;br /&gt;
(das sind natürlich nur Beispiele, keine echten Quellen dieses Artikels :-) ):&lt;br /&gt;
&lt;br /&gt;
*Hinz und Kunz, &amp;quot;Der Bau einer Musterseite&amp;quot;, 7. Auflage, Wiki-Verlag, 1931&lt;br /&gt;
&lt;br /&gt;
Besser ist es spezielle Quellendokumente zu erstellen (und diese dann auch mit Inhalt zu füllen):&lt;br /&gt;
&lt;br /&gt;
*[[Kowarschick, W. et al. (2005): Musterquelle (Buch)]]&lt;br /&gt;
*[[Goldratt, E.; Cox , J. (2004): The Goal]]&lt;br /&gt;
*[[Leach, L. (2005): Critical Chain Project Management]]&lt;br /&gt;
&lt;br /&gt;
Auch externe Quellen können zitiert werden.&lt;br /&gt;
&lt;br /&gt;
*[http://kowa.fh-augsburg.de Kowarschicks gesammelte Werke] (besser als eigenes Quellen-Dokument, basierend auf der [[Vorlage:Quelle:URL]])&lt;br /&gt;
*[http://de.wikipedia.org/ Wikipedia] (&#039;&#039;&#039;so nicht&#039;&#039;&#039;, da zu allgemein und außerdem nicht der Wikipedia-Verweis benutzt wurde)&lt;br /&gt;
*[[Wikipedia:Vorlage (Datenverarbeitung)]] (sondern eher so, aber noch besser auch als eigenes Quellen-Dokument)&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8559</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8559"/>
		<updated>2007-01-09T02:20:19Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| {{SITENAME}}-Regeln = true &lt;br /&gt;
| Genauer             = true &lt;br /&gt;
}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
| Nicht-nur-Wikipedia = true&lt;br /&gt;
}}&lt;br /&gt;
{{Kategorisierung fehlerhaft}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
Ursprünglich wurde das Model-View-Controller Paradigma 1978/79 von der Firma Xerox für die GUI-Programmierung eingeführt. Zum Einsatz kam die damals ebenfalls von Xerox entwickelte objektorientierte Programmiersprache [[GlossarWiki:Verweis|Smalltalk]].&lt;br /&gt;
Damals war es nicht unüblich in Spaghetti-Code zu entwickeln, was mit vielen Nachteilen verbunden ist.&lt;br /&gt;
In neueren Programmiersprachen wie [[GlossarWiki:Verweis|Java]] kommt MVC ebenfalls bei der GUI-Programmierung zum Einsatz und ist allgemeiner Standard beim Entwurf komplexer Softwaresysteme, bei denen die Anwendungslogik von anderen Teilen des Systems getrennt wird.&lt;br /&gt;
Eine Variante ist &#039;&#039;&#039;MVC2&#039;&#039;&#039; (MVC Model 2 bzw. MVC Version 2), die speziell für Webanwendungen gedacht ist.&lt;br /&gt;
&lt;br /&gt;
==Vorteile==&lt;br /&gt;
Das MVC-Paradigma bietet eine Reihe von Vorteilen im Programmcode und den Komponenten:&lt;br /&gt;
* übersichtlicherer&lt;br /&gt;
* einfacherere Wartung, Änderung und Austauschbarkeit&lt;br /&gt;
* reduzierte Komplexität&lt;br /&gt;
&lt;br /&gt;
==Nachteile==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
Beispiele machen sich auch nicht schlecht.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
Wenn die Definitionen und/oder die Anmerkungen nicht von einem selbst stammen, sollte man die Quellen angeben&lt;br /&gt;
(das sind natürlich nur Beispiele, keine echten Quellen dieses Artikels :-) ):&lt;br /&gt;
&lt;br /&gt;
*Hinz und Kunz, &amp;quot;Der Bau einer Musterseite&amp;quot;, 7. Auflage, Wiki-Verlag, 1931&lt;br /&gt;
&lt;br /&gt;
Besser ist es spezielle Quellendokumente zu erstellen (und diese dann auch mit Inhalt zu füllen):&lt;br /&gt;
&lt;br /&gt;
*[[Kowarschick, W. et al. (2005): Musterquelle (Buch)]]&lt;br /&gt;
*[[Goldratt, E.; Cox , J. (2004): The Goal]]&lt;br /&gt;
*[[Leach, L. (2005): Critical Chain Project Management]]&lt;br /&gt;
&lt;br /&gt;
Auch externe Quellen können zitiert werden.&lt;br /&gt;
&lt;br /&gt;
*[http://kowa.fh-augsburg.de Kowarschicks gesammelte Werke] (besser als eigenes Quellen-Dokument, basierend auf der [[Vorlage:Quelle:URL]])&lt;br /&gt;
*[http://de.wikipedia.org/ Wikipedia] (&#039;&#039;&#039;so nicht&#039;&#039;&#039;, da zu allgemein und außerdem nicht der Wikipedia-Verweis benutzt wurde)&lt;br /&gt;
*[[Wikipedia:Vorlage (Datenverarbeitung)]] (sondern eher so, aber noch besser auch als eigenes Quellen-Dokument)&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8558</id>
		<title>Model-View-Controller-Paradigma</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Model-View-Controller-Paradigma&amp;diff=8558"/>
		<updated>2007-01-09T01:37:11Z</updated>

		<summary type="html">&lt;p&gt;Eyesee: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
{{Verbesserungswürdiger Inhalt&lt;br /&gt;
| {{SITENAME}}-Regeln = true &lt;br /&gt;
| Genauer             = true &lt;br /&gt;
}}&lt;br /&gt;
{{Quellenangaben verbessern&lt;br /&gt;
| Formatierung        = true&lt;br /&gt;
| Nicht-nur-Wikipedia = true&lt;br /&gt;
}}&lt;br /&gt;
{{Kategorisierung fehlerhaft}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&#039;&#039;&#039;MVC&#039;&#039;&#039; ist die Abkürzung für Model View Controller.&lt;br /&gt;
&lt;br /&gt;
Das MVC-Paradigma bezeichnet ein Architekturmuster zur Trennung eines Programms in drei separate Einheiten: Datenmodell (Model), Präsentation (View) und Programmsteuerung (Controller). Vorteile dieses Paradigmas ist ein flexibles Programmdesign, welches Wiederverwendbarkeit der einzelnen Komponenten und reduzierte Komplexität gewährleistet, insbesondere bei großen Anwendungen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
==Geschichte==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
==Konzept==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
==Anwendungsgebiete==&lt;br /&gt;
In Arbeit ...&lt;br /&gt;
&lt;br /&gt;
=Beispiele=&lt;br /&gt;
Beispiele machen sich auch nicht schlecht.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
Wenn die Definitionen und/oder die Anmerkungen nicht von einem selbst stammen, sollte man die Quellen angeben&lt;br /&gt;
(das sind natürlich nur Beispiele, keine echten Quellen dieses Artikels :-) ):&lt;br /&gt;
&lt;br /&gt;
*Hinz und Kunz, &amp;quot;Der Bau einer Musterseite&amp;quot;, 7. Auflage, Wiki-Verlag, 1931&lt;br /&gt;
&lt;br /&gt;
Besser ist es spezielle Quellendokumente zu erstellen (und diese dann auch mit Inhalt zu füllen):&lt;br /&gt;
&lt;br /&gt;
*[[Kowarschick, W. et al. (2005): Musterquelle (Buch)]]&lt;br /&gt;
*[[Goldratt, E.; Cox , J. (2004): The Goal]]&lt;br /&gt;
*[[Leach, L. (2005): Critical Chain Project Management]]&lt;br /&gt;
&lt;br /&gt;
Auch externe Quellen können zitiert werden.&lt;br /&gt;
&lt;br /&gt;
*[http://kowa.fh-augsburg.de Kowarschicks gesammelte Werke] (besser als eigenes Quellen-Dokument, basierend auf der [[Vorlage:Quelle:URL]])&lt;br /&gt;
*[http://de.wikipedia.org/ Wikipedia] (&#039;&#039;&#039;so nicht&#039;&#039;&#039;, da zu allgemein und außerdem nicht der Wikipedia-Verweis benutzt wurde)&lt;br /&gt;
*[[Wikipedia:Vorlage (Datenverarbeitung)]] (sondern eher so, aber noch besser auch als eigenes Quellen-Dokument)&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
[[Wikipedia:MVC]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[en:GlossaryWiki:MVC]]&lt;/div&gt;</summary>
		<author><name>Eyesee</name></author>
	</entry>
</feed>