Download programa orientada a objetos

Document related concepts
no text concepts found
Transcript
Programación Orientada a
Objetos
Ingeniero Anyelo Quintero
Especialista en Dirección Prospectiva y
Estratégica de las Organizaciones
Universitarias
Master en Ciencias de la Educación
CONCEPTOS DE PROGRAMACION
ORIENTADA A OBJETOS
Los primeros programas se realizaban con instrucciones binarias de
maquina, de modo que se cargaban en memoria a través de un conjunto
de interruptores o a través de un teclado numérico.
A medida que crecían los programas, se incrementaba su complejidad.
Esto se comienza a resolver con un traductor llamado ensamblador
(convierte los programas en ensamblador -- código de maquina)
Sin embargo se necesitaban herramientas mas potentes.
Lenguajes como FORTRAN, BASIC, PASCAL y C resolvieron esta
complejidad.
Con Pascal y C nació la programación estructurada facilitando la
escritura de programas y disminuyendo la complejidad.
Hoy día el aumento de potencia de las características de hardware y
software (frecuencia de procesadores, capacidad de D.D, gráficos,
conexión de redes, etc.) incrementando la complejidad de los
programas.
En la década de los 90 aparece la programación orientada a objetos
como un nuevo medio para organizar código y datos y así establecer un
control creciente sobre la complejidad del proceso de desarrollo de
software.
No es una idea nueva, sus conceptos ya existían en lenguajes como
Simula 67 y Smalltalk.
Las propiedades fundamentales de POO son:
Objetos (abstracción de datos), herencia y polimorfismo.
EVOLUCION DE LA PROGRAMACION
PROGRAMACION LINEAL
Los primeros lenguajes de programación se diseñaron para
desarrollar tareas simples. Estos programas eran cortos. Menos de
100 líneas de código fuente.
Las primeras versiones de lenguajes de programación lineal como
BASIC, COBOL y FORTRAN no reutilizaban código existente, sino
que se duplicaban segmentos de software.
Se ejecutaban en forma lógica, su control era difícil y se producían
saltos a lo largo del programa. Además no se podía controlar la
visibilidad de los elementos dato.
Todos los datos eran globales, por lo tanto podían ser modificados
por cualquier parte del programa y así afectar el resultado del
programa.
No existían datos locales.
Esto trajo como consecuencia la aparición de lenguajes
estructurados (PASCAL, C, ADA…) así como una nueva estructura
(procedimientos).
Procedimiento: Programa o rutina que consiste en secuencias de
instrucciones que realizan una tarea determinada. Desventajas. Los
procedimientos necesitan muchos sistemas de comunicación entre
si.
PROGRAMACION MODULAR
La solución consistió en romper los programas grandes en
componentes mas pequeños construidos independientemente, luego
se combina para formar el sistema completo.
El soporte mas elemental de la programación modular es la subrutina
(secuencia de instrucciones a las que se le da un nombre
independiente; esta rutina se puede ejecutar incluyendo su nombre).
PROGRAMACION ESTRUCTURADA
•En la decada de los sesenta y principio de los setenta apareció la
programación estructurada.
•Los programas estructurados se organizan de acuerdo a las
operaciones que se ejecutan
•El programa se descompone en procedimientos individuales
(funciones) cada uno de los cuales se descompone en
subprocedimientos.
•La información se pasa entre procedimientos utilizando parámetros.
•Los procedimientos pueden tener datos locales a los que no se puede
acceder desde fuera del ámbito del procedimiento.
•Aislando los procesos dentro de funciones, un programa estructurado
minimiza el riesgo de que un procedimiento afecte otro, facilitando la
detección de problemas mediante la localización de errores.
•Las variables globales desaparecen y se sustituyen por parámetros y
variables locales.
La programación estructurada introdujo el concepto de Abstracción (capacidad
de examinar algo sin preocuparse de los detalles internos). El COMO se realiza
una tarea no es importante mientras el procedimiento sea fiable. Todo esto se
conoce como abstracción funcional.
La debilidad aparece cuando varios programadores trabajan en una aplicación
como un equipo. ( separación conceptual de datos y código) y datos
mutuamente compartidos
ABSTRACCION DE DATOS
Es la extracción de las propiedades esenciales de un concepto.
Los datos, las estructuras de datos e ítem se pueden utilizar sin
preocuparse sobre los detalles de la implementación.
Ejemplo: los números en coma flotante son abstracciones en todos
los lenguajes de la programación, no tiene que preocuparse de la
representación binaria.
Las estructuras de datos y los tipos de datos son ejemplo de
abstracción, los procedimientos y las funciones. Son otro ejemplo.
PROGRAMACION ORIENTADA A OBJETOS
Es un nuevo medio de organizar código y datos que aseguran un
control creciente sobre la complejidad del proceso de desarrollo del
software.
Conjunto de técnicas que se pueden utilizar para hacer el desarrollo de
programas mas eficiente mientras se mejora la fiabilidad de los
programas.
La POO es una técnica o estilo de programación que utiliza objetos
como bloque esencial de construcción.
Los objetos son en realidad como los tipos abstractos de datos.
Un TAD es un tipo de dato definido por el programador con un conjunto
de operaciones que se pueden realizar sobre ellos.
Un TAD es diferente a los tipos de datos fundamentales o básicos (int,
char, double, etc,)
Propiedades
Objetos
Clases
Conceptos
Herencia
Métodos
Encapsulacion
Mensajes
Polimorfismo
TRABAJANDO CON OBJETOS
POO
Programación Convencional
programa
Procedimientos
Datos
Componente
Componente
Componente
Datos
Parámetros
Procedimientos
Procedimientos
Objetos
Datos
Datos y procedimientos. Se tratan
separadamente
Funciones
Un objeto es una unidad que contiene datos y las funciones que
operan sobre ellos.
Un objeto es cualquier entidad del mundo real.
Un objeto es un tipo abstracto de datos.
Ejemplos de objetos:
Objetos físicos: automóviles en una simulación de trafico, aviones
en un sistemas de control aéreo, componentes electrónicos, animales
mamíferos.
Elementos de interfases gráficos de usuario: Ventanas, iconos,
menús, objetos gráficos, ratones, teclados.
Estructura de datos: Array, pilas, colas, árboles binarios.
Tipos de datos definidos por el usuario
Los objetos soportan características específicas.
•Se agrupan en tipos denominados clases
•Contienen datos internos que definen su estado actual
•Soportan ocultación de datos
•Pueden heredar propiedades de otros objetos
•Pueden comunicarse con otros objetos enviando o pasando
mensajes
•Tienen métodos que definen su comportamiento
DEFINICION DE OBJETOS
Unidad que contiene datos y las funciones que operan sobre esos
datos.
Instancia de una clase
Objeto (nombre)
Computador
Elemento (miembro)
Marca: Acer
Miembros dato
RAM: 512 Mb
Campos miembro
Funciones Miembro
o
Miembros función o
método
Imprimir
Transmitir
información
•Los datos y funciones se encapsulan en una única entidad.
•Los datos están ocultos y solo mediante las funciones miembro es
posible acceder a ellos.
•Los objetos de un programa se comunican entre si mediante el paso o
envío de mensajes (acciones que debe ejecutar un objeto).
•La encapsulacion y ocultación de datos son utilizados en los objetos.
•Un campo miembro se representa por un rectángulo y una función por
un hexágono
•Los datos y las funciones están ocultas es decir encapsuladas
•Los campos o funciones que se extienden fuera del cuadro son accesibles,
desde el exterior y actúan de interfaz
CLASES
Los objetos son miembros de clases, son instancias.
Una clase es un tipo definido por el usuario que determina las
estructuras de datos y las operaciones asociadas con este tipo.
Las clases son como plantillas o modelos que describen como se
construyen ciertos tipos de objetos.
Clases es una colección de objetos similares, pueden tener muchas
instancias y cada una es un objeto independiente.
Es un modelo que se utiliza para escribir uno o mas objetos del
mismo tipo.
EJEMPLO:
Clase de ventana
Miembros de datos: pos x, posy, tipo - ventana, tipo - borde, color ventana.
Funciones miembro: mover – horizontal,
Mover – vertical.
Un objeto de la clase ventana es una ventana específica.
datos x, y; desplegable; línea doble, amarilla.
El envío de un mensaje a una instancia de una clase produce la ejecución de
un método
Mensajes: activación de objetos.
Un mensaje es una petición de un objeto a otro objeto para que este
se comporte de una determinada manera, ejecutando uno de sus
métodos.
La técnica de enviar mensajes se conoce como paso de mensajes.
Un mensaje consta de tres partes: la identidad del objeto receptor, el
método (función miembro) del receptor cuya ejecución se ha solicitado
y cualquier otra información adicional que el receptor necesite para
ejecutar el método requerido. (Información dada en forma de
parámetros).
Sintaxis
“Terminal 1 imprimir
hola mundo”
Receptor
método
parámetros.
Nombre_del_ objeto. Función_ miembro o método(parametros).
Computador
Nombre
Obtiene el nombre del alumno
Curso
mensaje
Leer nombre
Visualiza el nombre
Imprimir
alumno.imprimir()
Sin parametros
Enviar el mensaje imprimir al objeto alumno.
El objeto alumno reacciona al mensaje ejecutando la función
miembro imprimir.
El mensaje podría llevar unos parámetros.
alumno. leer nombre (“Luis Alfredo”)
Sin los mensajes los objetos no se podrán comunicar con otros
objetos.
El paso de mensajes es sinónimo de llamada a una función.
PROGRAMA ORIENTADA A OBJETOS
• Un POO es una colección de clases.
• Un POO necesita de una función principal que cree objetos y
comience la ejecución con la invocación de sus funciones
miembro.
• En una aplicación se requieren archivos diferentes.
• En un archivo se especifican las clases.
• La función principal en un archivo diferente.
• El compilador ensambla los archivos independientes en una
unidad.
Cuando se ejecuta un programa orientado a objetos ocurren tres
acciones:
1. Se crean objetos cuando se necesiten
2. Los mensajes se envían desde unos objetos y se reciben en
otros.
3. Se borran objetos cuando ya no son necesarios y se recupera
la memoria ocupada por ellos.
Herencia
Es una característica de las clases.
Permite a los objetos construirse a partir de otros objetos.
Ej: las clases se dividen en subclases.
Animales
Mamiferos
Insectos
Anfibios
Pajaros
Cada sub clase comparte características de la clase que deriva.
Vehiculo
Automóvil
Camión
Autobús
Características comunes (motor, ruedas)
Motocicleta
Tienen sus propias características
CLASE BASE
Característica A
Característica B
Característica A
Característica B
Característica C
Característica A
Característica B
Característica D
Característica E
CLASES DERIVADAS
Característica A
Característica B
Característica F
La herencia permite definir nuevas clases a partir de clases ya
existentes.
La herencia impone una relación jerárquica entre clases en el cual
una clase hija hereda de su clase padre.
Si una clase solo puede recibir características de otra clase base, la
herencia se denomina herencia simple.
Si una clase recibe propiedades de más de una clase base, la
herencia se denomina herencia múltiple.
Figura Geométrica
Calcular superficie
Circulo
Calcular radio (r)
Proporciona el valor cero
Calcular superficie se recibe
de la clase base por herencia
Rectángulo
Triangulo
Calcular superficie
Lados x,y
Calcular superficie base
y altura
POLIMORFISMO
Se refiere a que una misma operación puede tener diferente
comportamiento en diferentes objetos o diferentes objetos reaccionan
al mismo mensaje de modo diferente.
Ejemplo: la operación sumar, puede sumar en un objeto dos números
X + y (enteros, flotantes), pero también puede sumar dos cadenas
concatenación.
Ejemplo: un numero de figuras geométricas responden todas al
mensaje dibujar de modo diferente ya que son figuras diferentes.
REUTILIZACION
Una vez que la clase se ha escrito, creada , depurada se puede
difundir entre otros programadores para que la puedan utilizar en otros
programas.
En POO la herencia incorpora el concepto de reutilización, los objetos
en POO son fácilmente reutilizables y es una razón para utilizar esta
metodología.
CONCEPTO DE UNA CLASE
Una clase es un tipo de dato que contiene una o mas elementos dato
llamado miembros dato, y cero, una o mas funciones que manipulan
esos datos (llamados miembro función o funciones miembro)
Una clase se puede definir con una estructrura (struct), una union (union) o
una clase (class).
Sintaxis:
class nombre_clase
{
Miembro 1;
Miembro 2;
Miembro 3;
…………..
Función _Miembro_1 ( );
Función _ Miembro_2 ( );
};
Los objetos o instancias de una clase se definen así:
Nombre_clase
instancia_1; // instancia_1 es una instancia de
la clase tipo nombre_clase.
Un puntero o referencia a un objeto proporciona medios indirectos para
acceder a un objeto, no son instancias de una clase.
Una clase es sintacticamente igual a una estructura, con la única
diferencia de que en el tipo class todos los miembros son por defecto
privados mientras que en el tipo struct son por defecto públicos.
Existen 3 formas de declarar objetos:
primer forma
class cliente
{
char nombre [40];
char num;
};
cliente comprador; // comprador es un objeto
// una variable de la clase
// y una instancia de la clase cliente
Segunda forma
class cliente
{
char nombre [40];
char num;
}comprador;
Tercer forma
class cliente
{
char nombre [40];
char num;
};
main()
{
cliente comprador;
return 0;
}
Componentes de una clase
Una definición de una clase consta de dos partes:
1. Una declaración: lista de miembros de la clase
2. Una implementación: define las funciones de la clase
Declaración de la clase
class contador
{
long cuenta;
public:
void leervalor(long);
long obtenervalor(long);
};
Implementación de una clase
void contador::leervalor(long valor)
{
cuenta=valor;
}
long contador::obtenervalor()
{
return cuenta;
}
TALLER
• Diseñar un programa que determine el valor total de la compra
sabiendo el valor unitario, una cantidad y un iva(16%). La clase
debe llamarse compra.
• Diseñar un programa que convierta dólares a pesos
•
Diseñar un programa que realice la conversión de grados Celsius a
Farenheit
F= 9/5 C +32
•
Diseñar un programa para convertir metros a pies y pulgadas. 1 M=39.27
pulgadas; 1 pie= 12 pulgadas
ESTRUCTURA WHILE
ESTRUCTURA SWITCH
ESTRUCTURA SWITCH - 2 Ejercicio
FUNCIONES MIEMBRO
Las funciones miembro son miembros de una clase y son las funciones
diseñadas para implementar las operaciones permitidas, sobre los tipos de
datos de una clase.
Las funciones miembro de una clase pueden ser de diferentes tipos:
1. Funciones Miembro Simples
2. Funciones Miembro Estáticas
3. Funciones Miembro const.
4. Funciones Miembro volatile
5. Funciones Miembro en Línea (in line)
6. Funciones Miembro const this
7. Funciones Miembro volatile this
8. Funciones Virtuales
9. Funciones Especiales: Constructor y Destructor.
10. Funciones Operador
11. Funciones Amigas
CONSTRUCTOR
Un constructor es una función especial que sirve para construir o inicializar
objetos. Con un constructor se inicializan automáticamente los objetos.
En c++ la inicialización de objetos no se puede realizar en el momento en que
son declarados, sin embargo tiene una característica muy importante y es
disponer de una función llamada constructor que permite inicializar objetos en
el momento en que se crean.
Un constructor es una función que sirve para construir un nuevo objeto y
asignar valores a sus miembros dato, se caracteriza por:
•Tener el mismo nombre de la clase que inicializa
•Puede definirse in line o fuera de la clase
•No devuelve valores
•Puede admitir parámetros como cualquier otra función
•Puede existir mas de un constructor, e incluso no existir.
Los constructores pueden implicar tres escenarios:
Crear objetos con inicialización por defecto
Crear objetos con inicialización especifica
Crear objetos por copia de otros objetos
Llamando a Constructores
C++ llama siempre a las funciones constructores cuando se define el objeto.
El modo en que se define las instancias de la clase controlan el constructor
que se llama.
El constructor sin argumentos se llama cuando se define una instancia pero
no se especifica ningún valor inicial.
Constructores por Defecto (dentro de la clase)
El constructor por defecto es un constructor que no acepta argumentos.
Dado que no toma argumentos, se deduce que cada clase solo tiene un
constructor por defecto.
EJERCICIO
Digitar el código del siguiente ejercicio y explicar en que
consiste
JAVA
Introducción
Plataforma de software desarrollada por Sun Microsystems. Esta plataforma
ha sido desarrollada de tal manera que los programas desarrollados para ella
puedan ejecutarse de la misma forma en diferentes tipos de arquitecturas y
dispositivos computacionales.
La plataforma Java se divide en 3 partes:
Lenguaje de programación.
Máquina Virtual Java
API Java
Es un lenguaje de programación orientada a objetos puro diseñado para su
uso en Internet. Se parece mucho a C++, pero adopta algunas ideas de
Smalltalk. Los programas se ejecutan por medio de un intérprete que ha sido
incorporado a los navegadores de Internet más usuales.
A finales del siglo XX, Java llegó a ser el lenguaje de mayor acogida para
programas de servidor. Utilizando una tecnología llamada JSP (basada en ASP
de Microsoft), se hizó muy fácil escribir páginas dinámicas para sitios de
Internet. Sumado a esto, la tecnología de JavaBeans, al incorporarse con JSP,
permitía utilizar el patrón MVC (Modelo-Vista-Controlador) que ya tanto se había
aplicado a interfaces gráficas.
Java llegó a ser extremadamente popular cuando Sun Microsystems
introdujo el J2EE (Java 2 Enterprise Edition) en la que incluía la tecnología de
Enterprise Java Beans (EJB) que es una tecnología de objetos distribuídos,
logrando por fin el sueño de muchas empresas como Microsoft e IBM de crear
una plataforma de objetos distribuídos con un monitor de transacciones. Con
este nuevo estándar, empresas como BEA, IBM, Sun Microsystems, Oracle y
otros crearon nuevos "servidores de aplicaciones" que tuvieron gran acogida en
el mercado.
Además de programas del servidor, Java permite escribir programas de
interfaz gráfica o textual. Además se pueden correr programas de manera
incorporada a los navegadores de Internet, aunque esto nunca llegó a
popularizarse como se esperaba.
Programas en Java generalmente son compilados y luego interpretados por una
máquina virtual. Esta última sirve como una plataforma de abstracción entre la
máquina y el lenguaje permitiendo que se pueda "escribir el programa una vez,
y correrlo en cualquier lado". También existen compiladores nativos de Java,
tanto comercial como libre. El compilador GCC de GNU compila Java con
algunas limitaciones (año 2002).