0 calificaciones0% encontró este documento útil (0 votos)
43 vistas34 páginas
Pprog Teo 05
Este documento presenta un resumen del paradigma de programación orientada a objetos. Explica conceptos clave como objetos, clases, métodos, herencia e interfaces. También describe brevemente la historia de este paradigma y algunas de sus ventajas y desventajas.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0 calificaciones0% encontró este documento útil (0 votos)
43 vistas34 páginas
Pprog Teo 05
Este documento presenta un resumen del paradigma de programación orientada a objetos. Explica conceptos clave como objetos, clases, métodos, herencia e interfaces. También describe brevemente la historia de este paradigma y algunas de sus ventajas y desventajas.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 34
Paradigmas de Programación
Paradigma de la Programación Orientada a Objetos
Ing. José Castañeda Saldaña
Agenda • Paradigma de la Programación Orientada a Objetos • Historia • Conceptos • Ventajas y desventajas Paradigma de la Programación Orientada a Objetos • Basado en el concepto de objetos, que son estructuras de datos que contienen datos en la forma de campos comúnmente conocidos como atributos y código en la forma de procedimientos conocidos como métodos. • Los programas son diseñados desde los objetos que interactúan entre si. • Los lenguajes de programación más significativos incluyen C++, Java, Delphi, C#, Python, Smalltalk; cabe mencionar que los mismos son multiparadigmas, típicamente combinados con el imperativo y procedural. (E.Shalom, 2018) Historia (1/3) • Apareció por primera vez en el MIT a finales de los 50 e inicio de los 60. • Ivan Sutherland (MIT) defina las nociones de objetos e instancias. • El concepto formal de programación de objetos fue introducido en los años 60 en el lenguaje de programación Simula 67 (clases y objetos). • Simula fue usado para el modelamiento físico pero influencio en lenguajes como Smaltalk y C++. • El lenguajes Smalltalk (1970) introdujo el término “Programación Orientada a Objetos”. Historia (2/3) • El paradigma de la programación orientada a objetos se volvió dominante a inicios y mediados de los 90. • Los primeros lenguajes incluyen FoxPro, C++ y Delphi. • Su prominencia fue impulsada por el uso de los entornos gráficos (GUI) que se soportan fuertemente en técnicas de programación orientada a objetos. • Se impulsa la programación guiada por eventos. Historia (3/3) • Lenguajes que incluyeron el paradigma: Ada, Basic, Fortran, Pascal y Cobol. • Lenguajes que surgieron principalmente para la orientación a objetos son Python y Ruby. • Los más comerciales usados actualmente son Java, C# y Visual Basic.NET. Conceptos Objetos y Variables de Referencia (1/2) • Un objeto es una representación de objetos del mundo real o abstracciones conceptuales. • Para crear un objeto debe existir una definición de él, llamada clase. • Se dice que un objeto es una instancia de una clase. • La instanciación de una clase se realiza mediante el operador new. • Poseen datos (características) representados por propiedades. Conceptos Objetos y Variables de Referencia (2/2) • Las variables que almacenan la información de un objeto son llamados variables de referencia. • Las variables de referencia almacenan la dirección de la posición de memoria que contiene los datos del objeto. Conceptos Métodos (1/4) • Es un procedimiento asociado a un objeto de una clase. • Los objetos poseen comportamiento que son representados por los métodos. • Son la interface que un objeto presenta al mundo exterior. • La capacidad más importante que presentan es la sobreescritura, que es la característica por la cual un objeto de una clase hija puede escribir su propia implementación del método. • Recursividad • Funciones estáticas Conceptos Métodos (2/4) • Pueden recibir o no valores (parámetros). • Pueden retornar o no un valor de un tipo de dato definido. • Pueden presentar la sobrecarga de métodos (varios métodos pueden tener el mismo nombre en la misma clase) Conceptos Métodos (3/4) • Ventajas • Permite concentrarse en esa porción del programa para construirlo, depurarlo y perfeccionarlo. • Se puede trabajar en diferentes métodos simultáneamente. • Permite la reutilización de código. • Reduce la complejidad y facilita la lectura del código. Conceptos Métodos (4/4) • Definición Conceptos Clases e Instancias • Una clase es una colección de un número específico de componentes. • Los componentes de una clase son llamados los miembros de la clase. • Permiten la creación de objetos proveyendo un valor inicial para su estado (variables miembro) e implementación para su comportamiento (funciones o métodos miembro). • Contienen un constructor que es una subrutina para crear objetos. • Cuando un constructor crea un objeto, éste es llamado una instancia de la clase (Proceso conocido como la instanciación de una clase). Conceptos Clases e Instancias • Las clases que se pueden instanciar se las conoce como concretas. • Las que no se pueden instanciar se las denomina abstractas. • Después de la instanciación a las variables miembro de un objeto específico se le denomina variables de instancia. • Para diseñar una clase es necesario identificar que datos necesitan ser manipulados (variables miembro) y que operaciones son necesarias para llevar a cabo la manipulación (funciones o méotodos miembro). Conceptos Clases e Instancias • Variables miembro ➔ características de la clase. • Funciones o métodos mimbro ➔ comportamiento de la clase. • Al momento de definir una clase se pueden usar modificadores de acceso tanto para la clase como para sus variables y funciones miembro. • Las variables miembro no son normalmente accesadas de forma directa si no a través de métodos accesores (getXxx()) o métodos mutadores (setXxxx(tipo valor)). Conceptos Clases e Instancias • Mantener los miembros de la clase privada evitando que los usuarios puedan manipular directamente su información se conoce como encapsulamiento. • El constructor de una clase es un método especial con el mismo nombre de la clase que permite la inicialización de la información de un objeto y es llamado automáticamente cuando se crea un objeto. • El constructor puede ser sobrecargado. • Constructor sin parámetros➔ constructor por defecto. • Constructor con parámetros ➔ constructor personalizado. Conceptos Clases e Instancias • Instanciación de objetos (Ejemplo). Circle c1; Circle c2;
• Una vez el objeto creado se puede acceder a los miembros de la clase
con el operador punto (.) ➔ c1.calcularArea(); Conceptos Miembros Estáticos de una Clase • Son compartidos por todos los objetos que pertenecen a una clase. • Existen aún si el objeto de la clase no existe. • Pueden ser invocados sin que se instancie un objeto de la clase, haciendo uso del operador punto (.) ➔ NombreClase.mEsttico • Los métodos estáticos sólo pueden usar miembros estáticos en el cuerpo de los mismos. Conceptos La palabra reservada this • Cada objeto tiene acceso a una referencia de sí mismo. • Esta referencia es this. • Java hace uso de this para referirse a las variables de instancia y a los métodos de clase. • Comúnmente usados para evitar la ambigüedad entre las variables de instancia y los parámetros formales public void setPeso(double peso){ this.peso=peso; } Conceptos Herencia (1/3) • Mecanismo utilizado para que una clase extienda las funcionalidades de otra clase. • La clase extendida se la conoce como clase padre o superclase. • La clase que extiende la funcionalidad se le conoce como clase hija o subclase. • Usado cuando tenemos clases que exhiben un comportamiento común que extienden de la superclase y presentan un comportamiento particular. Conceptos Herencia (2/3) • Desde la perspectiva de las relaciones se diría “es un(a)” ➔ Un Trabajador es una Persona. • Algunas reglas de la herencia: • Los miembros privados de la superclase no pueden ser accedidos por la subclase. • Las subclases pueden acceder directamente a los miembros públicos de la superclase. • La subclase puede definir sus propios miembros. • La subclase puede sobrescribir o sobrecargar los métodos de la superclase. • Todos los miembros de la superclase lo son también de la subclase. Conceptos Herencia (3/3) • Si una subclase sobrescribe un método de una superclase, para invocar el método de la superclase se debe usar la palabra reservada super. • Si la subclase no sobrescribe un método de la superclase puede llamar a un método de la misma simplemente con su nombre. • Una subclase puede tener su propio constructor para lo cual debe invocar al constructor de la superclase para inicializar las variables miembro de la misma. Conceptos Miembros Protegidos (protected) de una Clase • Modificador de acceso utilizado cuando se desea que un miembro de la clase sea accedida por la subclase pero aún se desea prevenir su acceso fuera de la misma. • Los miembros protegidos de una clase se encuentran entre los miembros públicos y privados. Conceptos Abstracción ¿Qué es la abstracción? • La abstracción (del latín abstrahere, 'alejar, sustraer, separar') es una operación mental destinada a aislar conceptualmente una propiedad o función concreta de un objeto, y pensar qué es, ignorando otras propiedades del objeto en cuestión (RAE). Conceptos Abstracción • Un método abstracto es aquel que sólo tiene la cabecera sin el cuerpo. • La cabecera de un método abstracto contiene la palabra reservada abstract y termina con un punto y coma (;). • Las clases abstractas se declaran en su cabecera con la palabra reservada abstract y tiene algunas características a tener en cuenta. Conceptos Abstracción Características de una clase abstracta: • Puede contener variables de instancia, constructores y métodos no abstractos. • Puede contener un método abstracto. • Si una clase tiene un método abstracto entonces la clase debe ser declarada abstracto. • No puede ser instanciado. • Una subclase de una clase abstracta puede ser instanciada si implementa todos los métodos abstractos de la misma. Conceptos Abstracción (Ejemplo) • TransportePublico.java Conceptos ¿Herencia Múltiple? • Java no permite que una clase extienda (herede) de más de una clase. • Algunos lenguajes de programación como C++ permiten la herencia múltiple. • Presenta problemas para su implementación pues de existir 2 clases con métodos iguales, ¿Cuál de ellos se ejecutaría? • Para suplir las características de la herencia múltiple Java presente el mecanismo de la interface. Conceptos Interfaces • Mecanismo usado en Java para estandarizar comportamiento similar en objetos de clases distintas. • Contienen sólo métodos abstractos. • Se definen utilizando la palabra reservada interface en lugar de class. • Las clases pueden implementar una o más interfaces, lo cual obliga a implementar los métodos que está declara. • La interface puede ser usada como nombre de una variable de referencia. Conceptos Interfaces (Ejemplo) •. Ventajas y Desventajas Ventajas • Es modular, ya que provee separación de las obligaciones. • Es extensible, ya que los objetos pueden ser extendidos para incluir nuevo comportamiento y características a través de la herencia. • Los objetos pueden ser reutilizados en otras aplicaciones. Ventajas y Desventajas Ventajas • Es modular, ya que provee separación de las obligaciones. De las ventajas previamente descritas se desprende: • Al ser modular es fcil de mantener. • Al ser reutilizable permite un desarrollo más rápido, ya que los lenguajes vienen con abundantes bibliotecas de objetos y el código desarrollado puede ser usado en otros proyectos. • El desarrollo rápido y el bajo costo permitan asignar más tiempo a la verificación con lo cual se obtiene software de mayor calidad. Ventajas y Desventajas Desventajas • Curva de aprendizaje algo compleja para algunas personas. • Complejidad al crear programas basados en la interacción entre objetos.. • Técnicas de programación complejas de aprender como la herencia y el polimorfismo. • Más líneas de código que un programa procedural. • Programas más lentos al requerir mayor número de instrucciones. Tarea Desarrolle una revisión bibliográfica sobre los siguientes temas, presentando ejemplos de uso de cada uno de ellos: 1. Herencia. 2. Abstracción. 3. Polimorfismo. Con los resultados de su investigación elabore un informe de no más de 5 páginas y súbalo a turnitin para su revisión, no se aceptarán trabajos con niveles de similitud mayor al 15%