Fabrikmethode -- Factory Method - ZFX + Developia\nFabrikmethode -- Factory Method\nBeitrag von smurfer » 25.01.2016, 12:47\nich habe ein paar Fragen bzgl. des Einsatzes einer Factory. Wenn ich es richtig verstanden habe, ist eine der gewollten Eigenschaften einer Factory, die spezielle Implementierung einer abgeleiteten Klasse zu verstecken und lediglich das Interface mit beispielsweise einer Enumeration zu nutzen, sinngemäß:\nIBase* pBase = Factory::create(INHERITED_TYPE);\nNehmen wir das übliche Beispiel eines Interfaces Shape von dem z.B. Circle und Rectangle abgeleitet sind, erhielte ich beim Erzeugen durch die Factory beispielsweise immer einen Shape-Pointer, hinter dem intern ein Circle oder Rectangle steht, z.B.:\nIShape* pShape = Factory::create(SHAPE_TYPE_CIRCLE);\nWas bedeutet es nun, wenn ich den Radius des Kreises oder die Eckpunkte des Rechteckes festlegen möchte? Sinngemäß\nVorheriges Abfragen oder Vorwissen über den Typ und Überführung mittels static_cast (oder dynamic_cast, wer mag)\nSpezielle Factory-Methoden wie createCircle oder createRectangle -- widerspricht zumindest o.g. Kapselung und stellt den Sinn der Factory für mich in Frage (würde sich vielleicht noch für einen dahinter liegenden Memory-Pool rechtfertigen lassen)\nAlle relevanten Methoden der abgeleiteten Klassen im Interface, im Notfall leer implementiert -- auch eher unschön\nKeine hardcodierte Konfiguration z.B. des Radius erlauben und immer ein Laden aus Datei / Skript o.Ä. hinter die Factory legen -- verhindert zumindest das Ändern zur Laufzeit aus dem Code heraus und daher aus meiner Sicht auch eher unpraktikabel\nGibt es hier ein Best-Practice oder eine andere, elegante Option, die ich bislang nicht sehe?\nRe: Fabrikmethode -- Factory Method\nBeitrag von Alexander Kornrumpf » 25.01.2016, 13:35\n"Design Patterns" (GoF) ist von Leuten, die wissen was sie tun, für Leute, die wissen was sie tun, geschrieben. Da sind dann zwar so Beispiele mit Shape und Rectangle und Circle drin (ich weiß nicht ob dieses spezielle Beispiel aus "Design Pattern" ist, aber die Beispiele darin sind zumindest alle von ähnlichem Typ), aber ich glaube man muss das als "wir nehmen jetzt dieses simpelst Beispiel um zu illustrieren was wir meinen, aber wir wissen alle welche Beispiele wirklich gemeint sind *zwinker-zwinker*" lesen. Die Sekundärliteratur zu Design Patterns ist dagegen häufig von Leuten geschrieben, die, wie soll ich sagen, nicht zur Zielgruppe von "Design Patterns" gehören und da sind solche Subtilitäten dann verloren gegangen. Kurz gesagt, es ist einfach kein besonders gutes Beispiel.\nUnd letztlich ist das Factory Pattern dann einfach was was man sich merken kann, für den Tag an dem man mal die Implementierung/Objekterzeugung für den Aufrufer wegabstrahieren will und wenn dieser Tag kommt, dann wird man ihn schon erkennen. Sinngemäß gilt das für alle Pattern.\nDas andere ist, dass die "klassischen Pattern" alle kein Hexenwerk sind, sondern Sachen auf die man mit ein bisschen Nachdenken selbst kommen kann. Das Ziel von "Design Patterns" war nicht, festzulegen, wie wir jetzt in alle Ewigkeit vorzugehen haben, sondern zu katalogisieren was wir wissen, wohlgemerkt zu einer Zeit, als Objektorientierung nicht unbedingt der Standard der Softwaremodellierung war . Der Siegeszug, den Patterns in der Folge unter ganz anderen Vorzeichen in der Java Community angetreten haben sagt vielleicht mehr über Java und dessen spezielles (wenn auch zugegeben sehr großes) Einsatzgebiet aus, als über Pattern.\nOder noch anders gesagt: Nur weil Martin Fowler eine Consultingkarriere auf etwas aufgebaut hat, muss dieses etwas deshalb noch lange keine tiefere Wahrheit oder Wertigkeit enthalten. Wahrscheinlicher ist, dass Fowler ein guter Geschäftsmann ist.\nBeitrag von smurfer » 25.01.2016, 13:50\ndanke für die Antwort, im Grundsatz kann ich das von dir Geschriebene klar nachvollziehen. Wie du schreibst, ist es alles kein Hexenwerk, ich habe auch schon in einigen Situationen gemerkt, dass das, was ich mir dort zurecht programmiert habe, im Grunde einem Design Pattern XY entspricht.\nGrundsätzlich möchte ich auch nicht Design Pattern um der Design Pattern willen nutzen und dogmatisch meinen Code in solche zwingen. Auch wenn das Beispiel ein nicht optimales für eine Factory ist, frage ich mich unabhängig von irgendwelchen Patterns, welche Lösung die geschickteste ist.\nTendieren würde ich zum zweiten Punkt, dann habe ich zumindest die Möglichkeit, eine Art von Memory-Management im Hintergrund zu kapseln.\nEdit: Abseits vom Shape-Beispiel habe ich letztlich Daten (phys. Objekte, grafische Objekte, Partikel, Emitter,...) und einen entsprechenden Datenmanager (oder von mir aus mehrere), der sich um Erzeugen und Verwalten ersterer kümmert und so von der Programmlogik trennt.\nBeitrag von Alexander Kornrumpf » 25.01.2016, 14:02\nWas ich vielleicht nicht deutlich genug gemacht hatte: Wenn ich das in der realen Welt mal angewendet habe, dann war die Situation immer so, dass das Interface "von sich aus" vollständig war, und es wirklich darum ging, Objekterzeugung zu kapseln. Das Problem, das du aufwirfst hat sich dadurch nicht gestellt. Das Problem an dem Beispiel ist, dass einem sofort Fälle einfallen in denen Rectangle und Circle nicht dasselbe Interface haben. Das hat aber mit dem Pattern nichts zu tun.\nBeitrag von Alexander Kornrumpf » 25.01.2016, 14:12\nsmurfer hat geschrieben: Tendieren würde ich zum zweiten Punkt, dann habe ich zumindest die Möglichkeit, eine Art von Memory-Management im Hintergrund zu kapseln.\nEine Sache, die ich mal in einem Vortrag gehört hab, die man nicht glauben muss, die mir aber sofort eingeleuchtet hat ist "du wirst es nicht brauchen!" Da geht es, auf das Beispiel angewendet, darum, dass du dir jetzt Arbeit machst um die Möglichkeit eines Memory-Managements offen zu halten, die du dann nie brauchen wirst.\nBezüglich des EDITs würde ich mal ausfühlich darübe nachdenken, wie größ das gemeinsame Interface der von dir genannten verschiedenen Dinge wirklich ist, und wie nützlich es ist, eins zu haben. Ich habe darauf keine endgültige Antwort, da können andere hier sicher mehr zu sagen, aber mir scheint "nun es sind alles Daten" die falsche Abstraktionsebene. Das ist sowiso trivial immer so. Die Frage ist doch wie oft es vorkommt, dass du mit den verschiedenen Daten das gleiche machst. Die Antwort scheint mir zu "nie" zu tendieren. Irre ich mich?\nBeitrag von smurfer » 25.01.2016, 14:23\nWahrscheinlich hast Du recht und es ist den Aufwand nicht wert. Allerdings ist es nicht so, dass in der obersten Abstraktion alles Daten sind, das wäre mir ebenfalls viel zu sehr abstrahiert. Es war ja auch einmal Trend, wirklich alles von einer "Entität" abzuleiten, davon bin ich weit entfernt.\nEs ist eher im Kleinen: Ich habe beispielsweise ein Emitter-Interface. Emitter emittieren sowohl in meinem Fall physikalisch sehr eingeschränkte Partikel als auch physikalisch vollwertige Objekte. Das hat sich bislang als äußerst praktikabel und übersichtlich erwiesen. Allerdings benötigen die vollwertigen Objekte mehr Informationen, solche, die über ein abstraktes Interface hinausgehen. Dazu gehört z.B. ein Template (nicht im C++-Sinn, sondern im Sinne als Prototyp/Beispiel) dafür, was für Objekte emittiert werden.\nOb man sich Möglichkeiten für die Zukunft offen halten sollte (wie ein Memory-Management), ist natürlich immer schwierig zu beantworten und meiner Ansicht nach die typische Balance irgendwo zwischen Quick-and-Dirty und völlig "überdesignt".\nBeitrag von Alexander Kornrumpf » 25.01.2016, 14:29\nAllerdings benötigen die vollwertigen Objekte mehr Informationen, solche, die über ein abstraktes Interface hinausgehen. Dazu gehört z.B. ein Template (nicht im C++-Sinn, sondern im Sinne als Prototyp/Beispiel) dafür, was für Objekte emittiert werden.\nWenn diese Information nur zur Erzeugungszeit gebraucht werden und danach das Interface gleich ist, wäre das doch ein prima Anwendungsfall. Wofür wird später noch ein verschiedenes Interface gebraucht? Kannst du die Situationen in denen das der Fall ist von denen in denen das nicht der Fall ist wegkapseln? Wenn letzteres nicht geht, gewinnst du mMn nichts durch die Factory.\nBeitrag von smurfer » 25.01.2016, 15:46\nGuter Hinweis, müsste ich mal prüfen, inwieweit ich das insgesamt entkoppeln kann.\nWie gesagt möchte ich mich auch gar nicht am Begriff Factory oder dem Pattern als solches festbeißen -- der Betreff ist im Nachhinein betrachtet vielleicht etwas unglücklich gewählt. Letzlich möchte ich die Daten außerhalb der Logik/Algorithmen verwalten und damit am Besten auch gleich dort erzeugen.\nBeitrag von Top-OR » 04.02.2016, 15:10\n@Alexander: ich hätte das nicht besser in Wort fassen können. Gut, dass du das so erledigt hast.\nBeitrag von dot » 04.02.2016, 23:15\nDie Idee der Factory Method ist eigentlich, dass du jemandem eine Factory Method geben kannst und der damit Objekte zu seiner Verwendung erzeugen kann, ohne die konkrete Implementierung dieser Objekte kennen zu müssen. Dass die erzeugten Objekte dem Benutzer der Factory ein Interface liefern, das für dessen Zwecke brauchbar ist, ist dabei eigentlich implizite Voraussetzung. In deinem Beispiel ist das aber nicht der Fall, der Benutzer deiner "Factory" will Circles erzeugen, die "Factory" liefert ihm aber nur irgendwelche Shapes. Es fällt mir schwer, einzuordnen, ob dein Beispiel nun eher aus einem Missverständnis des Factory Method Pattern oder dem Versuch der Anwendung des Pattern auf ein völlig unpassendes Problem entstanden ist. Ich geb einfach mal das passendere Beispiel einer Factory Method, die dir Circles liefert, ohne dass du dabei wissen musst, ob diese Circles nun Kreise in einem SVG File oder auf dem Bildschirm oder auf einem Plotter oder auf dem Bildschirm eines, über das Internet verbundenen, zweiten Rechners oder was auch immer darstellen. Eine solche Factory Method kannst du dann an Code übergeben, der einfach allgemein irgendwie Kreise generiert und dem dabei völlig egal sein kann, wie diese Kreise am Ende ausgegeben werden. Durch Wechseln der an den Code übergebenen Factory Method kann der selbe Code seine Kreise dann in eine SVG Datei ausgeben oder direkt auf den Bildschirm oder auf einen Plotter oder auf den Bildschirm eines anderen, über das Internet verbundenen, zweiten Rechners...\nWann immer du dich in der Situation befindest, dass du an einer Stelle ein Interface hast, mit dem der Code, der mit dem entsprechenden Objekt was tun sollte, nichts anfangen kann, zeigt dies einen Designfehler an. Ein Downcast, egal ob nun in Form eines static_cast oder dynamic_cast oder per selbst gebastelte, explizite Typabfrage oder was auch immer, löst niemals das eigentliche Problem, sondern lindert nur die Symptome, bis die Krankheit an anderer Stelle wieder ausbricht, in der Regel schlimmer als beim ersten Mal. Die Frage zu deinem Beispiel sollte nicht sein "Wie mach ich es am besten, dass ich nun den Radius dieses Shape ändern kann?" sondern "Wieso hab ich hier nur einen Shape wenn ich doch eigentlich einen Circle wollte?". Die Suche nach der Antwort führt dann sehr schnell zu weiteren Fragen wie z.B. "war dieses Shape Interface wirklich eine gute Idee?", "macht es wirklich Sinn, Circle von Shape abzuleiten?", "wie sieht eigentlich die Sache mit den Ellipsen aus?"... ;)\nBeitrag von smurfer » 06.02.2016, 14:35\nVielen Dank für die ausführlichen und interessanten Antworten.\nWie schon im ersten Post erwähnt ist mir der grundsätzliche Sinn einer Factory bewusst und der Titel und die Anwendung wie hier schon festgestellt unpassend. Und nein, ich möchte definitiv nicht auf Teufel komm raus eine Factory auf etwas anwenden, nur um des Design Patterns willen. Es war letztlich eine gewisse Ähnlichkeit zu einer Factory als Klasse gegeben, die mir Objekte erzeugt ohne das ich mich explizit um das Erzeugen kümmern muss. Da ich mit einem gemeinsamen Interface recht dicht an einer Factory bin, wollte ich keine Möglichkeit übersehen.\nFazit zur Begrifflichkeit: Es ist kein Memory-Pool per se und auch mit einem umgangssprachlichen Erbauer/Erzeuger/Produzenten wildere ich begrifflich wieder in fremden Design Pattern.\nFazit zur Factory: Ungeeignet\nFazit zur Kapselung der Erzeugung: Gradwanderung und fallabhängig, ob es sinnvoll ist oder nicht\nFazit zum Vorgehen: Wie erwähnt Punkt 2, gekapseltes Erzeugen der Objekte (mal völlig unabhängig davon, ob nun ein gemeinsames Interface vorliegt oder nicht, denn darum geht es mir primär nicht)\nFazit zum Architekturdesign: Für mich geeignet (Shape -> Circle war erstmal nur ein Beispiel), aber letztlich kann ich ein Design aus meiner Sicht fast immer in Frage stellen, das eine wahre Design habe ich noch nicht gesehen.\nAuch wenn sehr plakativ, möchte ich natürlich mit meinen (vorläufigen) Fazits keine mögliche weitere Diskussion ersticken. Dass es wie im Beispiel beschrieben keine Anwendung für eine Factory ist und man diese auch nicht erzwingen sollte, ist denke ich klar.\nBeitrag von dot » 06.02.2016, 18:49\nsmurfer hat geschrieben: Fazit zum Architekturdesign: Für mich geeignet (Shape -> Circle war erstmal nur ein Beispiel), aber letztlich kann ich ein Design aus meiner Sicht fast immer in Frage stellen, das eine wahre Design habe ich noch nicht gesehen.\nDas eine wahre Design gibt es natürlich nicht, Design muss leben, wenn das Refactoring aufhört, ist die Software klinisch tot. Was es aber definitiv gibt, ist ganz viel schlechtes Design. Mehr kann man an dieser Stelle nicht wirklich sagen, da du uns ein dem eigentlichen Problem offenbar völlig unverwandtes Beispiel gegeben und das wirkliche Problem nicht angesprochen hast... ;)\nBeitrag von Chromanoid » 06.02.2016, 19:33\nEin "Spruch" in diesem Zusammenhang, letztens irgendwo aufgeschnappt, den ich ganz gut finde: "prefer duplication over the wrong abstraction"\nBeitrag von Krishty » 06.02.2016, 21:34\nHmmm. Wenn man’s exakt duplizieren würde, wäre die Schnittstelle ja identisch, und es gäbe nichts zu abstrahieren. Das Problem ist doch, dass die Leute 30 Zeilen kopieren und dann in Zeile 25 aus dem AND ein OR machen.\nUnd dann habe ich lieber eine vollkommen falsch abstrahierte Funktion, deren Sinn ich noch selber ausarbeiten kann, als den Unterschied in den 30 scheinbar gleichen Zeilen zu suchen.\nBeitrag von smurfer » 06.02.2016, 21:40\nDer Spruch leuchtet ein, man könnte das "wrong" auch durch "cumbersome" oder Ähnliches ersetzen. Wie immer kommt es drauf an, Krishty kann ich auch zustimmen.\nDot, sorry, nicht falsch verstehen, ich wollte weder ein bewusst unpassendes Beispiel geben, noch ein Problem vorenthalten. Ich hielt eingangs (mittlerweile eines besseren belehrt :D ) das Beispiel für recht allgemein und damit passend. Und durch die Kommentare hat sich das Problem gelöst, bzw. meine Tendenz bestätigt.\nDa es hier gerade so interessant ist, und mein Design mit Sicherheit nur besser werden kann, hier noch einmal konkreter. Hintergrundinfo: Ich befinde mich rein im Zweidimensionalen, vielleicht ist das an irgendeiner Stelle relevant. Es geht weitestgehend um eine Physikengine, Rigid-Body-Dynamics, aber zudem recht weitläufig Richtung prozedurale Erzeugung von Planetensystemen etc (das was überall gemacht wird, angefangen habe ich allerdings, bevor es boomte ;) ).\nNun zum Auslöser meiner Anfrage:\nIch habe einen WorldDataStorage, in dem vollwertig physikalische Objekte, eingeschränke physikalische Objekte wie Partikel und auch Emitter residieren. In einem Importer (lua, xml oder xfig) werden die definierten Objekte, Emitter usw. geladen und dem WorldDataStorage übergeben. Der Physikmanager, die Kollisionsabfrage und das LuaScripting können nun definiert auf den WorldDataStorage zugreifen und mit den Objekten arbeiten. Einen ähnlichen Datenverwalter gibt es für Visuals, also die grafische Repräsentation der Objekte, die nur recht lose einen Verweis auf ihrer physikalischen Referenzobjekte haben und früher oder später nicht nur im Programm, sondern auch über das Netzwerk entkoppelt werden sollen.\nIch wollte nun die Erzeugung der Objekte an den WorldDataStorage übertragen, so dass beispielsweise die Importer nur mitteilen, dass ein entsprechendes Objekt erzeugt werden soll. Der WorldDataStorage hat somit die Hoheit und Kontrollen, die Daten wie auch immer zu erstellen, zu verwalten, Pools zu nutzen usw.\nMeine Emitter sind recht vielseitig, neben typischen, zeitlich emittierenden Punktquellen, können auch verschiedene Ortsverteilungen über Dichtefunktionen erzeugt werden. Dabei können sowohl einfache Partikel (Debris) oder vollwertig physikalische Objekte erzeugt werden. Genau an der Stelle fiel mir auf, dass ein Erzeugen eines Emitters im WorldDataStorage (oder meinetwegen durch seinen WorldDataStorageManager) einer Factory recht nahe kommt. Sollte ich eine solche einsetzen, erhalte ich allerdings nur ein Interface, wobei teilweise unterschiedliche Methoden benötige. Daraus resultierte mein zugegeben recht schlechtes Beispiel, da ich mich gefragt habe, ob es für solche Fälle eine elegante Factorylösung gibt, oder diese einfach nicht geeignet ist.\nAus der Diskussion stellte sich für mich nun folgendes heraus: Wenn mein WorldDataStorage die speziellen Objekte erzeugt (siehe Punkt zwei, also createObjectEmitter oder createDebrisEmitter statt nur createEmitter, habe ich nicht viel verloren, diese Factory-Abstraktion ist erstmal wenig wert). Wenn ich nun mein Design grundsätzlich dahingehend überdenke, dass ich die verschiedenen Emitter von einem gemeinsamen Interface löse statt sie in einer gemeinsamen Liste (hier momentan unordered_map) zu verwalten, sehe ich das aufgrund der vielen Gemeinsamkeiten momentan eher als Nachteil. Auf den ersten Blick spricht für mich also nichts gegen die Vererbung, auch wenn die speziellen Methoden benötigt werden, wohl aber gegen die Factory.\nIch bin der Designfrage deshalb ein wenig pauschal ausgewichen, da sie immer recht schnell gestellt wird und manchmal vom eigentlichen Thema ablenkt. An dieser Stelle bin ich durch das unkonkrete Beispiel allerdings selbst Schuld daran. Bislang hat mir das Design auch nach vielen Erweiterungen der Engine recht gute Dienste geleistet, was aber natürlich nicht heißen muss, dass es perfekt ist.\nInsofern freue ich mich auf spannende Beiträge :)\nEdit: Krishtys Beitrag gelesen, siehe erste Zeile und kurze Korrektur/Ergänzung: Die Emitter sind nicht mit den Objekten im oben beschriebenen WorldDataStorage, sie bedienen diesen ebenfalls. Der beschriebene Fall des Erzeugens trifft für sie jedoch auch zu. Die Vererbungsthematik trifft zudem ebenso auf Teile der Objekte und ihrer Visuals.\nBeitrag von smurfer » 07.02.2016, 00:40\nWann immer du dich in der Situation befindest, dass du an einer Stelle ein Interface hast, mit dem der Code, der mit dem entsprechenden Objekt was tun sollte, nichts anfangen kann, zeigt dies einen Designfehler an. Ein Downcast, egal ob nun in Form eines static_cast oder dynamic_cast oder per selbst gebastelte, explizite Typabfrage oder was auch immer, löst niemals das eigentliche Problem, sondern lindert nur die Symptome, bis die Krankheit an anderer Stelle wieder ausbricht, in der Regel schlimmer als beim ersten Mal.\nHier möchte ich noch einmal direkt nachgefragen: Was ist denn konkret so schlimm daran? Es wird fast immer pauschal geschrieben, aber was macht es zu so einem schlechten Design, wo holt es mich wieder ein? Und, welche Alternative sollte man nutzen?\nMir ist bewusst, dass blindes Hin- und Hercasten nicht sonderlich sinnvoll ist, aber an wohl-definierten Stellen?!\nBeispiel Kollisionsabfrage: Anfangs habe ich für die verschiedenen Objekttypen double-dispatching verwendet, was nach außen hin sicher recht elegant scheint und damals einfach "in" war. Es war mir aber eine zu starke Kopplung in die Objekte, ich wollte die Kollisionsabfrage in eine einzige Klasse kapseln, um sie leicht manipulieren oder ersetzen zu können. Ich kann natürlich die verschiedenen Objekte in unterschiedliche Listen* eintragen. Dies mache ich auch an den Stellen, wo das Vorgehen sich stark unterscheidet, wie bei den Partikeln und den Objekten. An anderen Stellen gibt es eine gemeinsame Liste und es wird der Typ explizit erfragt. Ich sehe kein Problem darin.\nÄhnlich beim Speichern des Simulationsfortschritts. Das Emitter-Interface vereinfacht an vielen Stellen meinen Code. Beim Rausstreamen der Informationen wird die Emitterliste gestreamt. Ich könnte mehrere Listen anlegen und müsste nicht den Typ mitstreamen und beim Laden erfragen. Allerdings geschieht dies nicht während der Simulationszeit und ist von der Performance vernachlässigbar. Dafür muss ich nicht überall drei Listen pflegen.\nGibt es noch weitere Möglichkeiten, wie beispielsweise bei einer Kollisionsabfrage, verschiedene Typen zu testen, wenn nicht explizit typeigene Listen, double-dispatching oder Interfaces mit Typabfragen (sei es hausgemacht, dynamic_cast oder wie auch immer)?\n* Liste als sinngemäßer Begriff, nicht zwangsweise std::list oder Ähnliche\nBeitrag von dot » 07.02.2016, 02:30\nsmurfer hat geschrieben:\nHier möchte ich noch einmal direkt nachgefragen: Was ist denn konkret so schlimm daran? Es wird fast immer pauschal geschrieben, aber was macht es zu so einem schlechten Design, wo holt es mich wieder ein?\nIn dem Moment, wo du einen Downcast brauchst, befindest du dich in einer Situation, in der dein Design sich selbst widerspricht. Der fragliche Code hat von seinem Aufrufer nur einen X Basisklassenzeiger bekommen, was bedeutet, dass das Interface des fraglichen Code sagt: Ich mache dieses und jenes mit jedem beliebigen X. Wenn du in der Implementierung dieses Code dann auf einmal ein konkretes Y brauchst, dann sagt uns das, dass der entsprechende Code offenbar doch nicht mit jedem beliebigen X funktioniert, sondern nur mit jenen X, die ein Y sind. Entweder hätte also das Interface bereits nach einem Y verlangen sollen, da die entsprechende Operation offenbar nur mit einem Y Sinn macht und nicht mit jedem X im Allgemeinen, oder irgendwas ist mit der Abstraktion X an sich verkehrt. Die Lösung ist in jeden Fall, das Problem im Design, das zu der entsprechenden Situation geführt hat, zu beheben und nicht – per Downcast – Code zu schreiben, der so tut, als würde er für jedes X das selbe machen, in Wirklichkeit aber, je nachdem was für ein konkretes Objekt sich hinter dem jeweiligen X befindet, etwas anderes macht...\nAlternative, kurze Erklärung: Du verletzt in dem Moment, wo du einen Downcast machst, zwangsweise automatisch das Liskovsche Substitutionsprinzip...\nsmurfer hat geschrieben: Und, welche Alternative sollte man nutzen?\nDein konkreter Fall klingt nach einem Paradebeispiel für Double Dispatch... ;)\nsmurfer hat geschrieben: Mir ist bewusst, dass blindes Hin- und Hercasten nicht sonderlich sinnvoll ist, aber an wohl-definierten Stellen?!\nEs geht hier nicht um Casts im Allgemeinen, sondern konkret um Downcasts (d.h. Cast von Basis runter auf abgeleitete Klasse). Ich bin absolut kein Fan von Absolutismen ;). Aber wenn es einen Fall gibt, wo man wirklich mal eine absolute Aussage machen kann, dann ist es: Ein Downcast ist immer Symptom eines Designfehlers. In all meinen Jahren ist mir noch nicht ein einziges Beispiel untergekommen, wo man imo auch nur beginnen hätte können, darüber nachzudenken, ob man vielleicht diskutieren könnte, dass ein Downcast unter gewissen Voraussetzungen nicht eventuell doch vertretbar sein könnte. Selbst nach vielmaligem, intensivem Nachdenken konnte ich bis jetzt noch nicht mal ein rein hypothetisches Beispiel für den potentiell akzeptablen Einsatz eines Downcast erfinden. Ich lasse mich natürlich immer gerne eines Besseren belehren, aber ich hab diese Diskussion schon wirklich oft geführt und der Downcast steht bei mir immer noch ganz weit oben auf der Liste der ganz groben Vergehen, gleich neben so Dingen wie dem Singleton Pattern...\nsmurfer hat geschrieben: Beispiel Kollisionsabfrage: Anfangs habe ich für die verschiedenen Objekttypen double-dispatching verwendet, was nach außen hin sicher recht elegant scheint und damals einfach "in" war. Es war mir aber eine zu starke Kopplung in die Objekte, ich wollte die Kollisionsabfrage in eine einzige Klasse kapseln, um sie leicht manipulieren oder ersetzen zu können.\nInwiefern war welche Kopplung zu stark? Dass die Kollisionsbestimmung zwischen verschiedenen Kombinationen verschiedener Objekttypen jeweils verschiedener Algorithmen bedarf, ist eine fundamentale Eigenschaft des Problems an sich; die Auswahl des Algorithmus ist rein prinzipiell an die Kombination der beteiligten Objekttypen gekoppelt, diese Kopplung ist ein notwendiger Umstand in jeder möglichen Lösung und kein unglücklicher Nebeneffekt eines bestimmten Lösungsansatzes. Double Dispatch liefert eine elegante Lösung für die Frage, wie man, gegeben eine beliebige Kombination von zwei Objekttypen, den passenden Algorithmus auswählen kann...\nsmurfer hat geschrieben: Nun zum Auslöser meiner Anfrage:\nIch habe einen WorldDataStorage, in dem vollwertig physikalische Objekte, eingeschränke physikalische Objekte wie Partikel und auch Emitter residieren.\nImo liegt da dein Problem. Sollten Emitter nicht viel eher Objekte in eine beliebige WorldDataStorage emittieren? Sollte es einer WorldDataStorage nicht absolut egal sein, was es alles für Arten von Emittern gibt oder vielleicht irgendwann mal geben wird? Abgesehen davon, würde ich mir die Frage stellen, ob es so eine gute Idee ist, einen solchen 'Emitter" wirklich ständig neue Objekte erzeugen und alte löschen zu lassen. Bei Partikelsystemen hat man in der Regel eine fixe, maximale Anzahl an Partikeln pro Emitter, die man einfach einmal alle erzeugen kann. Der Emitter führt dann nur noch das Updaten der Partikel durch. Meist will man in dem Moment, wo ein Partikel stirbt, direkt wieder ein neues emittieren. Anstatt das eine zu löschen und ein neues zu erzeugen, kann man einfach das bereits existierende resetten...\nBeitrag von Chromanoid » 07.02.2016, 03:34\nMal verschlafen am Rande:\nAls Java-Entwickler ist man ja ziemlich verseucht mit Downcast-Lösungen. Ich glaube nicht, dass das zwangsläufig ein Designfehler ist. Ich bin auch nicht davon überzeugt, dass das Liskovsche Substitutionsprinzip dadurch zwangsweise verletzt wird.\nWenn man eine (in vielen Programmiersprachen ermittelbare Eigenschaft) wie den Typ oder eben eine entsprechende Typ-ID eines Objekts als Teil des Objekts betrachtet, dann ist es keine Verletzung des Prinzips, wenn sich das Verhalten des Programms verändert, je nach dem welcher Objekt-Typ gerade in eine Methode reinflattert. Meiner Meinung nach sind dokumentierte Verträge für Schnittstellen/Klassen und ihre Methoden/Eigenschaften die "beweisbaren Eigenschaften" aus dem Liskovschen Substitutionsprinzip. Nur weil man in einer Methode auf den Subtyp eines Typs anders reagiert als auf den Typ selbst, heißt das noch lange nicht, dass diese Verträge verletzt werden. Wenn man einen Typ ableitbar bzw. die Methoden eines Typs überschreibbar macht, müssen die entsprechenden Verträge sowieso genau definiert sein. Nur wenn man dann in einem Subtyp gegen die Verträge verstößt, nur dann verstößt man auch gegen das Liskovsche Substitutionsprinzip...\nCool finde ich in diesem Zusammenhang das hier: http://ceylon-lang.org/blog/2012/01/25/enumerated-types / http://ceylon-lang.org/documentation/1.2/tour/types/\nBeitrag von smurfer » 07.02.2016, 11:12\nChromanoid, sehe ich ähnlich, wenn ich es richtig verstanden habe, siehe meine Antwort im Folgenden.\ndot hat geschrieben: In dem Moment, wo du einen Downcast brauchst, befindest du dich in einer Situation, in der dein Design sich selbst widerspricht. Der fragliche Code hat von seinem Aufrufer nur einen X Basisklassenzeiger bekommen, was bedeutet, dass das Interface des fraglichen Code sagt: Ich mache dieses und jenes mit jedem beliebigen X. Wenn du in der Implementierung dieses Code dann auf einmal ein konkretes Y brauchst, dann sagt uns das, dass der entsprechende Code offenbar doch nicht mit jedem beliebigen X funktioniert, sondern nur mit jenen X, die ein Y sind. Entweder hätte also das Interface bereits nach einem Y verlangen sollen, da die entsprechende Operation offenbar nur mit einem Y Sinn macht und nicht mit jedem X im Allgemeinen, oder irgendwas ist mit der Abstraktion X an sich verkehrt. Die Lösung ist in jeden Fall, das Problem im Design, das zu der entsprechenden Situation geführt hat, zu beheben und nicht – per Downcast – Code zu schreiben, der so tut, als würde er für jedes X das selbe machen, in Wirklichkeit aber, je nachdem was für ein konkretes Objekt sich hinter dem jeweiligen X befindet, etwas anderes macht...\nDas ist die Art von Antwort, die ich meinte: Das Design ist schlecht, weil ein solches Design schlecht ist. Werd doch mal konkreter :)\nIm Prinzip habe ich eine Kollisionsmethode, die nur X benötigt und nach außen hin mit jedem X funktioniert. Die Information welches Y das X ist, ist auch vorhanden, nicht in Form der sprachtechnischen Ausprägung als Basisklasse, sondern gewissermaßen als Member, die jedes X besitzt. Ich denke das geht in die Richtung, die Chromanoid angesprochen hatte.\ndot hat geschrieben: Dein konkreter Fall klingt nach einem Paradebeispiel für Double Dispatch... ;)\ndot hat geschrieben: Es geht hier nicht um Casts im Allgemeinen, sondern konkret um Downcasts (d.h. Cast von Basis runter auf abgeleitete Klasse). Ich bin absolut kein Fan von Absolutismen ;). Aber wenn es einen Fall gibt, wo man wirklich mal eine absolute Aussage machen kann, dann ist es: Ein Downcast ist immer Symptom eines Designfehlers. In all meinen Jahren ist mir noch nicht ein einziges Beispiel untergekommen, wo man imo auch nur beginnen hätte können, darüber nachzudenken, ob man vielleicht diskutieren könnte, dass ein Downcast unter gewissen Voraussetzungen nicht eventuell doch vertretbar sein könnte. Selbst nach vielmaligem, intensivem Nachdenken konnte ich bis jetzt noch nicht mal ein rein hypothetisches Beispiel für den potentiell akzeptablen Einsatz eines Downcast erfinden. Ich lasse mich natürlich immer gerne eines Besseren belehren, aber ich hab diese Diskussion schon wirklich oft geführt und der Downcast steht bei mir immer noch ganz weit oben auf der Liste der ganz groben Vergehen, gleich neben so Dingen wie dem Singleton Pattern...\nSiehe oben, werd doch mal konkret :) . Was ist am obigen Beispiel der Kollisionsabfrage so schlimm, welche Fallstricke erwarten mich? Ich habe eine definierte Stelle an der ich weiß, dass Objekte ankommen, die auf Kollision geprüft werden und alle ihren Typ mit sich bringen. Nochmal darauf speziell:\ndot hat geschrieben: Selbst nach vielmaligem, intensivem Nachdenken konnte ich bis jetzt noch nicht mal ein rein hypothetisches Beispiel für den potentiell akzeptablen Einsatz eines Downcast erfinden.\nDeine Kernaussage es sei grundsätzlich schlecht, weil es schlecht ist, klingt für mich viel hypothetischer und diskutiert habe ich auch schon oft. ;)\ndot hat geschrieben: Inwiefern war welche Kopplung zu stark? Dass die Kollisionsbestimmung zwischen verschiedenen Kombinationen verschiedener Objekttypen jeweils verschiedener Algorithmen bedarf, ist eine fundamentale Eigenschaft des Problems an sich; die Auswahl des Algorithmus ist rein prinzipiell an die Kombination der beteiligten Objekttypen gekoppelt, diese Kopplung ist ein notwendiger Umstand in jeder möglichen Lösung und kein unglücklicher Nebeneffekt eines bestimmten Lösungsansatzes. Double Dispatch liefert eine elegante Lösung für die Frage, wie man, gegeben eine beliebige Kombination von zwei Objekttypen, den passenden Algorithmus auswählen kann...\nDiese Kopplung ist natürlich gegeben, aber das hat doch nichts damit zu tun, an welcher Stelle des Codes (örtlich gesehen) ich auf diese eingehe.\nAngenommen ich möchte grundlegende Dinge an der Kollisonsabfrage ändern(1), neue Objekte hinzufügen(2) oder grundlegend verschiedene Kollisionsvarianten vorhalten(3), dann bedeutet das für die jeweilige Vorgehensweise:\nErmitteln welche Objekte (Klassen -> Dateien) betroffen sind und Code in den jeweiligen Objekten ändern (1)\nNeue Kollisionsmethoden an einer Stelle für die neue Klasse erstellen und im Minimalfall nur den Rückruf in den anderen Klassen (quasi triple dispatch ;) ), ansonsten in allen beteiligten Klassen (2)\nVarianten in den Objekten vorhalten oder Varianten der Objekte vorhalten (3)\nKapselung mit Downcast\nSämtlichen Code innerhalb des Kollisionsmanagers ändern (1)\nNeue Kollisionsmethoden an einer Stelle im Kollisionsmanager erstellen (2)\nVarianten der Kollisionsmanager vorhalten (3)\nAuch ich finde Double-Dispatch elegant und habe es auch nicht grundlos anfangs implementiert. Aus rein praktischen Gründen empfand ich es aber zu verstreut im Code und wollte mich in allen drei oben genannten Fällen nur um eine Klasse/Datei kümmern. Ich finde Double-Dispatch mit Sicherheit nicht verkehrt, es ist eine persönliche Vorliebe gewesen, die gezeigte Alternative zu wählen. Was mir immer noch fehlt, ist ein wirklich praktischer Grund, was mir dabei früher oder später so sehr um die Ohren fliegt, dass es das Design schlecht macht.\ndot hat geschrieben: Imo liegt da dein Problem. Sollten Emitter nicht viel eher Objekte in eine beliebige WorldDataStorage emittieren? Sollte es einer WorldDataStorage nicht absolut egal sein, was es alles für Arten von Emittern gibt oder vielleicht irgendwann mal geben wird? Abgesehen davon, würde ich mir die Frage stellen, ob es so eine gute Idee ist, einen solchen 'Emitter" wirklich ständig neue Objekte erzeugen und alte löschen zu lassen. Bei Partikelsystemen hat man in der Regel eine fixe, maximale Anzahl an Partikeln pro Emitter, die man einfach einmal alle erzeugen kann. Der Emitter führt dann nur noch das Updaten der Partikel durch. Meist will man in dem Moment, wo ein Partikel stirbt, direkt wieder ein neues emittieren. Anstatt das eine zu löschen und ein neues zu erzeugen, kann man einfach das bereits existierende resetten...\nJa, mein Fehler, siehe Edit in dem entsprechenden Post, wahrscheinlich hast Du ihn nicht mehr rechtzeitig gelesen. Die Emitter sind in einem eigenen "Storage" und emittieren in den WorldDataStorage. Partikel als solche sind in einem Ringpuffer und dieser hat eine fixe Größe. Es können aber auch physikalisch vollwertige Objekte erzeugt werden, die (undefiniert) länger leben, sie werden tatsächlich an den WorldDataStorage übergeben und sind dann als vollwertige Objekte in seiner Obhut. Und genau weil ich nicht ständig neue Objekte (im Speicher) erzeugen möchte, sollte der WorldDataStorage das Erzeugen der Objekte im Speicher übernehmen, wobei ich wieder beim Grund meines ursprünglichen Anliegens angekommen bin.\nEdit: Copy-Paste-Fehler bei Punkt (3) der Kapselung-mit-Downcast-Liste korrigiert.\nZuletzt geändert von smurfer am 07.02.2016, 12:47, insgesamt 1-mal geändert.\nBeitrag von Chromanoid » 07.02.2016, 11:40\nIch bin hier voll auf Deiner Seite. Ich glaube sogar, dass wenn eine Sprache keine oder nur "widerwillig" Mittel zur Ermittlung des Objekt-Typs bereitstellt, das automatisch zu einer starken Behinderung des Zusammenspiels von Bibliotheken aus unterschiedlicher Hand führt. Und ich habe auch tatsächlich das Gefühl, dass sich die Entwicklungen von Bibliotheken z.B. in C++ immer sehr stark um sich selbst drehen.\nIch glaube genau Dein Usecase ist ein Grund für das Einführen von Reflection und ähnlicher Ansätze. Möchte man zum Beispiel einen Editor für ein Objektmodell entwerfen, ist man bei Sprachen ohne Reflection sehr darauf angewiesen, dass das Objektmodell diese Möglichkeit (und am besten auch noch viele andere) antizipiert. Die Komplexität, die bei dieser Antizipation in das Objektmodell wandern würde, ist bei vielen Sprachen einfach verallgemeinert worden und in eine Relfection-API gewandert.\nBeitrag von Alexander Kornrumpf » 07.02.2016, 18:10\nsmurfer hat geschrieben: ... WorldDataStorage ... Physikmanager ... Einen ähnlichen Datenverwalter gibt es für Visuals ... WorldDataStorageManager\nVielleicht bin ich naiv, aber ich denke, wenn du die o. g. Parasitenklassen wegwirfst werden sich deine Designprobleme wahrscheinlich von alleine lösen.\nBeitrag von smurfer » 07.02.2016, 18:59\nHm, das finde ich nicht naiv, sondern eher ein wenig provokant und auch pauschal formuliert -- die Begriffe hast Du schon sehr plakativ rausgezogen. Nenn es nicht Manager und belass es in irgendeiner einzelnen Methode/Funktion und schon ist es nur noch eine Schleife, die durchlaufen wird -- irgendwer muss es machen. Und die Daten an bestimmten Stellen von der Logik zu trennen, empfinde ich auch nicht grundsätzlich als parasitär.\nAbgesehen davon mal ganz direkt: Welche Designprobleme? Ich sehe ja gar kein großartiges Designproblem, das ich loswerden müsste. Ich wollte nur verschiedene Möglichkeiten ausloten und schauen, ob ich etwas übersehen habe.\nBeitrag von Spiele Programmierer » 07.02.2016, 20:06\nUnd die Daten an bestimmten Stellen von der Logik zu trennen\nDas widerspricht meines Erachtens der Idee der Objektorientierung und Kapselung.\nSchließlich soll die Datenrepräsentation und Funktionsweise in der Kapselung von außen nicht erkennbar sein.\nKlassen im Sinne der Objektorientierung sind mehr als Strukturen in C.\nSowohl "WorldDataStorage" als auch einen "WorldDataStorageManager" zu haben wirkt für mich sehr seltsam.\nWarum muss man den "Storage" "managen". Warum kann sie das nicht selbst tun. Wenn es eine "World" gibt, kann die doch außerdem einfach die Daten direkt besitzen. Es klingt weder so, als ob man die Klasse irgendwo anders brauchen kann, noch so, als ob sie selbst sinnvoll Aufgaben übernehmen kann.\nDown Casts halte ich auch für gefährlich und zu vermeiden. Dot hat es schon schön dargelegt. Ich würde zwar nicht so weit gehen und sagen, dass man sie immer (auf eine sinnvolle Weise) vermeiden kann, aber doch sehr häufig. Das sollte man deswegen, weil der Typ die "Kompetenzen" angibt sollte, die das Objekt hat. Wenn an einer Stelle mehr "Kompetenzen" benötigt werden als eigentlich angegeben, ist das ein Problem - ein Designproblem. Ganz konkret kann das dazu führen, dass Laufzeitfehler bzw. Undefined Behaviour ausgelöst werden, die andernfalls zur Compile-Zeit aufgefallen wäre. Außerdem verschlechtert es die Verständlichkeit und Dokumenation des Codes an der Schnittstelle selbst, wenn ein Objekt gecastet werden muss, damit es wie notwendig verwendet werden kann. Das es in einem anderen Typ gedowncastet werden muss bzw. kann steht schließlich nicht im Code der Schnittstelle.\nAndernfalls könnte man doch auch einfach void* verwenden? Hmm? Warum denn nicht, ist schließlich auch eine Möglichkeit, oder?\nDesignprobleme? Achwas - bestimmt hypothetische Bedenken. ;)\nUnd ich habe auch tatsächlich das Gefühl, dass sich die Entwicklungen von Bibliotheken z.B. in C++ immer sehr stark um sich selbst drehen.\nIch weiß gerade nicht, was du damit meinst.\nHört sich an, als ob in Java mittels Reflection fremde Bibliotheken automatisch erkannt und verwendet würden???\nZuletzt geändert von Spiele Programmierer am 07.02.2016, 22:01, insgesamt 1-mal geändert.\nBeitrag von Chromanoid » 07.02.2016, 21:30\nSpiele Programmierer hat geschrieben:\nIch weiß gerade nicht, was du damit meinst. Hört sich an, als ob in Java werden mittels Reflection fremde Bibliotheken automatisch erkannt und verwendet würden???\nJa, so in der Art kommt das häufig vor. Insbesondere bei Serversystemen ist das sehr praktisch. Stell Dir vor, Du programmierst ein paar Klassen steckst sie in ein Modul (JAR/DLL) und schiebst das Modul in einen Application Server. Der Server lädt Deine Server-Klassen automatisch, exponiert sie, schiebt Dir per Reflection die richtige extern konfigurierte Datenbankverbindung in die Request-Behandlungsmethode usw. Genauso gibt es zahlreiche Bibliotheken, die z.B. dein POJO anhand der Eigenschaften in ein Template zur Ausgabe füllen usw. MVVM und XAML lassen grüßen. Auch Bibliotheken, die Objekte serialisieren/deserialisieren, haben dank Reflection trotz dynamischer Verlinkung ein leichtes Spiel.\nDas lässt sich alles auch mit C++ erledigen, aber eben nicht so einfach und schon gar nicht, wenn man das ganze auch noch dynamisch linken will.\nEine noch viel größere Rolle spielt bei der Integrierbarkeit von Bibliotheken in Java und Co. sicher das dynamische Laden des Codes und die damit einhergehende Einfachheit Bibliotheken mit ihrem gesamten Objektmodell ohne zusätzliches Wissen zu verknüpfen. Aber trotzdem glaube ich, dass das ganze erst so richtig Fahrt aufnimmt, wenn zur Laufzeit die Datenströme aus den Bibliotheken anhand von Reflection gezielter verarbeitet werden können. Reflection und dynamisches Laden führt, wenn man nicht aufpasst, natürlich auch zu äußerst gruseligen und bedrohlichen Deserialisierungs-Exploits. Alles hat eben sein Für und Wider.\nNaja aber das ist wohl alles offtopic. Ganz interessant finde ich trotzdem, dass man wahrscheinlich in den meisten Spiele-Engines Ansätze für Reflection finden kann. Sobald fremde Entwickler Funktionalität hinzufügen sollen, die nicht Teil eines großen Ganzen ist, und man die Resultate dieser Entwicklung trotzdem so verarbeiten möchte, kommt es natürlicherweise zu Implementierungen von Reflection oder Reflection-artigen Systemen. In der Unreal Engine gibt es z.B. das UObject von dem AFAIK alle Gameplay-Sachen erben, das bringt natürlich gleich auch Reflection mit. Der Editor kann so die Eigenschaften anzeigen, der Netzwerkcode die richtigen Felder in der richtigen Häufigkeit an die anderen Mitspieler übermitteln usw.\nBeitrag von smurfer » 07.02.2016, 22:35\nVom Gefühl her sehe ich grundsätzlich keinen Widerspruch, bzw. kann mir durchaus vorstellen, an geeigneten Stellen stärker objektorientiert und an anderen modularer vorzugehen. Vielleicht passt hier auch das Wort Kapselung nicht. Allerdings möchte ich Dir auch nicht grundsätzlich widersprechen, da ich nicht genau weiß, ob ich dich richtig verstanden habe und mit auch mit den Begrifflichkeiten nicht ganz sicher bin.\nSpiele Programmierer hat geschrieben: Klassen im Sinne der Objektorientierung sind mehr als Strukturen in C.\nJa, das ist wohl wahr. Siehe oben, so ganz verstehe ich nicht, worauf du mit der Anmerkung hinaus möchtest. Gebe ich dir das Gefühl, eine Klasse sei für mich nur eine C-Struktur?\nSpiele Programmierer hat geschrieben: Sowohl "WorldDataStorage" als auch einen "WorldDataStorageManager" zu haben wirkt für mich sehr seltsam.\nEinverstanden, den Manager braucht es nicht.\nSpiele Programmierer hat geschrieben: Down Casts halte ich auch für gefährlich und zu vermeiden. Dot hat es schon schön dargelegt. Ich würde zwar nicht so weit gehen und sagen, dass man sie immer (auf eine sinnvolle Weise) vermeiden kann, aber doch sehr häufig. Das sollte man deswegen, weil der Typ die "Kompetenzen" angibt sollte, die das Objekt hat. Wenn an einer Stelle mehr "Kompetenzen" benötigt werden als eigentlich angegeben, ist das ein Problem - ein Designproblem. Ganz konkret kann das dazu führen, dass Laufzeitfehler bzw. Undefined Behaviour ausgelöst werden, die andernfalls zur Compile-Zeit aufgefallen wäre. Außerdem verschlechtert es die Verständlichkeit und Dokumenation des Codes an der Schnittstelle selbst, wenn ein Objekt gecastet werden muss, damit es wie notwendig verwendet werden kann. Das es in einem anderen Typ gedowncastet werden muss bzw. kann steht schließlich nicht im Code der Schnittstelle.\nAuch das ist ja grundsätzlich nicht verkehrt, es ist gut wenn man nicht downcasten muss. Es kann zu Problemen führen wenn wahrlos eingesetzt. Aber nochmal zum konkreten Beispiel der Kollisionsabfrage. Es handelt sich um einen klar definierten, in sich geschlossenen Bereich, in dem jegliches Vorwissen gegben ist. Die "Kompetenz" ist nun nicht c++-sprachlich durch die Klasse also solche gegeben, sondern über das Interface und den mitgegebenen Typ. Wo ist das Problem?\nOb die Lesbarkeit bei double dispatch nun größer ist als bei einer einzelnen Kollisionsklasse mit wohldefinierten Downcasts wage ich zu bezweifeln.\nSpiele Programmierer hat geschrieben: Andernfalls könnte man doch auch einfach void* verwenden? Hmm? Warum denn nicht, ist schließlich auch eine Möglichkeit, oder?\nWarum ins Lächerliche ziehen? Ich spreche niemandem ab, dass double dispatch und Vermeiden von Downcasts ein gutes Design ist. Ich sehe nur ernsthaft in klar abgesteckten Szenarien wie den angesprochenen nicht den dogmatisch erwähnten Designfehler, wenn es mir an anderer Stelle Vorteile verschafft und die Handhabung vereinfacht.\nBeitrag von Alexander Kornrumpf » 07.02.2016, 22:55\nsmurfer hat geschrieben: Hm, das finde ich nicht naiv, sondern eher ein wenig provokant und auch pauschal formuliert -- die Begriffe hast Du schon sehr plakativ rausgezogen.\nProvozieren wollte ich wenn überhaupt nur dazu es mal ganz anders zu betrachten.\nNenn es nicht Manager und belass es in irgendeiner einzelnen Methode/Funktion und schon ist es nur noch eine Schleife, die durchlaufen wird -- irgendwer muss es machen. Und die Daten an bestimmten Stellen von der Logik zu trennen, empfinde ich auch nicht grundsätzlich als parasitär.\nKlingt sinnvoll. Aber wieso muss innerhalb der Schleife der Typ unterschieden werden? Wenn verschiedene Typen verschieden behandelt werden wollen, täten es auch mehrere Schleifen über jeweils homogene Daten?!\nIch bin nicht ganz sicher, worüber wir dann hier diskutieren. Wenn du Code hast, der für dich funktioniert, würde ich den nicht anfassen, bevor nicht irgendein Problem auftaucht, was das nötig machen würde.\nBeitrag von Spiele Programmierer » 07.02.2016, 23:24\nDie Klasse "WorldDataStorage" schien irgendetwas zu speichern ("Storage") also Daten zu halten ohne selbst für die Verwaltung zuständig zu sein. Deshalb gab es ja den "Manager". Analog zu einer C-Struktur: Variablen hier, freie Funktionen dort.\nAber scheinbar sind wir uns ja eh einig man die "Manager"-Klasse nicht braucht.\nBeitrag von smurfer » 08.02.2016, 00:40\nSpiele Programmierer hat geschrieben: Die Klasse "WorldDataStorage" schien irgendetwas zu speichern ("Storage") also Daten zu halten ohne selbst für die Verwaltung zuständig zu sein. Deshalb gab es ja den "Manager". Analog zu einer C-Struktur: Variablen hier, freie Funktionen dort. Aber scheinbar sind wir uns ja eh einig man die "Manager"-Klasse nicht braucht.\nAh verstehe, dann ist für mich der Hinweis nachvollziehbar. Und ja, wie vorgeschlagen sollte WorldDataStorage Daten halten und auch verwalten.\nAlexander hat geschrieben: Wenn verschiedene Typen verschieden behandelt werden wollen, täten es auch mehrere Schleifen über jeweils homogene Daten?!\nJa, genau. Es ist für mich einfach wieder ein Abwägen des Für und Widers, da sowieso ein gemeinsames Interface besteht und ich es so an manchen Stellen für mich vereinfachen kann. Wie schon weiter vorne im Thread beschrieben, trenne ich aber genauso in mehrere Schleifen auf, wenn die Unterschiede zu groß sind oder ein gemeinsames, womöglich umständliches Interface erst erstellt werden müsste. Darauf läuft es im Kern für mich auch beim Kollisionsbeispiel hinaus: ein Abwägen von elegantem Design gegen die für mich praktikablere Lösung mit dem diskutierten Risiko des vermeintlich schlechten oder als widersprüchlich empfundenen Designs.\nAlexander hat geschrieben: Ich bin nicht ganz sicher, worüber wir dann hier diskutieren. Wenn du Code hast, der für dich funktioniert, würde ich den nicht anfassen, bevor nicht irgendein Problem auftaucht, was das nötig machen würde.\nKeine Widerrede, der Thread ist ja letztlich in zwei Richtungen verlaufen. Zum einen die konkrete Diskussion über den Charakter von Downcasts bzgl. des Architekturdesigns, zum anderen die ursprüngliche, für mich eigentlich schon beantwortete Frage nach dem sinnvollsten Vorgehen und etwaigen weiteren Optionen, wenn ein WorldDataStorage nicht nur Daten verwalten, sondern auch erzeugen und nach außen bringen soll.


Ich bin genervt, weil... 5 - November 2017 BabyClub - BabyCenter\nAntworten (873)Einen Kommentar schreiben\nIch mit Emma im Krankenhaus bin\n...diese Krankheiten nerven... nicht eine Woche ist das Kind gesund.. erst dick erkältet, dann Magen-Darm, jetzt Bindehautentzündung... Ich verstehe ja, dass die Kleinen ihr Immunsystem erst aufbauen müssen... muss es denn aber alles innerhalb von 15 Tagen passieren? Ich brauch eine Pause... Ich will nicht schon wieder in die Notaufnahme...\nFühl dich gedrückt und gute Besserung deiner Maus.\nAntwort an 7JahreWunsch\nRennende Schwestern über den Flur\nich schicke dir ganz viel kraft und stärke und denk an euch.\nOh nein... gute Besserung\n... Meine Schwiegermutter gerade meinen Mann zu ihrem Geburtstag nächste Woche eingeladen hat. NUR ihn. Nachdem sie von MEINEM Geburtstags-Mittagessen heute aufgestanden ist. Ich hasse es, dass das Schwiegermutter-Klischee auf uns voll zutrifft\nIn dem Fall: erstmal Herzlichen Glückwunsch zum Geburtstag ?!\nVersuche ruhig zu bleiben und gehe erst mal zum Arzt morgen und lasse dich durchchecken. Er kann dich sicher beruhigen. Denk an dich u schicke dir ganz liebe Grüße. Versuche deinen Tag trotzdem zu genießen.\nOh Nein gute Besserung und schnelle Heimfahrt wünsche ich euch! Magst du berichten was genau abgelaufen ist?\nAntwort an Radieschen2017\nWas macht dein Mann jetzt?


Ecuador: Staatsmittel zur Verhinderung von Gewalt gegen Frauen gekürzt | hpd\nEcuador, Frauenrechte, Finanzen\nSeit November 2017 hat das im Westen Südamerikas gelegene Ecuador ein Gesetz zur Verhinderung von Gewalt gegen Frauen. Bei zehntausenden von Fällen von Gewalt und Mord an Frauen jährlich ein dringend notwendiger Schritt. Erste Hoffnungsschimmer jedoch sind nach dem ersten Jahr seit Inkrafttreten der Enttäuschung gewichen. Das Gesetz wird nicht angewendet. Hinzu kommt, dass die Ausgaben für Kampagnen zur Gewaltprävention um 92 Prozent gekürzt wurden.\nEcuador ist uns üblicherweise als Lieferant von Bananen und Blumen bekannt. Vom Umfang der Gewalt gegen Frauen bekommen wir in Deutschland weniger mit. Bei nur knapp 17 Millionen EinwohnerInnen hatte Ecuador im Jahre 2018 56 Femizide zu verzeichnen. Dazu kamen noch angezeigt 4.389 Fälle physischer Gewalt, 44.823 Fälle psychischer Gewalt und 202 Fälle sexueller Gewalt gegen Frauen oder enge Familienmitglieder (zum Beispiel die eigenen Kinder). Wie eltelégrafo berichtet, wurden zwischen Januar 2014 und Februar 2019 877 Kinder zu Waisen, weil der Vater die Mutter getötet hatte und der Vater daraufhin inhaftiert wurde.\nUm dem entgegenzutreten, brachte Präsident Lenín Moreno bereits im August 2017 einen Entwurf zu einem neuen Gesetz in die Nationalversammlung ein, wo es im November 2017 die Zustimmung erhielt. Schließlich trat die "Ley Orgánica para la Prevención y Erradicación de la Violencia contra las Mujeres" (zu deutsch etwa "Gesetz zur Prävention und Beendigung der Gewalt gegen Frauen") in Kraft. Das Gesetz umfasst unter anderem, dass Frauen, die Hilfe suchen, nicht kriminalisiert oder verdächtigt werden, nicht noch einmal durch Verzögerungen im Handlungsablauf Opfer von Gewalt werden, ein Register zur Erfassung und Auswertung von gewalttätigen Übergriffen, den Wunsch zur Veränderung von Strukturen, die Gewalt gegen Frauen begünstigen, sowie einen Notfall-Plan, wenn sich eine Frau hilfesuchend an Behörden wendet. Der Notfall-Plan sieht vor, dass eine bedrohte Frau von der Polizei begleitet ihre Dokumente und wichtigsten Besitztümer aus ihrer Wohnung holen kann. Dann wird sie sicher untergebracht und dem Angreifer ein Kontaktverbot auferlegt.\nNach Informationen von expreso hat sich jedoch nichts getan. Das Gesetz wird nicht umgesetzt. Erschwerend kommt hinzu, dass das Budget für Kampagnen zur Gewaltprävention und Opfer-Betreuung massiv gekürzt wurde. Von ursprünglich 8.676.624 Dollar (etwa 7,6 Millionen Euro) sind nur noch 657.646 Dollar (etwa 580.000 Euro) übrig geblieben. Die verschiedenen zuständigen Ministerien schieben Verantwortungen hin und her und verlangen Kostenvoranschläge für einzelne Punkte des Gesetzes, die in ihre Zuständigkeiten fallen. Auch bei der Versprochenen Hilfe für die 877 Waisen hat sich bisher nichts getan.\nWährend die Kommission für ökonomische Entwicklung der Nationalversammlung die 92-prozentige Mittelkürzung als Optimierungsprozess bezeichnet, gehen tausende AktivistInnen und Betroffene gegen die Gewalt auf die Straße. Sie wollen die alltägliche Brutalität, den Frauenhass und den Machismus nicht mehr akzeptieren.\nHans Trutnau am 1. März 2019 - 23:59 Permanenter Link\n"Das Gesetz wird nicht umgesetzt."\nTraurig; kenn' ich aber...


Kabel Deutschland - telecom-handel.de\n1999 aus der Telekom ausgegliedert ist Kabel Deutschland auch heute noch der nach Kundenzahlen größte Kabelnetzbetreiber. Mittlerweile ist das Unternehmen eine hundertprozentige Vodafone-Tochter.\nKabel Deutschland bietet neben klassischer TV-Versorgung seit Jahren auch Video on Demand sowie Breitband-Internet an. Der Konzern war immer wieder Kandidat für Übernahmen und hat seinerseits selbst versucht, diverse Konkurrenten zu übernehmen, so auch Tele Columbus. Diese Vorhaben scheiterten allerdings immer am Veto der Wettbewerbshüter.\nHighspeed-Surfen im Internet: Vodafone bietet in mittlerweile 100 Städten über sein Kabelnetz Spitzengeschwindigkeiten von bis zu 500 Mbit/s an. weiterlesen\nVodafone gibt Gas: Über sein Kabelnetz will der Düsseldorfer ITK-Anbieter schon bald Geschwindigkeiten von bis zu 500 Megabit pro Sekunde anbieten. weiterlesen\nVodafone Kabel Deutschland verunsichert Kunden\nMit einem Werbebrief, der stark den Eindruck eines offiziellen Behördenschreibens erweckt, will Vodafone Kabel Deutschland auf die DVB-T-Abschaltung hinweisen und Kunden zu sich locken. weiterlesen\nVodafone tauscht zwei Geschäftsführer aus\nVeränderungen in der Geschäftsführung bei Vodafone Deutschland: Philipp Lacor und Robert Hackl geben ihre Ämter an Alexander Saul und Gerhard Mack ab. weiterlesen\nWährend die Teilnehmerzahlen bei Vodafone sowohl im Mobilfunk- als auch im Breitbandsegment steigen, ist der Service-Umsatz des Unternehmens weiterhin rückläufig. weiterlesen\nVodafone-Chef Ametsreiter: "Können noch nicht zufrieden sein"\nEnttäuschende Geschäftszahlen bei Vodafone: Im vergangenen Quartal reduzierte sich der Serviceumsatz im Mobilfunk um 1,8 Prozent, und auch im Festnetz-Segment stagnieren die Erlöse. weiterlesen\nVodafone/Kabel Deutschland: Schwere Fehler in WLAN-Kabelroutern\nSicherheitslücken in der Firmware von Kabelroutern des Betreibers Vodafone/Kabel Deutschland ermöglichen Angriffe über WLAN, berichtet das c't Magazin. Betroffen seien Modelle von CBN und Hitron. weiterlesen\nMarke wird eingestellt\nKabel Deutschland verschwindet vom Markt\nAb September wird die Marke Kabel Deutschland sukzessive durch Vodafone ersetzt - sowohl auf den Kundenrechnungen, als auch am PoS. Nutzer des Mobilfunkangebots werden zu Vodafone umgezogen. weiterlesen\nMehr Support für Händler\nAetka und Vodafone legen neues Partnerprogramm auf\nMit einem neuen Fachhandelsprogramm wollen Aetka und Vodafone ihre Vertriebspartner bei der Vermarktung von Vodafone-, Otelo- und Kabel-Deutschland-Verträgen unterstützen. weiterlesen\nbid 412803 | server web2


Tigers am Berner Cup - SCL Tigers\nTigers am Berner Cup\nDie SCL Tigers treffen in dieser Woche anlässlich des Berner Cups 2017 auf starke berner Eishockey-Teams. Heute Dienstag spielen die Tigers gegen den EHC Biel bevor dann am Donnerstag der amtierende Meister SC Bern auf die Emmentaler wartet.\nFür das Team um Headcoach Heinz Ehlers geht es nach den Vorbereitungsspielen in Le Sentier bereits heute wieder weiter. Der letztjährige NLB-Meister SC Langenthal lädt zur erstmaligen Austragung des Berner Cups ein. Die SCL Tigers eröffnen das Turnier um 19.30 Uhr gegen den EHC Biel. Alle Informationen zum Berner Cup gibt es hier.\nSpielberechtigung für die Tigers\nOrdentliche Generalversammlung der SCL Tigers AG 2017


Polizei nimmt Einbrecher am Tage fest\nALTES LAND/ STADE. Dank des Hinweises eines couragierten Zeugen hat die Polizei im Alten Land zwei Tages-Wohnungseinbrecher festnehmen können.\nAm Montag war es zu mindestens drei Wohnungseinbrüchen in Bützfleth in der Alten Chaussee und Hollern-Twielenfleth im Speersort und in Siebenhöfen gekommen, die wohl auf das Konto der Tatverdächtigen gehen. Bei den drei Taten waren jeweils Fenster aufgehebelt und nach anschließender Durchsuchung der Räume Schmuck, Silberbesteck, mehrere Laptops und Digitalkameras erbeutet worden.\nEin aufmerksamer 72-jähriger Anwohner aus Hollern-Twielenfleth hatte gegen 11.20 Uhr zwei verdächtige Personen an einem Nachbarhaus beobachtet. Er merkte sich das Kennzeichen ihres Autos und alarmierte dann sofort die Polizei. Eingesetzte Beamte aus Buxtehude konnten das Fahrzeug kurze Zeit später an der Klappbrücke über die Este in Cranz stoppen und kontrollieren.\nBei der Durchsuchung des Fahrzeugs wurde festgestellt, dass die beiden Serben im Alter von 34 und 39 Jahren aus Schinkel in Schleswig-Holstein passendes Diebesgut dabei hatten, das den drei Einbrüchen zuzuordnen ist. Zusätzlich waren sie mit einem Fahrzeug unterwegs, das derzeit nicht für den Straßenverkehr zugelassen ist.\nDie beiden Männer wurden festgenommen und in den Stader Polizeigewahrsam eingeliefert, sie mussten sich einer erkennungsdienstlichen Behandlung unterziehen.\nNach dem Stand der Ermittlungen der Polizei beantragte die Staatsanwaltschaft Stade noch am Dienstag beim Amtsgericht Stade einen Untersuchungshaftbefehl für die beiden mutmaßlichen Einbrecher, die sich nach dem derzeitigen Erkenntnisstand illegal in Deutschland aufhalten.\nOb sie für weitere Taten in Frage kommen, wird derzeit noch geprüft. Die Ermittlungen dauern weiter an.


Stille Nacht | diandras geschichtenquelle\nNovember 26, 2020 November 22, 2020 / diandralinnemann\nFoto von Roberto Nickson, gefunden auf Unsplash\nWahrscheinlich habt ihr euch schon damit auseinandergesetzt – die Chancen, dass wir ein ganz normales stressiges Weihnachtsfest mit allen Verwandten und Freunden feiern, bei dem alle zuviel essen und danach stöhnend auf dem Sofa liegen, sind dieses Jahr eher gering.\nEinige Leute sind darüber bestimmt zu Tode betrübt, für andere ist das eine Erleichterung. Familie ist nichts für Feiglinge, da sind wir uns bestimmt einig.\nAber was machen diejenigen, die schon wissen, dass sie ihre Familie vermissen werden? Oder dass die Kinder untröstlich sind, wenn der Besuch bei den Großeltern o.ä. ausfallen muss?\nGlücklicherweise gibt es einige moderne Lösungen – Videotelefonie, Gruppenchats, lustige Memes und Videos, die man teilen kann. Für andere Dinge – Weihnachtsmarktbesuche, Knobelmärkte, Lichterfeste – gibt es keinen guten Ersatz. Deswegen, so scheint es mir wenigstens, haben auch die muffeligsten Weihnachtsmuffel dieses Jahr ein erhöhtes Bedürfnis nach Deko, Filmen und Musik passend zur Jahreszeit.\nZum Glück gibt es einige Dinge, die man trotzdem tun kann, um den anderen Leuten nahe zu sein. Man kann Karten schicken oder Kekspäckchen, per Post wichteln oder sich coronakonform zu winterlichen Spaziergängen treffen, um die Beleuchtung der Nachbarschaft zu bewundern.\nWas gibt es noch für Möglichkeiten, dieses Jahr die Weihnachtszeit bestmöglich zu gestalten?\n← Erkältungszeit – ganz schlecht für Hörbücher\nGedanken eines Katers … →\nEin Gedanke zu “Stille Nacht”\nNovember 26, 2020 um 08:52\nAuf alle Fälle gemütlich machen :-)


Youtube - medpex Blog - Seite 2\nJeder braucht ein Wohlfühlerlebnis! (mit Videos)\nmedpex ist bekanntlich die Wohlfühl-Apotheke – denn neben dem Vollsortiment an Arzneimitteln führen wir auch ein großes Sortiment an hochwertigen Kosmetik und Wellness-Produkten. Somit haben wir für jeden das passende Produkt und das Shoppen wird zum Erlebnis! Denn man muss nicht erst krank werden, um bei medpex zu bestellen. Das sehen auch die Protagonisten in unseren Clips der Serie „Jeder braucht ein Wohlfühlerlebnis“ so – schaut selbst, wer alles dabei ist!\nDieser Beitrag wurde am 14. Januar 2015 von medpex Versandapotheke in medpex veröffentlicht. Schlagworte: medpexTV, Wohlfühlerlebnis, Youtube.\nmedpexTV: Neues Video zu VICHY NORMADERM online\nKristyMalou stellt in ihrem neuen Video auf medpexTV drei Gesichtspflegeprodukte von VICHY NORMADERM vor. Unseren Kanal kann man hier abonnieren. Viel Spaß beim Anschauen!\nDieser Beitrag wurde am 12. August 2013 von medpex Versandapotheke in Pflege veröffentlicht. Schlagworte: Apothekenkosmetik, Kosmetik, KristyMalou, medpexTV, Produkttest, Vichy, Youtube.


Wellness-Massagen - Services | Wemafit Fabian Sprinz\nDu suchst Entspannung, möchtest die Seele baumeln lassen und vom Alltag abschalten?\nDann sind meine Wellness-Massagen genau das Richtige für Dich!\nDeine 60 oder 90 minütige Auszeit!\nZu Beginn starten wir mit der Körperrückseite (Füße, Waden, Oberschenkel, Rücken, Nacken), bevor wir uns der Körpervorderseite widmen (Dekolleté, Arme, Hände, Bauch, Beine - auf Wunsch inklusive Kopf und/oder Gesicht).\nSelbstverständlich bestimmst Du! Möchtest Du an einer der genannten Körperregionen nicht massiert werden, so dehnen wir die Massage an einer anderen Körperstelle aus. Ziel ist Deine absolute Entspannung, sowie das Du dich durchgehend wohlfühlst!\nDeine 30 Minuten Entspannung!\nWährend der Teilkörper-Massage widmen wir uns intensiv einer gewünschten Körperregion, sowie der nah umliegenden Muskulatur.\n- Füße / Beine\n- Dekolleté / Gesicht\nDeine 30, 60 oder 90 Minuten Aroma-Therapie!\nJede Teil- und Ganzkörper-Massage kannst Du auf Wunsch durch ein Aroma-Öl deiner Wahl intensivieren.\nVor der Massage erhältst Du dazu eine Auswahl erstklassiger Aroma-Öle, welche höchster Qualität entsprechen und einen hervorragenden Duft besitzen.\nWähle Deinen Lieblings-Duft aus und sinke noch tiefer in das Erlebnis und die Entspannung ein.\nDu bist auf der Suche nach Fitness-Equipment, oder möchtest Dir eine eigene Massage-Pistole zulegen?\nBei meinem Partner BODIFY.STORE erhältst Du mit dem Code WEMAFIT satte 33% Rabatt auf jede Massage-Pistole.\nNichts ruft mehr Unbehagen hervor, als das Unbekannte!\nAus diesem Grund liegt es mir besonders am Herzen, Dich vor jeder Anwendung durch ein intensives Beratungsgespräch erstklassig zu informieren!\nSo ist sichergestellt, dass Du jederzeit weißt, was geschieht.\nDieses Gespräch inkludiert ebenfalls die Vorstellung des Massage-Raums, individuelle Absprachen zur Massage, sowie generelle Informationen zum Ablauf.\nWir alle haben einen vollen Terminkalender und wenig Zeit. Daher optimiere ich ständig mein Angebot, um meinen Kunden das Leben zu erleichtern. Über meinen Online-Shop kannst Du ganz bequem bei mir einkaufen. Ganz egal, ob von zu Hause oder unterwegs, mitten in der Nacht oder ganz früh morgens - mit nur einem Klick, wann immer es Dir passt.\nDienstleistungsgutscheine einkaufenWertgutscheine einkaufen\nBitte beachte, dass es sich bei meinen Wellness-Massagen um keine ärztlichen oder therapeutischen Anwendungen handelt und diese ausschließlich an gesunden Menschen praktiziert werden. Mein Angebot gilt ausschließlich Selbstzahlern (keine Rezepte).


…Guten Tag, als freiberufliche Mediendesignerin biete ich Dienstleistungen in den Bereichen Motion Design und Video Editing an. Erfahrung habe ich mit Grafikanimationen aller Art (2D/3D), Imagevideos, Eventdokumentationen, Interviews, Erklärvideos und Social Media…\nMedien- & Motion Design | Print, Digital und Video\n- Illustration - Motion Design - Live-Produktion Ich beherrsche bereits viele gängige Adobe Programme und arbeite mich gerne in weitere ein. Einige Arbeitsproben, sowie die Ergebnisse meiner Bachelorarbeit mit dem Schwerpunkt Erklärvideos, können auf meiner Website\nErklärfilme und E-Learnings von learninghero.de\n…etwas Wichtiges zu sagen? Erklärvideos Du hast ein Produkt oder einfach etwas Wichtiges zu sagen? Dann ist ein Erklärfilm genau das Richtige für Dich. Dein neuer Film erklärt Deiner Zielgruppe genau, was Du zu erzählen hast und setzt Dein Produkt in Szene. E…\nLearning Hero | E-Learning & Erklärfilme\n11.02.2019 (aktualisiert 21.04.2020 )\n…Eventfilme # Produktfilme # Erklärvideos # Demo- und Showreels MÖGLICHE AUSGANGSSITUATIONEN # Video- oder Bildmaterial ist vorhanden # Video- oder Bildmaterial soll zusätzlich erzeugt werden WEITERE OPTIONEN # Werte Ermittlung des Unternehmens # Zielgruppen…\n…selbstverständlich. Mein Faible für Illustration würde ich gerne weiter ausbauen, etwa mit Titelgestaltungen, Illustrationen für Geschichten oder Artikel in Zeitschriften, Kalender, Hintergrundgestaltungen für das web, Spiele oder Erklärvideos. Als aufgeschlossener…\nIndesign Corporate Design\n18.05.2015 (aktualisiert 28.01.2019 )\n…Für narrative Filme, Erklärvideos, Webanimationen oder als Basis für Apps und E-Books… in 2D mit Anime Studio Pro/ Moho oder After Effects. - Durch Veränderung im Filmbild. Mit visuellen Effekten, Compositing, Rotoscoping, Retusche und Motion Design… in After…


Macht man sich strafbar, wenn man ein Foto von einem Promi, Star, Schauspielerin....als Profilbild einstellt?? danke!\nDarf man als Profielbild das Bild eines anderen benutzen?\nIch habe vor kurzem eine Anonyme Chatting App gefunden. Jetzt wollte ich wissen ob ich dort als Profielbild das Bild einer Anderen Person benutzen darf? Das Bild muss ja nicht aus dem Internet sein sondern zB einfach nur jemand unbekanntes aus einer Zeitschrift abfotografiert oder ähnliches?


Fachprogramm über die Arbeit von morgen - Gewi\nStartseite Newscenter Fachprogramm über die Arbeit von morgen\nDas neue Fachprogramm des BMBF will in ausgewählten Fachbereichen einen im internationalen Maßstab hohen Leistungsstand von Forschung und Entwicklung gewährleisten.\nDie drei Förderbereiche sind:\nForschung für die Produktion von morgen: neuen Produktionstechnologien zur Umstellung der heute kontinuierlichen Produktion auf eine flexible, dem Markt, der Umwelt und der Gesellschaft angepasste Produktion.\nForschung für Dienstleistung: Schaffung von Grundlagen sowie neuer Methoden zur Gestaltung und zum Management innovativer Dienstleistungssysteme in Wirtschaft und Gesellschaft.\nArbeiten – Lernen – Kompetenzen entwickeln: Sichern der Beschäftigungsfähigkeit sowie Stärken und Erhalten der Innovationsfähigkeit vor dem Hintergrund der demografischen Entwicklung.\nDie Förderung erfolgt im Rahmen einzelner, themenspezifischer Ausschreibungen. Seit 2015 sind regelmäßig neue Bekanntmachungen für Förderwettbewerbe im Rahmen dieses Fachprogramms erschienen u. a.:\nKompetenz Montage – kollaborativ und wandlungsfähig (KoMo), 10.04.2015\nAdditive Fertigung – Individualisierte Produkte, komplexe Massenprodukte, innovative Materialien (ProMat_3D), 15.04.2015\nTechnikbasierte Dienstleistungssysteme, 09.11.2015\nAntragsteller: Unternehmen, Forschungseinrichtungen, Vereine\nEinreichungsfrist: Nähere Informationen werden im Rahmen einzelner Bekanntmachungen veröffentlicht.


ouverture: Weimarer Bläserquintett (Genuin)\n"Ein Konzerterlebnis", nennt sich diese CD im Untertitel - und sie hält, was sie damit verspricht. Als ginge es darum, jeden Zweifel auszuräumen, stellen Tomo Andreas Jäckle, Flöte, Frederike Timmermann, Oboe, Sebastian Lambertz, Klarinette, Stephan Schottstädt, Horn und Jacob Karwath, Fagott, gleich im ersten Stück ihre handwerkliche Brillanz unter Beweis. Die fünf Musiker präsentieren die Ouvertüre zu Mozarts Oper Die Zauberflöte in einer Bearbeitung von Joachim Linckelmann, dass es ein Vergnügen ist, ihnen dabei zuzuhören. Hier wird nicht nur überaus gekonnt, sondern obendrein auch noch mit Humor und mit viel Sinn für Klangfarben musiziert.\nEs folgt das Bläserquintett von Pavel Haas (1899 bis 1944) aus dem Jahre 1929, ein von Melancholie überschattetes Werk, das den mährischen Komponisten seinerzeit europaweit bekannt machte. Doch sein Ruhm hat den Schüler von Leos Janácek nicht gerettet; er galt als "Halbjude" und wurde in Auschwitz umgebracht.\nFranz Danzi (1763 bis 1826) schuf neun Bläserquintette für die Musi- ker um Antonín Reicha, den Begründer des Genres. Für diese CD hat das Weimarer Ensemble eines davon ausgewählt, das sich als elegante Unterhaltungsmusik erweist. Im Kontrast dazu steht das Bläserquin- tett von Elliot Carter, Jahrgang 1908, das dieser 1948 komponiert hat. Es zeigt die fünf Instrumente als mehr oder minder kapriziöse, manchmal auch geschwätzige Individualisten, die es dennoch letzten Endes schaffen, gemeinsam Kammermusik zu machen. Die CD endet romantisch mit einem Werk des berühmten Flötisten Paul Taffanel (1844 bis 1908).\nLabels: Carter, Danzi, Genuin Classics, Haas, Mozart, Taffanel, Weimarer Bläserquintett


nutella# Foto & Bild | archiv - kritik am bild, kritik am bild, motive Bilder auf fotocommunity\nnutella# Foto & Bild | archiv - kritik am bild, kritik am bild, motive Bilder auf fotocommunity nutella# Foto & Bild von paulinaH ᐅ Das Foto jetzt kostenlos bei fotocommunity.de anschauen & bewerten. Entdecke hier weitere Bilder.\ni can not live without it.\nManuela Kral (pippics) 16. Februar 2011, 12:13\nWenn du nur das Glas an sich fotografieren wolltest, hast du ja schon die richtigen Tipps bekommen.\nWenn du uns aber zeigen wolltest, wie sehr du von Nutella "abhängig" bist, ist das Motiv so nicht wirklich aussagekräftig. Ich weiß, das ist dann schon gehobene Fotografie und zuerst muss man mal die Technik beherrschen. Aber mal als Anregung für "später": um dein Verlangen auszudrücken, hättest du ein Brot, ganz dick bestrichen und ein leeres Glas daneben abbilden können. Oder dich selbst mit schokoverschmiertem Mund und leerem Glas in der Hand usw.\nJedenfalls bist du schon mal richtig, wenn du ein Motiv wählst, zu dem du einen starken Bezug hast. Da kommen dann auch automatisch die besten Ideen.\nGanz wichtig jedenfalls für den Anfang: immer auf den Hintergrund und die Umgebung achten. Wenn du vor der Aufnahme durch den Sucher (oder aufs Display) schaust, schau dir wirklich jede Ecke und alles an, was du siehst.\nViel Spaß beim Experimentieren - und Nutella Schlecken! :-)\nMartant 12. Februar 2011, 0:23\nInhaltlich hast Du Deine Vorliebe für Nutella gut dokumentiert. Fotografisch wäre tatsächlich noch viel mehr drin gewesen.\nAndreas Kügler 8. Februar 2011, 23:26\nHab grad erst gelesen das du noch sehr jung bist. Wollte dir nicht das Fotographieren vermiesen. Mach ruhig mal ganz viele Fotos und schau sie dir immer wieder an. So kannst du viel lernen. Ach und experimentier mit den Fotoaperat. Versuch mal andere einstellungen (Blende, Belichtungskorektur) dann machst du bald sehr schöhne Bilder.\nSorry für meine harte Kritik!\nAndreas Kügler 8. Februar 2011, 23:21\nblass, Deckel weggeschnitten, komisches Zwielicht, Teller und Stullehne stören. Schärfe ist ok.\nClaus-NDB 1. Februar 2011, 20:31\nda Du das Bild in die Kategorie "Kritik - hart und direkt" gestellt hast, gehe ich davon aus, dass Du auch eine ganz offene Rückäußerung haben willst, um Dich weiter zu entwickeln. Von Schleimerei und Schönreden hast Du ja nichts.\nRespekt übrigens, dass Du Dich mit Deinen 13 Jahren schon auf diese Weise mit Fotografieren beschäftigst.\nMotiv und Hintergrund finde ich leider langweilig und belanglos. Der zu knappe Beschnitt oben wurde schon angesprochen.\nVielleicht wolltest Du aber nur mit der Beleuchtungssituation experimentieren.\nEin großes Problem stellt m.E. die Mischlichtsituation dar.\nEinerseits Tageslicht aus dem Hintergrund, andererseits vermutlich eine Glühbirne im Zimmer. Mit so etwas ist eine Kameras schnell überfordert, da diese Lichtquellen unterschiedliche Farbtemperaturen erzeugen und die Kamera nicht weiß, von welcher sie nun ausgehen soll. Daher stimmt auch der Weißabgleich in Deinem Bild nicht. Die Farben wirken trübe und entsprechen nicht dem, was man in der Wirklichkeit sieht (zumindest auf meinem Bildschirm).\nAußerdem reicht wohl bereits das wenige, aber doch intensivere Tageslicht im Hintergrund, um der Kamera mehr Helligkeit vorzugaukeln, als (insbesondere auf dem Motiv) vorhanden ist. Das versucht die Kamera auszugleichen und hat vermutlich fälschlicherweise eine zu kleine Blende und/oder zu kurze Verschlusszeit gewählt. Dadurch wird das Motiv aber leider zu dunkel.\nVielleicht solltest Du Dir im Web mal Seiten wie diese ansehen:\nDa kann man echt was lernen.\nSuuapinga 1. Februar 2011, 18:12\nLads auf facebook hoch\nJanc Möller 1. Februar 2011, 17:11\nmach doch mal den vorhang auf, dass etwas tageslicht reinkommt :-)\nwico six 1. Februar 2011, 17:02\nRafflor 1. Februar 2011, 17:02\nis das nen witz? :D\nSchwarze Christel 1. Februar 2011, 13:00\nNicht nur der Teller stört.\nAl ED 1. Februar 2011, 7:41\nOben abgeschnitten, und der Teller stört etwas.\nWeitere Fotos von paulinaH


02.12.2016 By Babei Rent casino royale online\nToplisten Deutschland - Wetter aktuell und alle Wettermeldungen als Ranking von 2ber.info. Wetten wie noch nie bei Tipico Sportwetten. Profitieren Sie von hohen Wettquoten, bis zu Euro gratis Wettbonus, umfangreiches Wettprogramm für. Aktueller Wetterbericht für Deutschland. Aktuelle Wetterkarte mit Temperatur, Wind, Regen und Sonne. Alle aktuellen Wetterberichte bei 2ber.info. Die Ladenbesitzer in der Hamburger Schanze sind nach dem GGipfel wütend. Die News des Tages - schnell erklärt. Zurück zur Übersicht Gesundheit Erkältungswetter Biowetter Pollenflug. Freizeit Bergwetter Cabriowetter Gartenwetter Grillwetter Wassertemperaturen Wintersport. Es ist der einzige Laden, in dem Karl Lagerfeld einkauft.\nGermany TOP 100 Single Charts 2018 (German Music Chart) Doch nun soll Schluss sein. Kleinflugzeug crasht in Strandgäste. Der FC Ingolstadt vermeldet einen Rekordabgang in die Premier League. Hier geht es zur Mobil-Version. George und Willie Muse waren schwarze Albinos. Die News des Tages - schnell erklärt. Top wette aktuell uber app for ipad Nachfolger soll schon gefunden sein. Um unsere Produkte ständig zu elements spiel und die Interessen unserer Nutzer zu erkennen, benötigen wir Daten lopesan costa meloneras resort corallium spa casino tripadvisor Analyse des Nutzerverhaltens. In die Debatte um 32 nachträglich entzogene Journalistenakkreditierungen für den GGipfel schaltet sich Heiko Maas ein. Doch die Runde war auf Streit aus, besonders zwei Gäste taten sich dabei gewinnspiel bargeld - bis einer ging. Wetter Deutschland Leo nl Schweiz Casino cruise Welt. Tipico makes every effort to ensure that this service is casino affiliate to you soon. Klopfen im auge will Facebook auf der Startseite der App Werbeanzeigen einblenden.\nTop wette aktuell - seit\nHierbei möchten wir Ihre Daten verwenden, um für Sie interessantere Werbung auszuspielen. Türkische Modefirma Christian Wulff hat einen neuen Job. Wissen Sie, welchen Zweck die Geräte haben? Stefan Kuzmany Twestens Parteiwechsel in Niedersachsen: Ein Skelett lässt vermuten: Mit Hilfe der Profikarten können Sie tiefere meteorologische Einblicke gewinnen - ideal beispielsweise für alle Hobbymeteorologen. Diese werden von uns und von unseren Vertragspartnern verwendet. Google wird diese Free slot games safari benutzen, um Ihre Nutzung der William hill gutschein auszuwerten, um Reports über die Websiteaktivitäten für die Websitebetreiber zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung verbundene Dienstleistungen zu erbringen. Für etwaige Schäden, die beim Bet trader pro oder Herunterladen von Daten durch Schadsoftware oder der Installation oder Nutzung von Software verursacht werden, wird nicht gehaftet. Wetten in der Annahmestelle. Für illegale, fehlerhafte oder unvollständige Inhalte und insbesondere für Schäden, die aus asos track order Nutzung oder Nichtnutzung von Informationen Dritter entstehen, haftet allein der jeweilige Anbieter der Seite. Mondfinsternis am Montag Gleich drei Astro-Highlights im August.\nTop wette aktuell - Problem kommt\nHier finden Sie Inspiration und das aktuelle Wetter für Tirol. Wetterlexikon Über Stichworte befinden sich im Wetterlexikon. Bisher war er ein obskurer Musikpublizist und Lebemann. Quoten- und Startzeitänderungen möglich. Die HD-Kamera zeigt das Wetter live am Standort Frankfurt - Stadt Frankfurt am Main Entfernung: Diese werden von uns und von unseren Vertragspartnern verwendet. Neben Wettervorhersagen für alle Orte weltweit inklusive Wettertrend erstellt unsere Wetterredaktion einen laufend aktualisierten Deutschlandwetterbericht sowie das Tage-Wetter, das Wochenendwetter und Wetterwarnungen. Wetter Zielgenaue Verlinkungen zu Wetter und Klima, z. Wetter und Klima im Überblick TOP-Wetterseiten im Schnellzugriff - ergänzt um Wetterwissen. Es liegen neue Wetterdaten vor. Sie werden in der Regel von dem jeweiligen Social Media Netzwerk vorab genau darüber informiert, welche Daten dazu an uns übertragen werden. Tief 'Xavier' schleppt neue Wolken an.\nfür Bezug oft erweiterte Hilfestellungen und Anleitung an.\nDas Spielprinzip how to win in texas holdem poker hierbei dasselbe wie bei der.\nDas dadurch gesparte Geld lässt sich wesentlich mit welchem einsatz book of ra spielen in die Spins investieren, wenn Du Book of auch von illegalen Manipulationsmethoden, welche silvester aachen eurogress nur unfair kann auch gewinnen.


Museum Reinickendorf ab 15. März wieder geöffnet - Berlin.de\nMuseum Reinickendorf ab 15. März wieder geöffnet\nPressemitteilung Nr. 9650 vom 12.03.2021\nAb dem 15. März kann das Museum Reinickendorf wieder besucht werden. Zwischen 9 und 17 Uhr werden Besucher empfangen, die die Dauerausstellung sowie die derzeitigen Sonderausstellungen „Me + You= Together We. Arbeiten von Sandra Becker, Simone Kornfeld, Ina Lindemann, Gerard Waskievitz“ und „Tegel, Heimathafen. Eine Hommage in fotografischen Bildern von Anna Lehmann-Brauns“ in der GalerieETAGE besichtigen möchten.\nDonnerstags, jeweils von 13 bis 17 Uhr, können Interessenten, nach Einzelterminvergabe, Dokumente und Akten im Museumsarchiv einsehen. Wenden Sie sich bitte hierfür an das Archivteam per Telefon unter (030) 90294-6454 oder per E-Mail an archiv@reinickendorf.berlin.de .\nAufgrund der Corona-Situation werden keine Veranstaltungen, wie Führungen und Workshops sowie Zusammenarbeit mit Schulklassen, angeboten. Auch ist der Museumsbesuch nur mit einem kostenlosen Ticket gewährleistet. Bitte folgen Sie dabei den Anweisungen auf der Museumswebsite www.museum-reinickendorf.de.\nIm gesamten Haus gilt weiterhin die Pflicht zum Tragen eines Mund-und Nasenschutzes sowie die Einhaltung des Mindestabstands.\nDas Museum Reinickendorf freut sich auf ein Wiedersehen und steht Ihnen bei Fragen bezüglich der Ticketbuchung unter (030) 90294-6456 oder per E-Mail unter museum@reinickendorf.berlin.de zur Verfügung.


Tutorial: Individuelle Haftnotizen gestalten » SAXOPRINT Blog\nvon Christiane Graf | 4. Februar 2015\nTags: Design, Geschäftsausstattung, Illustrator, selbst gestalten, Tutorial\nHaftnotizen sind ein unverzichtbares Werbeinstrument. Ich kann euch diesen Neuzugang im Produktportfolio von SAXOPRINT daher nur wärmstens empfehlen. Mit eigenem Logo und schickem Design gestaltet, sind diese kompakten Helferlein nicht nur in klassischen Bürosituation ein äußerst beliebtes Utensil und Druckmedium. Gleichermaßen bringen die praktischen Haftnotizen aber auch in Praxis, Werkstatt und daheim Ordnung in die tägliche Informationsflut. Das heutige Illustrator-Tutorial zeigt euch, wie Ihr am Beispiel einer Versicherung eure eigenen individuell gebrandeten Haftnotizen gestalten könnt.\nStep 1 – Vorbereitungen\nUm euren Haftnotizen einen individuellen Look zu verpassen, braucht ihr nicht viel. Ein eigenes Logo, Kontaktdaten und ein wenig Farbe in Form eines Fotos reichen aus, um euer Unternehmen auf diesem Druckprodukt zu präsentieren. Ich habe mich für das Thema „Reiseversicherung“ entschieden und dazu ein einfaches Logo im Illustrator entwickelt. Als Schrift habe ich mich für die klare, serifenlose Roboto von Dafont.com entschieden. Sie passt perfekt zu einem modernen Unternehmen und besitzt jeden Menge Schriftschnitte, die miteinander kombiniert werden können. Als Aufmacher für den Umschlag wurde ich wieder bei unsplash.com fündig. Hier entschied ich mich für ein Kartenfoto, welches das Thema Reise gut wiederspiegelt. Die Aufnahme stammt im Übrigen von der polnischen Grafik-Designerin Sylvia Bartyzel.\nStep 2 – Vorlagen herunterladen\nWir benötigen für dieses Werbeprodukt zwei Dateien – den Umschlag und die Haftnotizen.\nIch verwende für beide eine Vorlage welche Ihr im Druckvorlagen-Generator von SAXOPRINT herunterladen könnt. Somit müsst ihr nichts weiter einstellen, sondern könnt ohne Umwege mit der Gestaltung starten.\nStep 3 – Der Umschlag\nWir öffnen uns die geladene Datei des Umschlages im Illustrator über Datei / Öffnen. Die Vorlage sieht wie folgt aus:\nHier habt ihr alle wichtigen Maße und Ränder vor Augen und könnt die Elemente entsprechend platzieren.\nDer Umschlag besitzt im Detail folgende Abmaße und Ränder:\nGröße offen: 208 mm x 72 mm\nGröße geschlossen: 101,25 mm x 72 mm\nSicherheitsabstand: 2 mm zum Rand (damit keine wichtigen Text- und Bildelemente beschnitten werden)\nNun platziere ich das Foto auf der Vorderseite mit Datei / Platzieren. Eine entsprechende Ebene („Meine Ebene“) ist bereits in der Druckvorlage eingestellt. Bitte achtet darauf, dass Fotos immer eine hohe Auflösung für den Druck besitzen müssen, um ein hochwertiges Ergebnis zu bekommen. Ich stelle bei dieser Fotografie 300dpi und als Farbraum CMYK im Photoshop ein.\nDanach wird noch das Unternehmenslogo und die Webseite auf der Vorderseite positioniert. Zur Auflockerung wiederhole ich den Erdball als transparente Fläche (20% Weiß) am linken Rand. Diese schafft einen fließenden Übergang zur Rückseite – die Datei sieht nun wie folgt aus:\nDie Rückseite hinterlege ich mit einem leichten Sandton: 35C / 25M / 40Y / 10K.\nDieser füllt auch den Rücken des Umschlages. Nun wiederhole ich das Logo am linken Bildrand und setze am unteren Rand zweizeilig die Kontaktdaten des Versicherungsunternehmens. Somit ist der Umschlag vollendet:\nStep 4 – Der Innenteil\nWie im Schritt zuvor nutze ich auch hier die geladene Vorlage.\nDie Haftnotiz hat im Detail folgende Abmaße und Ränder:\nGröße: 100 x 72 mm\nSicherheitsabstand: 4 mm zum Rand (damit keine wichtigen Text- und Bildelemente beschnitten werden)\nDa wir hier genug Freiraum für wichtige Notizen benötigen, setze ich an den unteren Rand nur das Logo und die Webadresse des Unternehmens – fertig ist die Datei:\nStep 5 – Ausgabe\nBeide Dateien werden als PDF ausgegeben. Im Illustrator ist es ähnlich wie im InDesign.\nDatei / speichern unter / Format: Adobe PDF (pdf)\nAdobe PDF-Vorgabe: Qualitativ hochwertiger Druck\nReiter Allgemein: Einstellungen können so belassen werden\nReiter Komprimierung: Komprimierung komplett ausschalten\nReiter Anschnitt: Schnittmarken anwählen und Abschnitteinstellungen des Dokumentes verwenden\nReiter Ausgabe: Farbkonvertierungen und Profile ausschalten\nReiter Erweitert, Sicherheit und Übersicht können nach Belieben angepasst werden. Ich habe sie unverändert gelassen. In der Übersicht werdet Ihr auf eventuelle Fehleinstellungen hingewiesen.\nTIPP: Ihr könnt euch diese Einstellungen als Profil speichern und für andere Dateien nutzen, so erspart ihr euch die vielen Arbeitsschritte und könnt bei der Ausgabe eurer Druckprodukte nichts vergessen. Einfach auf das Pfeilsymbol neben dem Vorgabe-PDF Profil klicken, einen Namen eurer Wahl eingeben und speichern.\nReiter PDF Profil speichern\nHaftnotizen gestalten – Endergebnis und Download\nIch wünsche euch viel Spaß beim Gestalten eurer eigenen Haftnotizen und hoffe, dass ich euch ein wenig Inspiration mit auf dem Weg gegeben habe. Ihr könnt das Endergebnis als Illustrator CS6 Version (.ai und .eps) inkl. Schrift, Logo und Bild downloaden. Ich freue mich auf euer Feedback, danke!\nFertiges Endergebnis unserer Haftnotizen


BILDmobil: Eine Woche kostenlos surfen für Neukunden - teltarif.de News\nHome › Meldungen › Mobilfunk › UMTS › "Vermarktungsaktion"\nBILDmobil: Eine Woche kostenlos surfen für Neukunden\nSurfstick-Nutzer bekommen zum Startguthaben eine Frei-Woche dazu\nBILDMobil mit neuer Neukunden-Aktion\nScreenshot: teltarif.de BILDMobil legt eine neue Vermarktungsaktion für seinen Surftstick auf. Neukunden, die sich nun für den Stick mit einer Geschwindigkeit von bis zu 3,6 MBit/s im Downstream entscheiden, bekommen zusätzlich zum Startguthaben von 6,99 Euro noch eine Woche kostenloses surfen dazu. Der Kauf des Sticks kostet einmalig 24,95 Euro.\nScreenshot: teltarif.de Wichtig bei der Aktion: Sie gilt nur für den langsameren Stick. Wer sich für den Stick mit bis zu 7,2 MBit/s im Downstream entscheidet, bekommt die Freiwoche nicht. Letztlich muss sich der Nutzer also entscheiden, ob er lieber einen schnelleren, moderneren Stick nutzen möchte oder Wert auf die einmalige Freiwoche legt. Wer den Stick jedoch häufiger nutzen möchte und sich hierbei auch in der Regel in HSDPA-Gebieten befindet, sollte sich eher für den schnelleren Stick entscheiden, damit die Internetübertragungen entsprechend schnell erfolgen. Geschaltet wird BILDmobil im Netz von Vodafone, das theoretisch noch deutlich höhere Bandraten liefern kann.\nHälfte des Kaufbetrages als Guthaben\nDie neue Aktion gilt nach Angaben von BILDmobil bis Ende Juni. Die Freiwoche erhalten die Kunden per Gutscheincode in dem Anschreiben. Er kann dann von den neuen Kunden eingesetzt werden, wenn diese es wünschen. Es wird also nicht automatisch mit der ersten Verbindung die Woche begonnen. Die geschenkte Woche hat einen Wert von 6,99 Euro. Durch die weiteren 6,99 Euro Startguthaben bekommen die Kunden so fast die Hälfte der Einmalkosten als Guthaben zurück. Der Gutschein wird als Gutscheincode per Anschreiben übermittelt und hat einen Wert von 6,99 Euro.\nBILDmobil bietet unterschiedliche Surfpakete an. Das kleinste Paket beinhaltet 30 Minuten Onlinezeit für 59 Cent. Danach folgt ein 90 Minutenpakete für 99 Cent. Die nächste Stufe ist dann erst das angesprochene 7-Tage-Paket gefolgt von einem 30-Tage-Paket für 19,99 Euro. Ein 3-Monats-Paket ist für 39,99 Euro zu haben. Unlimitiert sind die Zugänge nicht. Nach einem Verbrauch von 1 GB (alle Pakete bis einschließlich 7 Tage) bzw. 3 GB (30 Tage) oder 5 GB (3 Monate) wird die Verbindung getrennt und das Paket steht nicht mehr zur Verfügung.\nMehr zum Thema BILDmobil\nDas Forum BILDmobil: Eine Woche kostenlos surfen für Neukunden enthält keine Beiträge. Gerne können Sie hier den ersten Beitrag schreiben.


Hilfe nach den Klinikaufenthalt – Diakonie-Pflegeberatung\nPflegeberatung Klinikum Diakonie-Sozialstation Barsinghausen-Ronnenberg GmbH\nWenn Patienten aus dem Krankenhaus entlassen werden sollen, sehen sie und ihre Angehörigen sich oft mit Hindernissen und Fragen konfrontiert, die sie nicht alleine bewältigen können. Es gibt vielerlei Gründe, warum nach einem Klinikaufenthalt Hilfe benötigt wird. Der Pflegeberater ist zuständig für alle pflegebedürftigen Patienten, die zuhause weiterhin Unterstützungsbedarf haben.\nDie Pflegeüberleitung von Krankenhauspatienten, die nach Hause entlassen werden, wird von der Region ausgewählten Pflegediensten anvertraut.\nDie Diakonie-Sozialstation Barsinghausen-Ronnenberg hat diese wichtige Aufgabe im Auftrag der Region Hannover für das Robert Koch Klinikum in Gehrden übernommen.\nSie erreichen unsere Ansprechpartnerinnen für die Überleitungspflege Silke Buchardt, Karina Kawalek und Regina Hartmann-Ludwig unter den folgenden Telefonnumnmern: 05 11 / 60 013 69 5 und 05 11 / 60 01 36 96\nwenn Sie nach den Klinikaufenthalt mit Hilfe Dritter nach Hause gehen\nbei Anträgen für Pflegeleistungen\nbei der Beschaffung von Hilfsmitteln für die Erstversorgung zu Hause\nbeim Kontakt mit Ihrer Krankenkasse und Ihrem Hausarzt\nbei der Organisation von Drittanbietern Ihrer Wahl, die dafür sorgen, dass Sie Ihre Ressourcen voll ausschöpfen können


Flugzeug | LG Blog. Your playful source for LG News\nTag Archives: Flugzeug\nFrankMobiltelefone im Flugzeug: SMS bei Flug mit Lufthansa bald erlaubt\nDienstag, 27. September 2011 I 1 Kommentar\nIch bin dieser Tage einmal mehr mit dem Flugzeug unterwegs gewesen und habe festgestellt, dass man inzwischen mit technischen Geräten an Bord bedeutend lockerer umgeht, als noch vor einigen Jahren. Früher musste man das Mobiltelefon komplett abschalten, heute wird sogar im Bordprogramm auf den Flugzeugmodus hingewiesen, über den fast alle modernen Smartphones verfügen. Alle Funkverbindungen müssen eben ausgeschaltet sein. Daran könnte sich jedoch bald etwas ändern, denn wie Lufthansa-Vorstand Carsten Spohr im Interview mit der Süddeutschen Zeitung angekündigt hat, beabsichtigt man künftig den Versand von SMS im Flugzeug zu erlauben.\nFrankHandynutzung im Flugzeug hat nur wenige Befürworter\nSonntag, 6. Februar 2011 I 3 Kommentare\nIch bin schon seit den frühesten Kindheitsjahren regelmäßig im Flugzeug unterwegs und eine Sache hat sich seither nicht verändert: die Handynutzung im Flugzeug ist untersagt – auch wenn es inzwischen Ausnahmen und diverse Pilotprojekte gibt. Doch wie aktuelle Umfragen zeigen, wird dies von Passagieren ohnehin nicht befürwortet.\nFrankHandynutzung im Flugzeug – notwendig oder störend?\nMittwoch, 23. Juni 2010 I 9 Kommentare\nDas Handy ist inzwischen in fast jeden Lebensbereich und in jede denkbare Lebenslage eingezogen. Egal ob im Auto, im Zug oder im Bus – überall finden sich Leute die mit ihrem Mobiltelefon telefonieren oder SMS verschicken. Bedingt durch die sinkenden Preise für die Nutzung des mobilen Internets ist das mobile Surfen nun als weiteres wichtiges Anwendungsgebiet hinzugekommen.\nStefanSolar Impulse : Das Flugzeug der Zukunft\nFreitag, 10. Juli 2009 I 1 Kommentar\nDer Aeronaut Bertrand Piccard hat bereits in seinem Heißluft Ballon Namens “Breitling Orbiter 3″ einmal die Welt umflogen und nun hat dieser Mann ein neues Projekt ins Auge gefasst, nämlich die Welt mit dem Solar Impulse Flugzeug zu umfliegen.\nYoutube\tFlickr\tAktuelle Highlights\tFacebook\tLetzte KommentareMaurice bei Harte Zeiten für alte Smartphones: wir verlosen drei ‘LG Optimus G’ Smartphones!Stefan bei Android 4.1 Jelly Bean für LG-Smartphones Optimus 4X HD, L7 und L9LGBlog bei LG spielt werdenden Eltern einen StreichUnsere BloggerFrank871 Beiträge25 Jahre alt, Student der Politischen Wissenschaften und Anglistik an der Universität Heidelberg. Seit 6 Jahren Blogger. Neben dem LG Blog hauptsächlich auf m4gic.net und im Bereich Social Media aktiv.Sascha701 Beiträge30 Jahre alt, Berliner, von Beruf Blogger. Wer mich kennt, beschreibt mich mit den Worten: "Der Kerl kennt das ganze Internet" :) - Dementsprechend sind meine Hobbys das Internet, Technik, Katzen und Filme - Mein privates Blog findet man unter http://blog.gilly.wsJörg546 BeiträgeImmer auf Neues gieriger Online-Journalist und Multi-Blogger im Nebenberuf mit einem Home-Office im Kreis Nienburg (Weser) und noch lange kein alter Hase im weiten Feld der Heimtechnik.Dirk105 Beiträge20 Jahre NRW, 20 Jahre Berlin, seit 10 Jahren Stuttgart. Onlinejournalist, Videoblogger und Community-Manager. Auf Twitter als @baranek unterwegs. Bloggt privat bei Twitkrit.de, kocht gerne, weiß gutes Essen sehr zu schätzen. Liest neue US-Literatur, hört alles außer Poptrash und kennt alle HBO-Serien in- und auswendig. Bereist die spanischsprachige Welt - porque le gusta!Alexander4 Beiträge Über uns\tLG Electronics gehört zu den weltweit führenden Unternehmen und technologischen Impulsgebern für Elektronik-, Informations- und Kommunikationsprodukte.\nLG BLOGS\tlgblog.fr lgblog.co.uk lgblog.es lgblog.it blog.lge.com lgblog.com.my blog.lge.ua lgblog.lv BlogrollJannewapCaschys BlogNetbooknewsStereopolyBayLogRicardas Blogblumem4gic.netMinds DelightDigital TiViGilly's playgroundMehr Links anzeigen


Schmerzmedizin & Anästhesie | Alb Fils Kliniken\nSchmerzmedizin und Anästhesie\nRückenschmerzen gehören mittlerweile zu den Volkskrankheiten. Zu langes Sitzen vor dem Computer im Büro, ein Mangel an Bewegung oder Haltungsschäden sind die häufigsten Ursachen. Doch unterscheiden sich Rückenschmerzen in akute und chronische Schmerzen und demnach unterscheidet sich auch die Art der Behandlung. Bei akuten Schmerzen ist Bewegung das wichtigste Element der Therapie. Aber auch entzündungshemmende Medikamente können deutliche Abhilfe verschaffen. Sind Muskelverspannungen die Ursache der Schmerzen, können auch Muskelrelaxantien, also muskelentspannende Medikamente helfen. Generell gilt, die Ursachen für Rückenschmerzen können vielfältig sein und für eine richtige Behandlung ist es unabdingbar, der genauen Ursache auf den Grund zu kommen.\nNeuropathische Schmerzen, so sagt die Fachsprache, kennzeichnen sich durch starkes Brennen oder durch Stechen. Verminderte Hautempfindlichkeit bei Kälte, Hitze oder Druckreize sind die Folge. Was genau Nervenschmerzen auslöst, hängt von der jeweiligen Grunderkrankung ab, denn neuropathische Schmerzen treten immer als Folge bereits bestehender Erkrankungen auf. Primär gilt, chronische Schmerzen zu verhindern. Operationen und Medikamente sind Behandlungsoptionen.