Author:king

Date:2009-05-27T01:21:35.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@230 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
king
2009-05-27 01:21:35 +00:00
parent ce8efd749e
commit b82d853640
2 changed files with 2 additions and 2 deletions

View File

@@ -1,7 +1,7 @@
[[Property:title|I2E: Genericity]] [[Property:title|I2E: Genericity]]
[[Property:weight|-6]] [[Property:weight|-6]]
[[Property:uuid|091c0b65-73de-b454-b3f2-d8752983780e]] [[Property:uuid|091c0b65-73de-b454-b3f2-d8752983780e]]
Building software components (classes) as implementations of abstract data types yields systems with a solid architecture but does not in itself ensure reusability and extendibility. Two key techniques address the problem: generosity (unconstrained or constrained) and inheritance. Let us look first at the unconstrained form. Building software components (classes) as implementations of abstract data types yields systems with a solid architecture but does not in itself ensure reusability and extendibility. Two key techniques address the problem: genericity (unconstrained or constrained) and inheritance. Let us look first at the unconstrained form.
To make a class generic is to give it '''formal generic parameters''' representing as unknown types, as in these examples from EiffelBase, an open-source library covering basic data structures and algorithms: To make a class generic is to give it '''formal generic parameters''' representing as unknown types, as in these examples from EiffelBase, an open-source library covering basic data structures and algorithms:
<code> <code>

View File

@@ -29,7 +29,7 @@ Example from EV_TIMEOUT
If you have an existing, custom platform dependent implementation, there are a few more changes needed than what was required for the interface class. If you have an existing, custom platform dependent implementation, there are a few more changes needed than what was required for the interface class.
For the interface class changes, now the interface object is passed to the implementation after creation, via `assign_interface', this means that `make' no longer takes an argument. This also means that to adhere to void-safety all of the types are now created and initialized via the creation routine of the implementation object. For the interface class changes, now the interface object is passed to the implementation after creation, via `assign_interface', this means that `make' no longer takes an argument (see `create_implementation' above). This also means that to adhere to void-safety all of the types are now created and initialized via the creation routine of the implementation object.
An example from the conversion of Windows implementation of EV_BUTTON_IMP. An example from the conversion of Windows implementation of EV_BUTTON_IMP.