This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:1.2_views:3_taxonomic:4_data_tax:08_objects:01_char:start [2021/11/07 01:21] nick ↷ Links adapted because of a move operation |
dido:public:ra:1.2_views:3_taxonomic:4_data_tax:08_objects:01_char:start [2022/05/27 19:43] (current) nick grammar |
||
|---|---|---|---|
| Line 7: | Line 7: | ||
| Every Object has characteristics that contextually describe the object. For example, the Object's name, if it implements and interfaces or if it is an extension of another object. | Every Object has characteristics that contextually describe the object. For example, the Object's name, if it implements and interfaces or if it is an extension of another object. | ||
| - | * **Name** is a textual name that uniquely identifies the object with the context of the [[dido:public:ra:xapend:xapend.a_glossary:n:namespace]]. For example, there are multiple objects with the name of **Tank**. The first is in the namespace (i.e., context) of the oil and gas industry and refers to a fuel tank. Another **Tank** object has a military namespace and refers to a military vehicle, and another **Tank** object has a clothing namespace and refers to a "tank top" tee-shirt. All the rest of the data for the object is dependent on context (i.e., namespace). | + | * **Name** is a textual name that uniquely identifies the object with the context of the [[dido:public:ra:xapend:xapend.a_glossary:n:namespace]]. For example, there are multiple objects with the name **Tank**. The first is in the namespace (i.e., context) of the oil and gas industry and refers to a fuel tank. Another **Tank** object has a military namespace and refers to a military vehicle, and another **Tank** object has a clothing namespace and refers to a "tank top" tee shirt. All the rest of the data for the object is dependent on context (i.e., namespace). |
| - | * **Implements** is a way to describe which [[dido:public:ra:xapend:xapend.a_glossary:i:interface | Interfaces]] this object provides an implementation for. For example, the [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_0020 | ERC-20]] interface used for many [[dido:public:ra:xapend:xapend.a_glossary:c:cryptocurrency | Cryptocurrencies]]. [[dido:public:ra:xapend:xapend.b_stds:defact:orcle:java | Java]] defines standardized collection interfaces for things like Lists, Set, Queue, Maps and Iterators(( | + | * **Implements** is a way to describe which [[dido:public:ra:xapend:xapend.a_glossary:i:interface | Interfaces]] this object provides an implementation for. An example is the [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_0020 | ERC-20]] interface used for many [[dido:public:ra:xapend:xapend.a_glossary:c:cryptocurrency | Cryptocurrencies]]. [[dido:public:ra:xapend:xapend.b_stds:defact:orcle:java | Java]] defines standardized collection interfaces for things like List, Set, Queue, Maps and Iterators(( |
| Programiz.com | Programiz.com | ||
| __Java Collection Frameworks__, | __Java Collection Frameworks__, | ||
| Accessed: 27 October 2021, | Accessed: 27 October 2021, | ||
| [[https://www.programiz.com/java-programming/collections]] | [[https://www.programiz.com/java-programming/collections]] | ||
| - | )). C++ has similar interfaces to those describe for Java (( | + | )). C++ has similar interfaces to those described for Java (( |
| Geeksforgeeks.com, | Geeksforgeeks.com, | ||
| __The C++ Standard Template Library (STL)__, | __The C++ Standard Template Library (STL)__, | ||
| Accessed: Accessed: 27 October 2021, | Accessed: Accessed: 27 October 2021, | ||
| [[https://www.geeksforgeeks.org/the-c-standard-template-library-stl/]] | [[https://www.geeksforgeeks.org/the-c-standard-template-library-stl/]] | ||
| - | )). The exact way that interfaces are implemented differs from language to language, and can even differ from versions of the same language. | + | )). The exact way interfaces are implemented differs from language to language, and can even differ from versions of the same language. |
| - | * **Extends** is a way to describe a hierarchical tree for an object (i.e., its [[dido:public:ra:xapend:xapend.a_glossary:i:inheritance]]). For example, a graphics program ma have a base object called a **''GeographicShape'''**. Other objects within the graphics program such as **''Square''**, **''Circle''** and **''Triangle''** are said to **extend** the original definition of **''GeographicShape''**. | + | * **Extends** is a way to describe a hierarchical tree for an object (i.e., its [[dido:public:ra:xapend:xapend.a_glossary:i:inheritance]]). For example, a graphics program may have a base object called a **''GeographicShape'''**. Other objects within the graphics program such as **''Square''**, **''Circle''** and **''Triangle''** are said to **extend** the original definition of **''GeographicShape''**. |
| ===== DIDO Specifics ===== | ===== DIDO Specifics ===== | ||
| [[dido:public:ra:1.2_views:3_taxonomic:4_data_tax:08_objects:01_char:start| Return to Top]] | [[dido:public:ra:1.2_views:3_taxonomic:4_data_tax:08_objects:01_char:start| Return to Top]] | ||
| - | Smart Contracts are akin to classes in [[dido:public:ra:xapend:xapend.a_glossary:o:oop]] languages, and they can have [[dido:public:ra:xapend:xapend.a_glossary:i:inheritance]] and [[dido:public:ra:xapend:xapend.a_glossary:i:interface | Interfaces]]. There are two very well-known examples of **interfaces** in use within [[dido:public:ra:xapend:xapend.a_glossary:e:ethereum]]: | + | Smart Contracts are akin to classes in [[dido:public:ra:xapend:xapend.a_glossary:o:oop]] languages; they can have [[dido:public:ra:xapend:xapend.a_glossary:i:inheritance]] and [[dido:public:ra:xapend:xapend.a_glossary:i:interface | Interfaces]]. There are two very well-known examples of **interfaces** in use within [[dido:public:ra:xapend:xapend.a_glossary:e:ethereum]]: |
| * [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_0020]] | * [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_0020]] | ||
| * [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_0721]] | * [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_0721]] | ||
| - | However, all many of the [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip]] define interfaces. | + | However, many of the [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip]] define interfaces. |
| **Interfaces** are similar to **abstract contracts**, but they are limited to what the contract’s ABI can represent. In other words, you could convert an ABI into an interface, or vice versa, and no information would be lost. According to the Solidity docs they have a few additional restrictions. For example, Doug Crescenzi, | **Interfaces** are similar to **abstract contracts**, but they are limited to what the contract’s ABI can represent. In other words, you could convert an ABI into an interface, or vice versa, and no information would be lost. According to the Solidity docs they have a few additional restrictions. For example, Doug Crescenzi, | ||
| 13 June 2018, | 13 June 2018, | ||
| - | Accessed 3 Novemebr 2021, | + | Accessed 3 November 2022, |
| [[https://medium.com/upstate-interactive/solidity-how-to-know-when-to-use-abstract-contracts-vs-interfaces-874cab860c56]] | [[https://medium.com/upstate-interactive/solidity-how-to-know-when-to-use-abstract-contracts-vs-interfaces-874cab860c56]] | ||
| )) outlines the following restrictions: | )) outlines the following restrictions: | ||
| Line 46: | Line 46: | ||
| Interfaces are expressed using the interface keyword. Here’s an example: | Interfaces are expressed using the interface keyword. Here’s an example: | ||
| - | <code solidity> | + | <Code solidity> |
| pragma solidity ^0.4.24; | pragma solidity ^0.4.24; | ||
| Line 54: | Line 54: | ||
| function transfer(address to, uint256 value) public returns (bool); | function transfer(address to, uint256 value) public returns (bool); | ||
| } // End Token | } // End Token | ||
| - | </code> | + | </Code> |
| + | |||
| + | <color darkred><todo @char #char:2022-03-22>Review subsections </todo></color> | ||
| /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||