unidad 1. fundamentos de ootigger.itc.mx/conacad/cargas/rolc7107155n7/25/unidad 11.pdf · 2019. 8....
Post on 17-Aug-2021
12 Views
Preview:
TRANSCRIPT
Unidad 1. fundamentos de OO
MISD Claudia Rodríguez Lemus
Instituto Tecnológico de Roque
Objetivo
• Analizar y solucionar problemas informáticos y representar su solución mediante herramientas de software orientado a objetos.
Programa
• Unidad I: Fundamentos de Orientado a Objetos
• Unidad II: Metodología de Solución de Problemas
• Unidad III: Herramientas de Programación
• Unidad IV: Programación Orientada a Objetos y Modelado
• Unidad V: Implementación Orientada a Objetos
• Unidad VI: Modularidad
Bibliografía
• Metodología de la Programación Ed: Alfa Omega Aut: Osvaldo Cairó • Fundamentos de Programación Ed: Mc Graw hill Aut: Luis Joyanes • Fundamentos de Programación c/c++ Alfa Omega Ernesto Peñaloza Romero
Bibliografía
• Programación Estructurada en Lenguaje C
Alfa Omega
Leobardo López Román
• Fundamentos de Programación
Prentice Hall
Jorge A. Villalobos y Rubby Casallas
1.1 Evolución de la Programación
Evolución de los Paradigmas de Programación
• Programación Lineal
• Programación Estructurada
• Programación Orientada a Objetos
1.1 Evolución de la Programación
a) Programación Lineal Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno.
John Von Neumann desarrolló el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí. Leng. Máquina
a) Programación Lineal Lenguaje Ensamblador
Se tenía el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches correspondientes al concepto de bit, solamente nos permitía almacenar números binarios.
La solución que se tomó fue la siguiente: a cada acción que sea capaz de realizar nuestra computadora, asociarle un número, que será su código de operación (opcode) . Por ejemplo, una calculadora programable simple podría asignar los opcodes :
1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.
Lenguaje Ensamblador: OpCode
Supongamos que queremos realizar la operación 5 * 3 + 2, en la calculadora descrita arriba. En memoria, podríamos "escribir" el programa de la siguiente forma:
Leng. Ensamblador
El primer gran avance que se dio, fue la abstracción dada por el Lenguaje Ensamblador, y con él, el nacimiento de las primeras herramientas automáticas para generar el código máquina. Esto redujo los errores triviales, como podía ser el número que correspondía a una operación, que son sumamente engorrosos y difíciles de detectar, pero fáciles de cometer. Sin embargo, aún aquí es fácil para el programador perderse y cometer errores de lógica, pues debe bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de él.
Ejemplo de un prog. En Ensamblador
b) Programación Estructurada
Lenguajes de 3ª Generación:
Con el desarrollo en los 50s y 60s de algoritmos de más elevado nivel, y el aumento de poder del
hardware, empezaron a entrar al uso de computadoras científicos de otras ramas; ellos conocían mucho
de Física, Química y otras ramas similares, pero no de Computación, y por supuesto, les era sumamente
complicado trabajar con lenguaje Ensamblador en vez de fórmulas.
Así, nació el concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula
TRANslation), que, como su nombre indica, inició como un "simple" esfuerzo de traducir un lenguaje de
fórmulas, al lenguaje ensamblador y por consiguiente al lenguaje de máquina. A partir de FORTRAN, se
han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar la mayor abstracción
posible, y facilitar la vida al programador, aumentando la productividad, encargándose los compiladores o
intérpretes de traducir el lenguaje de alto nivel, al lenguaje de computadora.
Ejemplo: Programa estructurado
c) Programación Orientada a Objetos.
Cuarta Generación:
Se parecen según las instrucciones a las de la tercera generación. Lo nuevo de estas lenguajes son conceptos como clases, objetos y eventos que permiten soluciones más fáciles y lógicos. Lenguajes como C++, java y C# se llaman lenguajes orientadas al objeto.
Los idiomas modernos, tal como C++ y Java, no sólo permite las abstracciones, sino la implementación impuesta de restricciones en abstracciones. La mayoría de los idiomas modernos son objetivas orientado, que permite que mí modele el mundo verdadero que usa mi idioma. Además, pueden limitar el acceso para modelar las restricciones de mundo verdadero en datos. La llave es que usé el término "mundo verdadero." Por la primera vez, se modela la solución en términos del problema. Se quiere que la solución sea orientado L problema, para que la solución refleje el mundo verdadero en términos de estructuras de datos y acceso a los datos. También se puede aplicar directamente y para poder modelar objetos de mundo verdadero usando las clases (en C + + o Java).
Ejemplo: Programa Orientado a Objetos
Quinta Generación
Aparecen los Lenguajes de inteligencia artificial.
Lo que veremos en el futuro es menos dependencia en el idioma, y más en el
modelado de herramientas, tal como el Lenguaje de Modelado Unificado (UML).
La salida de esta herramienta producirá mucho de nuestro código para nosotros,
producirá la arquitectura y los modelos del diseño y la estructura de nuestro
código. Esto producirá un diseño (y posiblemente código) lo que puede ser
validado por el cliente antes de completar la implementación y probar. Hoy en día
que los problemas que resolvemos diariamente llegan a ser más grandes y
nosotros tenemos cada vez menos tiempo "volver a hacer“ código. Los días de
decir, "acabamos la primer versión y el cliente ya quiere la nueva versión, deberá
pasar a la historia.
Ejemplo de un modelado
Pasos importantes en la Evolución de los lenguajes de Programación
Relación entre la P.O.O. y las otras Programaciones
• Se presenta la prog. Lineal en algunas
ocasiones
• Se utilizan las estructuras que se
manejaban en la Prog. Estructurada.
1.2 Conceptos Fundamentales de POO Tipos de Datos Abstractos
La abstracción es una de la propiedad que permite representar las características esenciales de un objeto sin preocuparse de las características no esenciales.
Un tipo de datos abstracto consiste en:
- Estructura de Datos: que almacena información para represenar un determinado concepto.
- Funcionalidad: conjunto de operaciones que se pueden realizar sobre el tipo de datos.
Sintaxis de lenguaje
- Módulos asociados a tipos de datos
- No introduce necesariamente variaciones con respecto a la programación modular
Abstracción de Datos
Abstracción de Operaciones
Ejemplo de TDA
Ventajas de un TDA
• Encapsulamiento: ocultación de la complejidad
interna y detalles de los datos y operaciones.
• Especificación: utilización del tipo de datos
independiente de su programación interna.
• Modularidad: tanto de funciones como de datos.
• Mantenimiento, facilidad para corregir o
actualizar información.
Características de la POO
Generales: » Construcción de sistemas complejos a partir de componentes.
» Modelización más fiel al mundo real.
» Estimación de reducción de 40% con respecto a la programación convencional.
El modelo objeto (Booch, 1994): » Abstracción
– Las características esenciales del objeto.
» Encapsulamiento
– El contenido de la información está oculto.
Características de la POO
» Modularidad – Subdivisión de una aplicación en otras más pequeñas (módulos).
Un módulo es un conjunto de clases
» Jerarquía – Ordenación de las abstracciones – Tipos:
Herencia (“es-un”); generalización/especialización » Herencia simple o múltiple
Agregación (“parte-de”)
» Polimorfismo – Una misma operación (método) realizada de diferente modo
comer (vaca, persona, león); clase mamífero dibujar (triángulo, cuadrado); clase figura
» Otras propiedades – concurrencia (multitarea), persistencia, uso de excepciones
Características de la POO
Soporte sintáctico explícito para la abstracción de datos.
Cambia el punto de vista: los programas son los apéndices de los datos.
Aparece un nuevo concepto: el objeto Tipos de datos abstractos con estado (atributos) y comportamiento (operaciones) propio.
Aparece el concepto de jerarquía de tipos y con esto:
• Herencia de estructura y funcionalidad
• Polimorfismo
Sintaxis del Lenguaje
• Definición de clases
• Funciones explícitamente asociadas con clases
• Creación de objetos
• Acceso a atributos por medio de la invocación de métodos
Características de la POO
Polimorfismo
• La misma acción pero de diferente forma.
• Ejemplo:
Acción: Transportarse:
Objetos que se pueden transportar:
Águila: (Ala1, Ala2, Cola)
Tigre: (Pata1, Pata2, Pata3, Pata4)
Humano: (Pie1, Pie2)
1.4 Relaciones entre clases y objetos
Principales: Clases : tipo de dato abstracto que reúne todas las características y
comportamiento comunes a un conjunto de objetos.
Objetos = atributos + métodos
Jerarquías de clases.
Relaciones: objetos compuestos.
Objetos Miembros de un objeto:
métodos : son las operaciones sobre los objetos.
datos o atributos.
Identificador del objeto: nombre de la variable
2.2 Clases
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase.
Tipos de Clases
Clase Abstracta: es un tipo de clase de la cual no se pueden instanciar objetos únicamente se pueden instanciar clases, es decir, una clase abstracta sólo tiene parte del comportamiento por lo tanto no puede instanciar objetos.
Clase Común: es un tipo de clase que tiene clases
antecesoras y que tiene un comportamiento específico. De una clase común se pueden instanciar objetos o instanciar otras clases.
Clase Final: es una clase tan especializada de la cual
únicamente se pueden instanciar objetos, ya que no podría tener descendencia.
Propiedades en clases
Las propiedades o atributos son las
características de los objetos. Cuando
definimos una propiedad normalmente
especificamos su nombre y su tipo. Nos
podemos hacer a la idea de que las
propiedades son algo así como variables
donde almacenamos datos relacionados
con los objetos.
Métodos en las clases
Son las funcionalidades asociadas a los
objetos. Cuando estamos programando las
clases las llamamos métodos. Los métodos
son como funciones que están asociadas a
un objeto.
Ejemplo de Jerarquía de Clases
Seres Vivos
Ovíparos Vivíparos Carnívoros
Terrestres Aéreos Acuáticos
Caninos Felinos
Perros Lobos
Cocker Labrador
Spaniel
Inglés
Bella
Abstracta
Común
Final
Objeto
Clases: Tipos de Acceso
Se refiere al tipo de permiso que una clase tiene permitido para ver su comportamiento, clasificándose como sigue:
Visibilidad pública: implica que cualquier objeto en cualquier parte puede hacer uso de aquello declarado como público, ya que está creado con ese fin.
Visibilidad privada: implica que sólo la clase puede hacer uso de ella.
Visibilidad protegida: significa que sólo la misma clase o descendencia de ésta puede utilizar aquello declarado como protegido.
1.5 Papel de Clases y Objetos Estructura Conceptual de un Objeto
• Un objeto es la instaciación de una clase
Lo más importante:
Perder el miedo a Programar
2. Metodología para la solución de Problemas
Nos basaremos en la misma metodología para resolver un problema de matemáticas:
1. Encontrar cuál es el problema: ¿Qué me están pidiendo?: -> Salida
2. Identificar los datos: ¿Qué información tengo para resolver el problema? -> Entrada
3. Determinar las fórmulas que ayudarán a resolver el problema
4. Resolver el problema.
2.1 Descripción del problema Ejercicio
• ¿Cuál es el área del triángulo con base 10 y
altura 5?
2.2 Definición de la Solución
1. Encontrar cuál es el problema: Calcular el área de un triángulo
2. Identificar los datos:
base = 10
altura = 5
3. Determinar las fórmulas:
area = base * altura / 2
4. Resolver el problema:
area = 10 * 5 / 2
2.2 Definición de la Solución
Un automóvil recorre 120 km. Con 32 litros
de gasolina. ¿Cuántos litros necesita para
recorrer 213 km.?
2.2 Definición de la Solución
1. Encontrar cuál es el problema: Calcular el total
Litros2 necesarios
2. Identificar los datos:
Si recorre Km1= 120km gasta Litros1 = 32 lts.
Quiere recorrer: Km2=213
3. Determinar las fórmulas:
Litros2 = Km2*Litros1/Km1
4. Resolver el problema:
Litros2= 213*32/120= 56.8 lts.
2.2 Definición de la Solución
• ¡Llegó Julio Regalado! Y hay descuentos dependiendo del monto de la compra. Si la compra es mayor o igual a $5,000.00, se aplica un descuento del 22%. Si la compra es menor de $5,000.00 y mayor o igual a $2,000.00, se aplica un descuento del 10% Si la compra es menor de $2,000.00, no hay descuento. Si se hizo una compra de $6,300.00; ¿cuánto debe pagar el cliente?
top related