Clases y Objetos - Universidad de Carabobo

Anuncio
Universidad de Carabobo
Facultad Experimental de Ciencias y Tecnología
Departamento de Computación
Programación Orientada a
Objetos
Algoritmos y Programación II
Junio, 2004
Las tecnologías de objetos hoy
Desde los 70 hasta hoy los lenguajes de programación dirigidos a
objetos (u orientados a objetos) han obtenido un éxito y una difusión
sin precedentes.
Hoy en día los lenguajes OO son claramente predominantes sobre los
lenguajes de programación tradicionales
Multitud de librerías y desarrollos tecnológicos actuales están basados
en objetos.
Los métodos de diseño orientado a objetos de aplicaciones están
dominando los tradicionales.
Conocer y dominar los conceptos de la POO es fundamental
1
La evolución de la programación
Lenguajes
de bajo
nivel
Lenguajes
de alto
nivel
Lenguajes
estructurados
Tipos
abstractos
de datos
Programación
orientada a
objetos
Ensamblador
Basic,
COBOL
Modula 2,
Pascal, C
Modula 2,
Pascal, C
SmallTalk,
C++, Java
Lenguajes de bajo nivel:
Cercanos al CPU.
Difíciles para el programador.
Gran cantidad de instrucciones para realizar una tarea.
Justificables por la poca velocidad y memoria principal de los
primeros computadores.
Lenguajes
de bajo
nivel
Lenguajes
de alto
nivel
Lenguajes
estructurados
Tipos
abstractos
de datos
Programación
orientada a
objetos
Ensamblador
Basic,
COBOL
Modula 2,
Pascal, C
Modula 2,
Pascal, C
SmallTalk,
C++, Java
Lenguajes de alto nivel.
Mayor nivel de abstracción y acercamiento al hombre.
Inconvenientes:
Los proyectos grandes resultan difíciles de desarrollar,
mantener y depurar.
Dificultades para la programación en equipo.
Escaso grado de reutilización.
Variables accesibles desde cualquier punto
Saltos incondicionales: GOTOs.
2
Lenguajes
de bajo
nivel
Lenguajes
de alto
nivel
Lenguajes
estructurados
Tipos
abstractos
de datos
Programación
orientada a
objetos
Ensamblador
Basic,
COBOL
Modula 2,
Pascal, C
Modula 2,
Pascal, C
SmallTalk,
C++, Java
Lenguajes estructurados.
Intentan solventar los
lenguajes tradicionales.
problemas
detectados
en
los
Se eliminan los saltos incondicionales y se adopta una
estrategia modular, donde cada variable tiene un ámbito en
la cual es accesible.
Aparecen los procedimientos, como cajas negras que
reciben datos, realizan operaciones y devuelven resultados.
La solución a un problema se plantea en términos de
procedimientos, cada uno de los cuales resuelve un
subproblema.
Lenguajes estructurados.
Ventajas:
Se facilita la gestión de grandes proyectos software.
La programación modular facilita la programación en
equipo.
Facilita la reutilización del código en distintos proyectos.
Surgen algunas dudas:
Cómo se subdivide un problema en subproblemas. Cómo
se identifican. Hasta cuando hay que subdividir.
Si un procedimiento resuelve parte de un problema
mayor. Será fácil que pueda reutilizarse en otros
problemas, o será demasiado dependiente y específico
de aquel
Nueva forma de programación spaghetti: muchos
procedimientos que se llaman entre ellos.
3
Programación mediante TDAs
Un TDA agrupa en una única unidad, los datos y los
procedimientos que lo manipulan.
Cada TDA se implementa en un módulo de programa por
separado, dejando visible solo la interfaz y ocultando los
detalles de implementación.
Programación mediante TDAs
Ventajas:
Los TDAs son fácilmente identificables en un problema:
representan entidades matemáticas (vector, punto,
polinómio, función, etc.) o estructuras de datos (pilas,
colas, listas, etc.).
Un TDA no resulta específico de ningún problema, por
tanto es fácil su reutilización.
Los TDAs son elegantes, legibles y fáciles de depurar.
Inconvenientes:
Un TDA no es en general una estructura del lenguaje de
programación, por tanto es fácil cometer errores en su
construcción.
Repetición de código entre TDAs similares.
Tradicional limitación a estructuras de datos y objetos
matemáticos.
4
Programación orientada a objetos
Los TDAs se formalizan y se extienden con nuevas ideas,
pasando a llamarse objetos.
Nuevos mecanismos: herencia, polimorfismo, etc.
Aparecen lenguajes que los soportan.
El grado de abstracción es el más alto posible, los objetos
representan conceptos del problema que se intenta resolver:
clientes, productos, etc.
Programación orientada a objetos
Ventajas:
El desarrollo de aplicaciones es muy sencillo e intuitivo.
El código es muy elegante, fácil de comprender y
mantener.
Los objetos son completamente independientes, por
tanto la facilidad para la programación en equipo y la
reutilización son muy altos.
Inconvenientes:
Al principio resulta difícil resolver un problema mediante
objetos, supone un cambio de mentalidad respecto a la
programación tradicional.
5
Entidades y objetos
Nuestra mente estructura la realidad en elementos que
denominaremos ENTIDADES, que son las unidades básicas del
razonamiento o la memoria.
Conocimiento
• Descripción física
• Opinión
• Comparación con
otras entidades
...
Concepto
“Libro”
La POO intenta que el diseño de los programas sean un reflejo
de la realidad.
Entidad
Objeto
Concepto
Identificador
“Libro”
“Libro”
Características
Conocimiento
Conocimiento descriptivo (atributos)
color = azul
peso = 250 gramos
paginas = 320
Conocimiento operacional (métodos
u operaciones)
abrir
cerrar
ir a página (n)
leer página (n)
6
Noción de Objeto
Un objeto esta definido por la información que éste maneja, y por su
comportamiento. En OO,
se dice que un objeto encapsula
información y comportamientos:
Las informaciones son los datos incluidos en el objeto, llamados
también atributos, variables de instancias o datos.
Los comportamientos son los tratamientos aplicables al objeto,
llamados también métodos u operaciones.
Atributos
Atributos
Nombre
Nombre
Edad
Edad
Empresa
Empresa
Métodos
Métodos
CambiarEdad
CambiarEdad
CambiarEmpresa
CambiarEmpresa
La encapsulación de
un objeto Persona
Noción
Noción de Clase y de Instancia
Para manejar la encapsulación, todos los objetos con las mismas
propiedades (atributos y comportamientos) se reúnen en una
familia, a la que se le denomina clase. Donde los objetos que la
conforman son las instancias de la clase.
Una clase describe las propiedades de sus instancias:
Constituye una especie de molde para la creación de objetos. Esta
creación se denomina instanciación.
Recoge los tratamientos aplicables a esos objetos. Cada
tratamiento corresponde a un método que se describe por una serie
de líneas de código
7
Noción
Noción de Clase y de Instancia
La noción de clase puede asimilarse, con la noción de tipo.
Una clase define las propiedades de todos los objetos que tiene
asociados.
Un objeto es una materialización de su clase.
Los objetos de una misma clase tienen todos los atributos de su
clase, y estos atributos pueden tener valores diferentes, según las
instancias.
El valor de los atributos es propio de cada objeto. Por el contrario,
todas las instancias de una misma clase comparten los
comportamientos definidos en la clase.
Noción
Noción de Clase y de Instancia
Nombre: Pedro
Edad: 30 años
Empresa: UC
Nombre: José
Edad: 40 años
Empresa: UCV
Instanciación
Atributos
Atributos
Nombre
Nombre
Edad
Edad
Empresa
Empresa
Métodos
Métodos
CambiarEdad
CambiarEdad
CambiarEmpresa
CambiarEmpresa
Instanciación
La clase Persona y sus instancias
8
Representación gráfica (notación UML) de una clase
Libro
título
autor
tamaño
número de páginas
abrir
cerrar
ir a página
leer página
Atributos
Métodos
Representación gráfica de un objeto.
b:Libro
título = “Programación orientada a
objetos”
autor = “Timothy Budd”
tamaño = 25x20
número de páginas = 410
Control de los Mensajes
En OO, se envía un mensaje a un objeto que lo recibe, y éste
puede reaccionar de 2 maneras:
Si el mensaje corresponde a un tratamiento definido en la clase del
objeto, el protocolo del método correspondiente se ejecuta. El
objeto ha respondido en este caso al mensaje que se le ha enviado
Sino, el objeto rechaza el mensaje señalando un error
Error
¡No comprendo el mensaje!
CambiarNombre(“Rosa”)
Objeto Persona: la Sra. Ana
9
Control de los Mensajes
Se puede considerar que un objeto es responsable del control y
ejecución de los mensajes que se le aplican.
Todo objeto que recibe un mensaje reaciona inmediatamente al
mismo, y avisa al programador la validez del mismo.
El comportamiento de un objeto, es responsabilidad del propio
objeto, lo que permite detectar de una forma rápida y fácil los
errores.
Resúmen
Programa OO
Colección estructurada de clases
Clase
Implementación de un TDA
Objeto
Una instancia de una clase
10
Resúmen
Objeto
Es una instancia de una clase, creada en tiempo de ejecución
Es una estructura de datos formada por tantos campos como
atributos tiene la clase.
El estado de un objeto viene dado por el valor de los campos
Los métodos permiten consultar y modificar el estado del objeto.
Durante la ejecución de un programa OO se crearán un conjunto
de objetos.
Resúmen
Un METODO está compuesto por:
Cabecera: Identificador y Parámetros
Cuerpo: Secuencia de instrucciones
¿Qué instrucciones podemos incluir en el cuerpo de un método?
Asignación
Condicional
Iteración
Invocación a otro método = Mensajes
Creación de objetos
Un método se ejecutará como respuesta a un mensaje.
11
Resúmen
Creación de objetos en C++
Inicialización implícita mediante CONSTRUCTORES que realizan la
inicialización después de que los objetos son creados.
Un constructor:
procedimiento especial con el mismo nombre que la clase
Se invoca siempre que se crea un objeto de la clase:
No tiene valores de retorno
¿Los objetos sustituyen a los TDAs tradicionales?
TDAs
Abstracción, encapsulación y
ocultación de información.
Alto nivel de reutilización y
facilidades para la
programación en equipo.
No existen lenguajes de
programación orientados a
TDAs. Pueden ser
implementados en cualquier
lenguaje estructurado como
C.
Son sencillos y en general
eficientes.
Objetos
Abstracción, encapsulación,
ocultación de información,
herencia, polimorfismo, etc.
Altísimo nivel de reutilización y
facilidades para la programación
en equipo.
Requieren lenguajes de
programación orientados a
objetos.
Pueden ser complejos y
presentar problemas de
eficiencia en ciertos casos.
12
Descargar