Aprendre plegats
dijous, de febrer 24, 2005
 
ES2(40): Interfícies versus classes abstractes en UML
En l'UML 2.0 (podeu trobar-ne l'especificació de la superestructura aquí ) es manté la distinció entre classes abstractes i interfícies. Sobre les classes abstractes, diu -entre d'altres coses- que són:
"A class that cannot be directly instantiated" (p. 4 i 61).

Sobre les interfícies, diu -també entre d'altres coses- que són:
"A named set of operations that characterize the behavior of an element" (p. 10).
Però diu també que:
"An interface declares a set of public features and obligations that constitute a coherent service offered by a classifier...An interface does not specify how it is to be implemented, but merely what needs to be supported by realizing instances. That is,such instances must provide a a public facade (attributes, operations, externally observable behavior) that conforms to the interface. Thus, if an interface declares an attribute, this does not necessarily mean that the realizing instance will necessarily have such an attribute in its implementation, only that it will appear so to external observers. Because an interface is merely a declaration it is not an instantiable model element; that is, there are no instances of interfaces at run time...Properties owned by interfaces are abstract and imply that the conforming instance should maintain information corresponding to the type and multiplicity of the property and facilitate retrieval and modification of that information. There will not necessarily be a property implementing the classifier corresponding to the property of the interface...An association between an interface and any other classifier implies that a conforming association must exist between any implementation of that interface and that other classifier. In particular, an association between interfaces implies that a conforming association must exist between implementations of the interfaces. An interface cannot be directly instantiated (p.114).

Les preguntes que ens podem fer són: Quines diferències principals hi ha entre classes abstractes i interfícies en UML 2.0?. Es poden substituir les interfícies per classes abstractes?. I a l'inrevés? (on hi hagi una classe abstracta, es pot posar una interfície?)
(Nota: Si voleu afegir un comentari, poseu-hi el vostre nom i cognom. Així ajudem a crear una comunitat de gent que està aprenent).

Comments:
Hola

La diferencia principal esta en que en UML una clase abstracta puede implementar o no sus operaciones y una imterficie no puede implementar sus operaciones.

Una ventaja de las clases abstractas de UML es que al redefinir la implementación de una operación automáticamente se redefine en todas las clases que la implemente.

Una ventaja de las interficies es que puede ser interesante llamar con el mismo nombre a una operacion de clases distintas por que represente el mismo concepto pero la implementación ha de ser distinta en ambas clases. P.Ej si hablamos de geometría. Tenemos la interficie Poliedro con la operación area. Podemos tener una clase triángulo y una clase rectángulo que implementen la interficie y está claro que la implementación de la operación area del triangulo ha de ser obligatoriamente diferente a la operación area del rectangulo.

Toda interficie puede ser substituida por una clase abstracta pero no al inrevés.

Por otro lado, Java define de forma distinta a UML el concepto de clase abstracta. En Java una clase abstracta no puede implementar sus metodos sino que se ha de hacer en la clase que implemente dicha clase abstracta. Java ha sufrido bastantes criticas por este aspecto. Y la diferencia entre interficie y clase abstracta en Java reside en que una clase solo puede implementar una clase abstracta y puede implementar varias o ninguna interficie.

Esto esto es todo lo que se, si estoy equivocado corregirme.

Gracias

Francisco Artacho
 
Estic d'acord amb el que diu en Francisco, i a més a més he trobat una altra diferència entre interfície i classe abstracta en Java:

# Interfaces are limited to public methods and constants with no implementation. Abstract classes can have a partial implementation, protected parts, static methods, etc.

Que no sé si també és així en UML 2.0.

Oriol Nieto
 
Després de la primera definició poca cosa més a dir. Igualment afegeixo alguna cosa.

Les interfícies sols defineixen les propietats estàtiques (constants) i mètodes abstractes (no contenen instruccions). I les interfícies s'han de veure com plantilles.
La manera de diferenciar-les, seria la següent: 1-Una interfície no pot implementar mètodes i una classe abstracta si. 2- Una classe pot implementar diversos interfícies però pot derivar tant sols d'una. 3- Una interfície pot derivar-se d'altres, però no d'una classe.

Quan es fan servir les interfícies?
dons quan hi han poques operacions, poques variables o quan les classes que implementen la interfície són diverses.

Això és lo principal. He trobat més coses com instanciacions i exemples però no els fico, que crec que no ve al cas.

Per acabar crec que lo més important és un aspecte que comenta en Francisco."Una ventaja de las clases abstractas de UML es que al redefinir la implementación de una operación automáticamente se redefine en todas las clases que la implemente" I tinc una pregunta. És aquesta la avantatge més important?

Salut, Marc.
 
La diferència més visible entre les interficies i les classes abstractes és que les interficies són una definició de comportament (mètodes i constants) pero no una implementació. Cosa que no passa en les classes abstractes on es poden definir variables i implementar mètodes que seran usats per les subclasses que tingui.

Les classes abstractes ens poden ajudar molt a no reescrire codi encara que, per altra banda les interficies ens ajuden a definir una operació comuna en diferents classes encara que no tinguin cap relació (per definir/implementar una operacio amb una classe ambstracta, totes les classes que la usen haurien de ser subclasse d'ella).

Penso que hi ha casos on es pot substituir una classe abstracta per una interficie i a l'inrevés. Pero que tambe hi ha casos, i no pocs, on aquest canvi no es pot fer.
 
I like this blog is fantastic, is really good written. Congratulation. Do you want to see something more? Read it...: Costa Rica is a country with a extremely sense of freedom. The landscapes are for much the most green in whole center america.The chances of investement are way to high, the average of Americans, European and people of the entire planet who is buying here is up in the sky !!!
Great investment opportunity in Costa Rica: condos, costa rica real estate, costa rica property. Visit us for more info at: http://www.jaco-bay.com/
 
Publica un comentari a l'entrada

<< Home

Powered by Blogger