0% 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.
Derechos de autor
© © All Rights Reserved
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% 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.
Derechos de autor
© © All Rights Reserved
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%

También podría gustarte