Objects are how everything is made using Abstraction Machine. Each site starts with an object called a 'Site' object and must be the root or parent object of every single object in the rest of the project. There are many different types of objects that are all responsible for doing distinct tasks. For example, the site object is responsible for setting the icon of the website that appears in the tab of a web browser next to its title. Other objects are specifically used to interact with the database, send an email or even receive a payment.
Each object has several methods. These methods allow you to tell the object what to do. Some methods are only able to be used once, for example to set which database table to look at, whereas other methods can be used used multiple times and can be repositioned to set a specific order, such as when adding content.
Each method has one or more fields that you can add information to. Sometimes these fields will allow you to add a child object instead of just typing in text or selecting a drop down value. As you add these child objects the structure of the site is built. For example, if you add two page objects to your initial site object then you can display different content depending on which page object is executed. Which page object is executed would depend on the URL you visited and which URL you set using a method inside of each of the page objects. From there, you can add other objects to these page objects and very quickly the tree structure of objects for the site starts to take shape.
Objects are able to be reused. For example, if you had a piece of text that you needed to display many times in various different places of the site then, instead of copying and pasting the content everywhere, you could put it inside of one Content object. This would enable you to reuse this Content object by placing it wherever you need this text to be displayed.
When a method is deleted then any child objects that method contained are not deleted. They still exist even though they might not currently belong to any methods. They can be used again in the same way that objects are reused, by searching for them and adding them to a field. To delete an object it must first be unused by any methods and then deleted using the list of unused objects in the navigation bar of the site editor.
Wherever content is accepted by an object, you can always insert HTML. Abstraction machine does not inherently provide any style, theme, design, HTML, CSS or images for a site. Unless you are using a template from the template library, it is expected that the HTML which represents the design of the site is added in the appropriate places as content. For example, a website with a header and footer which is the same throughout the website could add the HTML of the header and footer to the initial site object before and after any other objects, such as page objects. If the header does need to change then you can place objects that do things such as checking if the user is logged in before displaying different versions of the header.
Many objects have one or more methods which accept content and also have other methods which will determine which content from these methods will be displayed and which will not. As already mentioned, pages will only display their content if the correct URL has been visited but another obvious example is the Condition object which allows you to add content, including child objects, if successful and if unsuccessful. In this example, the condition that you set (which determines what is successful) can be anything to do with the data you have available, for example any data submitted by a form, any variables or session data, database results or even API requests, all of which can be generated or set by other objects.
The rest of this section details every method of the objects available to you. It will also show you when you can use a child object and which child objects can be used in which places. However, many of the objects and methods are quite intuitive to use and when editing a site the fields of the methods will only show you the child objects which are allowed to be added in that place.