{"id":21038,"date":"2016-10-24T15:14:35","date_gmt":"2016-10-24T14:14:35","guid":{"rendered":"https:\/\/www.inovex.de\/?p=2373"},"modified":"2026-03-17T07:59:25","modified_gmt":"2026-03-17T06:59:25","slug":"an-ood-example","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/","title":{"rendered":"An Ood example"},"content":{"rendered":"<p>No, that\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry &#8211; it had to be done. So yeah, object-oriented design. One example of it. Here we go \ud83d\ude42<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#A-little-context-up-front\" >A little context up front<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#Modeling\" >Modeling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#And-in-the-game\" >And in the game<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#Give-it-a-REST\" >Give it a REST<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#Modeling-Pt-II\" >Modeling Pt. II<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#The-act-of-playing\" >The act of playing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#No-REST-for-the%E2%80%A6-app\" >No REST for the\u2026 app<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#TLDR\" >TL;DR<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#Read-on\" >Read on<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#Join-us\" >Join us!<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"A-little-context-up-front\"><\/span>A little context up front<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This is from a <a href=\"https:\/\/www.inovex.de\/cross-compiling-binaries-for-fun\/\" target=\"_blank\" rel=\"noopener\">different<\/a> side-project of mine: A turn-based game where you answer questions. Like a quiz. The questions are grouped into levels. The levels also have some sort of metadata, probably (I\u2019m not done yet).<\/p>\n<p>Either way, the actual content of the game does not matter. This post is about modeling the internals.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Modeling\"><\/span>Modeling<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The easiest entities to model are typically actual things from the real world. Creating a CMS? You might model pages and authors and comments. A ticketing-service? You got events and artists and tickets. These are all kind of like nouns.<\/p>\n<p>Then you might model some actions. The stuff you do with your entities. The verbs: create a page, list all events, delete a comment, and all the CRUD you can imagine.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"And-in-the-game\"><\/span>And in the game<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>For this project, I started by modeling the questions and the levels. Easy peasy. Then, I thought about how the actual game would play. Coming in from the outside with my user-hat on, I ended up with the following \u201cflow\u201c:<\/p>\n<ol>\n<li>A question is posed<\/li>\n<li>I submit my answer<\/li>\n<li>An indication of whether the answer was correct or not is shown<\/li>\n<li>Goto 1<\/li>\n<\/ol>\n<p>Here, we see a little speciality in comparison to your garden-variety CRUD-web-app: Not all actions are initiated by the user directly. The transition from step 3 to step 4 happens automatically, but only after some time has passed. No big deal, we\u2019ll probably just have some sort of timeout trigger the action. But interesting nonetheless.<\/p>\n<p>How would playing the game be implemented, though? You might use variables for state somewhere. Hopefully not global state, but yeah. And then, possibly a loop that runs until some end-condition is met?<\/p>\n<p>This all feels somewhat dirty. Which is excellent news &#8211; with a real problem at hand (and this being just a side-project), I could try out different approaches and see how they can help solve it. And it\u2019s more interesting than following an arranged tutorial or implementing \u201cthe Todo-App\u201c.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Give-it-a-REST\"><\/span>Give it a REST<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>By day, I do a lot of web-development. So somehow, I got the idea of making the whole thing RESTful into my head. I\u2019m not sure how; it seemed like a good idea at the time. Must have been something about best-practices. Anyway, I started to think about how to implement the game in a restful manner.<\/p>\n<p>CRUDding levels and questions: no problemo.<\/p>\n<p>But actually playing the game\u2026 Which endpoints to use? Which HTTP-verbs? What resource am I even interacting with? What REST-call would I make, when the user gives an answer? It did not come naturally to me, because it did not align neatly with the verbs and nouns I already had.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Modeling-Pt-II\"><\/span>Modeling Pt. II<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>And then it hit me: What if I were to model the state of the game as it is being played?<\/p>\n<p>In the analogy of nouns and verbs, this would be a nominalization: Taking a verb and turning it into a noun: In our case, taking \u201cplay\u201c and turning it into something like \u201cthe act of playing\u201c.<\/p>\n<p>I\u2019m sure I\u2019ve heard about this before. I don\u2019t remember where exactly, but <a href=\"https:\/\/avdi.codes\/about\/\" target=\"_blank\" rel=\"noopener\">Avdi Grimm<\/a> and <a href=\"http:\/\/www.sandimetz.com\/\" target=\"_blank\" rel=\"noopener\">Sandi Metz<\/a> are probable candidates.<\/p>\n<p>For me, this is interesting, as it departs from modeling actual (tangible, even) things from the real world. What is being modeled now is not something that actually \u201cexists\u201c.<\/p>\n<p>It shows, that there is more to object-oriented design than just CRUD web-apps. And although I already knew that, I always enjoy finding practical applications. It helps me better grok the theory and gives me concrete examples to use when discussing with colleagues.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The-act-of-playing\"><\/span>The act of playing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>So this new entity knows about the current state of the game (what question is currently being asked; how many wrong answers have already been given) and it is updated whenever the player makes a move. Modeling the act of playing as an entity has other benefits too (apart from, you know, being able to actually play the game): Because it is now its own entity that can be persisted, we can save a running game and let the player resume at some later time.<\/p>\n<p>REST-wise, that means creating (aka starting) a new game via POST. And then updating the resource while playing the game via PATCH. We would need some patch-format of course, to send along with with request. After the PATCH, the client can GET the new state of the current \u201cact of playing the game\u201c and display it to the player.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"No-REST-for-the%E2%80%A6-app\"><\/span>No REST for the\u2026 app<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>After some meandering, I settled on implementing the game as a client-side javascript-app. But then, it became more and more cumbersome to actually go through with the REST-approach. It started to feel a bit overkill and I couldn\u2019t point myself to specific advantages of using it.<\/p>\n<p>I intentionally did not say \u201csingle-page-app\u201c above, because I feel like that would imply the existence of some sort of backend. Of some communication necessarily going on behind the scenes. And in that case, REST surely does bring advantages: meaningful URLs, Deeplinking, the ability to share a URL with someone.<\/p>\n<p>But these are all not needed in an app that runs only locally, without a server, without data to be shared among users. It would just add more complexity.<\/p>\n<p>So I ditched it.<\/p>\n<p>I\u2019m still glad I had the idea in the first place and tried to run with it. Because it made me model the right entities. And because pursuing the rest-approach in the context of this \u201creal\u201c problem made me think about the why and when of using it.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"TLDR\"><\/span>TL;DR<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Because I wanted an application to be restful, I did some non-trivial object oriented design. Later, I realized the rest-aspect was overkill and cut it out. But I kept the newly modeled entities.<\/p>\n<p>Hooray.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Read-on\"><\/span>Read on<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Find out more about our development portfolio for <a href=\"https:\/\/www.inovex.de\/de\/leistungen\/frontend\/\" target=\"_blank\" rel=\"noopener\">the web<\/a> and <a href=\"https:\/\/www.inovex.de\/de\/leistungen\/apps\/mobile-enterprise\/\" target=\"_blank\" rel=\"noopener\">mobile devices<\/a> on our <a href=\"https:\/\/www.inovex.de\/en\/\" target=\"_blank\" rel=\"noopener\">website<\/a>.<\/p>\n<div style=\"margin: 7px; padding: 7px; border-left: 6px solid #9CCD00;\">\n<h2><span class=\"ez-toc-section\" id=\"Join-us\"><\/span>Join us!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Looking for a change? We&#8217;re hiring skilled web-frontend and software developers!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>No, that\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry &#8211; it had to be done. So yeah, object-oriented design. One example of it. Here we go \ud83d\ude42<\/p>\n","protected":false},"author":42,"featured_media":12789,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[510],"service":[420],"coauthors":[{"id":42,"display_name":"Matthias R\u00f6mer","user_nicename":"mroemer"}],"class_list":["post-21038","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-apps-2","service-apps"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>An Ood example - inovex GmbH<\/title>\n<meta name=\"description\" content=\"That\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry. So yeah, object-oriented design. One example of it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Ood example - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"That\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry. So yeah, object-oriented design. One example of it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-24T14:14:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T06:59:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2300\" \/>\n\t<meta property=\"og:image:height\" content=\"876\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matthias R\u00f6mer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood-1024x390.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthias R\u00f6mer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Matthias R\u00f6mer\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/\"},\"author\":{\"name\":\"Matthias R\u00f6mer\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/25e7425642033d2d939b9281b4047457\"},\"headline\":\"An Ood example\",\"datePublished\":\"2016-10-24T14:14:35+00:00\",\"dateModified\":\"2026-03-17T06:59:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/\"},\"wordCount\":1050,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/quiz-app-ood.png\",\"keywords\":[\"Apps\"],\"articleSection\":[\"English Content\",\"Methods\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/\",\"name\":\"An Ood example - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/quiz-app-ood.png\",\"datePublished\":\"2016-10-24T14:14:35+00:00\",\"dateModified\":\"2026-03-17T06:59:25+00:00\",\"description\":\"That\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry. So yeah, object-oriented design. One example of it.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/quiz-app-ood.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/quiz-app-ood.png\",\"width\":2300,\"height\":876,\"caption\":\"Header image alluding to a typical quiz show screen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/an-ood-example\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Ood example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/25e7425642033d2d939b9281b4047457\",\"name\":\"Matthias R\u00f6mer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2c89237f3b8c4a3cffcc041994c810b17d05710d2ee9c8ca3bfaf923d644d18c?s=96&d=retro&r=g2a11df047a930ade3df43b39e9adb71e\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2c89237f3b8c4a3cffcc041994c810b17d05710d2ee9c8ca3bfaf923d644d18c?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2c89237f3b8c4a3cffcc041994c810b17d05710d2ee9c8ca3bfaf923d644d18c?s=96&d=retro&r=g\",\"caption\":\"Matthias R\u00f6mer\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/mroemer\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An Ood example - inovex GmbH","description":"That\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry. So yeah, object-oriented design. One example of it.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/","og_locale":"de_DE","og_type":"article","og_title":"An Ood example - inovex GmbH","og_description":"That\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry. So yeah, object-oriented design. One example of it.","og_url":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2016-10-24T14:14:35+00:00","article_modified_time":"2026-03-17T06:59:25+00:00","og_image":[{"width":2300,"height":876,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood.png","type":"image\/png"}],"author":"Matthias R\u00f6mer","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood-1024x390.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Matthias R\u00f6mer","Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten","Written by":"Matthias R\u00f6mer"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/"},"author":{"name":"Matthias R\u00f6mer","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/25e7425642033d2d939b9281b4047457"},"headline":"An Ood example","datePublished":"2016-10-24T14:14:35+00:00","dateModified":"2026-03-17T06:59:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/"},"wordCount":1050,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood.png","keywords":["Apps"],"articleSection":["English Content","Methods"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/","url":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/","name":"An Ood example - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood.png","datePublished":"2016-10-24T14:14:35+00:00","dateModified":"2026-03-17T06:59:25+00:00","description":"That\u2019s not a typo and I\u2019m not talking about the alien species, either. Ha Ha\u2026 I\u2019m sorry. So yeah, object-oriented design. One example of it.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2016\/10\/quiz-app-ood.png","width":2300,"height":876,"caption":"Header image alluding to a typical quiz show screen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/an-ood-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"An Ood example"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/25e7425642033d2d939b9281b4047457","name":"Matthias R\u00f6mer","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/2c89237f3b8c4a3cffcc041994c810b17d05710d2ee9c8ca3bfaf923d644d18c?s=96&d=retro&r=g2a11df047a930ade3df43b39e9adb71e","url":"https:\/\/secure.gravatar.com\/avatar\/2c89237f3b8c4a3cffcc041994c810b17d05710d2ee9c8ca3bfaf923d644d18c?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2c89237f3b8c4a3cffcc041994c810b17d05710d2ee9c8ca3bfaf923d644d18c?s=96&d=retro&r=g","caption":"Matthias R\u00f6mer"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/mroemer\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=21038"}],"version-history":[{"count":4,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21038\/revisions"}],"predecessor-version":[{"id":66510,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21038\/revisions\/66510"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/12789"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=21038"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=21038"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=21038"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=21038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}