Capítulo III 3.1 Introducción a TDA y OO Orientación a Objetos

Anuncio
Departamento de Informática
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Lenguajes de Programación
Universidad Técnica Federico Santa María
Capítulo III
3.1 Introducción a TDA y OO
Tipos de Datos Abstractos y
Orientación a Objetos
Abstracción y encapsulación, TDA,
Clases, TDA parametrizados
1
2
Departamento de Informática
Universidad Técnica Federico Santa María
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Problemas en el Desarrollo de
Grandes Programas
Œ¿Cómo organizar una pieza de software, de
manera que sea fácil de mantener y
administrar?
•¿Cómo evitar tener que recompilar todo un
sistema, en vista de un pequeño cambio?
Lenguajes de Programación
Modularidad y Reutilización
del Software (1)
• Ideas:
– Organizar el programa en grupos de
subprogramas y data, lógicamente relacionados,
denominados módulos.
– Agrupar en subprogramas que puedan ser
compilados de forma independiente, sin
necesidad de recompilar todo el sistema.
III-3
Departamento de Informática
Universidad Técnica Federico Santa María
III-4
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Modularidad y Reutilización
del Software (2)
Lenguajes de Programación
Encapsulación
• El proceso de diseñar los módulos o
contenedores sintácticos, se denomina
modularización.
• Una unidad de compilación es un conjunto
de subprogramas que pueden compilarse de
manera independiente al resto del sistema
III-5
• Encapsulación: Agupar un conjunto de
subprogramas junto con los datos que ellos
manipulan.
• La encapsulación permite resolver los dos
problemas presentados.
III-6
Departamento de Informática
Universidad Técnica Federico Santa María
Departamento de Informática
Lenguajes de Programación
Lenguajes de Programación
Universidad Técnica Federico Santa María
Tipos de Datos Abstractos
(TDAs)
Ocultamiento de Información (1)
• Un TDA, corresponde a una encapsulación
que incluye:
– La representación de un tipo de dato específico
– Las operaciones asociadas a ese tipo
• Una instancia de un TDA se denomina
objeto
• Mediante control de acceso, detalles
innecesarios de la implementación de un
TDA se ocultan a aquellas unidades fuera
de la encapsulación
• Un cliente es una unidad de programa que
hace uso de una instancia de TDA
III-7
Departamento de Informática
Universidad Técnica Federico Santa María
III-8
Departamento de Informática
Lenguajes de Programación
Lenguajes de Programación
Universidad Técnica Federico Santa María
Clases
Ocultamiento de Información (2)
• Ventajas:
– El código de los clientes (unidades de programa
que usan un TDA), no dependen de los detalles
de implementación, dado que no los conocen.
– Aumento de confiabilidad. Los clientes no
pueden cambiar la representación de los
objetos, ni accidental ni intencionalmente.
• Introducidas en SIMULA 67
• Una clase permite implementar un TDA
• Una clase define:
– Los tipos de datos manipulados
– Las operaciones sobre esos tipos
• Los objetos son instancias particulares de
una clase, y son independientes entre sí.
III-9
Departamento de Informática
Universidad Técnica Federico Santa María
III-10
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Clases: Ejemplo en C++
class complex {
private :
float re, im;
public :
complex() {
Constructor
re = im = 0.0;
}
float getRealPart ();
Operaciones
float getImPart ();
...
Datos
Lenguajes de Programación
Clases: Ejemplo en Java
Campos privados
Campos públicos
}
int main(void ) {
complex cpl; // Crea una instancia de la clase (objeto)
cout << cpl.getRealPart();
...
}
III-11
Datos
Constructor
Operaciones
class complex {
private float re, im;
Campos privados
public complex() {
re = im = 0.0;
}
public float getRealPart (){
return re;
Campos públicos
}
public float getImPart (){
return im;
}
.....
}
public class MainClass {
complex cpl = new complex();
public static void main (String [] args ) {
System.out.println(“Parte Real” + cpl .getRealPart());
...
}
}
III-12
Departamento de Informática
Universidad Técnica Federico Santa María
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
TDA Parametrizados
Ejemplo: Constructores en C++
TDA Parametrizados
• Idea: Crear tipos de datos abstractos en los
que mediante el uso de parámetros se pueda
cambiar su comportamiento inicial, o el tipo
de datos sobre el que se opera.
• Ventaja: Flexibiliza el uso de los TDA,
para una mayor amplitud de casos.
Permite crear clases genéricas
III-13
Departamento de Informática
Universidad Técnica Federico Santa María
Lenguajes de Programación
Lenguajes de Programación
TDA Parametrizados
Ejemplo: Templates en C++
• El uso de templates en C++ permite hacer que los
tipos de datos utilizados por una clase sean
genéricos.
template <class Type > //Type es el parámetro template
class MyClass {
private:
Type *dataClass;
....
public:
MyClass () {
dataClass = new Type [MAX_SIZE]
}
~MyClass() {delete dataClass} //Un destructor
Type getFirstElement() {
return dataClass[0];
}
...
}
III-15
• En el ejemplo anterior, agregar el siguiente
constructor:
complex(float realPart , float imPart ) {
re = realPart;
im = imPart;
}
• Así, al declarar un objeto quedaría
complex(10,5) cpl; // Crea el numero complejo (10,5)
Obs:ambos constructores pueden coexistir
III-14
Descargar