Вы находитесь на странице: 1из 40

Conceptos de

Programacin Orientada a Objetos


OOP
(Object Oriented Programming)
Profesor
M. C. Enrique Alejandro Lpez Lpez
Revisin 2010

Contenido

1. Introduccin

Paradigmas de Programacin

Paradigma Orientado a objetos

Tipo Abstracto de Datos

Conceptos bsicos de POO: Clase, Objeto, Mensaje, Clase


Abstracta y Tipo Genrico

Otros conceptos de POO: Composicin, Herencia, Herencia


Mltiple y polimorfismo

Elementos del lenguaje de programacin: operadores,


palabras reservadas, estructuras de control

Contenido

3. Implementacin de clases (Java y C++)


3. Encapsulamiento de informacin
4. Constructores y destructores
5. Mtodos de acceso y de utilera
6. Definicin y operaciones de una cola
7. Sobrecarga de mtodos
8. Miembros estticos
4. Implementacin de Composicin, herencia y polimorfismo
(Java y C++)
3. Composicin
4. Herencia
5. Clase abstracta
6. Polimorfismo

Contenido

2. Elementos del lenguaje de programacin (Java y C++)


Palabras reservadas

Tipos de datos simples

Estructuras de control

Operadores: Aritmticos, Lgicos, de Relacin, de Asignacin,


de incremento, de nivel de bits.

Operadores exclusivos de C++ y operadores exclusivos de


Java

Mtodos

Arreglos de una dimensin (vectores) y de dos dimensiones


Matrices

Programacin Orientada a Objetos (Object Oriented Programming OOP)

Bibliografa
1. Thinking in Java. Eckel,Bruce, Prentice Hall, Tercera
Edicin, 2003.
2. Thinking in C++. Eckel,Bruce, Prentice Hall, Segunda
Edicin, 2000.
3. Introduction to Object-Oriented Programming Using
C++, Peter Mller, Globewide Network Academy, 1997.
4. Programacin Orientada a Objetos. Joyanes Aguilar,
Luis; Graw-Hill, Segunda Edicin, 1998.
1 Libros disponibles en www.bruceEckel.com
2 Libro disponible en www.gnacademy.org

1. Introduccin a la POO
Paradigma es un conjunto de teoras, estndar y mtodos que juntos representan
un medio de organizacin del conocimiento: es decir, es un medio de visualizar
el mundo (Kuhn).
Un paradigma de programacin representa un enfoque particular o filosofa para la
construccin del software.
Clasificacin de Lenguajes de programacin de acuerdo al paradigma.
Imperativos

Son los lenguajes que dan instrucciones a la computadora, es decir, rdenes.


ms apegado al modelo de la mquina: Fortran, Pascal, C, etc.

Funcionales

Son los lenguajes basados en el concepto de funcin matemtica.


funcin no como el concepto de subprograma: Lisp, Haskell, Erlang, etc.

Lgicos

Son los lenguajes los que se basan en la teora lgica de primer orden
La aplicacin de reglas, hiptesis, axiomas y teoremas: Prolog, Mercury, ALF, etc.

Orientados a Objetos. Son los lenguajes que permiten

implementar conceptos como objeto,


clase, mensaje, herencia, polimorfismo, etc: C++, Java, C#, etc.

Estructurado, Concurrentes, Distribuidos, Paralelos, mltiples paradigmas.


No existe un estilo de programacin idneo para todas las clases de aplicaciones.

1. Introduccin a la POO
Lenguajes de programacin ms populares segn TIOBE SOFTWARE
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

1. Introduccin a la POO

La Programacin Orientada a Objetos (POO u OOP) es un paradigma de


programacin que define los programas en trminos de clases de objetos. Los objetos
son entidades que combinan estado (propiedades o datos), comportamiento
(procedimientos o mtodos) e identidad (propiedad del objeto que lo diferencia del
resto).
Algunas de las causas del desarrollo de las tcnicas OO son:
Es una forma natural en que percibimos el mundo.
Adecuada para aplicaciones de prototipos y simulaciones.
La herencia y la encapsulacin promueven la reutilizacin.
La gran cantidad de Lenguajes Orientados a Objetos (LOOP).
Interfaces de usuario grficas.
Bases de datos orientadas a objetos.

Notaciones orientadas a objetos. (UML)


Tecnologas de componentes. (CORBA, COM, DCOM, ActiveX, etc. middleware )
Proceso de desarrollo de software. (Coad/Yourdon, OOSE Jacobson, OMT
Rumbaug, BOOCH-93 Booch, RUP ).

1. Introduccin a la POO
Lenguajes de Programacin.
Simula 67 primer LOOP,
Hereda de Simula I y Algol 60.

Smalltalk lenguaje puro.


Anteriores 72, 74, 76.
Smalltalk/V para PC.

C++ uno de los LOOP


ms populares

Java un LOOP un fuerte


oponente de C++
Otros LOOP: Eifel, Object Pascal,
Ada-95, CLOS, Delphi, visual
Object, Prolog++, Python, etc.

1. Introduccin a la POO

Lenguajes de Programacin.

10

11

1. Introduccin a la POO
Ruta de evolucin de los lenguajes de programacin:
Programacin
No estructurada

Programacin
Procedimental

Programacin
Modular

Main
Program
Procedure

Datos Globales

Programacin
OO

2. Conceptos Bsicos de la POO.


Tipos Abstractos de Datos (ADT Abstract Data Types)
Abstraccin es el proceso que permite distinguir
los detalles esenciales de los no esenciales de un
problema determinado.
Permite tratar la complejidad (modelo)
Modelo define una perspectiva abstracta
(datos y operaciones)
Los alumnos son personas
caracterizadas por muchas
propiedades:

Nombre
Estatura
Fecha de nacimiento
Matricula
Color de los ojos
Preferencia sexual, Etc.

alumno abstracto
Propiedades especificas
del problema
Nombre
Matricula
Fecha de nacimiento, Etc.
Datos del
Modelo

12

2. Conceptos Bsicos de la POO.


Tipos Abstractos de Datos (ADT Abstract Data Types)
La pura descripcin (datos) del alumno abstracto no es suficiente, se deben
definir una serie de operaciones que permitan manipular a los alumnos
abstractos.
El acceso a los datos debe ser posible nicamente
con las operaciones asociadas. (estado valido)
Operaciones:

Crear alumno,
borrar alumno,
Obtener matricula,
Obtener estado acadmico,
Etc.

ADT: Alumno
Datos
Operaciones

Un tipo TAD es puede definir como un conjunto de valores sobre los que se
aplican un conjunto dado de operaciones que cumplen determinadas
propiedades.
Un TAD define un modelo matemtico de podra ser implementado en algn
lenguaje de programacin.
La definicin de un TAD no est relacionada en absoluto con los detalle de la
implementacin. Tal vez ni siquiera sea posible implementar un TAD particular
en algn software o hardware .

13

2. Conceptos Bsicos de la POO.


Tipos Abstractos de Datos (ADT Abstract Data Types)
Un TAD cumple con las siguientes propiedades:
1.Exporta un tipo. (crear instancias)
2.Exporta un conjunto de operaciones, llamado interface. (manipular instancias)
3.La interface es el nico mecanismo de acceso a los datos. (protegerlos datos)
4. Axiomas. (condiciones que debe cumplir)
TDA Integer
Datos
Una secuencia de dgitos que opcionalmente presentan como
prefijo un signo ms o un signo menos.
Nos referimos a este nmero entero con signo como N.
Operaciones
Constructor
Crea un nuevo integer y lo inicializa a cero.
Add(k)
Crea un nuevo integer, suma de N y k.
Sub(k)
Crea un nuevo integer, diferencia de N y k
Set(k)
Pone a N lo que vale k.
...
Destructor Elimina entero
End

14

2. Conceptos Bsicos de la POO.


Tipos Abstractos de Datos (ADT Abstract Data Types)
Constructor describe acciones a ejecutar al crear una instancia.
Destructor

describe acciones que se deben ejecutar al destruir una instancia.

Independiente del lenguaje.


La notacin de add se puede sustituir por +
La OOP es la Programacin de ADTs
TDA Vertor
Datos:
Una secuencia de enteros referida por Vec, que representa la direccin del
primer elemento.
Un entero que determina nmero de elementos, referido por Size
Operaciones:
Constructor(tam) crea nuevo Vector reserva memoria para Vec e inicializa
en cero sus elementos, adems inicializa Size en el valor de entrada.
Ordena( )
ordena los elementos de Vec.
Busca(key)
revisa si key se encuentra en los elementos de Vec. Si lo
encuentra regresa su posicin en Vec sino regresa -1.
...
Destructor
elimina la memoria asignada a Vec y elimina el Vector.
End.

15

2. Conceptos Bsicos de la POO.


Tipos Abstractos de Datos (ADT Abstract Data Types)
A la propiedad de ocultar los datos y que solo se puedan acceder por medio de la
interface se le llama encapsulamiento. Esta propiedad proporciona las siguientes
ventajas
Protege los datos a no poder accederlos directamente no puede cambiar el
comportamiento ni el estado.
Independencia de la estructura de datos interna.
Mantiene un estado vlido de los datos.

Por ejemplo:
PILA

La estructura interna puede ser un arreglo o una lista ligada.

Estado vlido del tope (en el primer caso)

No se permite insertar o eliminar datos en otro lugar que no


sea el tope

Los Lenguajes orientados a Objetos LOOP deben permitir la implementacin de


los ADTs.
El ADT Integer es implementado en lenguajes como C, Pascal, Modula, etc.
int i, j, k; /* Define tres integers */
i = 1;
/* Asigna 1 al integer i */
j = 2;
/* Asigna 2 al integer j */
k = i + j; /* Asigna la suma de (i) y (j) a (k) */

16

2. Conceptos Bsicos de la POO.


Tipos Abstractos de Datos (ADT Abstract Data Types)

Tipos Genricos Abstractos de Datos.


Los GADT( Generic ADT) se utilizan para definir tipos abstractos de datos
que permitan crear instancias del ADT para distintos tipos de elementos.
Por ejemplo:
Se puede definir el ADT Pila para crear Pilas de carros,
Pilas de platos, Pilas de enteros, etc.
Pila <Enteros> pilaInt
La notacin de corchetes angulares denota el tipo de
elementos que va a utilizar la Pila.

17

2. Conceptos Bsicos de la POO.


Clase
Clase es una descripcin de un conjunto de objetos que comparten los mismos
atributos, operaciones, relaciones y semntica.
Una Clase es la implementacin de un ADT. Define Atributos y Mtodos que
implementan la estructura de datos y las operaciones del ADT, respectivamente.
Se puede decir que las clases definen las propiedades y el comportamiento de un
conjunto de objetos.
class Integer {
attributes:
int i
methods:
Integer( ) //constructor reserva memoria y coloca en cero a i;
setValue(int n)
Integer addValue(Integer j)

~Integer( ) //libera la memoria asignada para i


}
Observar como los mtodos ya muestran algunos detalles de implementacin como
los tipos de los parmetros y el tipo de retorno.

18

2. Conceptos Bsicos de la POO.


Objeto y Mensaje
Objeto
Un Objeto es una instancia de una clase. Puede ser identificado de forma nica
por su nombre y define un estado, el cual es representado por los valores de sus
atributos en un momento en particular.
Por ejemplo en el caso anterior.
Integer a, b, c;
Debe ser evidente que el Comportamiento de un objeto est definido por el
conjunto de mtodos que le pueden ser aplicados(los definidos en su clase).
Mensaje
Un mensaje es una llamada de un objeto a uno de sus mtodos y se compone
por el nombre del mtodo y los argumentos necesarios, por supuesto el nombre del
objeto que llama al mtodo.
Por ejemplo:
a.setValue( 3 )
b.setValue( 5 )
c = a.addValue(b)
Un programa escrito con el paradigma orientado a objetos va hacer un conjunto
de objetos interrelacionndose.

19

20

2. Conceptos Bsicos de la POO.


Composicin
Relacin:

parte de ( part of)

En programacin estructurada se crean tipos ms complejos a partir otros


Por ejemplo:

Suponga que ya se han definido varias clases como Circle, Triangle,


etc. Y se quiere definir una clase Logo como la siguiente:

class Logo {
attributes:
Circle circle
Triangle triangle
methods:
set(Point where)
}

Obserbando esta clase se puede decir que:


circle y triangle son parte de logo

has a

has a

Se tiene una relacin inversa a la relacin


parte de y es la relacin tiene un ( has a)

En OOP nos referimos a esta relacin como una Composicin


Composicin es la inclusin de objetos de clase como

miembros de otras clases.

2. Conceptos Bsicos de la POO.


Herencia
Relacin:

un tipo de ( a kind of)

Una relacin un tipo de es una relacin entre clases y se lleva a cabo cuando
una clase B se puede definir como una clase A ms especializada.
Por ejemplo:
class Point {
attributes:
int x, y
methods:
setX(int newX)
getX()
setY(int newY)
getY()
}

Suponga que se le pide realizar un programa que dibuje


figuras, como crculos, puntos, tringulos, etc.
class Circle {
attributes:
int x, y, radius
methods:
setX(int newX)
getX()
setY(int newY)
getY()
setRadius(newRadius)
getRadius()
}

Comparando ambas clases se puede decir que un


Circle es un tipo de Point, pero ms especializado.

class Circle inherits from Point {


attributes:
int radius
methods:
setRadius(newRadius)
getRadius()|
}

21

2. Conceptos Bsicos de la POO.


Herencia
Relacin:

es un

( is a)

La relacin anterior es una relacin que se da a nivel de clases, sin embargo si


se crea una instancia de cada clase, existir una relacin es un entre dichos
objetos.
Circle crculo;
Se puede decir que cculo es un punto
Por ejemplo:
Point punto;

La herencia utiliza las relaciones un tipo de y es un para definir una nueva


clase que herede de otra. De esta forma la nueva clase contiene las caractersticas
de la otra clase sin la necesidad de definirlas nuevamente.

22

2. Conceptos Bsicos de la POO.


Herencia
A nivel de objetos se puede usar un crculo como se utilizaba un punto ya
que como Circle hereda de Point. Un crculo (instancia de Circle) es un
un punto (instancia de Point).
Por ejemplo:

Circle acircle
acircle.setX(1)
/* Heredados de Point */
acircle.setY(2)
acircle.setRadius(3) /* aadidospor Circle */

Utilizando la relacin es un. En cualquier lugar donde se utilizaba un


punto (instancia de Point) se puede utilizar un crculo (instancia de Circle).
Por ejemplo:
move(Point apoint, int deltax) {
apoint.setX(apoint.getX() + deltax)
}

Circle acircle
...
move(acircle, 10)

23

24

2. Conceptos Bsicos de la POO.


Herencia
Herencia es el mecanismo que permite que una clase A
herede las propiedades de una clase B. Si A hereda de B,
los objetos de la clase A tienen acceso a los tributos y mtodos
de B, sin la necesidad de redefinirlos.
Si la clase A hereda de la clase B, entonces B es la
superclase de A, y sta a su vez es subclase de B.

Point

Circle

Para el concepto de superclase tambin se puede utilizar el trmino clase padre o


clase clase base.
Para el concepto de subclase tambin se puede utilizar el trmino clase hija o
clase derivada.
Los objetos de una clase derivada pueden ser utilizados en circunstancias donde
son utilizados objetos de su clase base.

2. Conceptos Bsicos de la POO.

25

Herencia
Herencia Mltiple
La herencia mltiple no significa que mltiples subclases compartan la misma clase,
y tampoco significa que una subclase herede de una clase que es a su vez subclase
de otra clase.
Significa que una subclase puede tener ms de una superclase.

2. Conceptos Bsicos de la POO.


Herencia
Herencia Mltiple
Por ejemplo:

Suponga que adems de las clases de dibujo ya mencionadas tiene la


clase String, que cuenta con el mtodo append( ).

class DrawableString inherits from Point, String {


attributes:
/* All inherited from superclasses */
methods:
/* All inherited from superclasses */
}

DrawableString dstring
...
move(dstring, 10)

...
dstring.append("The red brown fox ...")

26

2. Conceptos Bsicos de la POO.


Herencia
Herencia Mltiple
Herencia Mltiple Si la clase A hereda de ms de una clase, p.ej. A hereda de
B1, B2, ..., Bn, hablamos de herencia mltiple. Esto puede presentar conflictos
de nomenclatura en A si al menos dos de sus superclases definen propiedades
con el mismo nombre.
El orden en el cul las superclases son
provistas, definen que propiedad ser
accesible por el nombre causante del
conflicto. Los otros quedarn "escondidos".
Las subclases deben resolver el conflicto
proveyendo una propiedad con el
nombre y definiendo como usar los de sus
superclases.

27

2. Conceptos Bsicos de la POO.


Herencia
Clase Abstracta
Con la herencia nosotros podemos forzar a una subclase para que ofrezca las
mismas propiedades de sus superclases. Por consecuencia, los objetos de una
subclase se comportan como los objetos de sus superclases.
Algunas veces tiene sentido solamente describir las propiedades de un
conjunto de objetos sin saber el comportamiento real de antemano.
Por ejemplo:

En el programa de dibujo se bebera provee un mtodo que


permitiera dibujar la figura para cada clase (diferente rutina)

Esto se realiza por medio de una clase abstracta la cual especifica algunas
propiedades , pero no las define completamente.
Despus hay que hacer que las clases de deriven de la clase abstracta para
forzar a las clases derivadas a implementar las propiedades de la clase base.

268

2. Conceptos Bsicos de la POO.

29

Herencia
Clase Abstracta
Por ejemplo:

En el programa de dibujo se bebera provee un mtodo que


permitiera dibujar la figura para cada clase (diferente rutina)

abstract class DrawableObject {


attributes:
methods:
print()
}

abstract. Se usa para expresar el hecho de que las


clases derivadas deben "redefinir" las propiedades
para cumplir con la funcionalidad deseada.

Desde el punto de vista de la clase abstracta, las propiedades son nicamente


especificadas pero no completamente definidas.
La definicin completa incluyendo la semntica de las propiedades debe ser
provista por las clases derivadas.

2. Conceptos Bsicos de la POO.


Herencia
Clase Abstracta

Por ejemplo:

class Point inherits from DrawableObject {


attributes:
int x, y
methods:
setX(int newX)
getX()
setY(int newY)
getY()
print() /* Redefinir para Point */
}

la clase DrawableObject, no provee


ninguna
funcionalidad para dibujar por s misma.
La intencin no es el crear objetos a partir
de ella. Esta clase ms bien especifica las
propiedades que deben ser definidas por
cada clase derivada.

Una clase A se llama clase abstracta si es usada solamente como una superclase
para otras clases. La Clase A solamente especifica propiedades. No se usa para crear
objetos. Las clases derivadas deben definir las propiedades de A.

30

2. Conceptos Bsicos de la POO.


Tipos Genricos
Las clases nos permiten definir tipos definidos por el usuario, si embargo
algunas veces es necesario que stos operen sobre otros tipos de datos.
Por medio de las plantillas se pueden crear tipos que operen sobre otros tipos
de datos. As tener por ejemplo una plantilla de el tipo lista y poder crear
listas de manzanas, peras, enteros, etc.
Por ejemplo:
template class List for T {
attributes:
/* Estructura de datos */
/* para la lista */
methods:
append(T element)
T getFirst()
T getNext()
bool more()
}

En la definicin de esta clase la palabra


(template) sirve para denotar que esta clase
es una plantilla y (T) representa al tipo real.
Los mtodos de la clase utilizan este tipo
simblico para representar el tipo real.

31

2. Conceptos Bsicos de la POO.


Tipos Genricos
Con la plantilla anterior se pueden declara una Lista que operen sobre un tipo
determinado de elementos.
Por ejemplo:

List for Apple appleList


Apple anApple, anotherApple
. . .
appleList.append(anotherApple)
appleList.append(anApple)

Al declarar la lista el compilador utiliza la plantilla y sustituye cada ocurrencia


de T por Apple y crea una definicin de clase real.
class List {
attributes:
/* Estructura de datos */
/* para la lista */
methods:
append(Apple element)
Apple getFirst()
Apple getNext()
bool more()
}

32

2. Conceptos Bsicos de la POO.


Tipos Genricos

El compilador debe permitir crear mltiples listas para diferentes tipos en


cualquier momento.
Por ejemplo:

List for Apple appleList


List for Pear pearList
...

El compilador debe darse cuenta de que ya existe la definicin de una clase


real o si tiene que crear una.
Por ejemplo:

List for Apple aList


List for Apple anotherList

Si una clase A es parametrizada con un tipo de datos T. A es llamada plantilla de


clase ( template class). Una vez que un objeto de A es creado, T es reemplazado
por un tipo de datos real. Esto permite la declaracin de una clase real basada en
la plantilla especificada para A y en el tipo de datos real.

33

2. Conceptos Bsicos de la POO.


Polimorfismo
Asignacin esttica de memoria (static binding)
En muchos de los lenguajes de programacin se deben de declarar las
variables antes de utilizarlas.
Por ejemplo:

var i : integer;

Se declara la variable i de tipo integer para guardar valores de tipo entero, el


compilador reserva memoria suficiente este tipo de datos.
En la declaracin asociamos el identificador i con el tipo integer y es valida
dentro del mbito en el cual es declarada i.
Esto permite al compilador comprobar la consistencia de tipos en tiempo de
compilacin.
Por ejemplo:

var i : integer;
...
i := 'string';

Si el tipo T de una variable se asocia explcitamente con su nombre N por medio


de la declaracin, se dice que N est estticamente asignada a T. El proceso de
asignacin es conocido como asignacin esttica de memoria.

34

2. Conceptos Bsicos de la POO.


Polimorfismo
Asignacin dinmica de memoria (dynamic binding)
Algunos lenguajes de programacin permiten introducir variables en el
momento que se necesitan.
Por ejemplo:

...
/* No a parece i antes */
i := 123 /* Crea i como un integer */

El tipo de i se conoce en el momento de asignarle un valor.


En este caso i es de tipo integer ya que se le asigno un valor entero.
Asociando en tipo por el contenido se pueden asignar el tipo que se requiera
en tiempo de ejecucin.
Por ejemplo:

if somecondition() = TRUE then


n := 123
else
n := 'abc
endif

Si el tipo T de una variable N esta implcitamente asociado con su contenido, se


dice que N est dinmicamente asignada a T. El proceso de asignacin es
conocido como asignacin dinmica de memoria.

35

2. Conceptos Bsicos de la POO.


Polimorfismo
El polimorfismo le permite a una entidad (por ejemplo variable, funcin u
objeto) adoptar una variedad de representaciones.
Se debe distinguir varios tipos de polimorfismo.
El concepto de asignacin dinmica de memoria permite a una variable el
adoptar diferentes tipos dependiendo de su contenido en un momento en
particular. Esta habilidad de una variable es conocida como polimorfismo.
A nivel de funciones se puede definir otro tipo de polimorfismo.
Por ejemplo:
boolean isNull(int i) {
if (i == 0) then
return TRUE
else
return FALSE
endif
}

En los Lenguajes sin polimorfismo para


boolean isNull(float i) {
if (i == 0.0) then
return TRUE
else
return FALSE
endif
}

funciones esta definicin no se puede


realizar.
Algunos lenguajes que permiten realizar
esta definicin, identificando a cada
funcin por su nombre y la lista de
parmetros.

36

2. Conceptos Bsicos de la POO.


Polimorfismo
Si una funcin o mtodo es definido por la combinacin de su nombre y la lista
de los tipos de sus parmetros, se habla de polimorfismo. Algunas veces
tambin llamado sobrecarga (overloading).
A nivel de objetos se puede definir otro tipo de polimorfismo.
Por ejemplo:
move(Point apoint, int deltax) {
apoint.setX(apoint.getX() + deltax)
}
Circle acircle
...
move(acircle, 10)

display(DrawableObject o) {
...
o.print()
...
}
Circle acircle
Point apoint
Rectangle arectangle
/* debera invocar*/
display(apoint)
/* apoint.print() */
display(acircle)
/* acircle.print() */
display(arectangle) /* arectangle.print() */

37

2. Conceptos Bsicos de la POO.


Polimorfismo

38

39

2. Conceptos Bsicos de la POO.


Polimorfismo
class Base {
attributes:

class Derived inherits from Base {


attributes:

methods:
virtual foo()
bar()
}

methods:
virtual foo()
bar()

demo(Base o) {
o.foo()
o.bar()
}

}
Base abase
Derived aderived
demo(abase)
demo(aderived)

foo() of Base called.


bar() of Base called.
foo() of Derived called.
bar() of Base called.

virtual denota que si el mtodo es invocado, su definicin debera ser evaluada por el
contenido del objeto.

2. Conceptos Bsicos de la POO.


Polimorfismo

Los objetos de superclases pueden ser sustituidos por objetos de sus


subclases. Los operadores y mtodos de las subclases pueden ser
definidos para ser evaluados en dos contextos:
1. Basndose en el tipo de objeto, conduciendo a una evaluacin
dentro del mbito de la superclase.
2. Basndose en el contenido del objeto, conduciendo a una
evaluacin dentro del mbito de la subclase contenida.
El segundo tipo es llamado polimorfismo.

40

Вам также может понравиться