Programación Orientada a Objetos Ingeniero Anyelo Quintero.

62
Programación Orientada a Objetos Ingeniero Anyelo Quintero

Transcript of Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Page 1: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Programación Orientada a Objetos

Ingeniero Anyelo Quintero

Page 2: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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.

Page 3: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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.

Page 4: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

EVOLUCION DE LA PROGRAMACIONPROGRAMACION LINEALLos 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).

Page 5: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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 MODULARLa 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).

Page 6: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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.

Page 7: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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

Page 8: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

ABSTRACCION DE DATOSEs 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.

Page 9: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

PROGRAMACION ORIENTADA A OBJETOSEs 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,)

Page 10: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Objetos

Clases

Métodos

Mensajes

ConceptosHerencia

Encapsulacion

Polimorfismo

Propiedades

Page 11: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

TRABAJANDO CON OBJETOS

Procedimientos Datos

Parámetros

Procedimientos

Programación ConvencionalP O O

Componente Componente Componente

Datos y procedimientos. Se tratan separadamente

programa

Datos

Procedimientos

Objetos

Datos Funciones

Page 12: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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

Page 13: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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

Page 14: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

DEFINICION DE OBJETOSUnidad que contiene datos y las funciones que operan sobre esos datos.Instancia de una clase

Objeto (nombre)

Elemento (miembro)

Miembros dato

Campos miembro

Funciones Miembro oMiembros función o método

Computador

Marca: Acer

RAM: 512 Mb

Imprimir

Transmitir información

Page 15: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

•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

Page 16: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

CLASESLos 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.

Page 17: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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).

Page 18: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Sintaxis“Terminal 1 imprimir hola mundo” Receptor método parámetros.Nombre_del_ objeto. Función_ miembro o método(parametros).

Computador

Nombre

Curso

Leer nombre

Imprimir

Obtiene el nombre del alumno

Visualiza el nombre

alumno.imprimir()

mensaje

Sin parametros

Page 19: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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.

Page 20: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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 necesiten2. 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.

Page 21: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

HerenciaEs 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

Page 22: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Cada sub clase comparte características de la clase que deriva.

Vehiculo

Automóvil Camión Autobús Motocicleta

Tienen sus propias característicasCaracterísticas comunes (motor, ruedas)

Page 23: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Característica ACaracterística B

Característica ACaracterística BCaracterística C

Característica ACaracterística BCaracterística DCaracterística E

Característica ACaracterística BCaracterística F

CLASE BASE

CLASES DERIVADAS

Page 24: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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.

Page 25: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Figura Geométrica

Calcular superficie

Circulo

Calcular radio (r)

Rectángulo

Calcular superficieLados x,y

Triangulo

Calcular superficie basey altura

Proporciona el valor cero

Calcular superficie se recibe de la clase base por herencia

Page 26: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

POLIMORFISMOSe 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.

REUTILIZACIONUna 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.

Page 27: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

CONCEPTO DE UNA CLASEUna 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 ( );};

Page 28: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Los objetos o sustancias 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 formaClass cliente {Char nombre [40];Char num; };cliente comprador; // comprador es un objeto // una variable de la clase // y una instancia de la clase cliente

Page 29: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Segunda formaclass cliente {Char nombre [40];Char num; }comprador;

Tercer formaclass cliente {Char nombre [40];Char num; };

Main(){cliente comprador;

return 0;}

Page 30: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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);

};

Page 31: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Implementación de una clase

void contador::leervalor(long valor){

cuenta=valor;}

long contador::obtenervalor(){return cuenta;}

Page 32: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 33: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 34: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 35: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 36: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 37: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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

Page 38: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

ESTRUCTURA WHILE

Page 39: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 40: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 41: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

ESTRUCTURA SWITCH

Page 42: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 43: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 44: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 45: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 46: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

ESTRUCTURA SWITCH - 2 Ejercicio

Page 47: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 48: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 49: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 50: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 51: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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áticas3. Funciones Miembro const.4. Funciones Miembro volatile5. Funciones Miembro en Línea (in line)6. Funciones Miembro const this7. Funciones Miembro volatile this8. Funciones Virtuales9. Funciones Especiales: Constructor y Destructor.10. Funciones Operador 11. Funciones Amigas

Page 52: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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.

Page 53: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

Los constructores pueden implicar tres escenarios:

Crear objetos con inicialización por defecto Crear objetos con inicialización especificaCrear 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.

Page 54: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

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.

Page 55: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 56: Programación Orientada a Objetos Ingeniero Anyelo Quintero.

EJERCICIODigitar el código del siguiente ejercicio y explicar en que consiste

Page 57: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 58: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 59: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 60: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 61: Programación Orientada a Objetos Ingeniero Anyelo Quintero.
Page 62: Programación Orientada a Objetos Ingeniero Anyelo Quintero.