SlideShare una empresa de Scribd logo
Autor: Luis Heladio Garzón Rodríguez
OBJETIVO GENERAL
Propender porque el estudiante se apropie el aprendizaje de las características y
fundamentos del paradigma de programación orientada a objetos, aplicándolo en la
construcción de solución a problemas de programación.
OBJETIVOS ESPECIFICOS
 Conocer y comprender las características fundamentales del paradigma
programación orientada a objetos.
 Continuar el afianzamiento con las estructuras de control.
 Entender el propósito de los procesos de la programación orientada a objetos.
 Comprender y poner en práctica la Definición y utilización de funciones
 Comprender los conceptos fundamentales de la programación y su importancia.
 Conocer y aplicar las estructuras de datos, entendiendo su importancia en la
programación.
 Profundizar mediante la investigación de los conceptos aquí tratados de parte del
estudiante.
PARADIGMA PROGRAMACIÓN ORIENTADA A OBJETOS
Programación orientada a objetos es una forma de elaborar soluciones de
programación muy aproximadas a la realidad.
El paradigma de programación Orientada a objetos (POO) es una forma especial de
programar, más cercana a como expresaríamos las cosas en la vida real, de como se
haría con otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para
escribir nuestros programas en términos de objetos, propiedades, métodos y otras
cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que
permita soltarnos un poco con este tipo de programación.
Durante años, los programadores se han dedicado a construir aplicaciones muy
parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los
esfuerzos de los programadores puedan ser utilizados por otras personas se creó la
POO. Que es una serie de normas de realizar las cosas de manera que otras personas
puedan utilizarlas y adelantar su trabajo, de tal forma que consigamos que el código se
pueda reutilizar.
La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de
quien la programa, de manera que la forma de hacer las cosas puede ser diferente
según el programador. Aunque podamos hacer los programas de formas distintas, no
todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar
bien. Programar bien es importante porque así nos podemos aprovechar de todas las
ventajas de la POO.
UNIDAD I
PARADIGMA PROGRAMACIÓN ORIENTADA A OBJETOS
Autor: Luis Heladio Garzón Rodríguez
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por
ejemplo vamos a pensar en un coche para tratar de modelarlo en un esquema de POO.
Diríamos que el coche es el elemento principal que tiene una serie de características,
como podrían ser el color, el modelo o la marca. Además tiene una serie de
funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las
características como el color o el modelo y los métodos serían las funcionalidades
asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelaríamos en un esquema de POO una
fracción, es decir, esa estructura matemática que tiene un numerador y un
denominador que divide al numerador, por ejemplo 3/2.
La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador.
Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o
número, restarse con otra fracción, etc.
Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de
matemáticas harás uso de objetos fracción y en un programa que gestione un taller de
coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos
objetos para realizar las acciones que se desean realizar y ellos mismos también son
objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche,
herramienta, mecánico, recambios, etc.
De acuerdo a esto podemos concluir que en la programación orientada a objetos, la
reusabilidad, el empaquetamiento, la ocultación, la encapsulación, la modularidad, la
herencia son características fundamentales para hacer que los esfuerzos de
programación puedan redundar en menores esfuerzos humanos, mayores beneficios o
resultados y baja de costos.
La programación orientada a objetos es una técnica cuyo bloque de construcción
principal son los objetos y las interrelaciones.
Un objeto son estructuras de datos más las funciones que operan sobre estas
estructuras.
1. CARACTERISTICAS
Existe un acuerdo acerca de qué características contempla la "orientación a objetos",
las características siguientes son las más importantes:1
Abstracción: Denota las características esenciales de un objeto, donde se
capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un
"agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y
"comunicarse" con otros objetos en el sistema sin revelar cómo se implementan
estas características. Los procesos, las funciones o los métodos pueden también ser
abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar
una abstracción.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite
1
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Caracter.C3.ADsticas_de_la_POO
Autor: Luis Heladio Garzón Rodríguez
aumentar la cohesión de los componentes del sistema. Algunos autores confunden
este concepto con el principio de ocultación, principalmente porque se suelen
emplear conjuntamente.
Principio de ocultación: Cada objeto está aislado del exterior, es un módulo
natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica
cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificación por quien no tenga derecho a
acceder a ellas, solamente los propios métodos internos del objeto pueden acceder
a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno
de un objeto de maneras inesperadas, eliminando efectos secundarios e
interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso
directo a los datos internos del objeto de una manera controlada y limitando el
grado de abstracción. La aplicación entera se reduce a un agregado o
rompecabezas de objetos.
Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden
compartir el mismo nombre, al llamarlos por ese nombre se utilizará el
comportamiento correspondiente al objeto que se esté usando. O dicho de otro
modo, las referencias y las colecciones de objetos pueden contener objetos de
diferentes tipos, y la invocación de un comportamiento en una referencia producirá
el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto
ocurre en "tiempo de ejecución", esta última característica se llama asignación
tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos
(en "tiempo de compilación") de polimorfismo, tales como las plantillas y la
sobrecarga de operadores de C++.
Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando
una jerarquía de clasificación. Los objetos heredan las propiedades y el
comportamiento de todas las clases a las que pertenecen. La herencia organiza y
facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos
y creados como tipos especializados de objetos preexistentes. Estos pueden
compartir (y extender) su comportamiento sin tener que volver a implementarlo.
Esto suele hacerse habitualmente agrupando los objetos en clases y estas en
árboles o enrejados que reflejan un comportamiento común. Cuando un objeto
hereda de más de una clase se dice que hay herencia múltiple.
Recolección de basura: la Recolección de basura o Garbage Collector es la
técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente,
y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna
referencia a ellos. Esto significa que el programador no debe preocuparse por la
asignación o liberación de memoria, ya que el entorno la asignará al crear un
nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los
lenguajes híbridos que se extendieron para soportar el Paradigma de Programación
Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la
memoria debe desasignarse manualmente.
Lenguajes
Simula (1967) es aceptado como el primer lenguaje que posee las características
principales de un lenguaje orientado a objetos. Fue creado para hacer programas de
simulación, en donde los "objetos" son la representación de la información más
importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el
que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.
Autor: Luis Heladio Garzón Rodríguez
Entre los lenguajes orientados a objetos se destacan los siguientes:2
 ABAP
 ABL Lenguaje de programación de OpenEdge de Progress Software
 ActionScript
 ActionScript 3
 Ada
 C++
 C#
 Clarion
 Clipper (lenguaje de programación) (Versión 5.x con librería de objetos
Class(y))
 D
 Object Pascal (Delphi)
 Flex builder (adobe)
 Gambas
 Harbour
 Eiffel
 Java
 JavaScript (la herencia se realiza por medio de la programación basada en
prototipos)
 Lexico (en castellano)
 Objective-C
 Ocaml
 Oz
 R
 Perl (soporta herencia múltiple. La resolución se realiza en preorden, pero
puede modificarse al algoritmo linearization C3 por medio del módulo Class::C3
en CPAN)
 PHP (a partir de su versión 5)
 PowerBuilder (Todas la Versiones)
 Python
 Ruby
 Smalltalk (Proyecto investigativo. Influenció a Java.)
 Magik (SmallWorld)
 Vala
 VB.NET
 Visual FoxPro (en su versión 6)
 Visual Basic 6.0
 Visual Objects
 XBase++
 Lenguaje DRP
 Lenguaje de programación Scala (Lenguaje usado por Twitter)
http://www.scala-lang.org/
Muchos de estos lenguajes de programación no son puramente orientados a objetos,
sino que son híbridos que combinan la POO con otros paradigmas.
Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object
REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de
programación clásico.
Un nuevo paso en la abstracción de paradigmas de programación es la Programación
Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de
2
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Caracter.C3.ADsticas_de_la_POO
Autor: Luis Heladio Garzón Rodríguez
maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en
todo el mundo.
2. Conceptos de POO
2.1 Clases
Definiciones de las propiedades y comportamiento de un tipo de objeto
concreto. La instanciación es la lectura de estas definiciones y la creación de un
objeto a partir de ellas.
2.2 Objetos
Entidad provista de un conjunto de propiedades o atributos (datos) y de
comportamiento o funcionalidad (métodos) los mismos que consecuentemente
reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos
rodea, o a objetos internos del sistema (del programa). Es una instancia a una
clase.
2.3 Herencia
Es la facilidad mediante la cual la clase D hereda en ella cada uno de los
atributos y operaciones de C, como si esos atributos y operaciones hubiesen
sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y
variables públicas declaradas en C. Los componentes registrados como
"privados" (private) también se heredan, pero como no pertenecen a la clase,
se mantienen escondidos al programador y sólo pueden ser accedidos a través
de otros métodos públicos. Esto es así para mantener hegemónico el ideal de
OOP.
2.4 Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el
mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento
correspondiente al objeto que se esté usando. O dicho de otro modo, las
referencias y las colecciones de objetos pueden contener objetos de diferentes
tipos, y la invocación de un comportamiento en una referencia producirá el
comportamiento correcto para el tipo real del objeto referenciado. Cuando esto
ocurre en "tiempo de ejecución", esta última característica se llama asignación
tardía o asignación dinámica. Algunos lenguajes proporcionan medios más
estáticos (en "tiempo de compilación") de polimorfismo, tales como las
plantillas y la sobrecarga de operadores de C++.
2.5 Método
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se
desencadena tras la recepción de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un método puede producir un
cambio en las propiedades del objeto, o la generación de un "evento" con un
nuevo mensaje para otro objeto del sistema.
2.6 Evento
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se
desencadena tras la recepción de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un método puede producir un
cambio en las propiedades del objeto, o la generación de un "evento" con un
nuevo mensaje para otro objeto del sistema.
3. LENGUAJE JAVA
Para desarrollar el tema sobre este paradigma, se toma como ejemplo a Java.
Características del lenguaje:
Autor: Luis Heladio Garzón Rodríguez
Paradigma: Orientado a objetos
Apareció en: 1991
Diseñado por: Sun Microsystems
Tipo de dato: Fuerte, Estático
Implementaciones: Numerosas
Influido por: Objective-C, C++, Smalltalk, Eiffel
Ha influido a: C#, J#, JavaScript,PHP
Sistema operativo: Multiplataforma
Licencia de software: GNU GPL / Java
Java es un lenguaje de programación orientado a objetos desarrollado por Sun
Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su
sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina
herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación
directa de punteros o memoria.
Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la
compilación en código máquina nativo también es posible. En el tiempo de ejecución,
el bytecode es normalmente interpretado o compilado a código nativo para la
ejecución, aunque la ejecución directa por hardware del bytecode por un procesador
Java también es posible.
La implementación original y de referencia del compilador, la máquina virtual y las
bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995.
Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del
lenguaje a través del Java Community Process, si bien otros han desarrollado también
implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo
licencias de software libre.
Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de
sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del
Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora
software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los
programas Java aún no lo es).
Para profundizar sobre el lenguaje java y sus características revise en:
http://programacion.net/java/
https://desarrolloweb.com/directorio/programacion/java/
3.1 Tipos de datos
3.2 Estructuras de control
3.3 Funciones y/o procedimientos
Autor: Luis Heladio Garzón Rodríguez
3.4 Estructuras de datos
3.4.1 Datos Estructurados
3.4.2 Estructura de datos
3.4.2.1 Arreglos
3.5 Creación de objetos
3.6 Constructores
3.7 Applets
BIBLIOGRAFIA
Garcia de Jalon, Javier y otros. Aprenda Java como si estuviera en primero.
http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf
Holzner, Steven. La biblia de Java 2.
file:///C:/Users/Luis%20H/Downloads/La%20Biblia%20del%20Java%202%20-%20Holzner,%20Steven%20-
%20Anaya%20Multimedia.pdf
Deitel. Programar en Java. 7ª. Edición.
http://www.academica.mx/sites/default/files/adjuntos/13274/Como%20programar%20en%20Java%20-
%207ma%20Edicion%20-%20P.%20J.%20Deitel.pdf
Sánchez, Jorge. Java 2.
http://www.jorgesanchez.net/programacion/manuales/Java.pdf
Guía de iniciación al lenguaje Java.
http://www.lawebdelprogramador.com/cursos/Java/2139-Guia-de-Iniciacion-al-Lenguaje-JAVA.html
Lenguaje de programación JAVA. Enciclopedia Wikipedia.
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
Aprendiendo JAVA y programación orientada a objetos. Gustavo Guillermo Pérez.
https://cursosperla.wikispaces.com/file/view/AprendiendoJava.pdf/272773236/AprendiendoJava.
pdf
Aprender JAVA POO.
https://www.programarya.com/Cursos/Java
Java Inicial. Emilio Avilés Ávila.
http://www.slideshare.net/techmi/curso-java-inicial-1-poo
Manuales de JAVA.
http://programacion.net/java/
Tutoriales.
http://www.abcdatos.com/tutoriales/programacion/java/java/principiantes/

Más contenido relacionado

DOC
Unidad III epoo
PPTX
S2-Representación Gráfica
PPTX
Programación orientada a objetos presentacion
PPTX
Programación orientada a objetos
PPTX
Presentación poo
PDF
Programación orientada a objetos, fundamentos
PDF
Programación Orientada a Objetos
Unidad III epoo
S2-Representación Gráfica
Programación orientada a objetos presentacion
Programación orientada a objetos
Presentación poo
Programación orientada a objetos, fundamentos
Programación Orientada a Objetos

La actualidad más candente (20)

PDF
Programacion Orientada a Objetos (poo)
DOCX
Que es y para que sirve la programacion orientada a objetos
PDF
Fundamentos del Enfoque OO
DOCX
Trabajo poo
DOCX
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
DOCX
Introduccion a la POO
PPT
Programacion orientada a objetos
PPTX
Introduccion a la Programacion Orientada a Objetos
DOCX
PRESENTACION
PPTX
Programación Orientada a Objetos - Resumen
PPTX
Clases poo
PPTX
PPTX
Taller campus party
PPTX
PROGRAMACION ORIENTADA A OBJETOS
PPTX
programacion orientada a objetos
PPTX
Origen de la programacion orientada a objetos
PDF
Introduccion a la Programacion Orientada a Objetos
PPTX
Curso de Java Intermedio
PPTX
Windows Phone - Sesión 1 - SenaGeeks
PDF
Principios orientacion-objetos
Programacion Orientada a Objetos (poo)
Que es y para que sirve la programacion orientada a objetos
Fundamentos del Enfoque OO
Trabajo poo
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Introduccion a la POO
Programacion orientada a objetos
Introduccion a la Programacion Orientada a Objetos
PRESENTACION
Programación Orientada a Objetos - Resumen
Clases poo
Taller campus party
PROGRAMACION ORIENTADA A OBJETOS
programacion orientada a objetos
Origen de la programacion orientada a objetos
Introduccion a la Programacion Orientada a Objetos
Curso de Java Intermedio
Windows Phone - Sesión 1 - SenaGeeks
Principios orientacion-objetos
Publicidad

Similar a Paradigma de Programación Orientada a Objetos (20)

PPTX
Programación estructurada a objetos.pptm
PPTX
Programacion orientada a objeto
DOCX
CUESTIONARIO SOBRE PROGRAMACIÓN RELACIONADA A OBJETOS
PDF
Trabajo investigativo sobre la programación orientada a objetos y java
PPTX
PPTX
Programación Orientada a Objetos
PPTX
Exposicion orientada a objetos
PPTX
1-Unidad 1. Paradigma de la Programación-Orientación a Objetos
PPTX
Programación orientada a objetos
PPTX
Programacion orientada a objetos
PDF
Programacion
PPTX
REPLICA MONTUFAR
PPTX
Programación orientada a objetos
PPTX
porgramacion orientada a objetos
PPTX
tarea poo s-a
PPTX
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
PPTX
Programación orientada a objetos
Programación estructurada a objetos.pptm
Programacion orientada a objeto
CUESTIONARIO SOBRE PROGRAMACIÓN RELACIONADA A OBJETOS
Trabajo investigativo sobre la programación orientada a objetos y java
Programación Orientada a Objetos
Exposicion orientada a objetos
1-Unidad 1. Paradigma de la Programación-Orientación a Objetos
Programación orientada a objetos
Programacion orientada a objetos
Programacion
REPLICA MONTUFAR
Programación orientada a objetos
porgramacion orientada a objetos
tarea poo s-a
LENGUAJE DE PROGRAMACIÓN ORIENTADA A OBJETOS
Programación orientada a objetos
Publicidad

Más de Jose Sanchez (20)

PDF
Sanchez_Jose_Semana8.pdf
PDF
Database miningguide
PDF
Maquinas de vectores
PDF
Ensayo tutoria 1 sep
PDF
Algoritmos para aplicar data mining
PDF
Data mining
PPTX
Segunda condicional
DOCX
Unit 8
PDF
Aprenda Java como si estuviera en primero
DOCX
Preguntas generadoras(1)
DOCX
Taller n°1(1)
PDF
Actividad de Aprendizaje
PDF
Herramientas de Programación
PDF
Paradigmas de Programación
PDF
Introducción a los paradigmas de programación
DOCX
Unidad 6
DOCX
The thirty
DOCX
Resumen 39 steps
PPTX
My daily routine
PPTX
Personal introduction
Sanchez_Jose_Semana8.pdf
Database miningguide
Maquinas de vectores
Ensayo tutoria 1 sep
Algoritmos para aplicar data mining
Data mining
Segunda condicional
Unit 8
Aprenda Java como si estuviera en primero
Preguntas generadoras(1)
Taller n°1(1)
Actividad de Aprendizaje
Herramientas de Programación
Paradigmas de Programación
Introducción a los paradigmas de programación
Unidad 6
The thirty
Resumen 39 steps
My daily routine
Personal introduction

Último (20)

PPT
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
PDF
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
DOC
informacion acerca de la crianza tecnificada de cerdos
PPTX
NILS actividad 4 PRESENTACION.pptx pppppp
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PDF
Oficio SEC 293416 Comision Investigadora
PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
PDF
Primera formulación de cargos de la SEC en contra del CEN
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PDF
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
PPTX
Notificacion e investigación de incidentes y accidentes de trabajo.pptx
PPTX
Seminario de telecomunicaciones para ingeniería
PDF
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
PDF
manual-electricidad-automotriz-sistemas-electricos-bateria-alumbrado-iluminac...
PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PPTX
Gestion de seguridad y salud ocupacional.pptx
DOCX
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
PDF
Durabilidad del concreto en zonas costeras
PDF
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
Oficio SEC de formulación de cargos por el apagón del 25F en contra del CEN
informacion acerca de la crianza tecnificada de cerdos
NILS actividad 4 PRESENTACION.pptx pppppp
Módulo-de Alcance-proyectos - Definición.pdf
Oficio SEC 293416 Comision Investigadora
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
Primera formulación de cargos de la SEC en contra del CEN
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
Notificacion e investigación de incidentes y accidentes de trabajo.pptx
Seminario de telecomunicaciones para ingeniería
Copia de Presentación Propuesta de Marketing Corporativo Blanco y Negro.pdf
manual-electricidad-automotriz-sistemas-electricos-bateria-alumbrado-iluminac...
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
Gestion de seguridad y salud ocupacional.pptx
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
Durabilidad del concreto en zonas costeras
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
357161027-seguridad-industrial-diapositivas-ppt.ppt

Paradigma de Programación Orientada a Objetos

  • 1. Autor: Luis Heladio Garzón Rodríguez OBJETIVO GENERAL Propender porque el estudiante se apropie el aprendizaje de las características y fundamentos del paradigma de programación orientada a objetos, aplicándolo en la construcción de solución a problemas de programación. OBJETIVOS ESPECIFICOS  Conocer y comprender las características fundamentales del paradigma programación orientada a objetos.  Continuar el afianzamiento con las estructuras de control.  Entender el propósito de los procesos de la programación orientada a objetos.  Comprender y poner en práctica la Definición y utilización de funciones  Comprender los conceptos fundamentales de la programación y su importancia.  Conocer y aplicar las estructuras de datos, entendiendo su importancia en la programación.  Profundizar mediante la investigación de los conceptos aquí tratados de parte del estudiante. PARADIGMA PROGRAMACIÓN ORIENTADA A OBJETOS Programación orientada a objetos es una forma de elaborar soluciones de programación muy aproximadas a la realidad. El paradigma de programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real, de como se haría con otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación. Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se creó la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de tal forma que consigamos que el código se pueda reutilizar. La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO. UNIDAD I PARADIGMA PROGRAMACIÓN ORIENTADA A OBJETOS
  • 2. Autor: Luis Heladio Garzón Rodríguez Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar. Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar. Por poner otro ejemplo vamos a ver cómo modelaríamos en un esquema de POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2. La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc. Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de matemáticas harás uso de objetos fracción y en un programa que gestione un taller de coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc. De acuerdo a esto podemos concluir que en la programación orientada a objetos, la reusabilidad, el empaquetamiento, la ocultación, la encapsulación, la modularidad, la herencia son características fundamentales para hacer que los esfuerzos de programación puedan redundar en menores esfuerzos humanos, mayores beneficios o resultados y baja de costos. La programación orientada a objetos es una técnica cuyo bloque de construcción principal son los objetos y las interrelaciones. Un objeto son estructuras de datos más las funciones que operan sobre estas estructuras. 1. CARACTERISTICAS Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las características siguientes son las más importantes:1 Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite 1 http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Caracter.C3.ADsticas_de_la_POO
  • 3. Autor: Luis Heladio Garzón Rodríguez aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente. Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos. Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple. Recolección de basura: la Recolección de basura o Garbage Collector es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente. Lenguajes Simula (1967) es aceptado como el primer lenguaje que posee las características principales de un lenguaje orientado a objetos. Fue creado para hacer programas de simulación, en donde los "objetos" son la representación de la información más importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la programación orientada a objetos se ha desarrollado.
  • 4. Autor: Luis Heladio Garzón Rodríguez Entre los lenguajes orientados a objetos se destacan los siguientes:2  ABAP  ABL Lenguaje de programación de OpenEdge de Progress Software  ActionScript  ActionScript 3  Ada  C++  C#  Clarion  Clipper (lenguaje de programación) (Versión 5.x con librería de objetos Class(y))  D  Object Pascal (Delphi)  Flex builder (adobe)  Gambas  Harbour  Eiffel  Java  JavaScript (la herencia se realiza por medio de la programación basada en prototipos)  Lexico (en castellano)  Objective-C  Ocaml  Oz  R  Perl (soporta herencia múltiple. La resolución se realiza en preorden, pero puede modificarse al algoritmo linearization C3 por medio del módulo Class::C3 en CPAN)  PHP (a partir de su versión 5)  PowerBuilder (Todas la Versiones)  Python  Ruby  Smalltalk (Proyecto investigativo. Influenció a Java.)  Magik (SmallWorld)  Vala  VB.NET  Visual FoxPro (en su versión 6)  Visual Basic 6.0  Visual Objects  XBase++  Lenguaje DRP  Lenguaje de programación Scala (Lenguaje usado por Twitter) http://www.scala-lang.org/ Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas. Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico. Un nuevo paso en la abstracción de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de 2 http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos#Caracter.C3.ADsticas_de_la_POO
  • 5. Autor: Luis Heladio Garzón Rodríguez maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en todo el mundo. 2. Conceptos de POO 2.1 Clases Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. 2.2 Objetos Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase. 2.3 Herencia Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para mantener hegemónico el ideal de OOP. 2.4 Polimorfismo Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. 2.5 Método Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. 2.6 Evento Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. 3. LENGUAJE JAVA Para desarrollar el tema sobre este paradigma, se toma como ejemplo a Java. Características del lenguaje:
  • 6. Autor: Luis Heladio Garzón Rodríguez Paradigma: Orientado a objetos Apareció en: 1991 Diseñado por: Sun Microsystems Tipo de dato: Fuerte, Estático Implementaciones: Numerosas Influido por: Objective-C, C++, Smalltalk, Eiffel Ha influido a: C#, J#, JavaScript,PHP Sistema operativo: Multiplataforma Licencia de software: GNU GPL / Java Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible. La implementación original y de referencia del compilador, la máquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de software libre. Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java aún no lo es). Para profundizar sobre el lenguaje java y sus características revise en: http://programacion.net/java/ https://desarrolloweb.com/directorio/programacion/java/ 3.1 Tipos de datos 3.2 Estructuras de control 3.3 Funciones y/o procedimientos
  • 7. Autor: Luis Heladio Garzón Rodríguez 3.4 Estructuras de datos 3.4.1 Datos Estructurados 3.4.2 Estructura de datos 3.4.2.1 Arreglos 3.5 Creación de objetos 3.6 Constructores 3.7 Applets BIBLIOGRAFIA Garcia de Jalon, Javier y otros. Aprenda Java como si estuviera en primero. http://www4.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/Java/Java2.pdf Holzner, Steven. La biblia de Java 2. file:///C:/Users/Luis%20H/Downloads/La%20Biblia%20del%20Java%202%20-%20Holzner,%20Steven%20- %20Anaya%20Multimedia.pdf Deitel. Programar en Java. 7ª. Edición. http://www.academica.mx/sites/default/files/adjuntos/13274/Como%20programar%20en%20Java%20- %207ma%20Edicion%20-%20P.%20J.%20Deitel.pdf Sánchez, Jorge. Java 2. http://www.jorgesanchez.net/programacion/manuales/Java.pdf Guía de iniciación al lenguaje Java. http://www.lawebdelprogramador.com/cursos/Java/2139-Guia-de-Iniciacion-al-Lenguaje-JAVA.html Lenguaje de programación JAVA. Enciclopedia Wikipedia. http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java Aprendiendo JAVA y programación orientada a objetos. Gustavo Guillermo Pérez. https://cursosperla.wikispaces.com/file/view/AprendiendoJava.pdf/272773236/AprendiendoJava. pdf Aprender JAVA POO. https://www.programarya.com/Cursos/Java Java Inicial. Emilio Avilés Ávila. http://www.slideshare.net/techmi/curso-java-inicial-1-poo Manuales de JAVA. http://programacion.net/java/ Tutoriales. http://www.abcdatos.com/tutoriales/programacion/java/java/principiantes/