O P P

Descargar como rtf, pdf o txt
Descargar como rtf, pdf o txt
Está en la página 1de 6

conceptos fundamntales de la programacion orientada a objeto (P.O.

O)

Significado de O.P.P

La programación Orientada a objetos se define como un paradigma de la programación, una manera de


programar específica que permite desarrollar aplicaciones complejas manteniendo un código más claro y
manejable que otros paradigmas anteriores. donde se organiza el código en unidades denominadas
clases, de las cuales se crean objetos que se relacionan entre sí para conseguir los objetivos de las
aplicaciones.

La Programación Orientada a Objetos (POO) es un paradigma de programación donde Los objetos


manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto
ofrece una funcionalidad especial. Está basada en varias técnicas del sexenio: herencia, cohesión,
abstracción, polimorfismo, acoplamiento y encapsulamiento.

Origen

Los conceptos de la POO tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones
creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. En este centro se
trabajaba en simulaciones de naves, las cuales se confunia debido a que las diversas cualidades de las
naves podían influir en unas a las otras. La idea surgió al agrupar los diversos tipos de naves en diversas
clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y
comportamientos. Fueron refinados más tarde en Smalltalk, desarrollado para ser un sistema
completamente dinámico en el cual los objetos se podrían crear y modificar mientras se ejecutava la
simulacuion en lugar de tener un sistema basado en programas estáticos.

La POO se fue convirtiendo en el estilo de programación dominante a mediados de los años 1980, en
gran parte debido a la influencia de C. Su dominación fue consolidada gracias al auge de las interfaces
gráficas de usuario, para las cuales la POO está particularmente bien adaptada.

Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese
tiempo. La adición de estas características a los lenguajes que no fueron diseñados para ello condujo a
menudo a problemas de compatibilidad y en la capacidad de mantenimiento del código. Los lenguajes
orientados a objetos "puros", por su parte, carecían de las características de las cuales muchos
programadores habían venido a depender.

Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en
métodos orientados a objetos pero que a la vez algunas características imperativas de maneras "seguras"
como el Java, en gran parte debido a la aparición de Internet y a la implementación de la máquina virtual
Java en la mayoría de navegadores web. PHP en su versión 5 se ha modificado soporta una orientación
completa a objetos, cumpliendo todas las características propias de la orientación a objetos.

Conceptos fundamentales

La POO es una forma de programar que trata de encontrar una solución a estos problemas. Introduce
nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los
siguientes:

Clase

Una clase es la descripción de un tipo de objetos o un conjunto de objetos similares; consta de métodos
y de datos que resumen las características comunes de dicho conjunto. Cada vez que se construye un
objeto a partir de una clase estamos creando lo que se llama una instancia.

Se podria decir que una clase es una especie de "plantilla" en la que se definen los atributos y métodos
predeterminados de un tipo de objeto. De esta manera esta plantilla se crea para poder crear objetos
mas fácilmente.

Ejemplo: haríamos galletas (objeto) con el mismo molde (clase) solo que, para entenderlo mejor, cada
galleta tendría igual forma pero es posible que tenga distinto sabor, textura, olor, color, etc.

Para declarar una clase en C++ se utiliza la palabra reservada "class", se da un nombre a la clase y luego
entre llaves se declaran los miembros de la clase.

Objeto

En el POO un objeto es el resultado de la instanciación de una clase, que consta de un estado y de un


comportamiento, que a su vez constan respectivamente de datos almacenados y de tareas realizables
durante el tiempo de ejecución.

Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual un programa
es una colección de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones
para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros
objetos de manera similar a un servicio.

Método

Es un 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, llevar a cabo una acción, un
juego de parámetros de entrada que regularán dicha acción o posiblemente un valor de salida (o valor
de retorno) de algún tipo como la generación de un "evento" con un nuevo mensaje para otro objeto del
sistema.
Mensaje

Un mensaje es una petición enviada a un objeto para que este se comporte de una determinada manera,
realizando una de sus operaciones. Cuando el objeto receptor acepta el mensaje, comienza la ejecución
del algoritmo contenido dentro del método invocado

<Variable_Objeto>.<Nombre_Método> ( [<Lista de Parámetros> ] );

Cada mensaje consta de tres partes:

1. Identidad del objeto al que va dirigido el mensaje.

2. Operación solicitada (método).

3. Información adicional ( argumentos), necesaria para poder ejecutar el método.

Características de la POO

Existe un acuerdo acerca de qué características contempla la "orientación a objetos". Las características
siguientes son las más importantes:

Abstracción

La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo
acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo
lo hace?" (característica de caja negra).

La abstracción encarada desde el punto de vista de la programación orientada a objetos expresa las
características esenciales de un objeto, las cuales distinguen al objeto de los demás.

Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas resolviendo
una y otra vez los mismos problemas. Para conseguir que sus esfuerzos pudiesen ser utilizados por otras
personas se usa la abtraccionm donde 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.

La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella
podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se
quiere atacar.
Encapsulamiento

Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al
mismo nivel de abstracción. Se denomina encapsulamiento al aislamiento del estado, es decir, de los
datos miembro de un objeto de manera que solo se pueda cambiar mediante las operaciones definidas
para ese objeto.

Tambien se puede definir como el empaquetamiento de las variables de un objeto con la protección de
sus métodos. Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en
práctica no importantes de otros objetos. Entonces, los detalles de la puesta en práctica pueden cambiar
en cualquier tiempo sin afectar otras partes del programa.

Existen tres niveles de acceso para el encapsulamiento, los cuales son:

Público (Public): Todos pueden acceder a los datos o métodos de una clase que se definen con este nivel,
este es el nivel más bajo, esto es lo que tu quieres que la parte externa vea.

Protegido (Protected): Podemos decir que estás no son de acceso público, solamente son accesibles
dentro de su clase y por subclases.

Privado (Private): En este nivel se puede declarar miembros accesibles sólo para la propia clase.

Polimorfismo

El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a
objetos de tipos distintos. Con el único requisito de que los objetos que se utilizan de manera
polimórfica es que sepan responder al mensaje que se les envía.

Se puede clasificar el polimorfismo en dos grandes clases:

Polimorfismo dinámico (o polimorfismo paramétrico) es aquel en el que el código no incluye ningún tipo
de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de
datos compatible.

Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los que se aplica el
polimorfismo deben ser explícitos y declarados uno por uno antes de poder ser utilizados.

Por ejemplo, en un lenguaje de programación que cuenta con un sistema de tipos dinámico (en los que
las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk se
requiere que los objetos que se utilizan de modo polimórfico sean parte de una jerarquía de clases.
Volvamos al ejemplo inicial, el de la estructura de clases basado en la clase "Persona" y supongamos que
tenemos la clase base "Persona" y dos clases derivadas: "Empleado" y "Estudiante"

Herencia

En programación orientada a objetos, los diseñadores pueden crear nuevas clases partiendo de una
clase o de una jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con ello el
rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de
objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento
(métodos) y eventualmente los atributos (variables) de su superclase.

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.

La herencia es uno de los mecanismos de los lenguajes de programación orientada a objetos basados en
clases, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. En los
lenguajes que cuentan con un sistema de tipos fuerte y estrictamente restrictivo con el tipo de datos de
las variables, la herencia suele ser un requisito fundamental para poder emplear el Polimorfismo

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í. 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.

Según Bertrand Meyer: «El acto de particionar un programa en componentes individuales para reducir
su complejidad en algún grado… A pesar de particionar un programa es útil por esta razón, una
justificación más poderosa para particionar un programa es que crea una serie de límites bien definidos y
documentados en el programa. Estos límites, o interfaces, son muy valiosos en la comprensión del
programa».

Por su parte Bárbara Liskov establece que la «modularización consiste en dividir un programa en
módulos que pueden ser compilados de forma separada, pero que tienen conexiones con otros
módulos».

compilador

Un compilador es un programa informático que se encarga de traducir (compilar) el código fuente de


cualquier aplicación que se esté desarrollando. En pocas palabras, es un software que se encarga de
traducir el programa hecho en lenguaje de programación, a un lenguaje de máquina que pueda ser
comprendido por el equipo y pueda ser procesado o ejecutado por este.

La construcción de un compilador involucra la división del proceso en una serie de fases que variará con
su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la
síntesis del programa objeto.

Análisis: se trata de la comprobación del lenguaje en términos formales. Incluye las fases
correspondientes al análisis léxico (descomposicion de sus componentes léxicos), análisis sintáctico
(agrupación de los componentes léxicos en frases gramaticales ) y análisis semántico (comprobación de
la validez semántica de las sentencias aceptadas en el análisis sintáctico).

Síntesis: su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado
por una o varias combinaciones de fases de generación de código (normalmente se trata de código
intermedio o de código objeto) y de optimización de código (en las que se busca obtener un programa
objetivo lo más eficiente posible, según su complejidad computacional).

Tipos de compiladores

Esta taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que
se adscriban a varias categorías:

Compiladores cruzados: generan código para un sistema distinto del que están funcionando.

Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero


manteniendo la funcionalidad del programa original.

Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código
fuente.

Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el
código máquina.

Compiladores JIT (just in time): forman parte de un intérprete y compilan partes del código según se
necesitan.

En las primeras épocas de la informática, los compiladores eran considerados un software de los más
complejos existentes.

paradigma [email protected]

También podría gustarte