Genau so ist es. Seit Ende der 1990er Jahre wurden die Spielzeugpistolen sowie die Ringmuniton wegen einer Initiative des österreichischen Verbraucherrats EU weit entschärft. Die EU Spielzeugrichtlinie erlaut seit Anfang des Jahrtausends nur noch einen maximalen Schalldruck von 125db auf 50cm Entfernung. Zudem dürfen Spielzeugpistolen keine Flammen oder Funken mehr erzeugen. Aus diesem Grund ist bei sämtlichen neueren Spielzeugpistolen die Trommel nach vorne fest verschlossen. Außerdem besitzen die Munitionsringe inzwischen nur einen winzigen Bruchteil der Zündladung, die in den 90er Jahren noch üblich war.
MVC ist eine Abkürzung für "Model View Controller".
Hierbei handelt es sich weniger um eine definierte Beschreibung, sondern eher um ein Buzzword, was üblicherweise verwendet wird um alle möglichen Designsünden im Berech der Softwareentwicklung zu verkaufen.
Der Begriff wurde in den 70er Jahren von einem schwedischen Informatiker namens Trygve Reenskaug geprägt.
Bei XEROX PARC wurde aus seinem ursprünglichen Konzept ein Architekturmuster für den Entwurf von Smalltalk-80 basierten Benutzeroberflächen entwickelt.
Trygve Reenskaug arbeitete als Professor an der Universität Oslo und hat auch an der Entwicklung von UML mitgewirkt.
In seinem Vorwort zu einer Thesis über "Naked Objects" beschreibt Prof. Reenskaug übrigens, dass Naked Objects viel näher an seiner unsprünglichen Definition von MVC liegt als die meisten anderen Implementierungen.
Naked Objects ist - grob gesagt - ein Architekturmuster für die automatische Erzeugung von grafischen Benutzeroberflächen aus Datenmodellen.
Dies ist sozusagen der ursprüngliche Kerngedanke von MVC.
Heutzutage wird allerdings fast jede 3-Schichten Architektur als MVC bezeichnet, weil es halt wichtig klingt und sich gut verkaufen lässt.
UML ist eine Abkürzung für "Universal Modeling Language"
Es handelt sich hierbei um eine Modellierungssprache mit grafischer Notation, mit der man verschiedene Teilaspekte von Softwareentwürfen modellieren kann.
Sie dient dazu Softwareentwürfe in abstrakte, durch Menschen lesbare Modelle abzubilden.
UML hat sich zu einem De-Facto-Standard entwickelt, mit dessen Hilfe man Softwareentwürfe plant, diskutiert und dokumentiert.
Aus praktischer Sicht sind dies also Bildchen mit Strichen, Kästchen und so weiter.
Wer UML beherrscht, kann damit Teilaspekte einer Softwarearchitektur kommunizieren oder interpretieren.
Es gibt dutzende verschiedene Interpretationen von MVC, die mittels UML beschrieben sind.
Einfach mal bei Guugel eine Bildersuche nach "MVC UML" starten...
Hi!
Eine kleine Geschichte der Programmierparadigmen:
Zuerst gab es ausschließlich die imperative Programmierung. Also die Programmierung mit nacheinander ausgeführten Befehlen und einfachen, bedingten Sprunganweisungen. (Beispiel: Maschinensprache)
Einige Zeit später kamen andere schlaue Köpfe auf die Idee, dass es doch besser wäre, wenn man die Programme in Form von Unterprogrammen strukturieren könnte.
Dies wurde dann prozedurale Programmierung genannt.
Für ihre ketzerische Einstellung gegenüber imperativer Programmierung wurden die Anhänger dieses neuen Paradigmas dann von den "wahren (imperativen) Programmierern" verteufelt.
Kurz darauf (bzw. parallel dazu) haben sich wiederum einige schlaue Köpfe überlegt, dass es doch noch schöner wäre, wenn man zusätzliche Kontroll- und komplexe Datenstrukturen verwenden könnte.
Dies wurde dann strukturierte Programmierung genannt.
Für ihre ketzerische Einstellung gegenüber prozeduraler Programmierung wurden die Anhänger dieses neuen Paradigmas dann von den "wahren (prozeduralen) Programmierern" verteufelt.
Noch später kamen dann nochmals andere schlaue Köpfe auf den Trichter, dass man noch strukturierter Arbeiten könnte, wenn man Datenstrukturen und deren Operationen zusammenfassen würde.
Dies wurde dann objektorientierte Programmierung genannt.
Für ihre ketzerische Einstellung gegenüber strukturierter Programmierung wurden die Anhänger dieses neuen Paradigmas dann von den "wahren (strukturierten) Programmierern" verteufelt.
Oder anders:
Es sind alles nur Erweiterungen des imperativen Konzepts. Du kannst in fast jeder OOP fähigen Sprache auch strukturiert programmieren. (rein imperativ geht nicht immer, da z.B. in Java gar keine Sprungbefehle mehr vorhanden sind)
Strukturierte oder objektorientierte Programmierung ist dabei eben optional möglich.
Die Gründe für diese stetige Weiterentwicklung der Programmierparadigmen liegen in der immer weiter steigenden Komplexität von Computerprogrammen und dem Bedarf diese Komplexität beherrschbar zu machen.
Heutzutage wird für alle nicht objektorientiert aufgebauten Programme - also für Programme bei denen Datenstrukturen und Programmlogik voneinander getrennt sind - der Begriff "prozedurale Programmierung" gebraucht, obwohl damit eigentlich "strukturierte Programmierung" gemeint ist.
OOP hat gegenüber der prozeduralen Programmierung den Vorteil, dass man Softwarearchitekturen auf einem hohen Abstraktionsniveau beschreiben und auch vermitteln kann.
Das ist besonders für die Kommunikation in Programmier-Teams wichtig.
Auch wird mittels OOP eine lose Kopplung verschiedener Programmteile ermöglicht und somit kann die Wartbarkeit/Änderbarkeit von Software erhöht werden.
Das ist aber eben nicht immer automatisch der Fall wenn man objektorientiert programmiert, sondern meist nur dann, wenn man auch entsprechenden Aufwand in eine vernünftige Softwarearchitektur steckt.
Der Nachteil ist eben der erhöhte Anfangsaufwand und das vergleichsweise hohe Ausbildungsniveau, dass benötigt wird.
Beides treibt aber auch wieder die Kosten der Programmierung in die Höhe- einen wirklichen Vorteil hat OOP hier also bestenfalls bei sehr sehr großen Projekten.
Diese sind aber nur sehr rar gesäht.
Aus diesem Grund spielt die objektorientierte Programmierung (anders als z.B. die objektorientierten Programmiersprachen) in Deutschland auch nur eine untergeordnete Rolle.
Wir haben in Deutschland schlichtweg zu wenig Programmierer, die überhaupt in der Lage wären objektorientiert zu programmieren.
Außerdem fehlt häufig schlichtweg der Bedarf nach dauerhaft wartbarer Software.
Von daher schätze ich, dass nach wie vor weit mehr als 95% der neu entwickelten Software primär prozedural bzw. strukturiert entwickelt wird.
Trotzdem ist die Welt in Deutschland noch nicht untergegangen.