{"id":6843,"date":"2024-08-08T11:48:23","date_gmt":"2024-08-08T09:48:23","guid":{"rendered":"https:\/\/oopm.org\/?page_id=6843"},"modified":"2025-01-17T09:26:39","modified_gmt":"2025-01-17T08:26:39","slug":"49-notation","status":"publish","type":"page","link":"https:\/\/oopm.org\/?page_id=6843","title":{"rendered":"24. Notation"},"content":{"rendered":"<div class=\"pdfprnt-buttons pdfprnt-buttons-page pdfprnt-top-right\"><a href=\"https:\/\/oopm.org\/index.php?rest_route=wpv2pages6843&print=pdf\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/oopm.org\/wp-content\/plugins\/pdf-print\/images\/pdf.png\" alt=\"image_pdf\" title=\"View PDF\" \/><\/a><a href=\"https:\/\/oopm.org\/index.php?rest_route=wpv2pages6843&print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/oopm.org\/wp-content\/plugins\/pdf-print\/images\/print.png\" alt=\"image_print\" title=\"Print Content\" \/><\/a><\/div>\n<p class=\"wp-block-paragraph\">This chapter explains the notation used in this book.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Program text<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The program examples shown in this book are made in the qBeta language. The elements of the language are introduced as they are needed to illustrate the programming elements presented in the book. For a comprehensive description of qBeta see the web-site <a href=\"https:\/\/qbeta.dev\">qbeta.dev<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Abbreviations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For practical purposes, we do not always show all the code in the examples and we use the following notation for code not shown:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The symbols&nbsp;<code>-\"-<\/code>&nbsp;stands for code, which has been shown in a previous example. You may think of the <code>-\"-<\/code> as an extended ditto-sign.<\/li>\n\n\n\n<li>The symbols&nbsp;<code>:::<\/code>&nbsp;stands for code, which will be shown later \u2013 often in the same section.<\/li>\n\n\n\n<li>The symbols&nbsp;<code>...<\/code>&nbsp;stands for code, which is not shown and left to the reader to fill in.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Diagrams and illustrations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this section, we summarise the <em>diagrams<\/em> used to show different kinds of elements of programs and program executions. Diagrams are partial since they only show selected elements of a given program or program execution, but they are formal\/exact\/precise in the sense that they show elements that are present in the program or program execution.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:65%\">\n<p class=\"wp-block-paragraph\">We also use <em>illustrations<\/em> in the form of informal drawings or pictures to illustrate a given text in the book, a given application domain, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An example is this photo used in section <script>mkRef(\"Models\")<\/script>.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:35%\">\n<figure class=\"wp-block-image size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"566\" height=\"502\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2023\/05\/image-1.jpeg\" alt=\"\" class=\"wp-image-142\" style=\"width:229px;height:auto\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2023\/05\/image-1.jpeg 566w, https:\/\/oopm.org\/wp-content\/uploads\/2023\/05\/image-1-300x266.jpeg 300w\" sizes=\"(max-width: 566px) 100vw, 566px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">We use a combination of pictures and diagrams to show the relationships between a domain and a model.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" width=\"886\" height=\"380\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/illustration-1.jpg\" alt=\"\" class=\"wp-image-9039\" style=\"width:724px;height:auto\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/illustration-1.jpg 886w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/illustration-1-300x129.jpg 300w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/illustration-1-768x329.jpg 768w\" sizes=\"(max-width: 886px) 100vw, 886px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the following sections, we present the diagrams being used.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objects<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Class-defined and singular objects<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Rectangles of the following forms are used to illustrate objects. <\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><em>Class-defined object<\/em><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">The notation for an object of a class is a rectangle including an upper part with the name of the object followed by the name of the class, and an optional lower part with a selected set, which may be empty, of the attributes. A data-item always includes name followed by &#8216;=&#8217; and possibly a value, while its type is omitted.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"878\" height=\"138\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationObjectOfClass-2.jpg\" alt=\"\" class=\"wp-image-7654\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationObjectOfClass-2.jpg 878w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationObjectOfClass-2-300x47.jpg 300w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationObjectOfClass-2-768x121.jpg 768w\" sizes=\"(max-width: 878px) 100vw, 878px\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\"><em>Singular object<\/em><\/h5>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:23% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"246\" height=\"135\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationSingularObject.jpg\" alt=\"\" class=\"wp-image-7390 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The notation for a singular object is a rectangle with an upper part with just the name of the object, and an optional lower part with the same contents as a class-defined object.<\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Common to both is<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The name of the object is left-justified and followed by a &#8216;:&#8217;.<\/li>\n\n\n\n<li>The color of the background is light green. <\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Array objects<\/h4>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 16%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The notation for an array object is a rectangle with an upper part with the name of the array object, the number of elements in the array and the type (class) of the elements in the array. The lower part is a list of the elements in the array. This list may be partial and only show selected elements of the array.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"167\" height=\"167\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/accountsArray-1.jpg\" alt=\"\" class=\"wp-image-10370 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/accountsArray-1.jpg 167w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/accountsArray-1-150x150.jpg 150w\" sizes=\"(max-width: 167px) 100vw, 167px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 41%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Arrays of class-defined object are really arrays of references to objects.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"544\" height=\"200\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/accountsArrayWithObject-1.jpg\" alt=\"\" class=\"wp-image-10372 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/accountsArrayWithObject-1.jpg 544w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/accountsArrayWithObject-1-300x110.jpg 300w\" sizes=\"(max-width: 544px) 100vw, 544px\" \/><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Method objects<\/h4>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 16%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The notation for a method object is a rectangle with an upper part with the name of the method, and a lower part with a selected set of its attributes. A data-item always includes name followed by &#8216;=&#8217; and possibly a value, while its type may be omitted. Parameters are shown as data-items.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"170\" height=\"89\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationMethodObject.jpg\" alt=\"\" class=\"wp-image-8589 size-full\"\/><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Singular method objects<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Singular method objects appear e.g. as objects derived from cycle:<\/p>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 22%\"><div class=\"wp-block-media-text__content\">\n<pre class=\"wp-block-code\"><code>...\ncycle\n   v := v + 1\n   ...\n...<\/code><\/pre>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"173\" height=\"102\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/SingularMethodObject.jpg\" alt=\"\" class=\"wp-image-10612 size-full\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Classes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rectangles of the following forms are used to illustrate classes.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"797\" height=\"204\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationClass-2.jpg\" alt=\"\" class=\"wp-image-7650\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationClass-2.jpg 797w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationClass-2-300x77.jpg 300w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationClass-2-768x197.jpg 768w\" sizes=\"(max-width: 797px) 100vw, 797px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The notation for illustrating a class is a rectangle including an upper part with the name of the class, and a part with a selected set of its attributes. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A data-item always includes name, while its type may be omitted.<\/li>\n\n\n\n<li>A method-item just include its name.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The name of the class is in boldface and centered.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The color of the background for both compartments is light yellow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No that it differs from the way objects are illustrated.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Subclass<\/h3>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 44%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The notation for a class being a subclass of another class is a line from the subclass to the superclass, with the subclass below the superclass. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A class may have an arbitrary number of direct subclasses and a subclass may itself have subclasses. The subclass hierarchy may thus have an arbitrary depth.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"534\" height=\"301\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationSubclass.jpg\" alt=\"\" class=\"wp-image-8825 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationSubclass.jpg 534w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationSubclass-300x169.jpg 300w\" sizes=\"(max-width: 534px) 100vw, 534px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:22% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"259\" height=\"86\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/09\/NotationSubclassAlt.jpg\" alt=\"\" class=\"wp-image-7401 size-full\"\/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Alternatively the name of the superclass may be placed after the &#8216;:&#8217; in a class.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Methods\/submethods<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Method<\/h4>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 15%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The notation for illustrating a method is similar to the notation for classes, however, with different color, that is light blue. The upper part holds the name of the method and the lower part holds attributes, including parameters.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"139\" height=\"89\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/NotationMethod.jpg\" alt=\"\" class=\"wp-image-10293 size-full\"\/><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Submethod<\/h4>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:27% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"325\" height=\"209\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationSubMethod.jpg\" alt=\"\" class=\"wp-image-8826 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationSubMethod.jpg 325w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationSubMethod-300x193.jpg 300w\" sizes=\"(max-width: 325px) 100vw, 325px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The notation for a method that is a submethod of another method is the same as for subclasses: a line from the submethod to the supermethod, and the submethods below the supermethod.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As for subclasses, a method may have an arbitrary number of submethods and the sub method hierarchy may have an arbitrary depth.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">References<\/h3>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">A reference its shown as an arrow pointing from a reference data-item to the object being referred to. Sometimes this reference data-item is shown as an attribute of an object and sometimes it is just shown on its own and not as an attribute of an object.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"715\" height=\"283\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/Reference.jpg\" alt=\"\" class=\"wp-image-8606 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/Reference.jpg 715w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/Reference-300x119.jpg 300w\" sizes=\"(max-width: 715px) 100vw, 715px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Composite value type<\/h3>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 46%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Notation for the definition of a composite value type and for the typing an attribute by a composite type.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"471\" height=\"165\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/creationDateObject.jpg\" alt=\"\" class=\"wp-image-10374 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/creationDateObject.jpg 471w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/creationDateObject-300x105.jpg 300w\" sizes=\"(max-width: 471px) 100vw, 471px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 21%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The corresponding <code>Date<\/code> value object is graphically embedded in the rectangle of the holding <code>Account<\/code> object.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"259\" height=\"278\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/compositeTypeObject.jpg\" alt=\"\" class=\"wp-image-8608 size-full\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Nesting<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For illustrating nesting we have two alternatives:<\/p>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 31%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The first alternative is to include classes in the lower part of a class or an object.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The uppermost notation shows that the class <code>Grammar<\/code> has nested classes <code>Symbol<\/code>, <code>Terminal<\/code>, and <code>NonTerminal<\/code>, in addition that <code>Terminal<\/code>, and <code>NonTerminal<\/code> are subclasses of <code>Symbol<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The lowermost notation shows that for each instance of class <code>Grammar<\/code> (in this case Java) has nested classes <code>Symbol<\/code>, <code>Terminal<\/code>, and <code>NonTerminal<\/code>. These classes are different from <code>Symbol<\/code>, <code>Terminal<\/code>, and <code>NonTerminal<\/code> in some other instance of <code>Grammar<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"589\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationNesting-1.jpg\" alt=\"\" class=\"wp-image-8828 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationNesting-1.jpg 358w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationNesting-1-182x300.jpg 182w\" sizes=\"(max-width: 358px) 100vw, 358px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 35%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The second alternative for showing nesting is to have the nested classes connected to the enclosing class or object, ending with a small circle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The uppermost notation shows that the class <code>Grammar<\/code> has nested classes <code>Symbol<\/code>, <code>Terminal<\/code>, and <code>NonTerminal<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The lowermost notation shows that for each instance of class <code>Grammar<\/code> (in this case Java) has nested classes <code>Symbol<\/code>, <code>Terminal<\/code>, and <code>NonTerminal<\/code>. These classes are different from <code>Symbol<\/code>, <code>Terminal<\/code>, and <code>NonTermal<\/code> in some other instance of <code>Grammar<\/code>.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"434\" height=\"502\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationNesting-2.jpg\" alt=\"\" class=\"wp-image-8590 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationNesting-2.jpg 434w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NotationNesting-2-259x300.jpg 259w\" sizes=\"(max-width: 434px) 100vw, 434px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Composite objects<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Classes of composite objects<\/h4>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 61%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">There are two alternative notations for classes of composite objects.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"677\" height=\"299\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/MFprinterComposition-5.jpg\" alt=\"\" class=\"wp-image-10397 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/MFprinterComposition-5.jpg 677w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/MFprinterComposition-5-300x132.jpg 300w\" sizes=\"(max-width: 677px) 100vw, 677px\" \/><\/figure><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Composite objects<\/h4>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 29%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The notation for composite objects uses the same graphics.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"293\" height=\"211\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/12\/MFprinterComposition-3.jpg\" alt=\"\" class=\"wp-image-10392 size-full\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">In OSDs we sometimes illustrate an aspect-object as the heading of a life line by having it overlay the composite object.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"493\" height=\"188\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/11\/compositionOSD.jpg\" alt=\"\" class=\"wp-image-9803 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/11\/compositionOSD.jpg 493w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/11\/compositionOSD-300x114.jpg 300w\" sizes=\"(max-width: 493px) 100vw, 493px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Combined nesting and composition<\/h3>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 40%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">The combination of nesting and composition is shown by a combination of the symbols for nesting and composition. This is typically used to illustrate that singular objects are described in the context of an object or class.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"245\" src=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NestingAndComposition.jpg\" alt=\"\" class=\"wp-image-8833 size-full\" srcset=\"https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NestingAndComposition.jpg 400w, https:\/\/oopm.org\/wp-content\/uploads\/2024\/10\/NestingAndComposition-300x184.jpg 300w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Object sequence diagrams<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here we plan to summarize the notation for object sequence diagrams &#8211; OSDs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<div style=\"display:flex; gap:10px;justify-content:center\" class=\"wps-pgfw-pdf-generate-icon__wrapper-frontend\">\n\t\t<a  href=\"https:\/\/oopm.org?action=genpdf&amp;id=6843\" class=\"pgfw-single-pdf-download-button\" ><img src=\"https:\/\/oopm.org\/wp-content\/plugins\/pdf-generator-for-wp\/admin\/src\/images\/PDF_Tray.svg\" title=\"Generate PDF\" style=\"width:auto; height:45px;\"><\/a>\n\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>This chapter explains the notation used in this book. Program text The program examples shown in this book are made in the qBeta language. The elements of the language are introduced as they are needed to illustrate the programming elements presented in the book. For a comprehensive description of qBeta see the web-site qbeta.dev. Abbreviations [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":21,"menu_order":24,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6843","page","type-page","status-publish","hentry"],"mb":[],"mfb_rest_fields":["title","gutenberg_elementor_mode"],"_links":{"self":[{"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/6843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oopm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6843"}],"version-history":[{"count":87,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/6843\/revisions"}],"predecessor-version":[{"id":11288,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/6843\/revisions\/11288"}],"up":[{"embeddable":true,"href":"https:\/\/oopm.org\/index.php?rest_route=\/wp\/v2\/pages\/21"}],"wp:attachment":[{"href":"https:\/\/oopm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}