{"id":6087,"date":"2022-05-26T02:11:39","date_gmt":"2022-05-26T02:11:39","guid":{"rendered":"https:\/\/www.booksofall.com\/ru\/?post_type=product&#038;p=6087"},"modified":"2022-06-15T05:13:17","modified_gmt":"2022-06-15T05:13:17","slug":"specification-of-software-uml-state-machines","status":"publish","type":"product","link":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/","title":{"rendered":"Specification of Software: UML State Machines"},"content":{"rendered":"<p><b>UML state machine<\/b>, also known as\u00a0<b>UML statechart<\/b>, is an extension of the\u00a0<a title=\"Mathematics\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mathematics\">mathematical<\/a>\u00a0concept of a\u00a0<a title=\"Finite-state machine\" href=\"https:\/\/en.wikipedia.org\/wiki\/Finite-state_machine\">finite automaton<\/a>\u00a0in\u00a0<a title=\"Computer science\" href=\"https:\/\/en.wikipedia.org\/wiki\/Computer_science\">computer science<\/a>\u00a0applications as expressed in the\u00a0<a title=\"Unified Modeling Language\" href=\"https:\/\/en.wikipedia.org\/wiki\/Unified_Modeling_Language\">Unified Modeling Language<\/a>\u00a0(UML) notation.<\/p>\n<p>The concepts behind it are about organizing the way a device, computer program, or other (often technical) process works such that an entity or each of its sub-entities is always in exactly one of a number of possible states and where there are well-defined conditional transitions between these states.<\/p>\n<p>UML state machine is an object-based variant of\u00a0<a class=\"mw-redirect\" title=\"Harel statechart\" href=\"https:\/\/en.wikipedia.org\/wiki\/Harel_statechart\">Harel statechart<\/a>, adapted and extended by UML. The goal of UML state machines is to overcome the main limitations of traditional\u00a0<a title=\"Finite-state machine\" href=\"https:\/\/en.wikipedia.org\/wiki\/Finite-state_machine\">finite-state machines<\/a>\u00a0while retaining their main benefits. UML statecharts introduce the new concepts of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Hierarchically_nested_states\">hierarchically nested states<\/a>\u00a0and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Orthogonal_regions\">orthogonal regions<\/a>, while extending the notion of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Actions_and_transitions\">actions<\/a>. UML state machines have the characteristics of both\u00a0<a title=\"Mealy machine\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mealy_machine\">Mealy machines<\/a>\u00a0and\u00a0<a title=\"Moore machine\" href=\"https:\/\/en.wikipedia.org\/wiki\/Moore_machine\">Moore machines<\/a>. They support\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Actions_and_transitions\">actions<\/a>\u00a0that depend on both the state of the system and the triggering\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Events\">event<\/a>, as in Mealy machines, as well as\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Entry_and_exit_actions\">entry and exit actions<\/a>, which are associated with states rather than transitions, as in Moore machines.<sup id=\"cite_ref-Samek09_4-0\" class=\"reference\"><\/sup><\/p>\n<p>The term &#8220;UML state machine&#8221; can refer to two kinds of state machines:\u00a0<i>behavioral state machines<\/i>\u00a0and\u00a0<i>protocol state machines<\/i>. Behavioral state machines can be used to model the behavior of individual entities (e.g., class instances), a subsystem, a package, or even an entire system. Protocol state machines are used to express usage protocols and can be used to specify the legal usage scenarios of classifiers, interfaces, and ports.<\/p>\n<h2><span id=\"Basic_state_machine_concepts\" class=\"mw-headline\">Basic state machine concepts<\/span><\/h2>\n<p>Many software systems are\u00a0<a title=\"Event-driven programming\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_programming\">event-driven<\/a>, which means that they continuously wait for the occurrence of some external or internal\u00a0<b><a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Events\">event<\/a><\/b>\u00a0such as a mouse click, a button press, a time tick, or an arrival of a data packet. After recognizing the event, such systems react by performing the appropriate computation that may include manipulating the hardware or generating \u201csoft\u201d events that trigger other internal software components. (That&#8217;s why event-driven systems are alternatively called\u00a0<b>reactive systems<\/b>.) Once the event handling is complete, the system goes back to waiting for the next event.<\/p>\n<p>The response to an event generally depends on both the type of the event and on the internal\u00a0<b><a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#States\">state<\/a><\/b>\u00a0of the system and can include a change of state leading to a\u00a0<b><a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#Actions_and_transitions\">state transition<\/a><\/b>. The pattern of events, states, and state transitions among those states can be abstracted and represented as a\u00a0<b><a title=\"Finite-state machine\" href=\"https:\/\/en.wikipedia.org\/wiki\/Finite-state_machine\">finite-state machine<\/a><\/b>\u00a0(FSM).<\/p>\n<p>The concept of a FSM is important in\u00a0<a title=\"Event-driven programming\" href=\"https:\/\/en.wikipedia.org\/wiki\/Event-driven_programming\">event-driven programming<\/a> because it makes the event handling explicitly dependent on both the event-type and on the state of the system. When used correctly, a state machine can drastically cut down the number of execution paths through the code, simplify the conditions tested at each branching point, and simplify the switching between different modes of execution. Conversely, using event-driven programming without an underlying FSM model can lead programmers to produce error prone, difficult to extend and excessively complex application code.<sup id=\"cite_ref-Samek03b_6-0\" class=\"reference\"><\/sup><\/p>\n<h3><span id=\"Basic_UML_state_diagrams\" class=\"mw-headline\">Basic UML state diagrams<\/span><\/h3>\n<p>UML preserves the general form of the\u00a0<a title=\"State diagram\" href=\"https:\/\/en.wikipedia.org\/wiki\/State_diagram\">traditional state diagrams<\/a>. The UML state diagrams are\u00a0<a title=\"State diagram\" href=\"https:\/\/en.wikipedia.org\/wiki\/State_diagram#Directed_graph\">directed graphs<\/a>\u00a0in which nodes denote states and connectors denote state transitions. For example, Figure 1 shows a UML state diagram corresponding to the computer keyboard state machine. In UML, states are represented as rounded rectangles labeled with state names. The transitions, represented as arrows, are labeled with the triggering events followed optionally by the list of executed actions. The\u00a0<b>initial transition<\/b>\u00a0originates from the solid circle and specifies the default state when the system first begins. Every state diagram should have such a transition, which should not be labeled, since it is not triggered by an event. The initial transition can have associated actions.<\/p>\n<h3><span id=\"Events\" class=\"mw-headline\">Events<\/span><\/h3>\n<p>An\u00a0<b>event<\/b>\u00a0is something that happens that affects the system. Strictly speaking, in the UML specification,<sup id=\"cite_ref-UML2_2_1-2\" class=\"reference\"><\/sup>\u00a0the term event refers to the type of occurrence rather than to any concrete instance of that occurrence. For example, Keystroke is an event for the keyboard, but each press of a key is not an event but a concrete instance of the Keystroke event. Another event of interest for the keyboard might be Power-on, but turning the power on tomorrow at 10:05:36 will be just an instance of the Power-on event.<\/p>\n<p>An event can have associated\u00a0<b>parameters<\/b>, allowing the event instance to convey not only the occurrence of some interesting incident but also quantitative information regarding that occurrence. For example, the Keystroke event generated by pressing a key on a computer keyboard has associated parameters that convey the character scan code as well as the status of the Shift, Ctrl, and Alt keys.<\/p>\n<p>An event instance outlives the instantaneous occurrence that generated it and might convey this occurrence to one or more state machines. Once generated, the event instance goes through a processing life cycle that can consist of up to three stages. First, the event instance is\u00a0<b>received<\/b>\u00a0when it is accepted and waiting for processing (e.g., it is placed on the\u00a0<a title=\"Message queue\" href=\"https:\/\/en.wikipedia.org\/wiki\/Message_queue\">event queue<\/a>). Later, the event instance is\u00a0<b>dispatched<\/b>\u00a0to the state machine, at which point it becomes the current event. Finally, it is\u00a0<b>consumed<\/b>\u00a0when the state machine finishes processing the event instance. A consumed event instance is no longer available for processing.<\/p>\n<h3><span id=\"States\" class=\"mw-headline\">States<\/span><\/h3>\n<p>Each state machine has a\u00a0<b>state<\/b>, which governs reaction of the state machine to events. For example, when you strike a key on a keyboard, the character code generated will be either an uppercase or a lowercase character, depending on whether the Caps Lock is active. Therefore, the keyboard&#8217;s behavior can be divided into two states: the &#8220;default&#8221; state and the &#8220;caps_locked&#8221; state. (Most keyboards include an LED that indicates that the keyboard is in the &#8220;caps_locked&#8221; state.) The behavior of a keyboard depends only on certain aspects of its history, namely whether the Caps Lock key has been pressed, but not, for example, on how many and exactly which other keys have been pressed previously. A state can abstract away all possible (but irrelevant) event sequences and capture only the relevant ones.<\/p>\n<p>In the context of software state machines (and especially classical FSMs), the term\u00a0<i>state<\/i>\u00a0is often understood as a single\u00a0<i>state variable<\/i>\u00a0that can assume only a limited number of a priori determined values (e.g., two values in case of the keyboard, or more generally &#8211; some kind of variable with an\u00a0<i>enum<\/i>\u00a0type in many programming languages). The idea of\u00a0<i>state variable<\/i>\u00a0(and classical FSM model) is that the value of the\u00a0<i>state variable<\/i>\u00a0fully defines the current state of the system at any given time. The concept of the state reduces the problem of identifying the execution context in the code to testing just the state variable instead of many variables, thus eliminating a lot of conditional logic.<\/p>\n<h3><span id=\"Extended_states\" class=\"mw-headline\">Extended states<\/span><\/h3>\n<p>In practice, however, interpreting the whole state of the state machine as a single\u00a0<i>state variable<\/i>\u00a0quickly becomes impractical for all state machines beyond very simple ones. Indeed, even if we have a single 32-bit integer in our machine state, it could contribute to over 4 billion different states &#8211; and will lead to a premature\u00a0<i>state explosion<\/i>. This interpretation is not practical, so in UML state machines the whole\u00a0<i>state<\/i>\u00a0of the state machine is commonly split into (a) enumeratable\u00a0<i>state variable<\/i>\u00a0and (b) all the other variables which are named\u00a0<i>extended state<\/i>. Another way to see it is to interpret enumeratable\u00a0<i>state variable<\/i>\u00a0as a qualitative aspect and\u00a0<i>extended state<\/i>\u00a0as quantitative aspects of the whole state. In this interpretation, a change of variable does not always imply a change of the qualitative aspects of the system behavior and therefore does not lead to a change of state.<sup id=\"cite_ref-ROOM94_7-0\" class=\"reference\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/UML_state_machine#cite_note-ROOM94-7\">[7]<\/a><\/sup><\/p>\n<p>State machines supplemented with\u00a0<i>extended state<\/i>\u00a0variables are called\u00a0<b>extended state machines<\/b>\u00a0and UML state machines belong to this category. Extended state machines can apply the underlying formalism to much more complex problems than is practical without including extended state variables. For example, if we have to implement some kind of limit in our FSM (say, limiting number of keystrokes on keyboard to 1000), without\u00a0<i>extended state<\/i>\u00a0we&#8217;d need to create and process 1000 states &#8211; which is not practical; however, with an extended state machine we can introduce a\u00a0<code>key_count<\/code>\u00a0variable, which is initialized to 1000 and decremented by every keystroke without changing\u00a0<i>state variable<\/i>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><iframe style=\"width: 100%; height: 480px; border: none;\" src=\"https:\/\/online.visual-paradigm.com\/share\/book\/specification-of-software--uml-state-machines-ysb5ktyus?enforceShowPromotionBar=true\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"featured_media":6093,"template":"","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications."},"product_brand":[],"product_cat":[213],"product_tag":[201],"class_list":{"0":"post-6087","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-computer-uml","7":"product_tag-lecture-notes","9":"first","10":"instock","11":"shipping-taxable","12":"product-type-simple"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Specification of Software: UML State Machines - BooksOfAll Russian<\/title>\n<meta name=\"description\" content=\"UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications.\" \/>\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.booksofall.com\/ru\/specification-of-software-uml-state-machines\/\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Specification of Software: UML State Machines - BooksOfAll Russian\" \/>\n<meta property=\"og:description\" content=\"UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/\" \/>\n<meta property=\"og:site_name\" content=\"BooksOfAll Russian\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-15T05:13:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg\" \/>\n<meta name=\"twitter:label1\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 \u043c\u0438\u043d\u0443\u0442\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/\",\"url\":\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/\",\"name\":\"Specification of Software: UML State Machines - BooksOfAll Russian\",\"isPartOf\":{\"@id\":\"https:\/\/www.booksofall.com\/ru\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg\",\"datePublished\":\"2022-05-26T02:11:39+00:00\",\"dateModified\":\"2022-06-15T05:13:17+00:00\",\"description\":\"UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#primaryimage\",\"url\":\"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg\",\"contentUrl\":\"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg\",\"width\":\"596\",\"height\":\"842\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.booksofall.com\/ru\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Categories\",\"item\":\"https:\/\/www.booksofall.com\/ru\/categories\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Specification of Software: UML State Machines\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.booksofall.com\/ru\/#website\",\"url\":\"https:\/\/www.booksofall.com\/ru\/\",\"name\":\"BooksOfAll Russian\",\"description\":\"Biggest IT eBooks library and learning resources - Free eBooks for programming, computing, artificial intelligence and more.\",\"publisher\":{\"@id\":\"https:\/\/www.booksofall.com\/ru\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.booksofall.com\/ru\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ru-RU\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.booksofall.com\/ru\/#organization\",\"name\":\"BooksOfAll Russian\",\"url\":\"https:\/\/www.booksofall.com\/ru\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/www.booksofall.com\/ru\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/booksofall-logo-2.png\",\"contentUrl\":\"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/booksofall-logo-2.png\",\"width\":166,\"height\":30,\"caption\":\"BooksOfAll Russian\"},\"image\":{\"@id\":\"https:\/\/www.booksofall.com\/ru\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Specification of Software: UML State Machines - BooksOfAll Russian","description":"UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications.","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.booksofall.com\/ru\/specification-of-software-uml-state-machines\/","og_locale":"ru_RU","og_type":"article","og_title":"Specification of Software: UML State Machines - BooksOfAll Russian","og_description":"UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications.","og_url":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/","og_site_name":"BooksOfAll Russian","article_modified_time":"2022-06-15T05:13:17+00:00","og_image":[{"url":"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_image":"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg","twitter_misc":{"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f":"7 \u043c\u0438\u043d\u0443\u0442"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/","url":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/","name":"Specification of Software: UML State Machines - BooksOfAll Russian","isPartOf":{"@id":"https:\/\/www.booksofall.com\/ru\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#primaryimage"},"image":{"@id":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#primaryimage"},"thumbnailUrl":"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg","datePublished":"2022-05-26T02:11:39+00:00","dateModified":"2022-06-15T05:13:17+00:00","description":"UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications.","breadcrumb":{"@id":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/"]}]},{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#primaryimage","url":"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg","contentUrl":"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/img_62a18288bb7a3.jpeg","width":"596","height":"842"},{"@type":"BreadcrumbList","@id":"https:\/\/www.booksofall.com\/ru\/specification-of-software-uml-state-machines\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.booksofall.com\/ru\/"},{"@type":"ListItem","position":2,"name":"Categories","item":"https:\/\/www.booksofall.com\/ru\/categories\/"},{"@type":"ListItem","position":3,"name":"Specification of Software: UML State Machines"}]},{"@type":"WebSite","@id":"https:\/\/www.booksofall.com\/ru\/#website","url":"https:\/\/www.booksofall.com\/ru\/","name":"BooksOfAll Russian","description":"Biggest IT eBooks library and learning resources - Free eBooks for programming, computing, artificial intelligence and more.","publisher":{"@id":"https:\/\/www.booksofall.com\/ru\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.booksofall.com\/ru\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ru-RU"},{"@type":"Organization","@id":"https:\/\/www.booksofall.com\/ru\/#organization","name":"BooksOfAll Russian","url":"https:\/\/www.booksofall.com\/ru\/","logo":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/www.booksofall.com\/ru\/#\/schema\/logo\/image\/","url":"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/booksofall-logo-2.png","contentUrl":"https:\/\/www.booksofall.com\/ru\/wp-content\/uploads\/sites\/7\/2022\/06\/booksofall-logo-2.png","width":166,"height":30,"caption":"BooksOfAll Russian"},"image":{"@id":"https:\/\/www.booksofall.com\/ru\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/product\/6087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/types\/product"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/media\/6093"}],"wp:attachment":[{"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/media?parent=6087"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/product_brand?post=6087"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/product_cat?post=6087"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/www.booksofall.com\/ru\/wp-json\/wp\/v2\/product_tag?post=6087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}