Update wikipage Universal class and its features. (Signed-off-by:alexk).

git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@1914 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
eiffel-org
2017-10-03 15:12:51 +00:00
parent d07f60f5a9
commit 4e38cce251

View File

@@ -3,7 +3,7 @@
[[Property:title|Universal class and its features]] [[Property:title|Universal class and its features]]
The Eiffel inheritance mechanism is set up in such a way that every class is a descendant of a Kernel Library class called [[ref:libraries/base/reference/any_chart|ANY]] . The features of this class provide a number of generally applicable facilities covering such needs as comparison, copying and rudimentary input and output. The Eiffel inheritance mechanism is set up in such a way that every class is a descendant of a Kernel Library class called [[ref:libraries/base/reference/any_chart|ANY]] . The features of this class provide a number of generally applicable facilities covering such needs as comparison, copying and rudimentary input and output.
==The structure of universal classes== =The structure of universal classes=
Every class which has no inheritance clause is understood to have an inheritance clause of the form Every class which has no inheritance clause is understood to have an inheritance clause of the form
<code> <code>
@@ -13,7 +13,7 @@ inherit
As a result, every developer-defined class is a descendant of [[ref:libraries/base/reference/any_chart|ANY]] . You may introduce your own project specific features in [[ref:libraries/base/reference/any_chart|ANY]] so that all the classes of your system will be able to use these features. As a result, every developer-defined class is a descendant of [[ref:libraries/base/reference/any_chart|ANY]] . You may introduce your own project specific features in [[ref:libraries/base/reference/any_chart|ANY]] so that all the classes of your system will be able to use these features.
==Using the universal classes== =Using the universal classes=
If you need to rename or redefine a feature inherited from one of the universal classes, you should include an explicit inheritance clause, as in If you need to rename or redefine a feature inherited from one of the universal classes, you should include an explicit inheritance clause, as in
<code> <code>
@@ -43,7 +43,7 @@ The features of [[ref:libraries/base/reference/any_chart|ANY]] are usable in bo
The first call yields a printable representation of the current object; the second, which assumes that a is not void, yields a printable representation of the object attached to a. The first call yields a printable representation of the current object; the second, which assumes that a is not void, yields a printable representation of the object attached to a.
==Input and output features== =Input and output features=
Some of the features of [[ref:libraries/base/reference/any_chart|ANY]] cover common input and output needs. Some of the features of [[ref:libraries/base/reference/any_chart|ANY]] cover common input and output needs.
@@ -53,7 +53,7 @@ Function <eiffel>out</eiffel>, of type [[ref:libraries/base/reference/string_8_c
The call <code>print (x)</code> will output the value of <code>x.out</code> on the default output if <code>x</code> is not void, and do nothing otherwise. The call <code>print (x)</code> will output the value of <code>x.out</code> on the default output if <code>x</code> is not void, and do nothing otherwise.
==Copy and comparison routines== =Copy and comparison routines=
Procedure copy copies the fields of an object onto those of another. It is used under the form Procedure copy copies the fields of an object onto those of another. It is used under the form
<code> <code>
@@ -78,13 +78,13 @@ The function <eiffel>twin</eiffel> is defined in terms of <eiffel>copy</eiffel>,
{{note|In some existing Eiffel code you may encounter the use of a function <code>clone</code> which is used to do the job of <code>twin</code>, but has a form like <code>copy</code>, as in <code>target.clone (source)</code>. <code>clone</code> is an obsolete function. Use <code>twin</code> instead. {{note|In some existing Eiffel code you may encounter the use of a function <code>clone</code> which is used to do the job of <code>twin</code>, but has a form like <code>copy</code>, as in <code>target.clone (source)</code>. <code>clone</code> is an obsolete function. Use <code>twin</code> instead.
}} }}
==Type information== =Type information=
The string-valued query <eiffel>generator</eiffel>, applied to any object, returns the name of the object's generating class: the class of which it is an instance. The boolean function <eiffel>conforms_to</eiffel> makes it possible to test dynamically whether the type of an object conforms to that of another - that is to say whether the first one's generator is a descendant of the second one's. The string-valued query <eiffel>generator</eiffel>, applied to any object, returns the name of the object's generating class: the class of which it is an instance. The boolean function <eiffel>conforms_to</eiffel> makes it possible to test dynamically whether the type of an object conforms to that of another - that is to say whether the first one's generator is a descendant of the second one's.
These two features enable clients to ascertain the dynamic type of an entity at runtime. They are only useful for low-level components; the normal mechanism for type-dependent operations is dynamic binding. These two features enable clients to ascertain the dynamic type of an entity at runtime. They are only useful for low-level components; the normal mechanism for type-dependent operations is dynamic binding.
==Miscellaneous== =Miscellaneous=
The query Void, of type <eiffel>NONE</eiffel>, denotes a reference that is always void - not attached to any object. The query Void, of type <eiffel>NONE</eiffel>, denotes a reference that is always void - not attached to any object.