Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 8

República Bolivariana de Venezuela

Ministerio del poder popular para la defensa


Universidad nacional experimental politécnica de la fuerza armada nacional bolivariana
Núcleo – Falcón – sede – coro

Profesora: Bachilleres:
Jepsenia Ávila Samuel Cardozo
Johanry Rivero
Drewing Sanchez
ING. Sistemas 4to semestre
seccion “B”

Santa Ana de coro, Octubre del 2018


Programación orientada a objetos

1
1. Introducción.

La programación orientada a objetos (Poo) es un paradigma de programación más orientado


a como vemos las cosas en la vida real que otros tipos de programación (programación lógica,
funcional, imperativa,...)

Este tipo de programación permite solventar algunos de los problemas que ha tenido el
desarrollo del software desde sus comienzos, como por ejemplo la falta de portabilidad y baja
reusabilidad del código, junto con la dificultad en la modificación y desarrollo del mismo.
Además es una técnica de codificación bastante más intuitiva que el resto.

La programación orientada a objetos tiene tres propiedades básicas: Debe estar basado en
objetos, estar basado en clases y debe de ser capaz de mantener una herencia entre clases. La
mayoría de los lenguajes cumplen una o dos de estas propiedades pero pocos logran cumplir las
tres. En particular, la herencia.

Posteriormente veremos los conceptos objeto, clase y herencia junto con el resto de
conceptos asociadazos a la Poo.

Aprender esta técnica no es complicado, pero es una manera subjetiva de programar que
depende del desarrollador. Aunque podemos dar diferentes soluciones a un mismo problema, no
todas ellas son válidas. La dificultad no radica en aprender esta técnica, si no en ejecutarla bien.
Solo programando bien podemos aprovechar todas las ventajas que nos ofrece la programación
orientada a objetos.

2. Origen.

Los orígenes de la programación orientada a objetos se encuentran en Simula67. Este era un


lenguaje creado para realizar simulaciones en el Centro de Cómputo Noruego en Oslo. Sus
desarrolladores fueron Ole-Johan Dahl y Kristen Nygaard.

Se dieron cuenta de que las cualidades de las naves con las que estaban simulando podían
afectar unas a otras. Su idea fue la de agrupar diversos tipos de naves en diversas clases de
objetos. Los objetos se agrupan en clases y estas definen sus propios datos y operaciones. Esta
idea fue pulida posteriormente en Smalltak, desarrollado en Simula 1 en Xerox PARC.

Fue diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían
crear y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos.

En los años ochenta la programación orientada a objetos adquiere un papel dominante


debido a la aparición de C++, una extensión de C que soporta este tipo de programación.
Termina consolidándose finalmente con el auge de las Interfaces gráficas de usuario. Estas
facilitan la comunicación del usuario con el ordenador mediante un sistema de iconos, ventanas
y textos para los cuales la programación orientada a objetos está muy bien adaptada.

Las características de esta técnica de programación fueron añadidas a muchos lenguajes


existentes tales como Ada, Basic, Fortran, Pascal y otros. Pero estos lenguajes no se crearon
para soportarlas lo que condujo a problemas de compatibilidad y mantenimiento del código,

1
Simula: primer lenguaje de programación orientada a objetos (OOP).

2
mientras que los lenguajes diseñados específicamente para ello carecían de las herramientas
indispensables para muchos programadores que no podían trabajar sin ellas.

El problema era conseguir un lenguaje basado en los métodos de la programación orientada


a objetos, pero que incluyese algunas de las características del resto de paradigmas de manera
segura. El Eiffel de Bertrand Meyer fue uno de los primeros leguajes que solventaron este
problema; aunque se encuentra en desuso debido a la gran aceptación de Java y su maquina
virtual que se encuentra implantada en la mayoría de navegadores web.

Mas recientemente, nuevos lenguajes han apareciendo orientados a objetos pero con un
procedimiento mas metodológico, como Pitón y Ruby. Probablemente, después de Java los
lenguajes orientados a objetos mas importantes sean Visual Basic y C# diseñados para la
plataforma .NET2 de Microsoft.

3. Conceptos básicos de POO.

 Objeto: Conjunto concreto de datos y operaciones (métodos). Se corresponden con los


objetos que nos rodean. Un ejemplo de objeto puede ser un libro. Tiene una serie de
propiedades (número de hojas, autor, editor, ...) y unas operaciones (se puede abrir, leer,
anotar, ...)
 Clase: Conjunto de las propiedades y métodos de un tipo de objeto determinado.
Podemos definir la clase libro, donde un objeto perteneciente a esta clase sería “El Camino” de
Miguel Delibes.
 Método: Algoritmo asociado a una clase de objetos o a uno de ellos. Se ejecutan tras
recibir un "mensaje". Un método es lo que los objetos pueden hacer. No puedo escribir con un
libro, por ejemplo. Un método puede producir un cambio en algunas de las propiedades del
objeto, y/o la generación de un "evento" junto con un mensaje que se envía a otro objeto o así
mismo. De esta forma, en el ejemplo de los libros, el método leer generaría un mensaje dirigido
al propio libro para que fuese abierto.
 Evento: Es un suceso en el sistema. El programa envía el mensaje adecuado al objeto
pertinente.
 Mensaje: Información dirigida a un objeto, el cual le dice que ejecute uno de sus métodos
con ciertos parámetros asociados al evento que lo generó.
 Propiedad o atributo: Características de un objeto o una clase de objetos. Permiten ver
los datos asociados a un objeto desde fuera. Su valor puede ser alterado por el evento provocado
por un método
 Estado interno: Propiedad invisible de los objetos que solo se ve afectada por un método
del objeto. Se utiliza para indicar las distintas situaciones del objeto o clases de objetos.

4. Características de la Poo.

 Abstracción: Permite no preocuparse por los detalles de implementación de cada tipo de


dato. Estos toman el nombre de tipos de datos abstractos (TDA), incluidos en los lenguajes
Pascal, Ada, Modula-2 y C++ entre otros. La abstracción está presente en casi todos los
lenguajes de programación actuales. Algunos ejemplos de abstracción son los ya mencionados
TDA, las estructuras de datos, los procedimientos y las funciones.
 Encapsulamiento: Consiste en separar la implementación de los objetos de los objetos en
si. De este modo solo se puede cambiar el estado del objeto mediante las operaciones asociadas

2
.NET: proyecto de Microsoft para crear una nueva plataforma que permita un desarrollo de aplicaciones
rápido. Microsoft pretende desarrollar una estrategia que sume todos sus productos, desde el Sistema
Operativo hasta sus herramientas de mercado.

3
al mismo, sin tener que modificar su código. Así también se evita que el usuario altere su estado
de manera incontrolada.

Esta propiedad también recibe el nombre de “ocultación de la información”. El usuario del


objeto desconoce la distribución de la información dentro del objeto y la información disponible
en él. Pero gracias a los métodos asociados a cada uno puede usarlos y manejarlos. Un ejemplo
de encapsulamiento es el circuito eléctrico de una casa. El usuario solo accede a ciertas partes
del circuito (enchufes e interruptores), aunque las partes del circuito internas comparten
información entre si.

 Polimorfismo: Es la posibilidad que ofrece la Poo de asociar a objetos diferentes distintos


métodos con el mismo nombre. Cada objeto actuará en consecuencia según como este
implementado el método. Por ejemplo, el mensaje "+" a un objeto de tipo entero significa suma,
mientras que para un objeto de tipo cadena significaría concatenación.

Cuando esto sucede en tiempo de ejecución, hablamos de asignación tardía o asignación


dinámica. C++ tiene la posibilidad de polimorfismo en tiempo de compilación mediante
operadores.

 Herencia: las clases de objetos no están desligadas unas de otras, sino que se relacionan
entre sí, formando una jerarquía. 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.

Esto suele hacerse agrupando los objetos en clases y las clases en árboles que reflejan un
comportamiento común. Cuando un objeto pertenece a más de una clase se llama herencia
múltiple, aunque esta característica no está soportada por algunos lenguajes como Java.

 Modularidad: Se denomina "modularidad" a la propiedad que permite subdividir una


aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan
independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se
pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la
encapsulación, los lenguajes soportan la modularidad de diversas formas.
 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 específica 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
puedan cambiar el estado interno de un objeto de manera inesperada, 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.
 Recolección de basura: La recolección de basura (garbage collection) es la técnica por la
cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la
memoria asociada, 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 expresamente.

4
5. Diferencias con la programación imperativa.

La programación imperativa condujo a mejoras de la técnica de programación secuencial, tales


como la programación estructurada y "refinamientos sucesivos", los métodos modernos de
diseño de software orientado a objetos incluyen mejoras entre las que están el uso de los
patrones de diseño, diseño por contrato, y lenguajes de modelado (ej: UML).

Las principales diferencias son:


 La POO es más moderna, es una evolución de la programación imperativa que plasma en
el diseño de una familia de lenguajes conceptos que existían previamente con algunos nuevos.
 La POO se basa en lenguajes que soportan sintáctica y semánticamente la unión entre los
tipos abstractos de datos y sus operaciones (a esta unión se la suele llamar clase).
 La POO incorpora en su entorno de ejecución mecanismos tales como el polimorfismo
(capacidad del código de un programa para ser utilizado con diferentes tipos de datos) y el envío
de mensajes entre objetos.

Con el tiempo se le fueron adjudicando problemas a la programación imperativa. Esos


problemas fueron haciéndose cada vez más graves y antes de la programación orientada a
objetos diversos autores encontraron soluciones basadas en aplicar estrictas metodologías de
trabajo. De esa época son los conceptos de cohesión y acoplamiento. De esos problemas se
destacan los siguientes:
 Modelo mental anómalo. Nuestra imagen del mundo se apoya en los seres, a los que
asignamos nombres sustantivos, mientras la programación clásica se basa en el comportamiento,
representado usualmente por verbos.
 Es difícil modificar y extender los programas, pues suele haber datos compartidos por
varios subprogramas, que introducen interacciones ocultas entre ellos.
 Es difícil mantener los programas. Casi todos los sistemas informáticos grandes tienen
errores ocultos, que no surgen a la luz hasta después de muchas horas de funcionamiento.
 Es difícil reutilizar los programas. Es prácticamente imposible aprovechar en una
aplicación nueva las subrutinas que se diseñaron para otra.
 Es compleja la coordinación y organización entre programadores para la creación de
aplicaciones de media y gran envergadura.

En la programación orientada a objetos pura no deben utilizarse llamadas de subrutinas,


únicamente mensajes.
Por ello, a veces recibe el nombre de programación sin CALL, igual que la programación
estructurada se llama también programación sin GOTO.
Sin embargo, no todos los lenguajes orientados a objetos prohíben la instrucción CALL (o su
equivalente), permitiendo realizar programación imperativa y orientada a objetos a la vez.

6. Lenguajes orientados a objetos

 Ada: se usa en entornos en los que se necesita una gran seguridad y fiabilidad, como en
la defensa.
 C++: está considerado como el lenguaje más potente, debido a que permite trabajar
tanto a alto como a bajo nivel, aunque obliga a hacer casi todo manualmente, al igual
que C, lo que hace difícil aprendizaje.
 C#: combina el control a bajo nivel de lenguajes como C y la velocidad de
programación de lenguajes como Visual Basic.
 VB.NET: es una versión de Visual Basic destinada al desarrollo de aplicaciones .NET.
Visual Basic apareció en el año 1991 como una evolución del QuickBasic que fabricaba
Microsoft.

5
 Clarion: está orientado a la programación de aplicaciones de bases de datos. Es
compatible con una gran cantidad de ellas incluyendo todas las de formato SQL, ADO,
y XML, además puede generar salidas a HTML, XML, archivos de texto y PDF, entre
otros.
 Delphi: entorno de desarrollo de software diseñado para programación general con
especial énfasis en la programación visual. En Delphi se utiliza como lenguaje una
versión moderna de Pascal llamada Object Pascal. Es producido por Borland. Delphi da
la posibilidad de producir archivos ejecutables para Windows, GNU/Linux y la
plataforma .NET.
 Eiffel: fue creado en 1985 por Bertrand Meyer. Se centra en la construcción de software
robusto. Su lenguaje es parecido al de Pascal.

 Java: fue desarrollado por James Gosling y sus compañeros de Sun Microsystems al
inicio de la década de 1990. A diferencia de los lenguajes de programación
convencionales, Java es compilado en un bytecode 3 que es ejecutado por una máquina
virtual Java. El lenguaje toma mucha de su sintaxis de C y C++, pero tiene un modelo
de objetos mucho más simple y elimina herramientas como los punteros.

 Lexico: es un lenguaje en español que busca facilitar el aprendizaje y la enseñanza de la


programación orientada a objetos. Permite experimentar con los algoritmos diseñados
sin tener que dedicar meses a aprender un lenguaje de programación.
 Objective-C: Es el principal lenguaje de programación en Mac OS X. Mac OS X es el
sistema operativo de la familia de ordenadores Macintosh.
 Ocaml: nace de la evolución del lenguaje CAML, abreviación de Categorical Abstract
Machine Language), al integrarsele la programación con objetos.
 Oz: es un lenguaje multi-paradigma. Contiene la mayoría de los conceptos de los
principales paradigmas de programación, incluyendo programación lógica, funcional,
imperativa, orientada a objetos, con restricciones, distribuida y concurrente.
 PHP: es un lenguaje de programación usado generalmente para la creación de
contenidos en webs. El nombre es el acrónimo recursivo de "PHP: Hypertext
Preprocessor", inicialmente PHP Tools, o, Personal Home Page Tools. Se trata de un
lenguaje interpretado.
 PowerBuilder: herramienta de desarrollo de clase empresarial creada por la empresa
Sybase. PowerBuilder permite el desarrollo de diferentes tipos de aplicaciones y
componentes para arquitecturas cliente/servidor, distribuídas y Web. Las aplicaciones
desarrolladas con PowerBuilder solo pueden ser ejecutadas en el sistema operativo
Microsoft Windows, aunque cierto tipo de componenetes, llamados componentes no
visuales o NVOs, y que contienen sólo lógica de aplicación, se pueden ejecutar en otros
sistemas operativos como Unix.
 Python: es un lenguaje de programación interpretado e interactivo, capaz de ejecutarse
en gran cantidad de plataformas. Creado por Guido van Rossum en 1990, su nombre
procede de la afición de su creador por los humoristas británicos Monty Python. El
principal objetivo de este lenguaje es la facilidad, tanto de lectura, como de diseño.
 Ruby: es un lenguaje de programación interpretado de muy alto nivel. Fue creado en
Japón en el año 1993 por Yukihiro Matz Matsumoto.
 Smalltalk: es considerado como el primer de los lenguajes orientados a objetos. Dentro
de Smalltalk todo es un objeto, incluidos los números reales o el propio entorno
Smalltalk.

3
Bytecode: código intermedio, más abstracto que el código máquina. Habitualmente se lo trata como a un
fichero binario que contiene un programa ejecutable similar a un objeto, que es un fichero binario que
contiene código máquina producido por el compilador.

6
No todos estos lenguajes son igualmente eficaces. Existen lenguajes como OOCOBOL,
OOLISP, OOPROLOG y Object REXX que han sido desarrollados añadiendo a sus versiones
anteriores las características de la orientación a objetos, como ya pasara con C++.

7. ¿Qué es instanciación?

La palabra instancia significa: solicitud o instancia.

Una instancia de un programa es una copia de una versión ejecutable del programa que ha
sido escrito en la memoria del computador

Una instancia de un programa es creada típicamente por el clic del usuario en un icono de
interfaz gráfico para usuario.

EJEMPLO:

//Constructor de Perro.

public Perro(String nombre, String color, int edad){

this.nombre = nombre;

this.color = color;

this.edad = edad;

//Métodos de Perro.

public void comer(){

System.out.println(nombre + " comiendo.");

public void morder(){

System.out.println(nombre + " mordiendo.");

}//Fin clase Perro

Para crear ahora objetos de la clase Perro es tan sencillo como:

dogo = new Perro();

danes= new Perro();

8. Conclusión.

Pese a las grandes ventajas que ofrece la programación orientada a objetos gracias a
características propias como la herencia y la encapsulación, aun quedan problemas por

7
solucionar. No hay un lenguaje dominante que elimine la dependencia que existe entre unos y
otros, y las definiciones de las clases pueden resultar erróneas después de meses de trabajo. Por
otro lado, todos los elementos del programa deben de ser vistos como objetos y la transición a
este tipo de programación hace que sea necesario el reciclaje de muchos de los programadores.

Aun así, las líneas de investigación no se detienen y empieza a hablarse de programación


orientada a aspectos (POA). Aunque es todavía un paradigma en estado embrionario, cada vez
es más gente la que se interesa por ella.

9. Bibliografía.

F.J. Ceballos, “Programaci´on orientada a objetos en C++”, ed. ra–ma, (1993).

B. Forde, “Object–oriented finite element analysis”, Computers and Structures, Vol. 34, pp.

335–374, (1990).

A. Madan, “Object–oriented paradigm in programming for computer–aided analysis of


structures”,

ASCE Journal of Computing in Civil Engineering, Vol. 18, No 3, (2004).

http://es.wikipedia.org/wiki/Orientado_a_objetos

http://www.monografias.com/trabajos/objetos/objetos.shtml

http://www.desarrolloweb.com/articulos/499.php

http://poostephania.blogspot.com/2012/05/instanciacion.html

https://es.wikipedia.org/wiki/Objeto_(programaci%C3%B3n)

También podría gustarte